aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Manning <tamanning@zoho.com>2016-05-27 06:35:15 -0400
committerAndrew Manning <tamanning@zoho.com>2016-05-27 06:35:15 -0400
commitd554681174084e1715dfae4c21af9f6edcbad59e (patch)
treeeb585cce4ebe24d663b2e7eab28a62da612efec1
parente00b8a70829213a4333a53a097c2c498d529f5d6 (diff)
parent551cf8ee9413c5c57e7b71d6016466e598636900 (diff)
downloadvolse-hubzilla-d554681174084e1715dfae4c21af9f6edcbad59e.tar.gz
volse-hubzilla-d554681174084e1715dfae4c21af9f6edcbad59e.tar.bz2
volse-hubzilla-d554681174084e1715dfae4c21af9f6edcbad59e.zip
Merge remote-tracking branch 'upstream/dev' into wiki
-rwxr-xr-x.gitignore2
-rw-r--r--LICENSE2
-rw-r--r--Zotlabs/Daemon/Cron_weekly.php1
-rw-r--r--Zotlabs/Daemon/Externals.php2
-rw-r--r--Zotlabs/Daemon/Gprobe.php5
-rw-r--r--Zotlabs/Daemon/Notifier.php3
-rw-r--r--Zotlabs/Daemon/Onepoll.php2
-rw-r--r--Zotlabs/Daemon/Poller.php5
-rw-r--r--Zotlabs/Daemon/Queue.php1
-rw-r--r--Zotlabs/Daemon/Ratenotif.php1
-rw-r--r--Zotlabs/Lib/Apps.php659
-rw-r--r--Zotlabs/Lib/Chatroom.php267
-rw-r--r--Zotlabs/Lib/Enotify.php (renamed from include/enotify.php)203
-rw-r--r--Zotlabs/Lib/ThreadStream.php2
-rw-r--r--Zotlabs/Module/Acl.php2
-rw-r--r--Zotlabs/Module/Admin.php38
-rw-r--r--Zotlabs/Module/Appman.php17
-rw-r--r--Zotlabs/Module/Apps.php17
-rw-r--r--Zotlabs/Module/Blocks.php2
-rw-r--r--Zotlabs/Module/Cal.php11
-rw-r--r--Zotlabs/Module/Channel.php550
-rw-r--r--Zotlabs/Module/Chanview.php11
-rw-r--r--Zotlabs/Module/Chat.php22
-rw-r--r--Zotlabs/Module/Chatsvc.php12
-rw-r--r--Zotlabs/Module/Cloud.php3
-rw-r--r--Zotlabs/Module/Connect.php2
-rw-r--r--Zotlabs/Module/Connections.php2
-rw-r--r--Zotlabs/Module/Connedit.php5
-rw-r--r--Zotlabs/Module/Cover_photo.php2
-rw-r--r--Zotlabs/Module/Directory.php4
-rw-r--r--Zotlabs/Module/Display.php10
-rw-r--r--Zotlabs/Module/Editblock.php2
-rw-r--r--Zotlabs/Module/Editlayout.php2
-rw-r--r--Zotlabs/Module/Editwebpage.php2
-rw-r--r--Zotlabs/Module/Events.php2
-rw-r--r--Zotlabs/Module/Feed.php2
-rw-r--r--Zotlabs/Module/Getfile.php1
-rw-r--r--Zotlabs/Module/Import.php4
-rw-r--r--Zotlabs/Module/Item.php8
-rw-r--r--Zotlabs/Module/Layouts.php2
-rw-r--r--Zotlabs/Module/Magic.php8
-rw-r--r--Zotlabs/Module/Mail.php14
-rw-r--r--Zotlabs/Module/Menu.php2
-rw-r--r--Zotlabs/Module/Message.php2
-rw-r--r--Zotlabs/Module/Network.php2
-rw-r--r--Zotlabs/Module/New_channel.php2
-rw-r--r--Zotlabs/Module/Oep.php4
-rw-r--r--Zotlabs/Module/Photos.php6
-rw-r--r--Zotlabs/Module/Ping.php5
-rw-r--r--Zotlabs/Module/Probe.php16
-rw-r--r--Zotlabs/Module/Profile.php4
-rw-r--r--Zotlabs/Module/Profile_photo.php2
-rw-r--r--Zotlabs/Module/Profiles.php4
-rw-r--r--Zotlabs/Module/Profperm.php2
-rw-r--r--Zotlabs/Module/Pubsites.php5
-rw-r--r--Zotlabs/Module/Pubstream.php4
-rw-r--r--Zotlabs/Module/Randprof.php1
-rw-r--r--Zotlabs/Module/Ratings.php6
-rw-r--r--Zotlabs/Module/Regdir.php13
-rw-r--r--Zotlabs/Module/Register.php2
-rw-r--r--Zotlabs/Module/Removeaccount.php11
-rw-r--r--Zotlabs/Module/Removeme.php5
-rw-r--r--Zotlabs/Module/Search.php2
-rw-r--r--Zotlabs/Module/Settings.php2
-rw-r--r--Zotlabs/Module/Setup.php69
-rw-r--r--Zotlabs/Module/Uexport.php2
-rw-r--r--Zotlabs/Module/Viewconnections.php8
-rw-r--r--Zotlabs/Module/Wall_attach.php2
-rw-r--r--Zotlabs/Module/Wall_upload.php2
-rw-r--r--Zotlabs/Module/Webpages.php2
-rw-r--r--Zotlabs/Module/Zotfeed.php4
-rw-r--r--Zotlabs/Storage/Browser.php1
-rw-r--r--Zotlabs/Web/WebServer.php130
-rw-r--r--Zotlabs/Zot/Auth.php8
-rw-r--r--Zotlabs/Zot/Finger.php130
-rwxr-xr-xboot.php120
-rw-r--r--doc/Privacy.md4
-rw-r--r--doc/bugs.bb16
-rw-r--r--doc/ca/develop.bb3
-rw-r--r--doc/classRedmatrix_1_1Import_1_1Import-members.html131
-rw-r--r--doc/classRedmatrix_1_1Import_1_1Import.html446
-rw-r--r--doc/de/develop.bb3
-rw-r--r--doc/develop.bb3
-rw-r--r--doc/developer_function_primer.bb4
-rw-r--r--doc/faq_developers.bb454
-rw-r--r--doc/hooks.html2
-rw-r--r--doc/sv/main.bb3
-rw-r--r--doc/zot.md5
-rw-r--r--include/Import/import_diaspora.php1
-rw-r--r--include/account.php5
-rw-r--r--include/acl_selectors.php5
-rw-r--r--include/activities.php1
-rw-r--r--include/api.php5
-rw-r--r--include/apps.php658
-rw-r--r--include/bb2diaspora.php2
-rw-r--r--include/bbcode.php9
-rw-r--r--include/channel.php (renamed from include/identity.php)31
-rw-r--r--include/chat.php262
-rw-r--r--include/cli_startup.php32
-rw-r--r--include/config.php16
-rw-r--r--include/connections.php (renamed from include/Contact.php)27
-rw-r--r--include/contact_widgets.php8
-rw-r--r--include/conversation.php14
-rw-r--r--include/crypto.php14
-rw-r--r--include/datetime.php1
-rwxr-xr-xinclude/dba/dba_driver.php182
-rw-r--r--include/dir_fns.php8
-rw-r--r--include/event.php59
-rw-r--r--include/feedutils.php1
-rw-r--r--include/follow.php7
-rw-r--r--include/help.php2
-rwxr-xr-xinclude/items.php17
-rw-r--r--include/language.php6
-rw-r--r--include/network.php15
-rw-r--r--include/notify.php37
-rwxr-xr-xinclude/oembed.php2
-rw-r--r--include/photo/photo_driver.php6
-rw-r--r--include/photos.php2
-rwxr-xr-xinclude/plugin.php11
-rw-r--r--include/socgraph.php10
-rw-r--r--include/text.php66
-rw-r--r--include/widgets.php17
-rw-r--r--include/zot.php47
-rwxr-xr-xindex.php180
-rw-r--r--install/INSTALL.txt7
-rwxr-xr-xinstall/htconfig.sample.php4
-rwxr-xr-xutil/fresh4
-rw-r--r--util/hmessages.po134
-rw-r--r--util/messages.po126
-rw-r--r--view/cs/htconfig.tpl2
-rw-r--r--view/de/hmessages.po1128
-rw-r--r--view/de/hstrings.php234
-rw-r--r--view/de/htconfig.tpl2
-rw-r--r--view/en-au/htconfig.tpl2
-rw-r--r--view/en-gb/htconfig.tpl2
-rw-r--r--view/en/htconfig.tpl2
-rw-r--r--view/eo/htconfig.tpl2
-rw-r--r--view/es-es/hmessages.po1126
-rw-r--r--view/es-es/hstrings.php232
-rw-r--r--view/fr/htconfig.tpl2
-rw-r--r--view/it/htconfig.tpl2
-rw-r--r--view/js/acl.js4
-rw-r--r--view/nb-no/htconfig.tpl2
-rw-r--r--view/nl/hmessages.po1126
-rw-r--r--view/nl/hstrings.php232
-rw-r--r--view/php/theme_init.php2
-rw-r--r--view/pt-br/htconfig.tpl2
-rw-r--r--view/ru/htconfig.tpl2
-rw-r--r--view/sv/htconfig.tpl2
-rwxr-xr-xview/tpl/acl_selector.tpl4
-rw-r--r--view/tpl/app.tpl2
-rwxr-xr-xview/tpl/atom_feed.tpl2
152 files changed, 4411 insertions, 5312 deletions
diff --git a/.gitignore b/.gitignore
index 6ceac139f..a5f149548 100755
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,8 @@
*.rej
# OSX .DS_Store files
.DS_Store
+# version scripts (repo master only)
+.version*
Thumbs.db
diff --git a/LICENSE b/LICENSE
index a2c2d1599..ab37f5ba7 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2010-2016 Hubzilla
+Copyright (c) 2010-2016 the Hubzilla Community
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/Zotlabs/Daemon/Cron_weekly.php b/Zotlabs/Daemon/Cron_weekly.php
index dc781ad73..1d8420947 100644
--- a/Zotlabs/Daemon/Cron_weekly.php
+++ b/Zotlabs/Daemon/Cron_weekly.php
@@ -21,7 +21,6 @@ class Cron_weekly {
require_once('include/hubloc.php');
prune_hub_reinstalls();
- require_once('include/Contact.php');
mark_orphan_hubsxchans();
diff --git a/Zotlabs/Daemon/Externals.php b/Zotlabs/Daemon/Externals.php
index 167b0524f..24cfe64ec 100644
--- a/Zotlabs/Daemon/Externals.php
+++ b/Zotlabs/Daemon/Externals.php
@@ -3,7 +3,7 @@
namespace Zotlabs\Daemon;
require_once('include/zot.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
class Externals {
diff --git a/Zotlabs/Daemon/Gprobe.php b/Zotlabs/Daemon/Gprobe.php
index 8141739be..43cce93c3 100644
--- a/Zotlabs/Daemon/Gprobe.php
+++ b/Zotlabs/Daemon/Gprobe.php
@@ -22,9 +22,8 @@ class Gprobe {
);
if(! $r) {
- $x = zot_finger($url,null);
- if($x['success']) {
- $j = json_decode($x['body'],true);
+ $j = \Zotlabs\Zot\Finger::run($url,null);
+ if($j['success']) {
$y = import_xchan($j);
}
}
diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php
index 65690f8ce..590be31ee 100644
--- a/Zotlabs/Daemon/Notifier.php
+++ b/Zotlabs/Daemon/Notifier.php
@@ -72,8 +72,7 @@ require_once('include/queue_fn.php');
require_once('include/datetime.php');
require_once('include/items.php');
require_once('include/bbcode.php');
-require_once('include/identity.php');
-require_once('include/Contact.php');
+require_once('include/channel.php');
class Notifier {
diff --git a/Zotlabs/Daemon/Onepoll.php b/Zotlabs/Daemon/Onepoll.php
index 2610ad151..036a4991b 100644
--- a/Zotlabs/Daemon/Onepoll.php
+++ b/Zotlabs/Daemon/Onepoll.php
@@ -4,7 +4,7 @@ namespace Zotlabs\Daemon;
require_once('include/zot.php');
require_once('include/socgraph.php');
-require_once('include/Contact.php');
+
class Onepoll {
diff --git a/Zotlabs/Daemon/Poller.php b/Zotlabs/Daemon/Poller.php
index 278faf3ee..75efbf8f7 100644
--- a/Zotlabs/Daemon/Poller.php
+++ b/Zotlabs/Daemon/Poller.php
@@ -62,11 +62,6 @@ class Poller {
$d = datetime_convert();
- // TODO check to see if there are any cronhooks before wasting a process
-
- if(! $restart)
- Master::Summon(array('Cronhooks'));
-
// Only poll from those with suitable relationships
$abandon_sql = (($abandon_days)
diff --git a/Zotlabs/Daemon/Queue.php b/Zotlabs/Daemon/Queue.php
index c247be8e4..27306589d 100644
--- a/Zotlabs/Daemon/Queue.php
+++ b/Zotlabs/Daemon/Queue.php
@@ -6,6 +6,7 @@ require_once('include/queue_fn.php');
require_once('include/zot.php');
class Queue {
+
static public function run($argc,$argv) {
require_once('include/items.php');
diff --git a/Zotlabs/Daemon/Ratenotif.php b/Zotlabs/Daemon/Ratenotif.php
index a404273e2..1cba5e26d 100644
--- a/Zotlabs/Daemon/Ratenotif.php
+++ b/Zotlabs/Daemon/Ratenotif.php
@@ -12,7 +12,6 @@ class Ratenotif {
require_once("datetime.php");
require_once('include/items.php');
- require_once('include/Contact.php');
if($argc < 3)
return;
diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php
new file mode 100644
index 000000000..6d2ef4e45
--- /dev/null
+++ b/Zotlabs/Lib/Apps.php
@@ -0,0 +1,659 @@
+<?php /** @file */
+
+namespace Zotlabs\Lib;
+
+/**
+ * Apps
+ *
+ */
+
+require_once('include/plugin.php');
+require_once('include/channel.php');
+
+
+class Apps {
+
+ static public function get_system_apps($translate = true) {
+
+ $ret = array();
+ if(is_dir('apps'))
+ $files = glob('apps/*.apd');
+ else
+ $files = glob('app/*.apd');
+ if($files) {
+ foreach($files as $f) {
+ $x = self::parse_app_description($f,$translate);
+ if($x) {
+ $ret[] = $x;
+ }
+ }
+ }
+ $files = glob('addon/*/*.apd');
+ if($files) {
+ foreach($files as $f) {
+ $n = basename($f,'.apd');
+ if(plugin_is_installed($n)) {
+ $x = self::parse_app_description($f,$translate);
+ if($x) {
+ $ret[] = $x;
+ }
+ }
+ }
+ }
+
+ return $ret;
+
+ }
+
+
+ static public function import_system_apps() {
+ if(! local_channel())
+ return;
+
+ // Eventually we want to look at modification dates and update system apps.
+
+ $installed = get_pconfig(local_channel(),'system','apps_installed');
+ if($installed)
+ return;
+ $apps = self::get_system_apps(false);
+ if($apps) {
+ foreach($apps as $app) {
+ $app['uid'] = local_channel();
+ $app['guid'] = hash('whirlpool',$app['name']);
+ $app['system'] = 1;
+ self::app_install(local_channel(),$app);
+ }
+ }
+ set_pconfig(local_channel(),'system','apps_installed',1);
+ }
+
+
+ static public function app_name_compare($a,$b) {
+ return strcmp($a['name'],$b['name']);
+ }
+
+
+ static public function parse_app_description($f,$translate = true) {
+ $ret = array();
+
+ $baseurl = z_root();
+ $channel = \App::get_channel();
+ $address = (($channel) ? $channel['channel_address'] : '');
+
+ //future expansion
+
+ $observer = \App::get_observer();
+
+
+ $lines = @file($f);
+ if($lines) {
+ foreach($lines as $x) {
+ if(preg_match('/^([a-zA-Z].*?):(.*?)$/ism',$x,$matches)) {
+ $ret[$matches[1]] = trim(str_replace(array('$baseurl','$nick'),array($baseurl,$address),$matches[2]));
+ }
+ }
+ }
+
+
+ if(! $ret['photo'])
+ $ret['photo'] = $baseurl . '/' . get_default_profile_photo(80);
+
+ $ret['type'] = 'system';
+
+ foreach($ret as $k => $v) {
+ if(strpos($v,'http') === 0)
+ $ret[$k] = zid($v);
+ }
+
+ if(array_key_exists('desc',$ret))
+ $ret['desc'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$ret['desc']);
+
+ if(array_key_exists('target',$ret))
+ $ret['target'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$ret['target']);
+
+ if(array_key_exists('requires',$ret)) {
+ $requires = explode(',',$ret['requires']);
+ foreach($requires as $require) {
+ $require = trim(strtolower($require));
+ switch($require) {
+ case 'nologin':
+ if(local_channel())
+ unset($ret);
+ break;
+ case 'admin':
+ if(! is_site_admin())
+ unset($ret);
+ break;
+ case 'local_channel':
+ if(! local_channel())
+ unset($ret);
+ break;
+ case 'public_profile':
+ if(! is_public_profile())
+ unset($ret);
+ break;
+ case 'observer':
+ if(! $observer)
+ unset($ret);
+ break;
+ default:
+ if(! (local_channel() && feature_enabled(local_channel(),$require)))
+ unset($ret);
+ break;
+
+ }
+ }
+ }
+ if($ret) {
+ if($translate)
+ self::translate_system_apps($ret);
+ return $ret;
+ }
+ return false;
+ }
+
+
+ static public function translate_system_apps(&$arr) {
+ $apps = array(
+ 'Site Admin' => t('Site Admin'),
+ 'Bug Report' => t('Bug Report'),
+ 'View Bookmarks' => t('View Bookmarks'),
+ 'My Chatrooms' => t('My Chatrooms'),
+ 'Connections' => t('Connections'),
+ 'Firefox Share' => t('Firefox Share'),
+ 'Remote Diagnostics' => t('Remote Diagnostics'),
+ 'Suggest Channels' => t('Suggest Channels'),
+ 'Login' => t('Login'),
+ 'Channel Manager' => t('Channel Manager'),
+ 'Grid' => t('Grid'),
+ 'Settings' => t('Settings'),
+ 'Files' => t('Files'),
+ 'Webpages' => t('Webpages'),
+ 'Channel Home' => t('Channel Home'),
+ 'View Profile' => t('View Profile'),
+ 'Photos' => t('Photos'),
+ 'Events' => t('Events'),
+ 'Directory' => t('Directory'),
+ 'Help' => t('Help'),
+ 'Mail' => t('Mail'),
+ 'Mood' => t('Mood'),
+ 'Poke' => t('Poke'),
+ 'Chat' => t('Chat'),
+ 'Search' => t('Search'),
+ 'Probe' => t('Probe'),
+ 'Suggest' => t('Suggest'),
+ 'Random Channel' => t('Random Channel'),
+ 'Invite' => t('Invite'),
+ 'Features' => t('Features'),
+ 'Language' => t('Language'),
+ 'Post' => t('Post'),
+ 'Profile Photo' => t('Profile Photo')
+ );
+
+ if(array_key_exists($arr['name'],$apps))
+ $arr['name'] = $apps[$arr['name']];
+
+ }
+
+
+ // papp is a portable app
+
+ static public function app_render($papp,$mode = 'view') {
+
+ /**
+ * modes:
+ * view: normal mode for viewing an app via bbcode from a conversation or page
+ * provides install/update button if you're logged in locally
+ * list: normal mode for viewing an app on the app page
+ * no buttons are shown
+ * edit: viewing the app page in editing mode provides a delete button
+ */
+
+ $installed = false;
+
+ if(! $papp)
+ return;
+
+ if(! $papp['photo'])
+ $papp['photo'] = z_root() . '/' . get_default_profile_photo(80);
+
+ $papp['papp'] = self::papp_encode($papp);
+
+ if(! strstr($papp['url'],'://'))
+ $papp['url'] = z_root() . ((strpos($papp['url'],'/') === 0) ? '' : '/') . $papp['url'];
+
+ foreach($papp as $k => $v) {
+ if(strpos($v,'http') === 0 && $k != 'papp')
+ $papp[$k] = zid($v);
+ if($k === 'desc')
+ $papp['desc'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$papp['desc']);
+
+ if($k === 'requires') {
+ $requires = explode(',',$v);
+ foreach($requires as $require) {
+ $require = trim(strtolower($require));
+ switch($require) {
+ case 'nologin':
+ if(local_channel())
+ return '';
+ break;
+ case 'admin':
+ if(! is_site_admin())
+ return '';
+ break;
+ case 'local_channel':
+ if(! local_channel())
+ return '';
+ break;
+ case 'public_profile':
+ if(! is_public_profile())
+ return '';
+ break;
+ case 'observer':
+ $observer = \App::get_observer();
+ if(! $observer)
+ return '';
+ break;
+ default:
+ if(! (local_channel() && feature_enabled(local_channel(),$require)))
+ return '';
+ break;
+
+ }
+ }
+ }
+ }
+
+ $hosturl = '';
+
+ if(local_channel()) {
+ $installed = self::app_installed(local_channel(),$papp);
+ $hosturl = z_root() . '/';
+ }
+ elseif(remote_channel()) {
+ $observer = \App::get_observer();
+ if($observer && $observer['xchan_network'] === 'zot') {
+ // some folks might have xchan_url redirected offsite, use the connurl
+ $x = parse_url($observer['xchan_connurl']);
+ if($x) {
+ $hosturl = $x['scheme'] . '://' . $x['host'] . '/';
+ }
+ }
+ }
+
+ $install_action = (($installed) ? t('Update') : t('Install'));
+
+ return replace_macros(get_markup_template('app.tpl'),array(
+ '$app' => $papp,
+ '$hosturl' => $hosturl,
+ '$purchase' => (($papp['page'] && (! $installed)) ? t('Purchase') : ''),
+ '$install' => (($hosturl && $mode == 'view') ? $install_action : ''),
+ '$edit' => ((local_channel() && $installed && $mode == 'edit') ? t('Edit') : ''),
+ '$delete' => ((local_channel() && $installed && $mode == 'edit') ? t('Delete') : '')
+ ));
+ }
+
+ static public function app_install($uid,$app) {
+ $app['uid'] = $uid;
+
+ if(self::app_installed($uid,$app))
+ $x = self::app_update($app);
+ else
+ $x = self::app_store($app);
+
+ if($x['success']) {
+ $r = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
+ dbesc($x['app_id']),
+ intval($uid)
+ );
+ if($r) {
+ if(! $r[0]['app_system']) {
+ if($app['categories'] && (! $app['term'])) {
+ $r[0]['term'] = q("select * from term where otype = %d and oid = d",
+ intval(TERM_OBJ_APP),
+ intval($r[0]['id'])
+ );
+ build_sync_packet($uid,array('app' => $r[0]));
+ }
+ }
+ }
+ return $x['app_id'];
+ }
+ return false;
+ }
+
+ static public function app_destroy($uid,$app) {
+
+
+ if($uid && $app['guid']) {
+
+ $x = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
+ dbesc($app['guid']),
+ intval($uid)
+ );
+ if($x) {
+ $x[0]['app_deleted'] = 1;
+ q("delete from term where otype = %d and oid = %d",
+ intval(TERM_OBJ_APP),
+ intval($x[0]['id'])
+ );
+ if($x[0]['app_system']) {
+ $r = q("update app set app_deleted = 1 where app_id = '%s' and app_channel = %d",
+ dbesc($app['guid']),
+ intval($uid)
+ );
+ }
+ else {
+ $r = q("delete from app where app_id = '%s' and app_channel = %d",
+ dbesc($app['guid']),
+ intval($uid)
+ );
+
+ // we don't sync system apps - they may be completely different on the other system
+ build_sync_packet($uid,array('app' => $x));
+ }
+ }
+ }
+ }
+
+
+ static public function app_installed($uid,$app) {
+
+ $r = q("select id from app where app_id = '%s' and app_version = '%s' and app_channel = %d limit 1",
+ dbesc((array_key_exists('guid',$app)) ? $app['guid'] : ''),
+ dbesc((array_key_exists('version',$app)) ? $app['version'] : ''),
+ intval($uid)
+ );
+ return(($r) ? true : false);
+
+ }
+
+
+ static public function app_list($uid, $deleted = false, $cat = '') {
+ if($deleted)
+ $sql_extra = " and app_deleted = 1 ";
+ else
+ $sql_extra = " and app_deleted = 0 ";
+
+ if($cat) {
+ $r = q("select oid from term where otype = %d and term = '%s'",
+ intval(TERM_OBJ_APP),
+ dbesc($cat)
+ );
+ if(! $r)
+ return $r;
+ $sql_extra .= " and app.id in ( ";
+ $s = '';
+ foreach($r as $rr) {
+ if($s)
+ $s .= ',';
+ $s .= intval($rr['oid']);
+ }
+ $sql_extra .= $s . ') ';
+ }
+
+ $r = q("select * from app where app_channel = %d $sql_extra order by app_name asc",
+ intval($uid)
+ );
+ if($r) {
+ for($x = 0; $x < count($r); $x ++) {
+ if(! $r[$x]['app_system'])
+ $r[$x]['type'] = 'personal';
+ $r[$x]['term'] = q("select * from term where otype = %d and oid = %d",
+ intval(TERM_OBJ_APP),
+ intval($r[$x]['id'])
+ );
+ }
+ }
+ return($r);
+ }
+
+
+ static public function app_decode($s) {
+ $x = base64_decode(str_replace(array('<br />',"\r","\n",' '),array('','','',''),$s));
+ return json_decode($x,true);
+ }
+
+
+ static public function app_store($arr) {
+
+ // logger('app_store: ' . print_r($arr,true));
+
+ $darray = array();
+ $ret = array('success' => false);
+
+ $darray['app_url'] = ((x($arr,'url')) ? $arr['url'] : '');
+ $darray['app_channel'] = ((x($arr,'uid')) ? $arr['uid'] : 0);
+
+ if((! $darray['app_url']) || (! $darray['app_channel']))
+ return $ret;
+
+ if($arr['photo'] && ! strstr($arr['photo'],z_root())) {
+ $x = import_xchan_photo($arr['photo'],get_observer_hash(),true);
+ $arr['photo'] = $x[1];
+ }
+
+
+ $darray['app_id'] = ((x($arr,'guid')) ? $arr['guid'] : random_string(). '.' . \App::get_hostname());
+ $darray['app_sig'] = ((x($arr,'sig')) ? $arr['sig'] : '');
+ $darray['app_author'] = ((x($arr,'author')) ? $arr['author'] : get_observer_hash());
+ $darray['app_name'] = ((x($arr,'name')) ? escape_tags($arr['name']) : t('Unknown'));
+ $darray['app_desc'] = ((x($arr,'desc')) ? escape_tags($arr['desc']) : '');
+ $darray['app_photo'] = ((x($arr,'photo')) ? $arr['photo'] : z_root() . '/' . get_default_profile_photo(80));
+ $darray['app_version'] = ((x($arr,'version')) ? escape_tags($arr['version']) : '');
+ $darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : '');
+ $darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : '');
+ $darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
+ $darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
+ $darray['app_system'] = ((x($arr,'system')) ? intval($arr['system']) : 0);
+ $darray['app_deleted'] = ((x($arr,'deleted')) ? intval($arr['deleted']) : 0);
+
+ $created = datetime_convert();
+
+ $r = q("insert into app ( app_id, app_sig, app_author, app_name, app_desc, app_url, app_photo, app_version, app_channel, app_addr, app_price, app_page, app_requires, app_created, app_edited, app_system, app_deleted ) values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, %d )",
+ dbesc($darray['app_id']),
+ dbesc($darray['app_sig']),
+ dbesc($darray['app_author']),
+ dbesc($darray['app_name']),
+ dbesc($darray['app_desc']),
+ dbesc($darray['app_url']),
+ dbesc($darray['app_photo']),
+ dbesc($darray['app_version']),
+ intval($darray['app_channel']),
+ dbesc($darray['app_addr']),
+ dbesc($darray['app_price']),
+ dbesc($darray['app_page']),
+ dbesc($darray['app_requires']),
+ dbesc($created),
+ dbesc($created),
+ intval($darray['app_system']),
+ intval($darray['app_deleted'])
+ );
+ if($r) {
+ $ret['success'] = true;
+ $ret['app_id'] = $darray['app_id'];
+ }
+ if($arr['categories']) {
+ $x = q("select id from app where app_id = '%s' and app_channel = %d limit 1",
+ dbesc($darray['app_id']),
+ intval($darray['app_channel'])
+ );
+ $y = explode(',',$arr['categories']);
+ if($y) {
+ foreach($y as $t) {
+ $t = trim($t);
+ if($t) {
+ store_item_tag($darray['app_channel'],$x[0]['id'],TERM_OBJ_APP,TERM_CATEGORY,escape_tags($t),escape_tags(z_root() . '/apps/?f=&cat=' . escape_tags($t)));
+ }
+ }
+ }
+ }
+
+ return $ret;
+ }
+
+
+ static public function app_update($arr) {
+
+ $darray = array();
+ $ret = array('success' => false);
+
+ $darray['app_url'] = ((x($arr,'url')) ? $arr['url'] : '');
+ $darray['app_channel'] = ((x($arr,'uid')) ? $arr['uid'] : 0);
+ $darray['app_id'] = ((x($arr,'guid')) ? $arr['guid'] : 0);
+
+ if((! $darray['app_url']) || (! $darray['app_channel']) || (! $darray['app_id']))
+ return $ret;
+
+ if($arr['photo'] && ! strstr($arr['photo'],z_root())) {
+ $x = import_xchan_photo($arr['photo'],get_observer_hash(),true);
+ $arr['photo'] = $x[1];
+ }
+
+ $darray['app_sig'] = ((x($arr,'sig')) ? $arr['sig'] : '');
+ $darray['app_author'] = ((x($arr,'author')) ? $arr['author'] : get_observer_hash());
+ $darray['app_name'] = ((x($arr,'name')) ? escape_tags($arr['name']) : t('Unknown'));
+ $darray['app_desc'] = ((x($arr,'desc')) ? escape_tags($arr['desc']) : '');
+ $darray['app_photo'] = ((x($arr,'photo')) ? $arr['photo'] : z_root() . '/' . get_default_profile_photo(80));
+ $darray['app_version'] = ((x($arr,'version')) ? escape_tags($arr['version']) : '');
+ $darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : '');
+ $darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : '');
+ $darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
+ $darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
+ $darray['app_system'] = ((x($arr,'system')) ? intval($arr['system']) : 0);
+ $darray['app_deleted'] = ((x($arr,'deleted')) ? intval($arr['deleted']) : 0);
+
+ $edited = datetime_convert();
+
+ $r = q("update app set app_sig = '%s', app_author = '%s', app_name = '%s', app_desc = '%s', app_url = '%s', app_photo = '%s', app_version = '%s', app_addr = '%s', app_price = '%s', app_page = '%s', app_requires = '%s', app_edited = '%s', app_system = %d, app_deleted = %d where app_id = '%s' and app_channel = %d",
+ dbesc($darray['app_sig']),
+ dbesc($darray['app_author']),
+ dbesc($darray['app_name']),
+ dbesc($darray['app_desc']),
+ dbesc($darray['app_url']),
+ dbesc($darray['app_photo']),
+ dbesc($darray['app_version']),
+ dbesc($darray['app_addr']),
+ dbesc($darray['app_price']),
+ dbesc($darray['app_page']),
+ dbesc($darray['app_requires']),
+ dbesc($edited),
+ intval($darray['app_system']),
+ intval($darray['app_deleted']),
+ dbesc($darray['app_id']),
+ intval($darray['app_channel'])
+ );
+ if($r) {
+ $ret['success'] = true;
+ $ret['app_id'] = $darray['app_id'];
+ }
+
+ $x = q("select id from app where app_id = '%s' and app_channel = %d limit 1",
+ dbesc($darray['app_id']),
+ intval($darray['app_channel'])
+ );
+ if($x) {
+ q("delete from term where otype = %d and oid = %d",
+ intval(TERM_OBJ_APP),
+ intval($x[0]['id'])
+ );
+ if($arr['categories']) {
+ $y = explode(',',$arr['categories']);
+ if($y) {
+ foreach($y as $t) {
+ $t = trim($t);
+ if($t) {
+ store_item_tag($darray['app_channel'],$x[0]['id'],TERM_OBJ_APP,TERM_CATEGORY,escape_tags($t),escape_tags(z_root() . '/apps/?f=&cat=' . escape_tags($t)));
+ }
+ }
+ }
+ }
+ }
+
+ return $ret;
+
+ }
+
+
+ static public function app_encode($app,$embed = false) {
+
+ $ret = array();
+
+ $ret['type'] = 'personal';
+
+ if($app['app_id'])
+ $ret['guid'] = $app['app_id'];
+
+ if($app['app_id'])
+ $ret['guid'] = $app['app_id'];
+
+ if($app['app_sig'])
+ $ret['sig'] = $app['app_sig'];
+
+ if($app['app_author'])
+ $ret['author'] = $app['app_author'];
+
+ if($app['app_name'])
+ $ret['name'] = $app['app_name'];
+
+ if($app['app_desc'])
+ $ret['desc'] = $app['app_desc'];
+
+ if($app['app_url'])
+ $ret['url'] = $app['app_url'];
+
+ if($app['app_photo'])
+ $ret['photo'] = $app['app_photo'];
+
+ if($app['app_version'])
+ $ret['version'] = $app['app_version'];
+
+ if($app['app_addr'])
+ $ret['addr'] = $app['app_addr'];
+
+ if($app['app_price'])
+ $ret['price'] = $app['app_price'];
+
+ if($app['app_page'])
+ $ret['page'] = $app['app_page'];
+
+ if($app['app_requires'])
+ $ret['requires'] = $app['app_requires'];
+
+ if($app['app_system'])
+ $ret['system'] = $app['app_system'];
+
+ if($app['app_deleted'])
+ $ret['deleted'] = $app['app_deleted'];
+
+ if($app['term']) {
+ $s = '';
+ foreach($app['term'] as $t) {
+ if($s)
+ $s .= ',';
+ $s .= $t['term'];
+ }
+ $ret['categories'] = $s;
+ }
+
+
+ if(! $embed)
+ return $ret;
+
+ if(array_key_exists('categories',$ret))
+ unset($ret['categories']);
+
+ $j = json_encode($ret);
+ return '[app]' . chunk_split(base64_encode($j),72,"\n") . '[/app]';
+
+ }
+
+
+ static public function papp_encode($papp) {
+ return chunk_split(base64_encode(json_encode($papp)),72,"\n");
+
+ }
+
+}
+
+
diff --git a/Zotlabs/Lib/Chatroom.php b/Zotlabs/Lib/Chatroom.php
new file mode 100644
index 000000000..e1a9a10b3
--- /dev/null
+++ b/Zotlabs/Lib/Chatroom.php
@@ -0,0 +1,267 @@
+<?php
+namespace Zotlabs\Lib;
+
+/**
+ * @brief Chat related functions.
+ */
+
+
+
+class Chatroom {
+ /**
+ * @brief Creates a chatroom.
+ *
+ * @param array $channel
+ * @param array $arr
+ * @return An associative array containing:
+ * - success: A boolean
+ * - message: (optional) A string
+ */
+
+ static public function create($channel, $arr) {
+
+ $ret = array('success' => false);
+
+ $name = trim($arr['name']);
+ if(! $name) {
+ $ret['message'] = t('Missing room name');
+ return $ret;
+ }
+
+ $r = q("select cr_id from chatroom where cr_uid = %d and cr_name = '%s' limit 1",
+ intval($channel['channel_id']),
+ dbesc($name)
+ );
+ if($r) {
+ $ret['message'] = t('Duplicate room name');
+ return $ret;
+ }
+
+ $r = q("select count(cr_id) as total from chatroom where cr_aid = %d",
+ intval($channel['channel_account_id'])
+ );
+ if($r)
+ $limit = service_class_fetch($channel['channel_id'], 'chatrooms');
+
+ if(($r) && ($limit !== false) && ($r[0]['total'] >= $limit)) {
+ $ret['message'] = upgrade_message();
+ return $ret;
+ }
+
+ if(! array_key_exists('expire', $arr))
+ $arr['expire'] = 120; // minutes, e.g. 2 hours
+
+ $created = datetime_convert();
+
+ $x = q("insert into chatroom ( cr_aid, cr_uid, cr_name, cr_created, cr_edited, cr_expire, allow_cid, allow_gid, deny_cid, deny_gid )
+ values ( %d, %d , '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s' ) ",
+ intval($channel['channel_account_id']),
+ intval($channel['channel_id']),
+ dbesc($name),
+ dbesc($created),
+ dbesc($created),
+ intval($arr['expire']),
+ dbesc($arr['allow_cid']),
+ dbesc($arr['allow_gid']),
+ dbesc($arr['deny_cid']),
+ dbesc($arr['deny_gid'])
+ );
+
+ if($x)
+ $ret['success'] = true;
+
+ return $ret;
+ }
+
+
+ static public function destroy($channel,$arr) {
+
+ $ret = array('success' => false);
+
+ if(intval($arr['cr_id']))
+ $sql_extra = " and cr_id = " . intval($arr['cr_id']) . " ";
+ elseif(trim($arr['cr_name']))
+ $sql_extra = " and cr_name = '" . protect_sprintf(dbesc(trim($arr['cr_name']))) . "' ";
+ else {
+ $ret['message'] = t('Invalid room specifier.');
+ return $ret;
+ }
+
+ $r = q("select * from chatroom where cr_uid = %d $sql_extra limit 1",
+ intval($channel['channel_id'])
+ );
+ if(! $r) {
+ $ret['message'] = t('Invalid room specifier.');
+ return $ret;
+ }
+
+ build_sync_packet($channel['channel_id'],array('chatroom' => $r));
+
+ q("delete from chatroom where cr_id = %d",
+ intval($r[0]['cr_id'])
+ );
+ if($r[0]['cr_id']) {
+ q("delete from chatpresence where cp_room = %d",
+ intval($r[0]['cr_id'])
+ );
+ q("delete from chat where chat_room = %d",
+ intval($r[0]['cr_id'])
+ );
+ }
+
+ $ret['success'] = true;
+ return $ret;
+ }
+
+
+ static public function enter($observer_xchan, $room_id, $status, $client) {
+
+ if(! $room_id || ! $observer_xchan)
+ return;
+
+ $r = q("select * from chatroom where cr_id = %d limit 1",
+ intval($room_id)
+ );
+ if(! $r) {
+ notice( t('Room not found.') . EOL);
+ return false;
+ }
+ require_once('include/security.php');
+ $sql_extra = permissions_sql($r[0]['cr_uid']);
+
+ $x = q("select * from chatroom where cr_id = %d and cr_uid = %d $sql_extra limit 1",
+ intval($room_id),
+ intval($r[0]['cr_uid'])
+ );
+ if(! $x) {
+ notice( t('Permission denied.') . EOL);
+ return false;
+ }
+
+ $limit = service_class_fetch($r[0]['cr_uid'], 'chatters_inroom');
+ if($limit !== false) {
+ $y = q("select count(*) as total from chatpresence where cp_room = %d",
+ intval($room_id)
+ );
+ if($y && $y[0]['total'] > $limit) {
+ notice( t('Room is full') . EOL);
+ return false;
+ }
+ }
+
+ if(intval($x[0]['cr_expire'])) {
+ $r = q("delete from chat where created < %s - INTERVAL %s and chat_room = %d",
+ db_utcnow(),
+ db_quoteinterval( intval($x[0]['cr_expire']) . ' MINUTE' ),
+ intval($x[0]['cr_id'])
+ );
+ }
+
+ $r = q("select * from chatpresence where cp_xchan = '%s' and cp_room = %d limit 1",
+ dbesc($observer_xchan),
+ intval($room_id)
+ );
+ if($r) {
+ q("update chatpresence set cp_last = '%s' where cp_id = %d and cp_client = '%s'",
+ dbesc(datetime_convert()),
+ intval($r[0]['cp_id']),
+ dbesc($client)
+ );
+ return true;
+ }
+
+ $r = q("insert into chatpresence ( cp_room, cp_xchan, cp_last, cp_status, cp_client )
+ values ( %d, '%s', '%s', '%s', '%s' )",
+ intval($room_id),
+ dbesc($observer_xchan),
+ dbesc(datetime_convert()),
+ dbesc($status),
+ dbesc($client)
+ );
+
+ return $r;
+ }
+
+
+ function leave($observer_xchan, $room_id, $client) {
+ if(! $room_id || ! $observer_xchan)
+ return;
+
+ $r = q("select * from chatpresence where cp_xchan = '%s' and cp_room = %d and cp_client = '%s' limit 1",
+ dbesc($observer_xchan),
+ intval($room_id),
+ dbesc($client)
+ );
+ if($r) {
+ q("delete from chatpresence where cp_id = %d",
+ intval($r[0]['cp_id'])
+ );
+ }
+
+ return true;
+ }
+
+
+ static public function roomlist($uid) {
+ require_once('include/security.php');
+ $sql_extra = permissions_sql($uid);
+
+ $r = q("select allow_cid, allow_gid, deny_cid, deny_gid, cr_name, cr_expire, cr_id, count(cp_id) as cr_inroom from chatroom left join chatpresence on cr_id = cp_room where cr_uid = %d $sql_extra group by cr_name, cr_id order by cr_name",
+ intval($uid)
+ );
+
+ return $r;
+ }
+
+ static public function list_count($uid) {
+ require_once('include/security.php');
+ $sql_extra = permissions_sql($uid);
+
+ $r = q("select count(*) as total from chatroom where cr_uid = %d $sql_extra",
+ intval($uid)
+ );
+
+ return $r[0]['total'];
+ }
+
+ /**
+ * create a chat message via API.
+ * It is the caller's responsibility to enter the room.
+ */
+
+ static public function message($uid, $room_id, $xchan, $text) {
+
+ $ret = array('success' => false);
+
+ if(! $text)
+ return;
+
+ $sql_extra = permissions_sql($uid);
+
+ $r = q("select * from chatroom where cr_uid = %d and cr_id = %d $sql_extra",
+ intval($uid),
+ intval($room_id)
+ );
+ if(! $r)
+ return $ret;
+
+ $arr = array(
+ 'chat_room' => $room_id,
+ 'chat_xchan' => $xchan,
+ 'chat_text' => $text
+ );
+
+ call_hooks('chat_message', $arr);
+
+ $x = q("insert into chat ( chat_room, chat_xchan, created, chat_text )
+ values( %d, '%s', '%s', '%s' )",
+ intval($room_id),
+ dbesc($xchan),
+ dbesc(datetime_convert()),
+ dbesc($arr['chat_text'])
+ );
+
+ $ret['success'] = true;
+ return $ret;
+ }
+}
diff --git a/include/enotify.php b/Zotlabs/Lib/Enotify.php
index bd8698606..ccb538ef5 100644
--- a/include/enotify.php
+++ b/Zotlabs/Lib/Enotify.php
@@ -1,95 +1,99 @@
<?php
-/**
- * @file include/enotify.php
- *
- * @brief File with functions and a class for email notifications.
- */
+
+namespace Zotlabs\Lib;
/**
- * @brief
- *
- * @param array $params an assoziative array with:
- * * \e string \b from_xchan sender xchan hash
- * * \e string \b to_xchan recipient xchan hash
- * * \e array \b item an assoziative array
- * * \e int \b type one of the NOTIFY_* constants from boot.php
- * * \e string \b link
- * * \e string \b parent_mid
- * * \e string \b otype
- * * \e string \b verb
- * * \e string \b activity
+ * @brief File with functions and a class for generating system and email notifications.
*/
-function notification($params) {
- logger('notification: entry', LOGGER_DEBUG);
- // throw a small amount of entropy into the system to breakup duplicates arriving at the same precise instant.
- usleep(mt_rand(0, 10000));
+class Enotify {
- $a = get_app();
+ /**
+ * @brief
+ *
+ * @param array $params an assoziative array with:
+ * * \e string \b from_xchan sender xchan hash
+ * * \e string \b to_xchan recipient xchan hash
+ * * \e array \b item an assoziative array
+ * * \e int \b type one of the NOTIFY_* constants from boot.php
+ * * \e string \b link
+ * * \e string \b parent_mid
+ * * \e string \b otype
+ * * \e string \b verb
+ * * \e string \b activity
+ */
- if ($params['from_xchan']) {
- $x = q("select * from xchan where xchan_hash = '%s' limit 1",
- dbesc($params['from_xchan'])
- );
- }
- if ($params['to_xchan']) {
- $y = q("select channel.*, account.* from channel left join account on channel_account_id = account_id
- where channel_hash = '%s' and channel_removed = 0 limit 1",
- dbesc($params['to_xchan'])
- );
- }
- if ($x & $y) {
- $sender = $x[0];
- $recip = $y[0];
- } else {
- logger('notification: no sender or recipient.');
- logger('sender: ' . $params['from_xchan']);
- logger('recip: ' . $params['to_xchan']);
- return;
- }
+ static public function submit($params) {
- // from here on everything is in the recipients language
+ logger('notification: entry', LOGGER_DEBUG);
- push_lang($recip['account_language']); // should probably have a channel language
+ // throw a small amount of entropy into the system to breakup duplicates arriving at the same precise instant.
+ usleep(mt_rand(0, 10000));
- $banner = t('$Projectname Notification');
- $product = t('$projectname'); // PLATFORM_NAME;
- $siteurl = z_root();
- $thanks = t('Thank You,');
- $sitename = get_config('system','sitename');
- $site_admin = sprintf( t('%s Administrator'), $sitename);
+ if ($params['from_xchan']) {
+ $x = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($params['from_xchan'])
+ );
+ }
+ if ($params['to_xchan']) {
+ $y = q("select channel.*, account.* from channel left join account on channel_account_id = account_id
+ where channel_hash = '%s' and channel_removed = 0 limit 1",
+ dbesc($params['to_xchan'])
+ );
+ }
+ if ($x & $y) {
+ $sender = $x[0];
+ $recip = $y[0];
+ } else {
+ logger('notification: no sender or recipient.');
+ logger('sender: ' . $params['from_xchan']);
+ logger('recip: ' . $params['to_xchan']);
+ return;
+ }
- $sender_name = $product;
- $hostname = App::get_hostname();
- if(strpos($hostname,':'))
- $hostname = substr($hostname,0,strpos($hostname,':'));
+ // from here on everything is in the recipients language
- // Do not translate 'noreply' as it must be a legal 7-bit email address
- $sender_email = 'noreply' . '@' . $hostname;
+ push_lang($recip['account_language']); // should probably have a channel language
- $additional_mail_header = "";
+ $banner = t('$Projectname Notification');
+ $product = t('$projectname'); // PLATFORM_NAME;
+ $siteurl = z_root();
+ $thanks = t('Thank You,');
+ $sitename = get_config('system','sitename');
+ $site_admin = sprintf( t('%s Administrator'), $sitename);
- if (array_key_exists('item', $params)) {
- require_once('include/conversation.php');
- // if it's a normal item...
- if (array_key_exists('verb', $params['item'])) {
- // localize_item() alters the original item so make a copy first
- $i = $params['item'];
- logger('calling localize');
- localize_item($i);
- $title = $i['title'];
- $body = $i['body'];
- $private = (($i['item_private']) || intval($i['item_obscured']));
- }
+ $sender_name = $product;
+ $hostname = \App::get_hostname();
+ if(strpos($hostname,':'))
+ $hostname = substr($hostname,0,strpos($hostname,':'));
+
+ // Do not translate 'noreply' as it must be a legal 7-bit email address
+ $sender_email = 'noreply' . '@' . $hostname;
+
+ $additional_mail_header = "";
+
+ if(array_key_exists('item', $params)) {
+ require_once('include/conversation.php');
+ // if it's a normal item...
+ if (array_key_exists('verb', $params['item'])) {
+ // localize_item() alters the original item so make a copy first
+ $i = $params['item'];
+ logger('calling localize');
+ localize_item($i);
+ $title = $i['title'];
+ $body = $i['body'];
+ $private = (($i['item_private']) || intval($i['item_obscured']));
+ }
+ else {
+ $title = $params['item']['title'];
+ $body = $params['item']['body'];
+ }
+ }
else {
- $title = $params['item']['title'];
- $body = $params['item']['body'];
+ $title = $body = '';
}
- } else {
- $title = $body = '';
- }
// e.g. "your post", "David's photo", etc.
@@ -424,7 +428,7 @@ function notification($params) {
// 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,', '))
+ if ((\App::$language === 'en' || (! \App::$language)) && strpos($msg,', '))
$msg = substr($msg,strpos($msg,', ')+1);
$r = q("update notify set msg = '%s' where id = %d and uid = %d",
@@ -441,7 +445,7 @@ function notification($params) {
logger('notification: sending notification email');
$hn = get_pconfig($recip['channel_id'],'system','email_notify_host');
- if($hn && (! stristr(App::get_hostname(),$hn))) {
+ if($hn && (! stristr(\App::get_hostname(),$hn))) {
// this isn't the email notification host
pop_lang();
return;
@@ -455,7 +459,7 @@ function notification($params) {
// use $_SESSION['zid_override'] to force zid() to use
// the recipient address instead of the current observer
- $_SESSION['zid_override'] = $recip['channel_address'] . '@' . App::get_hostname();
+ $_SESSION['zid_override'] = $recip['channel_address'] . '@' . \App::get_hostname();
$_SESSION['zrl_override'] = z_root() . '/channel/' . $recip['channel_address'];
$textversion = zidify_links($textversion);
@@ -529,7 +533,7 @@ function notification($params) {
$tpl = get_markup_template('email_notify_html.tpl');
$email_html_body = replace_macros($tpl,array(
'$banner' => $datarray['banner'],
- '$notify_icon' => Zotlabs\Lib\System::get_notify_icon(),
+ '$notify_icon' => \Zotlabs\Lib\System::get_notify_icon(),
'$product' => $datarray['product'],
'$preamble' => $datarray['preamble'],
'$sitename' => $datarray['sitename'],
@@ -570,7 +574,7 @@ function notification($params) {
// use the EmailNotification library to send the message
- enotify::send(array(
+ self::send(array(
'fromName' => $sender_name,
'fromEmail' => $sender_email,
'replyTo' => $sender_email,
@@ -587,12 +591,6 @@ function notification($params) {
}
-/**
- * @brief A class for sending email notifications.
- *
- * @fixme Class names start mostly with capital letter to distinguish them easier.
- */
-class enotify {
/**
* @brief Send a multipart/alternative message with Text and HTML versions.
*
@@ -649,4 +647,39 @@ class enotify {
);
logger("notification: enotify::send returns " . $res, LOGGER_DEBUG);
}
+
+ static public function format($item) {
+
+ $ret = '';
+
+ require_once('include/conversation.php');
+
+ // Call localize_item with the "brief" flag to get a one line status for activities.
+ // This should set $item['localized'] to indicate we have a brief summary.
+
+ localize_item($item);
+
+ if($item_localize) {
+ $itemem_text = $item['localize'];
+ }
+ else {
+ $itemem_text = (($item['item_thread_top'])
+ ? t('created a new post')
+ : sprintf( t('commented on %s\'s post'), $item['owner']['xchan_name']));
+ }
+
+ // convert this logic into a json array just like the system notifications
+
+ return array(
+ 'notify_link' => $item['llink'],
+ 'name' => $item['author']['xchan_name'],
+ 'url' => $item['author']['xchan_url'],
+ 'photo' => $item['author']['xchan_photo_s'],
+ 'when' => relative_date($item['created']),
+ 'class' => (intval($item['item_unseen']) ? 'notify-unseen' : 'notify-seen'),
+ 'message' => strip_tags(bbcode($itemem_text))
+ );
+
+ }
+
}
diff --git a/Zotlabs/Lib/ThreadStream.php b/Zotlabs/Lib/ThreadStream.php
index 2bcf167e9..a6d4f8517 100644
--- a/Zotlabs/Lib/ThreadStream.php
+++ b/Zotlabs/Lib/ThreadStream.php
@@ -165,7 +165,7 @@ class ThreadStream {
$item->set_commentable(can_comment_on_post($this->observer['xchan_hash'],$item->data));
}
}
- require_once('include/identity.php');
+ require_once('include/channel.php');
$item->set_conversation($this);
$this->threads[] = $item;
diff --git a/Zotlabs/Module/Acl.php b/Zotlabs/Module/Acl.php
index 5c14ab599..62ac29286 100644
--- a/Zotlabs/Module/Acl.php
+++ b/Zotlabs/Module/Acl.php
@@ -260,7 +260,7 @@ class Acl extends \Zotlabs\Web\Controller {
// logger('navbar_complete');
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
return;
}
diff --git a/Zotlabs/Module/Admin.php b/Zotlabs/Module/Admin.php
index 0a167b273..8f15035d1 100644
--- a/Zotlabs/Module/Admin.php
+++ b/Zotlabs/Module/Admin.php
@@ -902,7 +902,6 @@ class Admin extends \Zotlabs\Web\Controller {
}
// account delete button was submitted
if (x($_POST, 'page_users_delete')) {
- require_once('include/Contact.php');
foreach ($users as $uid){
account_remove($uid, true, false);
}
@@ -951,7 +950,6 @@ class Admin extends \Zotlabs\Web\Controller {
switch (argv(2)){
case 'delete':
// delete user
- require_once('include/Contact.php');
account_remove($uid,true,false);
notice( sprintf(t("Account '%s' deleted"), $account[0]['account_email']) . EOL);
@@ -1096,7 +1094,6 @@ class Admin extends \Zotlabs\Web\Controller {
notice( sprintf( tt("%s channel code allowed/disallowed", "%s channels code allowed/disallowed", count($channels)), count($channels)) );
}
if (x($_POST,'page_channels_delete')){
- require_once("include/Contact.php");
foreach($channels as $uid){
channel_remove($uid,true);
}
@@ -1128,7 +1125,6 @@ class Admin extends \Zotlabs\Web\Controller {
case "delete":{
check_form_security_token_redirectOnErr('/admin/channels', 'admin_channels', 't');
// delete channel
- require_once("include/Contact.php");
channel_remove($uid,true);
notice( sprintf(t("Channel '%s' deleted"), $channel[0]['channel_name']) . EOL);
@@ -1425,13 +1421,15 @@ class Admin extends \Zotlabs\Web\Controller {
function listAddonRepos() {
$addonrepos = [];
$addonDir = __DIR__ . '/../../extend/addon/';
- if ($handle = opendir($addonDir)) {
- while (false !== ($entry = readdir($handle))) {
- if ($entry != "." && $entry != "..") {
- $addonrepos[] = $entry;
+ if(is_dir($addonDir)) {
+ if ($handle = opendir($addonDir)) {
+ while (false !== ($entry = readdir($handle))) {
+ if ($entry != "." && $entry != "..") {
+ $addonrepos[] = $entry;
+ }
}
+ closedir($handle);
}
- closedir($handle);
}
return $addonrepos;
}
@@ -1735,7 +1733,7 @@ class Admin extends \Zotlabs\Web\Controller {
} else {
json_return_and_die(array('message' => 'No repo name provided.', 'success' => false));
}
- $extendDir = __DIR__ . '/../../store/git/sys/extend';
+ $extendDir = __DIR__ . '/../../store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
@@ -1748,7 +1746,7 @@ class Admin extends \Zotlabs\Web\Controller {
}
}
}
- $repoDir = __DIR__ . '/../../store/git/sys/extend/addon/' . $repoName;
+ $repoDir = __DIR__ . '/../../store/[data]/git/sys/extend/addon/' . $repoName;
if (!is_dir($repoDir)) {
logger('Repo directory does not exist: ' . $repoDir);
json_return_and_die(array('message' => 'Invalid addon repo.', 'success' => false));
@@ -1785,7 +1783,7 @@ class Admin extends \Zotlabs\Web\Controller {
} else {
json_return_and_die(array('message' => 'No repo name provided.', 'success' => false));
}
- $extendDir = __DIR__ . '/../../store/git/sys/extend';
+ $extendDir = __DIR__ . '/../../store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
@@ -1798,7 +1796,7 @@ class Admin extends \Zotlabs\Web\Controller {
}
}
}
- $repoDir = __DIR__ . '/../../store/git/sys/extend/addon/' . $repoName;
+ $repoDir = __DIR__ . '/../../store/[data]/git/sys/extend/addon/' . $repoName;
if (!is_dir($repoDir)) {
logger('Repo directory does not exist: ' . $repoDir);
json_return_and_die(array('message' => 'Invalid addon repo.', 'success' => false));
@@ -1818,7 +1816,7 @@ class Admin extends \Zotlabs\Web\Controller {
if (array_key_exists('repoURL', $_REQUEST)) {
require __DIR__ . '/../../library/PHPGit.autoload.php'; // Load PHPGit dependencies
$repoURL = $_REQUEST['repoURL'];
- $extendDir = __DIR__ . '/../../store/git/sys/extend';
+ $extendDir = __DIR__ . '/../../store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
@@ -1846,7 +1844,7 @@ class Admin extends \Zotlabs\Web\Controller {
json_return_and_die(array('message' => 'Invalid git repo', 'success' => false));
}
$repoDir = $addonDir . '/' . $repoName;
- $tempRepoBaseDir = __DIR__ . '/../../store/git/sys/temp/';
+ $tempRepoBaseDir = __DIR__ . '/../../store/[data]/git/sys/temp/';
$tempAddonDir = $tempRepoBaseDir . $repoName;
if (!is_writable($addonDir) || !is_writable($tempAddonDir)) {
@@ -1880,9 +1878,9 @@ class Admin extends \Zotlabs\Web\Controller {
if (array_key_exists('repoURL', $_REQUEST)) {
require __DIR__ . '/../../library/PHPGit.autoload.php'; // Load PHPGit dependencies
$repoURL = $_REQUEST['repoURL'];
- $extendDir = __DIR__ . '/../../store/git/sys/extend';
+ $extendDir = __DIR__ . '/../../store/[data]/git/sys/extend';
$addonDir = $extendDir . '/addon';
- $tempAddonDir = __DIR__ . '/../../store/git/sys/temp';
+ $tempAddonDir = __DIR__ . '/../../store/[data]/git/sys/temp';
if (!file_exists($extendDir)) {
if (!mkdir($extendDir, 0770, true)) {
logger('Error creating extend folder: ' . $extendDir);
@@ -1894,6 +1892,12 @@ class Admin extends \Zotlabs\Web\Controller {
}
}
}
+ if (!is_dir($tempAddonDir)) {
+ if (!mkdir($tempAddonDir, 0770, true)) {
+ logger('Error creating temp plugin repo folder: ' . $tempAddonDir);
+ json_return_and_die(array('message' => 'Error creating temp plugin repo folder: ' . $tempAddonDir, 'success' => false));
+ }
+ }
$repoName = null;
if (array_key_exists('repoName', $_REQUEST) && $_REQUEST['repoName'] !== '') {
$repoName = $_REQUEST['repoName'];
diff --git a/Zotlabs/Module/Appman.php b/Zotlabs/Module/Appman.php
index ba2a64f35..a200e986a 100644
--- a/Zotlabs/Module/Appman.php
+++ b/Zotlabs/Module/Appman.php
@@ -2,8 +2,9 @@
namespace Zotlabs\Module;
-require_once('include/apps.php');
+//require_once('include/apps.php');
+use \Zotlabs\Lib as Zlib;
class Appman extends \Zotlabs\Web\Controller {
@@ -30,16 +31,16 @@ class Appman extends \Zotlabs\Web\Controller {
'categories' => escape_tags($_REQUEST['categories'])
);
- $_REQUEST['appid'] = app_install(local_channel(),$arr);
+ $_REQUEST['appid'] = Zlib\Apps::app_install(local_channel(),$arr);
- if(app_installed(local_channel(),$arr))
+ if(Zlib\Apps::app_installed(local_channel(),$arr))
info( t('App installed.') . EOL);
return;
}
- $papp = app_decode($_POST['papp']);
+ $papp = Zlib\Apps::app_decode($_POST['papp']);
if(! is_array($papp)) {
notice( t('Malformed app.') . EOL);
@@ -47,13 +48,13 @@ class Appman extends \Zotlabs\Web\Controller {
}
if($_POST['install']) {
- app_install(local_channel(),$papp);
- if(app_installed(local_channel(),$papp))
+ Zlib\Apps::app_install(local_channel(),$papp);
+ if(Zlib\Apps::app_installed(local_channel(),$papp))
info( t('App installed.') . EOL);
}
if($_POST['delete']) {
- app_destroy(local_channel(),$papp);
+ Zlib\Apps::app_destroy(local_channel(),$papp);
}
if($_POST['edit']) {
@@ -100,7 +101,7 @@ class Appman extends \Zotlabs\Web\Controller {
}
}
- $embed = array('embed', t('Embed code'), app_encode($app,true),'', 'onclick="this.select();"');
+ $embed = array('embed', t('Embed code'), Zlib\Apps::app_encode($app,true),'', 'onclick="this.select();"');
}
diff --git a/Zotlabs/Module/Apps.php b/Zotlabs/Module/Apps.php
index 33259b319..4bdec4573 100644
--- a/Zotlabs/Module/Apps.php
+++ b/Zotlabs/Module/Apps.php
@@ -1,8 +1,9 @@
<?php
namespace Zotlabs\Module;
-require_once('include/apps.php');
+//require_once('include/apps.php');
+use \Zotlabs\Lib as Zlib;
class Apps extends \Zotlabs\Web\Controller {
@@ -19,25 +20,25 @@ class Apps extends \Zotlabs\Web\Controller {
if(local_channel()) {
- import_system_apps();
+ Zlib\Apps::import_system_apps();
$syslist = array();
- $list = app_list(local_channel(), false, $_GET['cat']);
+ $list = Zlib\Apps::app_list(local_channel(), false, $_GET['cat']);
if($list) {
foreach($list as $x) {
- $syslist[] = app_encode($x);
+ $syslist[] = Zlib\Apps::app_encode($x);
}
}
- translate_system_apps($syslist);
+ Zlib\Apps::translate_system_apps($syslist);
}
else
- $syslist = get_system_apps(true);
+ $syslist = Zlib\Apps::get_system_apps(true);
- usort($syslist,'app_name_compare');
+ usort($syslist,'Zotlabs\\Lib\\Apps::app_name_compare');
// logger('apps: ' . print_r($syslist,true));
foreach($syslist as $app) {
- $apps[] = app_render($app,$mode);
+ $apps[] = Zlib\Apps::app_render($app,$mode);
}
return replace_macros(get_markup_template('myapps.tpl'), array(
diff --git a/Zotlabs/Module/Blocks.php b/Zotlabs/Module/Blocks.php
index ed702befb..32650a090 100644
--- a/Zotlabs/Module/Blocks.php
+++ b/Zotlabs/Module/Blocks.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
diff --git a/Zotlabs/Module/Cal.php b/Zotlabs/Module/Cal.php
index 958ce5aa6..a1adb30e5 100644
--- a/Zotlabs/Module/Cal.php
+++ b/Zotlabs/Module/Cal.php
@@ -6,14 +6,12 @@ require_once('include/bbcode.php');
require_once('include/datetime.php');
require_once('include/event.php');
require_once('include/items.php');
-require_once('include/Contact.php');
-
class Cal extends \Zotlabs\Web\Controller {
function init() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
return;
}
@@ -47,13 +45,12 @@ class Cal extends \Zotlabs\Web\Controller {
- function get() {
+ function get() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
return;
}
-
-
+
$channel = null;
if(argc() > 1) {
diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php
index f55705442..29bfcbc3c 100644
--- a/Zotlabs/Module/Channel.php
+++ b/Zotlabs/Module/Channel.php
@@ -13,353 +13,355 @@ require_once('include/PermissionDescription.php');
class Channel extends \Zotlabs\Web\Controller {
-function init() {
-
- $which = null;
- if(argc() > 1)
- $which = argv(1);
- if(! $which) {
- if(local_channel()) {
- $channel = \App::get_channel();
- if($channel && $channel['channel_address'])
- $which = $channel['channel_address'];
+ function init() {
+
+ $which = null;
+ if(argc() > 1)
+ $which = argv(1);
+ if(! $which) {
+ if(local_channel()) {
+ $channel = \App::get_channel();
+ if($channel && $channel['channel_address'])
+ $which = $channel['channel_address'];
+ }
+ }
+ if(! $which) {
+ notice( t('You must be logged in to see this page.') . EOL );
+ return;
}
- }
- if(! $which) {
- notice( t('You must be logged in to see this page.') . EOL );
- return;
- }
- $profile = 0;
- $channel = \App::get_channel();
+ $profile = 0;
+ $channel = \App::get_channel();
- if((local_channel()) && (argc() > 2) && (argv(2) === 'view')) {
- $which = $channel['channel_address'];
- $profile = argv(1);
- }
+ if((local_channel()) && (argc() > 2) && (argv(2) === 'view')) {
+ $which = $channel['channel_address'];
+ $profile = argv(1);
+ }
- \App::$page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" title="' . t('Posts and comments') . '" href="' . z_root() . '/feed/' . $which . '" />' . "\r\n" ;
- \App::$page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" title="' . t('Only posts') . '" href="' . z_root() . '/feed/' . $which . '?top=1" />' . "\r\n" ;
+ \App::$page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" title="' . t('Posts and comments') . '" href="' . z_root() . '/feed/' . $which . '" />' . "\r\n" ;
+ \App::$page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" title="' . t('Only posts') . '" href="' . z_root() . '/feed/' . $which . '?top=1" />' . "\r\n" ;
-// Not yet ready for prime time
-// \App::$page['htmlhead'] .= '<link rel="openid.server" href="' . z_root() . '/id/' . $which .'?f=" />' . "\r\n" ;
-// \App::$page['htmlhead'] .= '<link rel="openid.delegate" href="' . z_root() . '/channel/' . $which .'" />' . "\r\n" ;
+ // Not yet ready for prime time
+ // \App::$page['htmlhead'] .= '<link rel="openid.server" href="' . z_root() . '/id/' . $which .'?f=" />' . "\r\n" ;
+ // \App::$page['htmlhead'] .= '<link rel="openid.delegate" href="' . z_root() . '/channel/' . $which .'" />' . "\r\n" ;
- // Run profile_load() here to make sure the theme is set before
- // we start loading content
+ // Run profile_load() here to make sure the theme is set before
+ // we start loading content
- profile_load($a,$which,$profile);
+ profile_load($a,$which,$profile);
-}
+ }
-function get($update = 0, $load = false) {
+ function get($update = 0, $load = false) {
- if($load)
- $_SESSION['loadtime'] = datetime_convert();
+ if($load)
+ $_SESSION['loadtime'] = datetime_convert();
- $checkjs = new \Zotlabs\Web\CheckJS(1);
+ $checkjs = new \Zotlabs\Web\CheckJS(1);
- $category = $datequery = $datequery2 = '';
+ $category = $datequery = $datequery2 = '';
- $mid = ((x($_REQUEST,'mid')) ? $_REQUEST['mid'] : '');
+ $mid = ((x($_REQUEST,'mid')) ? $_REQUEST['mid'] : '');
- $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']) : '');
+ $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']) : '');
- if(get_config('system','block_public') && (! get_account_id()) && (! remote_channel())) {
+ if(observer_prohibited(true)) {
return login();
- }
+ }
- $category = ((x($_REQUEST,'cat')) ? $_REQUEST['cat'] : '');
- $hashtags = ((x($_REQUEST,'tag')) ? $_REQUEST['tag'] : '');
+ $category = ((x($_REQUEST,'cat')) ? $_REQUEST['cat'] : '');
+ $hashtags = ((x($_REQUEST,'tag')) ? $_REQUEST['tag'] : '');
- $groups = array();
+ $groups = array();
- $o = '';
+ $o = '';
- if($update) {
- // Ensure we've got a profile owner if updating.
- \App::$profile['profile_uid'] = \App::$profile_uid = $update;
- }
- else {
- if(\App::$profile['profile_uid'] == local_channel()) {
- nav_set_selected('home');
+ if($update) {
+ // Ensure we've got a profile owner if updating.
+ \App::$profile['profile_uid'] = \App::$profile_uid = $update;
+ }
+ else {
+ if(\App::$profile['profile_uid'] == local_channel()) {
+ nav_set_selected('home');
+ }
}
- }
- $is_owner = (((local_channel()) && (\App::$profile['profile_uid'] == local_channel())) ? true : false);
+ $is_owner = (((local_channel()) && (\App::$profile['profile_uid'] == local_channel())) ? true : false);
- $channel = \App::get_channel();
- $observer = \App::get_observer();
- $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
+ $channel = \App::get_channel();
+ $observer = \App::get_observer();
+ $ob_hash = (($observer) ? $observer['xchan_hash'] : '');
- $perms = get_all_perms(\App::$profile['profile_uid'],$ob_hash);
+ $perms = get_all_perms(\App::$profile['profile_uid'],$ob_hash);
- if(! $perms['view_stream']) {
+ if(! $perms['view_stream']) {
// We may want to make the target of this redirect configurable
if($perms['view_profile']) {
notice( t('Insufficient permissions. Request redirected to profile page.') . EOL);
goaway (z_root() . "/profile/" . \App::$profile['channel_address']);
}
- notice( t('Permission denied.') . EOL);
- return;
- }
+ notice( t('Permission denied.') . EOL);
+ return;
+ }
- if(! $update) {
+ if(! $update) {
- $o .= profile_tabs($a, $is_owner, \App::$profile['channel_address']);
+ $o .= profile_tabs($a, $is_owner, \App::$profile['channel_address']);
- $o .= common_friends_visitor_widget(\App::$profile['profile_uid']);
+ $o .= common_friends_visitor_widget(\App::$profile['profile_uid']);
- if($channel && $is_owner) {
- $channel_acl = array(
- 'allow_cid' => $channel['channel_allow_cid'],
- 'allow_gid' => $channel['channel_allow_gid'],
- 'deny_cid' => $channel['channel_deny_cid'],
- 'deny_gid' => $channel['channel_deny_gid']
- );
- }
- else
- $channel_acl = array();
-
-
- if($perms['post_wall']) {
-
- $x = array(
- 'is_owner' => $is_owner,
- 'allow_location' => ((($is_owner || $observer) && (intval(get_pconfig(\App::$profile['profile_uid'],'system','use_browser_location')))) ? true : false),
- 'default_location' => (($is_owner) ? \App::$profile['channel_location'] : ''),
- 'nickname' => \App::$profile['channel_address'],
- 'lockstate' => (((strlen(\App::$profile['channel_allow_cid'])) || (strlen(\App::$profile['channel_allow_gid'])) || (strlen(\App::$profile['channel_deny_cid'])) || (strlen(\App::$profile['channel_deny_gid']))) ? 'lock' : 'unlock'),
- 'acl' => (($is_owner) ? populate_acl($channel_acl,true, \PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post') : ''),
- 'showacl' => (($is_owner) ? 'yes' : ''),
- 'bang' => '',
- 'visitor' => (($is_owner || $observer) ? true : false),
- 'profile_uid' => \App::$profile['profile_uid'],
- 'editor_autocomplete' => true,
- 'bbco_autocomplete' => 'bbcode',
- 'bbcode' => true
- );
-
- $o .= status_editor($a,$x);
- }
+ if($channel && $is_owner) {
+ $channel_acl = array(
+ 'allow_cid' => $channel['channel_allow_cid'],
+ 'allow_gid' => $channel['channel_allow_gid'],
+ 'deny_cid' => $channel['channel_deny_cid'],
+ 'deny_gid' => $channel['channel_deny_gid']
+ );
+ }
+ else
+ $channel_acl = array();
+
+
+ if($perms['post_wall']) {
+
+ $x = array(
+ 'is_owner' => $is_owner,
+ 'allow_location' => ((($is_owner || $observer) && (intval(get_pconfig(\App::$profile['profile_uid'],'system','use_browser_location')))) ? true : false),
+ 'default_location' => (($is_owner) ? \App::$profile['channel_location'] : ''),
+ 'nickname' => \App::$profile['channel_address'],
+ 'lockstate' => (((strlen(\App::$profile['channel_allow_cid'])) || (strlen(\App::$profile['channel_allow_gid'])) || (strlen(\App::$profile['channel_deny_cid'])) || (strlen(\App::$profile['channel_deny_gid']))) ? 'lock' : 'unlock'),
+ 'acl' => (($is_owner) ? populate_acl($channel_acl,true, \PermissionDescription::fromGlobalPermission('view_stream'), get_post_aclDialogDescription(), 'acl_dialog_post') : ''),
+ 'showacl' => (($is_owner) ? 'yes' : ''),
+ 'bang' => '',
+ 'visitor' => (($is_owner || $observer) ? true : false),
+ 'profile_uid' => \App::$profile['profile_uid'],
+ 'editor_autocomplete' => true,
+ 'bbco_autocomplete' => 'bbcode',
+ 'bbcode' => true
+ );
+
+ $o .= status_editor($a,$x);
+ }
- }
+ }
- /**
- * Get permissions SQL - if $remote_contact is true, our remote user has been pre-verified and we already have fetched his/her groups
- */
+ /**
+ * 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 = item_normal();
- $sql_extra = item_permissions_sql(\App::$profile['profile_uid']);
+ $item_normal = item_normal();
+ $sql_extra = item_permissions_sql(\App::$profile['profile_uid']);
- if(get_pconfig(\App::$profile['profile_uid'],'system','channel_list_mode') && (! $mid))
- $page_mode = 'list';
- else
- $page_mode = 'client';
+ if(get_pconfig(\App::$profile['profile_uid'],'system','channel_list_mode') && (! $mid))
+ $page_mode = 'list';
+ else
+ $page_mode = 'client';
- $abook_uids = " and abook.abook_channel = " . intval(\App::$profile['profile_uid']) . " ";
+ $abook_uids = " and abook.abook_channel = " . intval(\App::$profile['profile_uid']) . " ";
- $simple_update = (($update) ? " AND item_unseen = 1 " : '');
+ $simple_update = (($update) ? " AND item_unseen = 1 " : '');
- \App::$page['htmlhead'] .= "\r\n" . '<link rel="alternate" type="application/json+oembed" href="' . z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string) . '" title="oembed" />' . "\r\n";
+ \App::$page['htmlhead'] .= "\r\n" . '<link rel="alternate" type="application/json+oembed" href="' . z_root() . '/oep?f=&url=' . urlencode(z_root() . '/' . \App::$query_string) . '" title="oembed" />' . "\r\n";
- 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']) . "' ) ";
- if($load)
- $simple_update = '';
-
- if(($update) && (! $load)) {
-
- if ($mid) {
- $r = q("SELECT parent AS item_id from item where mid like '%s' and uid = %d $item_normal
- AND item_wall = 1 AND item_unseen = 1 $sql_extra limit 1",
- dbesc($mid . '%'),
- intval(\App::$profile['profile_uid'])
- );
- } else {
- $r = q("SELECT distinct parent AS `item_id`, created from item
- left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids )
- WHERE uid = %d $item_normal
- AND item_wall = 1 $simple_update
- AND (abook.abook_blocked = 0 or abook.abook_flags is null)
- $sql_extra
- ORDER BY created DESC",
- intval(\App::$profile['profile_uid'])
- );
- $_SESSION['loadtime'] = datetime_convert();
- }
-
- }
- else {
-
- 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($datequery) {
- $sql_extra2 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
- }
- if($datequery2) {
- $sql_extra2 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
- }
+ 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']) . "' ) ";
+ if($load)
+ $simple_update = '';
- $itemspage = get_pconfig(local_channel(),'system','itemspage');
- \App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
- $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']), intval(\App::$pager['start']));
+ if(($update) && (! $load)) {
- if($load || ($checkjs->disabled())) {
- if ($mid) {
- $r = q("SELECT parent AS item_id from item where mid = '%s' and uid = %d $item_normal
- AND item_wall = 1 $sql_extra limit 1",
- dbesc($mid),
+ if($mid) {
+ $r = q("SELECT parent AS item_id from item where mid like '%s' and uid = %d $item_normal
+ AND item_wall = 1 AND item_unseen = 1 $sql_extra limit 1",
+ dbesc($mid . '%'),
intval(\App::$profile['profile_uid'])
);
- if (! $r) {
- notice( t('Permission denied.') . EOL);
- }
-
- } else {
- $r = q("SELECT distinct id AS item_id, created FROM item
- left join abook on item.author_xchan = abook.abook_xchan
+ }
+ else {
+ $r = q("SELECT distinct parent AS `item_id`, created from item
+ left join abook on ( item.owner_xchan = abook.abook_xchan $abook_uids )
WHERE uid = %d $item_normal
- AND item_wall = 1 and item_thread_top = 1
- AND (abook_blocked = 0 or abook.abook_flags is null)
- $sql_extra $sql_extra2
- ORDER BY created DESC $pager_sql ",
+ AND item_wall = 1 $simple_update
+ AND (abook.abook_blocked = 0 or abook.abook_flags is null)
+ $sql_extra
+ ORDER BY created DESC",
intval(\App::$profile['profile_uid'])
);
+ $_SESSION['loadtime'] = datetime_convert();
}
+
}
else {
- $r = array();
- }
- }
- if($r) {
+ 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));
+ }
- $parents_str = ids_to_querystr($r,'item_id');
-
- $items = q("SELECT `item`.*, `item`.`id` AS `item_id`
- FROM `item`
- WHERE `item`.`uid` = %d $item_normal
- AND `item`.`parent` IN ( %s )
- $sql_extra ",
- intval(\App::$profile['profile_uid']),
- dbesc($parents_str)
- );
-
- xchan_query($items);
- $items = fetch_post_tags($items, true);
- $items = conv_sort($items,'created');
-
- if ($load && $mid && (! count($items))) {
- // This will happen if we don't have sufficient permissions
- // to view the parent item (or the item itself if it is toplevel)
- notice( t('Permission denied.') . EOL);
+ if($datequery) {
+ $sql_extra2 .= protect_sprintf(sprintf(" AND item.created <= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery))));
+ }
+ if($datequery2) {
+ $sql_extra2 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
+ }
+
+ $itemspage = get_pconfig(local_channel(),'system','itemspage');
+ \App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
+ $pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']), intval(\App::$pager['start']));
+
+ if($load || ($checkjs->disabled())) {
+ if($mid) {
+ $r = q("SELECT parent AS item_id from item where mid = '%s' and uid = %d $item_normal
+ AND item_wall = 1 $sql_extra limit 1",
+ dbesc($mid),
+ intval(\App::$profile['profile_uid'])
+ );
+ if (! $r) {
+ notice( t('Permission denied.') . EOL);
+ }
+
+ }
+ else {
+ $r = q("SELECT distinct id AS item_id, created FROM item
+ left join abook on item.author_xchan = abook.abook_xchan
+ WHERE uid = %d $item_normal
+ AND item_wall = 1 and item_thread_top = 1
+ AND (abook_blocked = 0 or abook.abook_flags is null)
+ $sql_extra $sql_extra2
+ ORDER BY created DESC $pager_sql ",
+ intval(\App::$profile['profile_uid'])
+ );
+ }
+ }
+ else {
+ $r = array();
+ }
}
- } else {
- $items = array();
- }
+ if($r) {
- if((! $update) && (! $load)) {
-
- // This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
- // because browser prefetching might change it on us. We have to deliver it with the page.
-
- $maxheight = get_pconfig(\App::$profile['profile_uid'],'system','channel_divmore_height');
- if(! $maxheight)
- $maxheight = 400;
-
- $o .= '<div id="live-channel"></div>' . "\r\n";
- $o .= "<script> var profile_uid = " . \App::$profile['profile_uid']
- . "; var netargs = '?f='; 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' => 'channel',
- '$uid' => ((\App::$profile['profile_uid']) ? \App::$profile['profile_uid'] : '0'),
- '$gid' => '0',
- '$cid' => '0',
- '$cmin' => '0',
- '$cmax' => '0',
- '$star' => '0',
- '$liked' => '0',
- '$conv' => '0',
- '$spam' => '0',
- '$nouveau' => '0',
- '$wall' => '1',
- '$fh' => '0',
- '$page' => ((\App::$pager['page'] != 1) ? \App::$pager['page'] : 1),
- '$search' => '',
- '$order' => '',
- '$list' => ((x($_REQUEST,'list')) ? intval($_REQUEST['list']) : 0),
- '$file' => '',
- '$cats' => (($category) ? $category : ''),
- '$tags' => (($hashtags) ? $hashtags : ''),
- '$mid' => $mid,
- '$verb' => '',
- '$dend' => $datequery,
- '$dbegin' => $datequery2
- ));
+ $parents_str = ids_to_querystr($r,'item_id');
+
+ $items = q("SELECT `item`.*, `item`.`id` AS `item_id`
+ FROM `item`
+ WHERE `item`.`uid` = %d $item_normal
+ AND `item`.`parent` IN ( %s )
+ $sql_extra ",
+ intval(\App::$profile['profile_uid']),
+ dbesc($parents_str)
+ );
+ xchan_query($items);
+ $items = fetch_post_tags($items, true);
+ $items = conv_sort($items,'created');
- }
+ if($load && $mid && (! count($items))) {
+ // This will happen if we don't have sufficient permissions
+ // to view the parent item (or the item itself if it is toplevel)
+ notice( t('Permission denied.') . EOL);
+ }
- $update_unseen = '';
+ }
+ else {
+ $items = array();
+ }
- if($page_mode === 'list') {
+ if((! $update) && (! $load)) {
+
+ // This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
+ // because browser prefetching might change it on us. We have to deliver it with the page.
+
+ $maxheight = get_pconfig(\App::$profile['profile_uid'],'system','channel_divmore_height');
+ if(! $maxheight)
+ $maxheight = 400;
+
+ $o .= '<div id="live-channel"></div>' . "\r\n";
+ $o .= "<script> var profile_uid = " . \App::$profile['profile_uid']
+ . "; var netargs = '?f='; 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' => 'channel',
+ '$uid' => ((\App::$profile['profile_uid']) ? \App::$profile['profile_uid'] : '0'),
+ '$gid' => '0',
+ '$cid' => '0',
+ '$cmin' => '0',
+ '$cmax' => '0',
+ '$star' => '0',
+ '$liked' => '0',
+ '$conv' => '0',
+ '$spam' => '0',
+ '$nouveau' => '0',
+ '$wall' => '1',
+ '$fh' => '0',
+ '$page' => ((\App::$pager['page'] != 1) ? \App::$pager['page'] : 1),
+ '$search' => '',
+ '$order' => '',
+ '$list' => ((x($_REQUEST,'list')) ? intval($_REQUEST['list']) : 0),
+ '$file' => '',
+ '$cats' => (($category) ? $category : ''),
+ '$tags' => (($hashtags) ? $hashtags : ''),
+ '$mid' => $mid,
+ '$verb' => '',
+ '$dend' => $datequery,
+ '$dbegin' => $datequery2
+ ));
- /**
- * in "list mode", only mark the parent item and any like activities as "seen".
- * We won't distinguish between comment likes and post likes. The important thing
- * is that the number of unseen comments will be accurate. The SQL to separate the
- * comment likes could also get somewhat hairy.
- */
- if($parents_str) {
- $update_unseen = " AND ( id IN ( " . dbesc($parents_str) . " )";
- $update_unseen .= " OR ( parent IN ( " . dbesc($parents_str) . " ) AND verb in ( '" . dbesc(ACTIVITY_LIKE) . "','" . dbesc(ACTIVITY_DISLIKE) . "' ))) ";
- }
- }
- else {
- if($parents_str) {
- $update_unseen = " AND parent IN ( " . dbesc($parents_str) . " )";
}
- }
- if($is_owner && $update_unseen) {
- $r = q("UPDATE item SET item_unseen = 0 where item_unseen = 1 and item_wall = 1 AND uid = %d $update_unseen",
- intval(local_channel())
- );
- }
+ $update_unseen = '';
+ if($page_mode === 'list') {
- if($checkjs->disabled()) {
- $o .= conversation($a,$items,'channel',$update,'traditional');
- } else {
- $o .= conversation($a,$items,'channel',$update,$page_mode);
- }
+ /**
+ * in "list mode", only mark the parent item and any like activities as "seen".
+ * We won't distinguish between comment likes and post likes. The important thing
+ * is that the number of unseen comments will be accurate. The SQL to separate the
+ * comment likes could also get somewhat hairy.
+ */
- if((! $update) || ($checkjs->disabled())) {
- $o .= alt_pager($a,count($items));
- if ($mid && $items[0]['title'])
- \App::$page['title'] = $items[0]['title'] . " - " . \App::$page['title'];
- }
+ if($parents_str) {
+ $update_unseen = " AND ( id IN ( " . dbesc($parents_str) . " )";
+ $update_unseen .= " OR ( parent IN ( " . dbesc($parents_str) . " ) AND verb in ( '" . dbesc(ACTIVITY_LIKE) . "','" . dbesc(ACTIVITY_DISLIKE) . "' ))) ";
+ }
+ }
+ else {
+ if($parents_str) {
+ $update_unseen = " AND parent IN ( " . dbesc($parents_str) . " )";
+ }
+ }
+
+ if($is_owner && $update_unseen) {
+ $r = q("UPDATE item SET item_unseen = 0 where item_unseen = 1 and item_wall = 1 AND uid = %d $update_unseen",
+ intval(local_channel())
+ );
+ }
- if($mid)
- $o .= '<div id="content-complete"></div>';
- return $o;
-}
+ if($checkjs->disabled()) {
+ $o .= conversation($a,$items,'channel',$update,'traditional');
+ }
+ else {
+ $o .= conversation($a,$items,'channel',$update,$page_mode);
+ }
+ if((! $update) || ($checkjs->disabled())) {
+ $o .= alt_pager($a,count($items));
+ if ($mid && $items[0]['title'])
+ \App::$page['title'] = $items[0]['title'] . " - " . \App::$page['title'];
+ }
+ if($mid)
+ $o .= '<div id="content-complete"></div>';
+
+ return $o;
+ }
} \ No newline at end of file
diff --git a/Zotlabs/Module/Chanview.php b/Zotlabs/Module/Chanview.php
index f70444816..c6dd07eb7 100644
--- a/Zotlabs/Module/Chanview.php
+++ b/Zotlabs/Module/Chanview.php
@@ -1,10 +1,8 @@
<?php
namespace Zotlabs\Module;
-require_once('include/Contact.php');
require_once('include/zot.php');
-
class Chanview extends \Zotlabs\Web\Controller {
function get() {
@@ -62,18 +60,15 @@ class Chanview extends \Zotlabs\Web\Controller {
}
if($_REQUEST['address']) {
- $ret = zot_finger($_REQUEST['address'],null);
- if($ret['success']) {
- $j = json_decode($ret['body'],true);
- if($j)
- import_xchan($j);
+ $j = \Zotlabs\Zot\Finger::run($_REQUEST['address'],null);
+ if($j['success']) {
+ import_xchan($j);
$r = q("select * from xchan where xchan_addr = '%s' limit 1",
dbesc($_REQUEST['address'])
);
if($r)
\App::$poi = $r[0];
}
-
}
}
diff --git a/Zotlabs/Module/Chat.php b/Zotlabs/Module/Chat.php
index 9508ed3de..d14c32b7d 100644
--- a/Zotlabs/Module/Chat.php
+++ b/Zotlabs/Module/Chat.php
@@ -1,9 +1,11 @@
-<?php
-namespace Zotlabs\Module; /** @file */
+<?php /** @file */
+
+namespace Zotlabs\Module;
+
-require_once('include/chat.php');
require_once('include/bookmarks.php');
+use \Zotlabs\Lib as Zlib;
class Chat extends \Zotlabs\Web\Controller {
@@ -41,7 +43,7 @@ class Chat extends \Zotlabs\Web\Controller {
}
- function post() {
+ function post() {
if($_POST['room_name'])
$room = strip_tags(trim($_POST['room_name']));
@@ -54,7 +56,7 @@ class Chat extends \Zotlabs\Web\Controller {
if($_POST['action'] === 'drop') {
logger('delete chatroom');
- chatroom_destroy($channel,array('cr_name' => $room));
+ Zlib\Chatroom::destroy($channel,array('cr_name' => $room));
goaway(z_root() . '/chat/' . $channel['channel_address']);
}
@@ -67,7 +69,7 @@ class Chat extends \Zotlabs\Web\Controller {
if(intval($arr['expire']) < 0)
$arr['expire'] = 0;
- chatroom_create($channel,$arr);
+ Zlib\Chatroom::create($channel,$arr);
$x = q("select * from chatroom where cr_name = '%s' and cr_uid = %d limit 1",
dbesc($room),
@@ -87,7 +89,7 @@ class Chat extends \Zotlabs\Web\Controller {
}
- function get() {
+ function get() {
if(local_channel())
$channel = \App::get_channel();
@@ -105,7 +107,7 @@ class Chat extends \Zotlabs\Web\Controller {
}
if((argc() > 3) && intval(argv(2)) && (argv(3) === 'leave')) {
- chatroom_leave($observer,argv(2),$_SERVER['REMOTE_ADDR']);
+ Zlib\Chatroom::leave($observer,argv(2),$_SERVER['REMOTE_ADDR']);
goaway(z_root() . '/channel/' . argv(1));
}
@@ -158,7 +160,7 @@ class Chat extends \Zotlabs\Web\Controller {
$room_id = intval(argv(2));
$bookmark_link = get_bookmark_link($ob);
- $x = chatroom_enter($observer,$room_id,'online',$_SERVER['REMOTE_ADDR']);
+ $x = Zlib\Chatroom::enter($observer,$room_id,'online',$_SERVER['REMOTE_ADDR']);
if(! $x)
return;
$x = q("select * from chatroom where cr_id = %d and cr_uid = %d $sql_extra limit 1",
@@ -238,7 +240,7 @@ class Chat extends \Zotlabs\Web\Controller {
));
}
- $rooms = chatroom_list(\App::$profile['profile_uid']);
+ $rooms = Zlib\Chatroom::roomlist(\App::$profile['profile_uid']);
$o .= replace_macros(get_markup_template('chatrooms.tpl'), array(
'$header' => sprintf( t('%1$s\'s Chatrooms'), \App::$profile['name']),
diff --git a/Zotlabs/Module/Chatsvc.php b/Zotlabs/Module/Chatsvc.php
index a9bc97301..6a28a7c4d 100644
--- a/Zotlabs/Module/Chatsvc.php
+++ b/Zotlabs/Module/Chatsvc.php
@@ -1,14 +1,16 @@
-<?php
-namespace Zotlabs\Module; /** @file */
+<?php /** @file */
+
+namespace Zotlabs\Module;
require_once('include/security.php');
+use \Zotlabs\Lib as Zlib;
class Chatsvc extends \Zotlabs\Web\Controller {
function init() {
- //logger('chatsvc');
+ //logger('chatsvc');
$ret = array('success' => false);
@@ -27,7 +29,7 @@ class Chatsvc extends \Zotlabs\Web\Controller {
}
- function post() {
+ function post() {
$ret = array('success' => false);
@@ -65,7 +67,7 @@ class Chatsvc extends \Zotlabs\Web\Controller {
json_return_and_die($ret);
}
- function get() {
+ function get() {
$status = strip_tags($_REQUEST['status']);
$room_id = intval(\App::$data['chat']['room_id']);
diff --git a/Zotlabs/Module/Cloud.php b/Zotlabs/Module/Cloud.php
index d9b0c47d4..b691475ce 100644
--- a/Zotlabs/Module/Cloud.php
+++ b/Zotlabs/Module/Cloud.php
@@ -100,9 +100,12 @@ class Cloud extends \Zotlabs\Web\Controller {
// require_once('\Zotlabs\Storage/QuotaPlugin.php');
// $server->addPlugin(new \Zotlabs\Storage\\QuotaPlugin($auth));
+ ob_start();
// All we need to do now, is to fire up the server
$server->exec();
+ ob_end_flush();
+
killme();
}
diff --git a/Zotlabs/Module/Connect.php b/Zotlabs/Module/Connect.php
index 382abf370..f68e0baac 100644
--- a/Zotlabs/Module/Connect.php
+++ b/Zotlabs/Module/Connect.php
@@ -2,7 +2,7 @@
namespace Zotlabs\Module; /** @file */
-require_once('include/Contact.php');
+
require_once('include/contact_widgets.php');
require_once('include/items.php');
diff --git a/Zotlabs/Module/Connections.php b/Zotlabs/Module/Connections.php
index ebf8ff8e6..a412d16ae 100644
--- a/Zotlabs/Module/Connections.php
+++ b/Zotlabs/Module/Connections.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/Contact.php');
+
require_once('include/socgraph.php');
require_once('include/selectors.php');
require_once('include/group.php');
diff --git a/Zotlabs/Module/Connedit.php b/Zotlabs/Module/Connedit.php
index 8bf4ac9b4..c5c38b96a 100644
--- a/Zotlabs/Module/Connedit.php
+++ b/Zotlabs/Module/Connedit.php
@@ -7,7 +7,7 @@ namespace Zotlabs\Module;
*
*/
-require_once('include/Contact.php');
+
require_once('include/socgraph.php');
require_once('include/selectors.php');
require_once('include/group.php');
@@ -230,7 +230,7 @@ class Connedit extends \Zotlabs\Web\Controller {
if(\App::$poi && \App::$poi['abook_my_perms'] != $abook_my_perms
&& (! intval(\App::$poi['abook_self']))) {
- \Zotlabs\Daemon\Master(array('Notifier', (($new_friend) ? 'permission_create' : 'permission_update'), $contact_id));
+ \Zotlabs\Daemon\Master::Summon(array('Notifier', (($new_friend) ? 'permission_create' : 'permission_update'), $contact_id));
}
if($new_friend) {
@@ -485,7 +485,6 @@ class Connedit extends \Zotlabs\Web\Controller {
if($cmd === 'drop') {
- require_once('include/Contact.php');
// FIXME
// We need to send either a purge or a refresh packet to the other side (the channel being unfriended).
diff --git a/Zotlabs/Module/Cover_photo.php b/Zotlabs/Module/Cover_photo.php
index aafc1bdb0..2e53696ff 100644
--- a/Zotlabs/Module/Cover_photo.php
+++ b/Zotlabs/Module/Cover_photo.php
@@ -8,7 +8,7 @@ namespace Zotlabs\Module;
*/
require_once('include/photo/photo_driver.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
diff --git a/Zotlabs/Module/Directory.php b/Zotlabs/Module/Directory.php
index b8bac53bb..560038ffc 100644
--- a/Zotlabs/Module/Directory.php
+++ b/Zotlabs/Module/Directory.php
@@ -57,9 +57,9 @@ class Directory extends \Zotlabs\Web\Controller {
}
}
- function get() {
+ function get() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
notice( t('Public access denied.') . EOL);
return;
}
diff --git a/Zotlabs/Module/Display.php b/Zotlabs/Module/Display.php
index 2a5a04a2a..c1a0d84bc 100644
--- a/Zotlabs/Module/Display.php
+++ b/Zotlabs/Module/Display.php
@@ -7,17 +7,13 @@ class Display extends \Zotlabs\Web\Controller {
function get($update = 0, $load = false) {
- // logger("mod-display: update = $update load = $load");
-
-
$checkjs = new \Zotlabs\Web\CheckJS(1);
-
if($load)
$_SESSION['loadtime'] = datetime_convert();
- if(intval(get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
notice( t('Public access denied.') . EOL);
return;
}
@@ -185,7 +181,7 @@ class Display extends \Zotlabs\Web\Controller {
if($load || ($checkjs->disabled())) {
$r = null;
- require_once('include/identity.php');
+ require_once('include/channel.php');
$sys = get_sys_channel();
$sysid = $sys['channel_id'];
@@ -233,7 +229,7 @@ class Display extends \Zotlabs\Web\Controller {
elseif($update && !$load) {
$r = null;
- require_once('include/identity.php');
+ require_once('include/channel.php');
$sys = get_sys_channel();
$sysid = $sys['channel_id'];
diff --git a/Zotlabs/Module/Editblock.php b/Zotlabs/Module/Editblock.php
index a79962033..fb86557f2 100644
--- a/Zotlabs/Module/Editblock.php
+++ b/Zotlabs/Module/Editblock.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/acl_selectors.php');
require_once('include/conversation.php');
diff --git a/Zotlabs/Module/Editlayout.php b/Zotlabs/Module/Editlayout.php
index c5b50235a..5028882d2 100644
--- a/Zotlabs/Module/Editlayout.php
+++ b/Zotlabs/Module/Editlayout.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/acl_selectors.php');
require_once('include/conversation.php');
diff --git a/Zotlabs/Module/Editwebpage.php b/Zotlabs/Module/Editwebpage.php
index c2346c53b..1b5c320a0 100644
--- a/Zotlabs/Module/Editwebpage.php
+++ b/Zotlabs/Module/Editwebpage.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/acl_selectors.php');
require_once('include/conversation.php');
require_once('include/PermissionDescription.php');
diff --git a/Zotlabs/Module/Events.php b/Zotlabs/Module/Events.php
index 3440e0727..2b5e239f9 100644
--- a/Zotlabs/Module/Events.php
+++ b/Zotlabs/Module/Events.php
@@ -232,7 +232,7 @@ class Events extends \Zotlabs\Web\Controller {
}
if($share)
- \Zotlabs\Daemon\Master(array('Notifier','event',$item_id));
+ \Zotlabs\Daemon\Master::Summon(array('Notifier','event',$item_id));
}
diff --git a/Zotlabs/Module/Feed.php b/Zotlabs/Module/Feed.php
index 9d33ba2c3..47871eafb 100644
--- a/Zotlabs/Module/Feed.php
+++ b/Zotlabs/Module/Feed.php
@@ -31,7 +31,7 @@ class Feed extends \Zotlabs\Web\Controller {
$channel = $r[0];
- if((intval(get_config('system','block_public'))) && (! get_account_id()))
+ if(observer_prohibited(true))
killme();
logger('mod_feed: public feed request from ' . $_SERVER['REMOTE_ADDR'] . ' for ' . $channel['channel_address']);
diff --git a/Zotlabs/Module/Getfile.php b/Zotlabs/Module/Getfile.php
index 6999e77e8..09d761887 100644
--- a/Zotlabs/Module/Getfile.php
+++ b/Zotlabs/Module/Getfile.php
@@ -21,7 +21,6 @@ namespace Zotlabs\Module;
-require_once('include/Contact.php');
require_once('include/attach.php');
diff --git a/Zotlabs/Module/Import.php b/Zotlabs/Module/Import.php
index 4e99155fb..57ced22a3 100644
--- a/Zotlabs/Module/Import.php
+++ b/Zotlabs/Module/Import.php
@@ -4,9 +4,9 @@ namespace Zotlabs\Module;
// Import a channel, either by direct file upload or via
// connection to original server.
-require_once('include/Contact.php');
+
require_once('include/zot.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/import.php');
diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php
index ff8510ade..041939ad8 100644
--- a/Zotlabs/Module/Item.php
+++ b/Zotlabs/Module/Item.php
@@ -17,10 +17,10 @@ namespace Zotlabs\Module;
*/
require_once('include/crypto.php');
-require_once('include/enotify.php');
require_once('include/items.php');
require_once('include/attach.php');
+use \Zotlabs\Lib as Zlib;
class Item extends \Zotlabs\Web\Controller {
@@ -56,7 +56,7 @@ class Item extends \Zotlabs\Web\Controller {
$remote_xchan = $remote_observer = false;
$profile_uid = ((x($_REQUEST,'profile_uid')) ? intval($_REQUEST['profile_uid']) : 0);
- require_once('include/identity.php');
+ require_once('include/channel.php');
$sys = get_sys_channel();
if($sys && $profile_uid && ($sys['channel_id'] == $profile_uid) && is_site_admin()) {
$uid = intval($sys['channel_id']);
@@ -925,7 +925,7 @@ class Item extends \Zotlabs\Web\Controller {
// otherwise it will happen during delivery
if(($datarray['owner_xchan'] != $datarray['author_xchan']) && (intval($parent_item['item_wall']))) {
- notification(array(
+ Zlib\Enotify::submit(array(
'type' => NOTIFY_COMMENT,
'from_xchan' => $datarray['author_xchan'],
'to_xchan' => $datarray['owner_xchan'],
@@ -943,7 +943,7 @@ class Item extends \Zotlabs\Web\Controller {
$parent = $post_id;
if(($datarray['owner_xchan'] != $datarray['author_xchan']) && ($datarray['item_type'] == ITEM_TYPE_POST)) {
- notification(array(
+ Zlib\Enotify::submit(array(
'type' => NOTIFY_WALL,
'from_xchan' => $datarray['author_xchan'],
'to_xchan' => $datarray['owner_xchan'],
diff --git a/Zotlabs/Module/Layouts.php b/Zotlabs/Module/Layouts.php
index 8a7207fc2..9b9fc22f3 100644
--- a/Zotlabs/Module/Layouts.php
+++ b/Zotlabs/Module/Layouts.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
diff --git a/Zotlabs/Module/Magic.php b/Zotlabs/Module/Magic.php
index 63db4a317..6798f72a9 100644
--- a/Zotlabs/Module/Magic.php
+++ b/Zotlabs/Module/Magic.php
@@ -47,11 +47,9 @@ class Magic extends \Zotlabs\Web\Controller {
*
*/
- $ret = zot_finger((($addr) ? $addr : '[system]@' . $parsed['host']),null);
- if($ret['success']) {
- $j = json_decode($ret['body'],true);
- if($j)
- import_xchan($j);
+ $j = \Zotlabs\Zot\Finger::run((($addr) ? $addr : '[system]@' . $parsed['host']),null);
+ if($j['success']) {
+ import_xchan($j);
// Now try again
diff --git a/Zotlabs/Module/Mail.php b/Zotlabs/Module/Mail.php
index e6487d681..aae7585c4 100644
--- a/Zotlabs/Module/Mail.php
+++ b/Zotlabs/Module/Mail.php
@@ -5,7 +5,7 @@ require_once('include/acl_selectors.php');
require_once('include/message.php');
require_once('include/zot.php');
require_once("include/bbcode.php");
-require_once('include/Contact.php');
+
@@ -32,17 +32,16 @@ class Mail extends \Zotlabs\Web\Controller {
if(! $recipient) {
$channel = \App::get_channel();
- $ret = zot_finger($rstr,$channel);
+ $j = \Zotlabs\Zot\Finger::run($rstr,$channel);
- if(! $ret['success']) {
+ if(! $j['success']) {
notice( t('Unable to lookup recipient.') . EOL);
return;
}
- $j = json_decode($ret['body'],true);
logger('message_post: lookup: ' . $url . ' ' . print_r($j,true));
- if(! ($j['success'] && $j['guid'])) {
+ if(! $j['guid']) {
notice( t('Unable to communicate with requested channel.'));
return;
}
@@ -306,11 +305,6 @@ class Mail extends \Zotlabs\Web\Controller {
else
\App::$poi = $messages[0]['to'];
- // require_once('include/Contact.php');
-
- // \App::set_widget('mail_conversant',vcard_from_xchan(\App::$poi,$get_observer_hash,'mail'));
-
-
$tpl = get_markup_template('msg-header.tpl');
\App::$page['htmlhead'] .= replace_macros($tpl, array(
diff --git a/Zotlabs/Module/Menu.php b/Zotlabs/Module/Menu.php
index 9ada63911..e98053f8c 100644
--- a/Zotlabs/Module/Menu.php
+++ b/Zotlabs/Module/Menu.php
@@ -2,7 +2,7 @@
namespace Zotlabs\Module;
require_once('include/menu.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
class Menu extends \Zotlabs\Web\Controller {
diff --git a/Zotlabs/Module/Message.php b/Zotlabs/Module/Message.php
index 58a138899..ea2127a1d 100644
--- a/Zotlabs/Module/Message.php
+++ b/Zotlabs/Module/Message.php
@@ -5,8 +5,6 @@ require_once('include/acl_selectors.php');
require_once('include/message.php');
require_once('include/zot.php');
require_once("include/bbcode.php");
-require_once('include/Contact.php');
-
class Message extends \Zotlabs\Web\Controller {
diff --git a/Zotlabs/Module/Network.php b/Zotlabs/Module/Network.php
index c88258a78..238df3593 100644
--- a/Zotlabs/Module/Network.php
+++ b/Zotlabs/Module/Network.php
@@ -385,7 +385,7 @@ class Network extends \Zotlabs\Web\Controller {
$abook_uids = " and abook.abook_channel = " . local_channel() . " ";
if($firehose && (! get_config('system','disable_discover_tab'))) {
- require_once('include/identity.php');
+ require_once('include/channel.php');
$sys = get_sys_channel();
$uids = " and item.uid = " . intval($sys['channel_id']) . " ";
\App::$data['firehose'] = intval($sys['channel_id']);
diff --git a/Zotlabs/Module/New_channel.php b/Zotlabs/Module/New_channel.php
index 3dca1b0b4..30d7c83c6 100644
--- a/Zotlabs/Module/New_channel.php
+++ b/Zotlabs/Module/New_channel.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/permissions.php');
diff --git a/Zotlabs/Module/Oep.php b/Zotlabs/Module/Oep.php
index 638ea7e2d..89824fc7e 100644
--- a/Zotlabs/Module/Oep.php
+++ b/Zotlabs/Module/Oep.php
@@ -181,8 +181,8 @@ class Oep extends \Zotlabs\Web\Controller {
function oep_profile_reply($args) {
- require_once('include/identity.php');
- require_once('include/Contact.php');
+ require_once('include/channel.php');
+
$url = $args['url'];
if(preg_match('#//(.*?)/(.*?)/(.*?)(/|\?|&|$)#',$url,$matches)) {
diff --git a/Zotlabs/Module/Photos.php b/Zotlabs/Module/Photos.php
index 1659350a5..7186209ba 100644
--- a/Zotlabs/Module/Photos.php
+++ b/Zotlabs/Module/Photos.php
@@ -1,12 +1,12 @@
<?php
namespace Zotlabs\Module;
+
require_once('include/photo/photo_driver.php');
require_once('include/photos.php');
require_once('include/items.php');
require_once('include/acl_selectors.php');
require_once('include/bbcode.php');
require_once('include/security.php');
-require_once('include/Contact.php');
require_once('include/attach.php');
require_once('include/text.php');
require_once('include/PermissionDescription.php');
@@ -18,7 +18,7 @@ class Photos extends \Zotlabs\Web\Controller {
function init() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
return;
}
@@ -518,7 +518,7 @@ class Photos extends \Zotlabs\Web\Controller {
// photos/name/image/xxxxx
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
notice( t('Public access denied.') . EOL);
return;
}
diff --git a/Zotlabs/Module/Ping.php b/Zotlabs/Module/Ping.php
index bea4a08b7..32427b06f 100644
--- a/Zotlabs/Module/Ping.php
+++ b/Zotlabs/Module/Ping.php
@@ -1,12 +1,13 @@
<?php
namespace Zotlabs\Module;
+
/**
* @file mod/ping.php
*
*/
require_once('include/bbcode.php');
-require_once('include/notify.php');
+
/**
* @brief do several updates when pinged.
@@ -285,7 +286,7 @@ class Ping extends \Zotlabs\Web\Controller {
foreach($r as $item) {
if((argv(1) === 'home') && (! intval($item['item_wall'])))
continue;
- $result[] = format_notification($item);
+ $result[] = \Zotlabs\Lib\Enotify::format($item);
}
}
// logger('ping (network||home): ' . print_r($result, true), LOGGER_DATA);
diff --git a/Zotlabs/Module/Probe.php b/Zotlabs/Module/Probe.php
index 79abe9819..dda792131 100644
--- a/Zotlabs/Module/Probe.php
+++ b/Zotlabs/Module/Probe.php
@@ -20,17 +20,17 @@ class Probe extends \Zotlabs\Web\Controller {
$channel = \App::get_channel();
$addr = trim($_GET['addr']);
$do_import = ((intval($_GET['import']) && is_site_admin()) ? true : false);
- $res = zot_finger($addr,$channel,false);
+
+ $j = \Zotlabs\Zot\Finger::run($addr,$channel,false);
+
+ // $res = zot_finger($addr,$channel,false);
+
$o .= '<pre>';
- if($res['success'])
- $j = json_decode($res['body'],true);
- else {
+ if(! $j['success']) {
$o .= sprintf( t('Fetching URL returns error: %1$s'),$res['error'] . "\r\n\r\n");
$o .= "<strong>https connection failed. Trying again with auto failover to http.</strong>\r\n\r\n";
- $res = zot_finger($addr,$channel,true);
- if($res['success'])
- $j = json_decode($res['body'],true);
- else
+ $j = \Zotlabs\Zot\Finger::run($addr,$channel,true);
+ if(! $j['success'])
$o .= sprintf( t('Fetching URL returns error: %1$s'),$res['error'] . "\r\n\r\n");
}
diff --git a/Zotlabs/Module/Profile.php b/Zotlabs/Module/Profile.php
index 04a64fe76..8bf358bc8 100644
--- a/Zotlabs/Module/Profile.php
+++ b/Zotlabs/Module/Profile.php
@@ -55,8 +55,8 @@ class Profile extends \Zotlabs\Web\Controller {
function get() {
- if(get_config('system','block_public') && (! get_account_id()) && (! remote_channel())) {
- return login();
+ if(observer_prohibited(true)) {
+ return login();
}
$groups = array();
diff --git a/Zotlabs/Module/Profile_photo.php b/Zotlabs/Module/Profile_photo.php
index efcc7bece..a8cf3cbee 100644
--- a/Zotlabs/Module/Profile_photo.php
+++ b/Zotlabs/Module/Profile_photo.php
@@ -9,7 +9,7 @@ namespace Zotlabs\Module;
require_once('include/photo/photo_driver.php');
require_once('include/photos.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
/* @brief Function for sync'ing permissions of profile-photos and their profile
*
diff --git a/Zotlabs/Module/Profiles.php b/Zotlabs/Module/Profiles.php
index e899abb3f..54780499b 100644
--- a/Zotlabs/Module/Profiles.php
+++ b/Zotlabs/Module/Profiles.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/selectors.php');
@@ -602,7 +602,7 @@ class Profiles extends \Zotlabs\Web\Controller {
return;
}
- require_once('include/identity.php');
+ require_once('include/channel.php');
$profile_fields_basic = get_profile_fields_basic();
$profile_fields_advanced = get_profile_fields_advanced();
diff --git a/Zotlabs/Module/Profperm.php b/Zotlabs/Module/Profperm.php
index 94267aaac..33e9d1ece 100644
--- a/Zotlabs/Module/Profperm.php
+++ b/Zotlabs/Module/Profperm.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/Contact.php');
+
require_once('include/photos.php');
diff --git a/Zotlabs/Module/Pubsites.php b/Zotlabs/Module/Pubsites.php
index 31bca5f30..0dda08e6d 100644
--- a/Zotlabs/Module/Pubsites.php
+++ b/Zotlabs/Module/Pubsites.php
@@ -28,9 +28,10 @@ class Pubsites extends \Zotlabs\Web\Controller {
if($ret['success']) {
$j = json_decode($ret['body'],true);
if($j) {
- $o .= '<table class="table table-striped table-hover"><tr><td>' . t('Hub URL') . '</td><td>' . t('Access Type') . '</td><td>' . t('Registration Policy') . '</td><td>' . t('Software') . '</td><td colspan="2">' . t('Ratings') . '</td></tr>';
+ $o .= '<table class="table table-striped table-hover"><tr><td>' . t('Hub URL') . '</td><td>' . t('Access Type') . '</td><td>' . t('Registration Policy') . '</td><td>' . t('Stats') . '</td><td>' . t('Software') . '</td><td colspan="2">' . t('Ratings') . '</td></tr>';
if($j['sites']) {
foreach($j['sites'] as $jj) {
+ $m = parse_url($jj['url']);
if(strpos($jj['project'],\Zotlabs\Lib\System::get_platform_name()) === false)
continue;
$host = strtolower(substr($jj['url'],strpos($jj['url'],'://')+3));
@@ -43,7 +44,7 @@ class Pubsites extends \Zotlabs\Web\Controller {
$location = '<br />&nbsp;';
}
$urltext = str_replace(array('https://'), '', $jj['url']);
- $o .= '<tr><td><a href="'. (($jj['sellpage']) ? $jj['sellpage'] : $jj['url'] . '/register' ) . '" ><i class="fa fa-link"></i> ' . $urltext . '</a>' . $location . '</td><td>' . $jj['access'] . '</td><td>' . $jj['register'] . '</td><td>' . ucwords($jj['project']) . '</td><td><a href="ratings/' . $host . '" class="btn-btn-default"><i class="fa fa-eye"></i> ' . t('View') . '</a></td>' . $rate_links . '</tr>';
+ $o .= '<tr><td><a href="'. (($jj['sellpage']) ? $jj['sellpage'] : $jj['url'] . '/register' ) . '" ><i class="fa fa-link"></i> ' . $urltext . '</a>' . $location . '</td><td>' . $jj['access'] . '</td><td>' . $jj['register'] . '</td><td>' . '<a target="stats" href="https://hubchart-tarine.rhcloud.com/hub.jsp?hubFqdn=' . $m['host'] . '"><i class="fa fa-area-chart"></i></a></td><td>' . ucwords($jj['project']) . '</td><td><a href="ratings/' . $host . '" class="btn-btn-default"><i class="fa fa-eye"></i> ' . t('View') . '</a></td>' . $rate_links . '</tr>';
}
}
diff --git a/Zotlabs/Module/Pubstream.php b/Zotlabs/Module/Pubstream.php
index adc16e6e6..312be7718 100644
--- a/Zotlabs/Module/Pubstream.php
+++ b/Zotlabs/Module/Pubstream.php
@@ -12,7 +12,7 @@ class Pubstream extends \Zotlabs\Web\Controller {
$_SESSION['loadtime'] = datetime_convert();
- if(get_config('system','block_public') && (! get_account_id()) && (! remote_channel())) {
+ if(observer_prohibited(true)) {
return login();
}
@@ -71,7 +71,7 @@ class Pubstream extends \Zotlabs\Web\Controller {
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']), intval(\App::$pager['start']));
}
- require_once('include/identity.php');
+ require_once('include/channel.php');
require_once('include/security.php');
if(get_config('system','site_firehose')) {
diff --git a/Zotlabs/Module/Randprof.php b/Zotlabs/Module/Randprof.php
index 86b25c22a..dc2e925fe 100644
--- a/Zotlabs/Module/Randprof.php
+++ b/Zotlabs/Module/Randprof.php
@@ -6,7 +6,6 @@ namespace Zotlabs\Module;
class Randprof extends \Zotlabs\Web\Controller {
function init() {
- require_once('include/Contact.php');
$x = random_profile();
if($x)
goaway(chanlink_url($x));
diff --git a/Zotlabs/Module/Ratings.php b/Zotlabs/Module/Ratings.php
index 802bbfec2..969fb5015 100644
--- a/Zotlabs/Module/Ratings.php
+++ b/Zotlabs/Module/Ratings.php
@@ -8,7 +8,7 @@ class Ratings extends \Zotlabs\Web\Controller {
function init() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
return;
}
@@ -80,9 +80,9 @@ class Ratings extends \Zotlabs\Web\Controller {
- function get() {
+ function get() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
notice( t('Public access denied.') . EOL);
return;
}
diff --git a/Zotlabs/Module/Regdir.php b/Zotlabs/Module/Regdir.php
index 65f8daf67..48a7cc16d 100644
--- a/Zotlabs/Module/Regdir.php
+++ b/Zotlabs/Module/Regdir.php
@@ -60,14 +60,11 @@ class Regdir extends \Zotlabs\Web\Controller {
json_return_and_die($result);
}
- $f = zot_finger('[system]@' . $m['host']);
- if($f['success']) {
- $j = json_decode($f['body'],true);
- if($j['success'] && $j['guid']) {
- $x = import_xchan($j);
- if($x['success']) {
- $result['success'] = true;
- }
+ $j = \Zotlabs\Zot\Finger::run('[system]@' . $m['host']);
+ if($j['success'] && $j['guid']) {
+ $x = import_xchan($j);
+ if($x['success']) {
+ $result['success'] = true;
}
}
diff --git a/Zotlabs/Module/Register.php b/Zotlabs/Module/Register.php
index ca3f33238..7cd1ee501 100644
--- a/Zotlabs/Module/Register.php
+++ b/Zotlabs/Module/Register.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
class Register extends \Zotlabs\Web\Controller {
diff --git a/Zotlabs/Module/Removeaccount.php b/Zotlabs/Module/Removeaccount.php
index da496dfad..39e06bb7f 100644
--- a/Zotlabs/Module/Removeaccount.php
+++ b/Zotlabs/Module/Removeaccount.php
@@ -36,17 +36,12 @@ class Removeaccount extends \Zotlabs\Web\Controller {
}
}
- require_once('include/Contact.php');
-
$global_remove = intval($_POST['global']);
- account_remove($account_id,true);
-
+ account_remove($account_id, 1 - $global_remove);
}
-
-
-
- function get() {
+
+ function get() {
if(! local_channel())
goaway(z_root());
diff --git a/Zotlabs/Module/Removeme.php b/Zotlabs/Module/Removeme.php
index 9b634672a..e611d8112 100644
--- a/Zotlabs/Module/Removeme.php
+++ b/Zotlabs/Module/Removeme.php
@@ -35,8 +35,6 @@ class Removeme extends \Zotlabs\Web\Controller {
}
}
- require_once('include/Contact.php');
-
$global_remove = intval($_POST['global']);
channel_remove(local_channel(),1 - $global_remove,true);
@@ -44,8 +42,7 @@ class Removeme extends \Zotlabs\Web\Controller {
}
-
- function get() {
+ function get() {
if(! local_channel())
goaway(z_root());
diff --git a/Zotlabs/Module/Search.php b/Zotlabs/Module/Search.php
index 9941ebbd2..fcc2506fc 100644
--- a/Zotlabs/Module/Search.php
+++ b/Zotlabs/Module/Search.php
@@ -139,7 +139,7 @@ class Search extends \Zotlabs\Web\Controller {
$item_normal = item_normal();
$pub_sql = public_permissions_sql($observer_hash);
- require_once('include/identity.php');
+ require_once('include/channel.php');
$sys = get_sys_channel();
diff --git a/Zotlabs/Module/Settings.php b/Zotlabs/Module/Settings.php
index 32ef89f68..5687ce84b 100644
--- a/Zotlabs/Module/Settings.php
+++ b/Zotlabs/Module/Settings.php
@@ -483,7 +483,7 @@ class Settings extends \Zotlabs\Web\Controller {
if($username != $channel['channel_name']) {
$name_change = true;
- require_once('include/identity.php');
+ require_once('include/channel.php');
$err = validate_channelname($username);
if($err) {
notice($err);
diff --git a/Zotlabs/Module/Setup.php b/Zotlabs/Module/Setup.php
index f8c14951b..447f46ed6 100644
--- a/Zotlabs/Module/Setup.php
+++ b/Zotlabs/Module/Setup.php
@@ -12,7 +12,6 @@ namespace Zotlabs\Module;
/**
* @brief Initialisation for the setup module.
*
- * @param[in,out] App &$a
*/
class Setup extends \Zotlabs\Web\Controller {
@@ -54,16 +53,15 @@ class Setup extends \Zotlabs\Web\Controller {
/**
* @brief Handle the actions of the different setup steps.
*
- * @param[in,out] App &$a
*/
- function post() {
- global $db;
+
+ function post() {
switch($this->install_wizard_pass) {
case 1:
case 2:
return;
- break; // just in case return don't return :)
+ // implied break;
case 3:
$urlpath = \App::get_path();
$dbhost = trim($_POST['dbhost']);
@@ -82,39 +80,15 @@ class Setup extends \Zotlabs\Web\Controller {
$siteurl = rtrim($siteurl,'/');
require_once('include/dba/dba_driver.php');
- unset($db);
- $db = dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, true);
+
+ $db = \DBA::dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, true);
- if(! $db->connected) {
- echo 'Database Connect failed: ' . $db->error;
+ if(! \DBA::$dba->connected) {
+ echo 'Database Connect failed: ' . DBA::$dba->error;
killme();
- \App::$data['db_conn_failed']=true;
}
- /*if(get_db_errno()) {
- unset($db);
- $db = dba_factory($dbhost, $dbport, $dbuser, $dbpass, '', true);
-
- if(! get_db_errno()) {
- $r = q("CREATE DATABASE '%s'",
- dbesc($dbdata)
- );
- if($r) {
- unset($db);
- $db = new dba($dbhost, $dbport, $dbuser, $dbpass, $dbdata, true);
- } else {
- \App::$data['db_create_failed']=true;
- }
- } else {
- \App::$data['db_conn_failed']=true;
- return;
- }
- }*/
- //if(get_db_errno()) {
-
- //}
-
return;
- break;
+ // implied break;
case 4:
$urlpath = \App::get_path();
$dbhost = notags(trim($_POST['dbhost']));
@@ -138,10 +112,12 @@ class Setup extends \Zotlabs\Web\Controller {
}
}
- // connect to db
- $db = dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, true);
-
- if(! $db->connected) {
+ if(! \DBA::$dba->connected) {
+ // connect to db
+ $db = \DBA::dba_factory($dbhost, $dbport, $dbuser, $dbpass, $dbdata, $dbtype, true);
+ }
+
+ if(! \DBA::$dba->connected) {
echo 'CRITICAL: DB not connected.';
killme();
}
@@ -175,6 +151,8 @@ class Setup extends \Zotlabs\Web\Controller {
\App::$data['db_installed'] = true;
return;
+ // implied break;
+ default:
break;
}
}
@@ -191,11 +169,10 @@ class Setup extends \Zotlabs\Web\Controller {
*
* Depending on the state we are currently in it returns different content.
*
- * @param App &$a
* @return string parsed HTML output
*/
- function get() {
- global $db;
+
+ function get() {
$o = '';
$wizard_status = '';
@@ -228,7 +205,7 @@ class Setup extends \Zotlabs\Web\Controller {
$txt .= "<pre>".\App::$data['db_failed'] . "</pre>". EOL ;
$db_return_text .= $txt;
}
- if($db && $db->connected) {
+ if(\DBA::$dba && \DBA::$dba->connected) {
$r = q("SELECT COUNT(*) as `total` FROM `account`");
if($r && count($r) && $r[0]['total']) {
$tpl = get_markup_template('install.tpl');
@@ -598,7 +575,7 @@ class Setup extends \Zotlabs\Web\Controller {
if(! is_writable(TEMPLATE_BUILD_PATH) ) {
$status = false;
$help = t('Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering.') .EOL;
- $help .= sprintf( t('In order to store these compiled templates, the web server needs to have write access to the directory %s under the Red top level folder.'), TEMPLATE_BUILD_PATH) . EOL;
+ $help .= sprintf( t('In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder.'), TEMPLATE_BUILD_PATH) . EOL;
$help .= t('Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder.').EOL;
$help .= sprintf( t('Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains.'), TEMPLATE_BUILD_PATH) . EOL;
}
@@ -698,12 +675,12 @@ class Setup extends \Zotlabs\Web\Controller {
function load_database($db) {
- $str = file_get_contents($db->get_install_script());
+ $str = file_get_contents(\DBA::$dba->get_install_script());
$arr = explode(';',$str);
$errors = false;
foreach($arr as $a) {
if(strlen(trim($a))) {
- $r = @$db->q(trim($a));
+ $r = dbq(trim($a));
if(! $r) {
$errors .= t('Errors encountered creating database tables.') . $a . EOL;
}
@@ -734,7 +711,7 @@ class Setup extends \Zotlabs\Web\Controller {
set_config('system','curl_ssl_ciphers','ALL:!eNULL');
// Create a system channel
- require_once ('include/identity.php');
+ require_once ('include/channel.php');
create_sys_channel();
$baseurl = z_root();
diff --git a/Zotlabs/Module/Uexport.php b/Zotlabs/Module/Uexport.php
index ada7e0986..d48f96d76 100644
--- a/Zotlabs/Module/Uexport.php
+++ b/Zotlabs/Module/Uexport.php
@@ -11,7 +11,7 @@ class Uexport extends \Zotlabs\Web\Controller {
if(argc() > 1) {
$channel = \App::get_channel();
- require_once('include/identity.php');
+ require_once('include/channel.php');
if(argc() > 1 && intval(argv(1)) > 1900) {
$year = intval(argv(1));
diff --git a/Zotlabs/Module/Viewconnections.php b/Zotlabs/Module/Viewconnections.php
index a9445cdeb..ea478f92a 100644
--- a/Zotlabs/Module/Viewconnections.php
+++ b/Zotlabs/Module/Viewconnections.php
@@ -2,23 +2,21 @@
namespace Zotlabs\Module;
require_once('include/selectors.php');
-require_once('include/Contact.php');
-
class Viewconnections extends \Zotlabs\Web\Controller {
function init() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
return;
}
if(argc() > 1)
profile_load($a,argv(1));
}
- function get() {
+ function get() {
- if((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
notice( t('Public access denied.') . EOL);
return;
}
diff --git a/Zotlabs/Module/Wall_attach.php b/Zotlabs/Module/Wall_attach.php
index 5bdecfa75..9a1019ddb 100644
--- a/Zotlabs/Module/Wall_attach.php
+++ b/Zotlabs/Module/Wall_attach.php
@@ -2,7 +2,7 @@
namespace Zotlabs\Module;
require_once('include/attach.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/photos.php');
diff --git a/Zotlabs/Module/Wall_upload.php b/Zotlabs/Module/Wall_upload.php
index fff3ed03a..3868cb14e 100644
--- a/Zotlabs/Module/Wall_upload.php
+++ b/Zotlabs/Module/Wall_upload.php
@@ -2,7 +2,7 @@
namespace Zotlabs\Module;
require_once('include/photo/photo_driver.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/photos.php');
diff --git a/Zotlabs/Module/Webpages.php b/Zotlabs/Module/Webpages.php
index d8adb55b2..bb8d454c8 100644
--- a/Zotlabs/Module/Webpages.php
+++ b/Zotlabs/Module/Webpages.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/identity.php');
+require_once('include/channel.php');
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
require_once('include/PermissionDescription.php');
diff --git a/Zotlabs/Module/Zotfeed.php b/Zotlabs/Module/Zotfeed.php
index 28040149f..6b505c890 100644
--- a/Zotlabs/Module/Zotfeed.php
+++ b/Zotlabs/Module/Zotfeed.php
@@ -15,7 +15,7 @@ class Zotfeed extends \Zotlabs\Web\Controller {
if(! $mindate)
$mindate = datetime_convert('UTC','UTC', 'now - 14 days');
- if(get_config('system','block_public') && (! get_account_id()) && (! remote_channel())) {
+ if(observer_prohibited()) {
$result['message'] = 'Public access denied';
json_return_and_die($result);
}
@@ -45,8 +45,6 @@ class Zotfeed extends \Zotlabs\Web\Controller {
$result['messages'] = zot_feed($r[0]['channel_id'],$observer['xchan_hash'],array('mindate' => $mindate));
$result['success'] = true;
json_return_and_die($result);
-
-
}
}
diff --git a/Zotlabs/Storage/Browser.php b/Zotlabs/Storage/Browser.php
index 3556f7f06..f875cbf33 100644
--- a/Zotlabs/Storage/Browser.php
+++ b/Zotlabs/Storage/Browser.php
@@ -256,6 +256,7 @@ class Browser extends DAV\Browser\Plugin {
$func($a);
}
}
+ $this->server->httpResponse->setHeader('Content-Security-Policy', "script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'");
construct_page($a);
}
diff --git a/Zotlabs/Web/WebServer.php b/Zotlabs/Web/WebServer.php
new file mode 100644
index 000000000..88ab4995b
--- /dev/null
+++ b/Zotlabs/Web/WebServer.php
@@ -0,0 +1,130 @@
+<?php /** @file */
+
+namespace Zotlabs\Web;
+
+class WebServer {
+
+ public function run() {
+
+
+ /*
+ * Bootstrap the application, load configuration, load modules, load theme, etc.
+ */
+
+ require_once('boot.php');
+
+ sys_boot();
+
+
+ \App::$language = get_best_language();
+ load_translation_table(\App::$language,\App::$install);
+
+
+ /**
+ *
+ * Important stuff we always need to do.
+ *
+ * The order of these may be important so use caution if you think they're all
+ * intertwingled with no logical order and decide to sort it out. Some of the
+ * dependencies have changed, but at least at one time in the recent past - the
+ * order was critical to everything working properly
+ *
+ */
+
+ if(\App::$session) {
+ \App::$session->start();
+ }
+ else {
+ session_start();
+ register_shutdown_function('session_write_close');
+ }
+
+ /**
+ * Language was set earlier, but we can over-ride it in the session.
+ * We have to do it here because the session was just now opened.
+ */
+
+ if(array_key_exists('system_language',$_POST)) {
+ if(strlen($_POST['system_language']))
+ $_SESSION['language'] = $_POST['system_language'];
+ else
+ unset($_SESSION['language']);
+ }
+ if((x($_SESSION, 'language')) && ($_SESSION['language'] !== $lang)) {
+ \App::$language = $_SESSION['language'];
+ load_translation_table(\App::$language);
+ }
+
+ if((x($_GET,'zid')) && (! \App::$install)) {
+ \App::$query_string = strip_zids(\App::$query_string);
+ if(! local_channel()) {
+ $_SESSION['my_address'] = $_GET['zid'];
+ zid_init($a);
+ }
+ }
+
+ if((x($_SESSION, 'authenticated')) || (x($_POST, 'auth-params')) || (\App::$module === 'login'))
+ require('include/auth.php');
+
+ if(! x($_SESSION, 'sysmsg'))
+ $_SESSION['sysmsg'] = array();
+
+ if(! x($_SESSION, 'sysmsg_info'))
+ $_SESSION['sysmsg_info'] = array();
+
+ /*
+ * check_config() is responsible for running update scripts. These automatically
+ * update the DB schema whenever we push a new one out. It also checks to see if
+ * any plugins have been added or removed and reacts accordingly.
+ */
+
+
+ if(\App::$install) {
+ /* Allow an exception for the view module so that pcss will be interpreted during installation */
+ if(\App::$module != 'view')
+ \App::$module = 'setup';
+ }
+ else
+ check_config($a);
+
+ nav_set_selected('nothing');
+
+ $Router = new Router($a);
+
+ /* initialise content region */
+
+ if(! x(\App::$page, 'content'))
+ \App::$page['content'] = '';
+
+ call_hooks('page_content_top', \App::$page['content']);
+
+
+ $Router->Dispatch($a);
+
+
+ // If you're just visiting, let javascript take you home
+
+ if(x($_SESSION, 'visitor_home')) {
+ $homebase = $_SESSION['visitor_home'];
+ } elseif(local_channel()) {
+ $homebase = z_root() . '/channel/' . \App::$channel['channel_address'];
+ }
+
+ if(isset($homebase)) {
+ \App::$page['content'] .= '<script>var homebase = "' . $homebase . '";</script>';
+ }
+
+ // now that we've been through the module content, see if the page reported
+ // a permission problem and if so, a 403 response would seem to be in order.
+
+ if(stristr(implode("", $_SESSION['sysmsg']), t('Permission denied'))) {
+ header($_SERVER['SERVER_PROTOCOL'] . ' 403 ' . t('Permission denied.'));
+ }
+
+ call_hooks('page_end', \App::$page['content']);
+
+ construct_page($a);
+
+ killme();
+ }
+} \ No newline at end of file
diff --git a/Zotlabs/Zot/Auth.php b/Zotlabs/Zot/Auth.php
index f764172fa..0837be21a 100644
--- a/Zotlabs/Zot/Auth.php
+++ b/Zotlabs/Zot/Auth.php
@@ -80,11 +80,9 @@ class Auth {
if(! $x) {
// finger them if they can't be found.
- $ret = zot_finger($address, null);
- if ($ret['success']) {
- $j = json_decode($ret['body'], true);
- if($j)
- import_xchan($j);
+ $j = Finger::run($address, null);
+ if ($j['success']) {
+ import_xchan($j);
$x = q("select * from hubloc left join xchan on xchan_hash = hubloc_hash
where hubloc_addr = '%s' order by hubloc_id desc",
dbesc($address)
diff --git a/Zotlabs/Zot/Finger.php b/Zotlabs/Zot/Finger.php
new file mode 100644
index 000000000..229fda8bd
--- /dev/null
+++ b/Zotlabs/Zot/Finger.php
@@ -0,0 +1,130 @@
+<?php
+
+namespace Zotlabs\Zot;
+
+
+class Finger {
+
+ static private $token;
+
+ /**
+ * @brief Look up information about channel.
+ *
+ * @param string $webbie
+ * does not have to be host qualified e.g. 'foo' is treated as 'foo\@thishub'
+ * @param array $channel
+ * (optional), if supplied permissions will be enumerated specifically for $channel
+ * @param boolean $autofallback
+ * fallback/failover to http if https connection cannot be established. Default is true.
+ *
+ * @return zotinfo array (with 'success' => true) or array('success' => false);
+ */
+
+ static public function run($webbie, $channel = null, $autofallback = true) {
+
+ $ret = array('success' => false);
+
+ self::$token = random_string();
+
+ if (strpos($webbie,'@') === false) {
+ $address = $webbie;
+ $host = App::get_hostname();
+ } else {
+ $address = substr($webbie,0,strpos($webbie,'@'));
+ $host = substr($webbie,strpos($webbie,'@')+1);
+ }
+
+ $xchan_addr = $address . '@' . $host;
+
+ if ((! $address) || (! $xchan_addr)) {
+ logger('zot_finger: no address :' . $webbie);
+ return $ret;
+ }
+
+ logger('using xchan_addr: ' . $xchan_addr, LOGGER_DATA, LOG_DEBUG);
+
+ // potential issue here; the xchan_addr points to the primary hub.
+ // The webbie we were called with may not, so it might not be found
+ // unless we query for hubloc_addr instead of xchan_addr
+
+ $r = q("select xchan.*, hubloc.* from xchan
+ left join hubloc on xchan_hash = hubloc_hash
+ where xchan_addr = '%s' and hubloc_primary = 1 limit 1",
+ dbesc($xchan_addr)
+ );
+
+ if ($r) {
+ $url = $r[0]['hubloc_url'];
+
+ if ($r[0]['hubloc_network'] && $r[0]['hubloc_network'] !== 'zot') {
+ logger('zot_finger: alternate network: ' . $webbie);
+ logger('url: '.$url.', net: '.var_export($r[0]['hubloc_network'],true), LOGGER_DATA, LOG_DEBUG);
+ return $ret;
+ }
+ }
+ else {
+ $url = 'https://' . $host;
+ }
+
+ $rhs = '/.well-known/zot-info';
+ $https = ((strpos($url,'https://') === 0) ? true : false);
+
+ logger('zot_finger: ' . $address . ' at ' . $url, LOGGER_DEBUG);
+
+ if ($channel) {
+ $postvars = array(
+ 'address' => $address,
+ 'target' => $channel['channel_guid'],
+ 'target_sig' => $channel['channel_guid_sig'],
+ 'key' => $channel['channel_pubkey'],
+ 'token' => self::$token
+ );
+
+ $result = z_post_url($url . $rhs,$postvars);
+
+ if ((! $result['success']) && ($autofallback)) {
+ if ($https) {
+ logger('zot_finger: https failed. falling back to http');
+ $result = z_post_url('http://' . $host . $rhs,$postvars);
+ }
+ }
+ }
+ else {
+ $rhs .= '?f=&address=' . urlencode($address) . '&token=' . self::$token;
+
+ $result = z_fetch_url($url . $rhs);
+ if ((! $result['success']) && ($autofallback)) {
+ if ($https) {
+ logger('zot_finger: https failed. falling back to http');
+ $result = z_fetch_url('http://' . $host . $rhs);
+ }
+ }
+ }
+
+ if(! $result['success']) {
+ logger('zot_finger: no results');
+ return $ret;
+ }
+
+ $x = json_decode($result['body'],true);
+ if($x) {
+ $signed_token = ((is_array($x) && array_key_exists('signed_token',$x)) ? $x['signed_token'] : null);
+ if($signed_token) {
+ $valid = rsa_verify('token.' . self::$token,base64url_decode($signed_token),$x['key']);
+ if(! $valid) {
+ logger('invalid signed token: ' . $url . $rhs, LOGGER_NORMAL, LOG_ERR);
+ return $ret;
+ }
+ }
+ else {
+ logger('No signed token from ' . $url . $rhs, LOGGER_NORMAL, LOG_WARNING);
+ // after 2017-01-01 this will be a hard error unless you over-ride it.
+ if((time() > 1483228800) && (! get_config('system','allow_unsigned_zotfinger')))
+ return $ret;
+ }
+ }
+
+ return $x;
+ }
+
+} \ No newline at end of file
diff --git a/boot.php b/boot.php
index 1cc0cfcd4..a84ee256c 100755
--- a/boot.php
+++ b/boot.php
@@ -39,14 +39,14 @@ require_once('include/permissions.php');
require_once('library/Mobile_Detect/Mobile_Detect.php');
require_once('include/features.php');
require_once('include/taxonomy.php');
-require_once('include/identity.php');
-require_once('include/Contact.php');
+require_once('include/channel.php');
+require_once('include/connections.php');
require_once('include/account.php');
define ( 'PLATFORM_NAME', 'hubzilla' );
define ( 'STD_VERSION', '1.7.1' );
-define ( 'ZOT_REVISION', 1 );
+define ( 'ZOT_REVISION', 1.1 );
define ( 'DB_UPDATE_VERSION', 1168 );
@@ -580,6 +580,72 @@ define ( 'ITEM_IS_STICKY', 1000 );
define ( 'DBTYPE_MYSQL', 0 );
define ( 'DBTYPE_POSTGRES', 1 );
+
+function sys_boot() {
+
+ // our central App object
+
+ App::init();
+
+ /*
+ * Load the configuration file which contains our DB credentials.
+ * Ignore errors. If the file doesn't exist or is empty, we are running in
+ * installation mode.
+ */
+
+ // miniApp is a conversion object from old style .htconfig.php files
+
+ $a = new miniApp;
+
+
+ App::$install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false : true);
+
+ @include('.htconfig.php');
+
+ if(! defined('UNO'))
+ define('UNO', 0);
+
+ if(array_key_exists('default_timezone',get_defined_vars())) {
+ App::$config['system']['timezone'] = $default_timezone;
+ }
+
+ $a->convert();
+
+ App::$timezone = ((App::$config['system']['timezone']) ? App::$config['system']['timezone'] : 'UTC');
+ date_default_timezone_set(App::$timezone);
+
+
+ /*
+ * Try to open the database;
+ */
+
+ require_once('include/dba/dba_driver.php');
+
+ if(! App::$install) {
+ DBA::dba_factory($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type, App::$install);
+ if(! DBA::$dba->connected) {
+ system_unavailable();
+ }
+
+ unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
+
+ /**
+ * Load configs from db. Overwrite configs from .htconfig.php
+ */
+
+ load_config('config');
+ load_config('system');
+ load_config('feature');
+
+ App::$session = new Zotlabs\Web\Session();
+ App::$session->init();
+ load_hooks();
+ call_hooks('init_1');
+ }
+
+}
+
+
/**
*
* Reverse the effect of magic_quotes_gpc if it is enabled.
@@ -1198,7 +1264,6 @@ class App {
* @return App
*/
function get_app() {
- global $a;
return $a;
}
@@ -1248,7 +1313,6 @@ function system_unavailable() {
function clean_urls() {
- global $a;
// if(App::$config['system']['clean_urls'])
return true;
@@ -1256,8 +1320,6 @@ function clean_urls() {
}
function z_path() {
- global $a;
-
$base = z_root();
if(! clean_urls())
$base .= '/?q=';
@@ -1273,7 +1335,6 @@ function z_path() {
* @return string
*/
function z_root() {
- global $a;
return App::get_baseurl();
}
@@ -1605,7 +1666,6 @@ function fix_system_urls($oldurl, $newurl) {
// returns the complete html for inserting into the page
function login($register = false, $form_id = 'main-login', $hiddens=false) {
- $a = get_app();
$o = '';
$reg = false;
$reglink = get_config('system', 'register_link');
@@ -1675,9 +1735,7 @@ function goaway($s) {
}
function shutdown() {
- global $db;
- if(is_object($db) && $db->connected)
- $db->close();
+
}
/**
@@ -1767,7 +1825,6 @@ function remote_user() {
* @param string $s Text to display
*/
function notice($s) {
- $a = get_app();
if(! x($_SESSION, 'sysmsg')) $_SESSION['sysmsg'] = array();
// ignore duplicated error messages which haven't yet been displayed
@@ -1791,7 +1848,6 @@ function notice($s) {
* @param string $s Text to display
*/
function info($s) {
- $a = get_app();
if(! x($_SESSION, 'sysmsg_info')) $_SESSION['sysmsg_info'] = array();
if(App::$interactive)
$_SESSION['sysmsg_info'][] = $s;
@@ -1892,7 +1948,6 @@ function is_windows() {
*/
function is_site_admin() {
- $a = get_app();
if($_SESSION['delegate'])
return false;
@@ -1913,7 +1968,7 @@ function is_site_admin() {
* @return bool true if user is a developer
*/
function is_developer() {
- $a = get_app();
+
if((intval($_SESSION['authenticated']))
&& (is_array(App::$account))
&& (App::$account['account_roles'] & ACCOUNT_ROLE_DEVELOPER))
@@ -1924,7 +1979,6 @@ function is_developer() {
function load_contact_links($uid) {
- $a = get_app();
$ret = array();
@@ -2242,7 +2296,6 @@ function appdirpath() {
* @param string $icon
*/
function head_set_icon($icon) {
- global $a;
App::$data['pageicon'] = $icon;
// logger('head_set_icon: ' . $icon);
@@ -2254,7 +2307,6 @@ function head_set_icon($icon) {
* @return string absolut path to pageicon
*/
function head_get_icon() {
- global $a;
$icon = App::$data['pageicon'];
if(! strpos($icon, '://'))
@@ -2320,7 +2372,7 @@ function z_get_temp_dir() {
}
function z_check_cert() {
- $a = get_app();
+
if(strpos(z_root(),'https://') !== false) {
$x = z_fetch_url(z_root() . '/siteinfo/json');
if(! $x['success']) {
@@ -2341,8 +2393,6 @@ function z_check_cert() {
*/
function cert_bad_email() {
- $a = get_app();
-
$email_tpl = get_intltext_template("cert_bad_eml.tpl");
$email_msg = replace_macros($email_tpl, array(
'$sitename' => App::$config['system']['sitename'],
@@ -2363,26 +2413,30 @@ function cert_bad_email() {
*/
function check_cron_broken() {
- $t = get_config('system','lastpollcheck');
+ $d = get_config('system','lastcron');
+
+ if((! $d) || ($d < datetime_convert('UTC','UTC','now - 4 hours'))) {
+ Zotlabs\Daemon\Master::Summon(array('Cron'));
+ }
+
+ $t = get_config('system','lastcroncheck');
if(! $t) {
// never checked before. Start the timer.
- set_config('system','lastpollcheck',datetime_convert());
+ set_config('system','lastcroncheck',datetime_convert());
return;
}
+
if($t > datetime_convert('UTC','UTC','now - 3 days')) {
// Wait for 3 days before we do anything so as not to swamp the admin with messages
return;
}
- $d = get_config('system','lastpoll');
if(($d) && ($d > datetime_convert('UTC','UTC','now - 3 days'))) {
// Scheduled tasks have run successfully in the last 3 days.
- set_config('system','lastpollcheck',datetime_convert());
+ set_config('system','lastcroncheck',datetime_convert());
return;
}
- $a = get_app();
-
$email_tpl = get_intltext_template("cron_bad_eml.tpl");
$email_msg = replace_macros($email_tpl, array(
'$sitename' => App::$config['system']['sitename'],
@@ -2396,8 +2450,16 @@ function check_cron_broken() {
'From: Administrator' . '@' . App::get_hostname() . "\n"
. 'Content-type: text/plain; charset=UTF-8' . "\n"
. 'Content-transfer-encoding: 8bit' );
- set_config('system','lastpollcheck',datetime_convert());
return;
}
+
+function observer_prohibited($allow_account = false) {
+
+ if($allow_account)
+ return (((get_config('system','block_public')) && (! get_account_id()) && (! remote_channel())) ? true : false );
+ return (((get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) ? true : false );
+
+}
+
diff --git a/doc/Privacy.md b/doc/Privacy.md
index 511293c52..089977d7e 100644
--- a/doc/Privacy.md
+++ b/doc/Privacy.md
@@ -42,11 +42,11 @@ You MAY additionally provide other profile information. Any information which yo
Content you provide (status posts, photos, files, etc.) belongs to you. The $Projectname default is to publish content openly and visible to anybody on the internet (PUBLIC). You MAY control this in your channel settings and restrict the default permissions or you MAY restrict the visibility of any single published item separately (PRIVATE). $Projectname developers will ensure that restricted content is ONLY visible to those in the restriction list - to the best of their ability.
-Content (especially status posts) that you share with other networks or that you have made visible to anybody on the internet (PUBLIC) cannot easily be taken back once it has been published. It MAY be shared with other networks and made available through RSS/Atom feeds. It may also be syndicated on other $Projectname sites. It MAY appear on spy networks and internet searches. If you do not wish this default behaviour please adjust your channel settings and restrict who can see your content.
+Content (especially status posts) that you share with other networks or that you have made visible to anybody on the internet (PUBLIC) cannot easily be taken back once it has been published. It MAY be shared with other networks and made available through RSS/Atom feeds. It may also be syndicated on other $Projectname sites. It MAY appear on other networks and websites and be visible in internet searches. If you do not wish this default behaviour please adjust your channel settings and restrict who can see your content.
**Comments and Forum posts**
-Comments to posts that were created by others and posts which are designated as forum posts belong to you as the creator/author, but the distribution of these posts is not under your direct control. These posts/comments MAY be re-distributed to others, and MAY be visible to anybody on the internet. In the case of comments, the creator of the "first message" in the thread to which you are replying controls the distribution of all comments and replies to that message.
+Comments to posts that were created by others and posts which are designated as forum posts belong to you as the creator/author, but the distribution of these posts is not under your direct control, and you relinquish SOME rights to these items. These posts/comments MAY be re-distributed to others, and MAY be visible to anybody on the internet. In the case of comments, the creator of the "first message" in the thread (conversation) to which you are replying controls the distribution of all comments and replies to that message. They "own" and therefore have certain rights with regard to the entire conversation (including all comments contained within it). You can still edit or delete the comment, but the conversation owner also has rights to edit, delete, re-distribute, and backup/restore any or all the content from the conversation.
**Private Information**
diff --git a/doc/bugs.bb b/doc/bugs.bb
index 1a27e66ba..f50337648 100644
--- a/doc/bugs.bb
+++ b/doc/bugs.bb
@@ -5,11 +5,6 @@
Hubzilla Community Server is open source software which is maintained by "the community" - essentially unpaid volunteers.
-[b]Hubzilla Enterprise Server[/b]
-
-Hubzilla Enterprise Server is commercial software with a variety of support plans depending on the specific license terms.
-
-
The first thing you need to do is talk to your hub administrator - the person who runs and manages your site. They are in the unique position of having access to the internal software and database and [b]logfiles[/b] and will need to be involved in fixing your problem. Other people "on the net" can't really help with this. The first thing the hub administrator needs to do is look at their logs and/or try to reproduce the problem. So try to be as helpful and courteous as possible in helping them look into the problem.
To find your hub administrator (if you don't know who they are) please look at [url=[baseurl]/siteinfo]this page[/url]. If they have not provided any contact info on that page or provided an "Impressum" there, see [url=[baseurl]/siteinfo/json]this site info summary[/url] under the heading "admin:".
@@ -24,13 +19,6 @@ If you get a blank white screen when doing something, this is almost always a co
[h3]I'm stumped. I can't figure out what is wrong.[/h3]
-[b]Hubzilla Enterprise Server[/b]
-
-Please make contact with the vendor - who will have provided you with support contact details. Preferably this contact will be made by the hub administrator so that he/she can assist us in collecting the necessary issue details. We will assign a ticket and notify you of progress.
-
-
-[b]Hubzilla Community Server[/b]
-
At this point it might be worthwhile discussing the issue on one of the online forums. There may be several of these and some may be more suited to your spoken language. As a last resort, try "Channel One", which is in English.
If the community developers can't help you right away, understand that they are volunteers and may have a lot of other work and demands on their time. At this point you need to file a bug report. You will need an account on github.com to do this. So register, and then visit https://github.com/redmatrix/hubzilla/issues
@@ -39,7 +27,5 @@ If the community developers can't help you right away, understand that they are
Then you wait. If it's a high profile issue, it may get fixed quickly. But nobody is in charge of fixing bugs. If it lingers without resolution, please spend some more time investigating the problem. Ask about anything you don't understand related to the behaviour. You will learn more about how the software works and quite possibly figure out why it isn't working now. Ultimately it is somebody in the community who is going to fix this and you are a member of the community; and this is how the open source process works.
-[b]In either case[/b]
-
-Other developers working to fix the problem may need to find out more, so do your homework and document what is happening and everything you've tried. Don't say "I did xyz and it didn't work." That doesn't tell us anything. Tell us precisely what steps you took and what you expected the result to be, and precisely what happened as a result. If there were any error messages, don't say "there was an error message". Tell us exactly what the message said.
+Other developers working to fix the problem may need to find out more, so do your homework and document what is happening and everything you've tried. Don't say "I did xyz and it didn't work." That doesn't tell us anything. Tell us precisely what steps you took and what you expected the result to be, and precisely what happened as a result. If there were any error messages, don't say "there was an error message". Tell us exactly what the message said. Tell us what version you're running and any other details that may be unique about your site configuration.
\ No newline at end of file
diff --git a/doc/ca/develop.bb b/doc/ca/develop.bb
index 7e82049c7..bc709963c 100644
--- a/doc/ca/develop.bb
+++ b/doc/ca/develop.bb
@@ -26,9 +26,6 @@
[zrl=[baseurl]/help/git_for_non_developers]Git per a No-Desenvolupadors[/zrl]
[zrl=[baseurl]/help/dev_beginner]Manual pas-a-pas per a desenvolupadors principiants[/zrl]
-[h3]Preguntes Més Freqüents (FAQ) Per Desenvolupadors[/h3]
-[zrl=[baseurl]/help/faq_developers]FAQ Per Desenvoupadors[/zrl]
-
[h3]Recursos Externs[/h3]
[url=https://zothub.com/channel/one]Development Channel[/url]
[url=https://federated.social/channel/postgres]Postgres-specific $Projectname Admin Support Channel[/url]
diff --git a/doc/classRedmatrix_1_1Import_1_1Import-members.html b/doc/classRedmatrix_1_1Import_1_1Import-members.html
deleted file mode 100644
index d5e2f9277..000000000
--- a/doc/classRedmatrix_1_1Import_1_1Import-members.html
+++ /dev/null
@@ -1,131 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.3.1"/>
-<title>The Hubzilla: Member List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="navtree.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="resize.js"></script>
-<script type="text/javascript" src="navtree.js"></script>
-<script type="text/javascript">
- $(document).ready(initResizable);
- $(window).load(resizeHeight);
-</script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
- <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
- <td style="padding-left: 0.5em;">
- <div id="projectname">The Hubzilla
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.3.1 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- <li>
- <div id="MSearchBox" class="MSearchBoxInactive">
- <span class="left">
- <img id="MSearchSelect" src="search/mag_sel.png"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- alt=""/>
- <input type="text" id="MSearchField" value="Search" accesskey="S"
- onfocus="searchBox.OnSearchFieldFocus(true)"
- onblur="searchBox.OnSearchFieldFocus(false)"
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
- </span><span class="right">
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
- </span>
- </div>
- </li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
- <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
- <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div id="side-nav" class="ui-resizable side-nav-resizable">
- <div id="nav-tree">
- <div id="nav-tree-contents">
- <div id="nav-sync" class="sync"></div>
- </div>
- </div>
- <div id="splitbar" style="-moz-user-select:none;"
- class="ui-resizable-handle">
- </div>
-</div>
-<script type="text/javascript">
-$(document).ready(function(){initNavTree('classHubzilla_1_1Import_1_1Import.html','');});
-</script>
-<div id="doc-content">
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0"
- name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
- <div class="headertitle">
-<div class="title">Hubzilla\Import\Import Member List</div> </div>
-</div><!--header-->
-<div class="contents">
-
-<p>This is the complete list of members for <a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a>, including all inherited members.</p>
-<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f">$credentials</a></td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
- <tr><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc">$itemlist</a></td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c">$items</a></td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
- <tr><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6">$src_items</a></td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a">convert_child</a>($child)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218">convert_item</a>($item_ident)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6">convert_taxonomy</a>($item_ident)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8">get_children</a>($item_ident)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367">get_credentials</a>()</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2">get_item</a>($item_ident)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059">get_item_ident</a>($item)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc">get_itemlist</a>()</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c">get_taxonomy</a>($item_ident)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">run</a>()</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc">store</a>($item, $update=false)</td><td class="entry"><a class="el" href="classHubzilla_1_1Import_1_1Import.html">Hubzilla\Import\Import</a></td><td class="entry"></td></tr>
-</table></div><!-- contents -->
-</div><!-- doc-content --> \ No newline at end of file
diff --git a/doc/classRedmatrix_1_1Import_1_1Import.html b/doc/classRedmatrix_1_1Import_1_1Import.html
deleted file mode 100644
index 9a7128d65..000000000
--- a/doc/classRedmatrix_1_1Import_1_1Import.html
+++ /dev/null
@@ -1,446 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.3.1"/>
-<title>The Hubzilla: Hubzilla\Import\Import Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="navtree.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="resize.js"></script>
-<script type="text/javascript" src="navtree.js"></script>
-<script type="text/javascript">
- $(document).ready(initResizable);
- $(window).load(resizeHeight);
-</script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
- <td id="projectlogo"><img alt="Logo" src="rm-64.png"/></td>
- <td style="padding-left: 0.5em;">
- <div id="projectname">The Hubzilla
- </div>
- </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.3.1 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
- <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- <li>
- <div id="MSearchBox" class="MSearchBoxInactive">
- <span class="left">
- <img id="MSearchSelect" src="search/mag_sel.png"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- alt=""/>
- <input type="text" id="MSearchField" value="Search" accesskey="S"
- onfocus="searchBox.OnSearchFieldFocus(true)"
- onblur="searchBox.OnSearchFieldFocus(false)"
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
- </span><span class="right">
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
- </span>
- </div>
- </li>
- </ul>
- </div>
- <div id="navrow2" class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
- <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
- <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
- </ul>
- </div>
-</div><!-- top -->
-<div id="side-nav" class="ui-resizable side-nav-resizable">
- <div id="nav-tree">
- <div id="nav-tree-contents">
- <div id="nav-sync" class="sync"></div>
- </div>
- </div>
- <div id="splitbar" style="-moz-user-select:none;"
- class="ui-resizable-handle">
- </div>
-</div>
-<script type="text/javascript">
-$(document).ready(function(){initNavTree('classHubzilla_1_1Import_1_1Import.html','');});
-</script>
-<div id="doc-content">
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Pages</a></div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0"
- name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> &#124;
-<a href="#pro-attribs">Protected Attributes</a> &#124;
-<a href="#pri-attribs">Private Attributes</a> &#124;
-<a href="classHubzilla_1_1Import_1_1Import-members.html">List of all members</a> </div>
- <div class="headertitle">
-<div class="title">Hubzilla\Import\Import Class Reference</div> </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr class="memitem:a24134929d9a8a682da2036a0bf326367"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367">get_credentials</a> ()</td></tr>
-<tr class="separator:a24134929d9a8a682da2036a0bf326367"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a855cd5a79b95d269ae8737fae774e3bc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc">get_itemlist</a> ()</td></tr>
-<tr class="separator:a855cd5a79b95d269ae8737fae774e3bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a772c28edf36aaf8e66007a95004c4059"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a772c28edf36aaf8e66007a95004c4059">get_item_ident</a> ($item)</td></tr>
-<tr class="separator:a772c28edf36aaf8e66007a95004c4059"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a27987a41cb703a796f1821baeb4774a2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a27987a41cb703a796f1821baeb4774a2">get_item</a> ($item_ident)</td></tr>
-<tr class="separator:a27987a41cb703a796f1821baeb4774a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae3c6472bea1a44025bc2e152604eb20c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#ae3c6472bea1a44025bc2e152604eb20c">get_taxonomy</a> ($item_ident)</td></tr>
-<tr class="separator:ae3c6472bea1a44025bc2e152604eb20c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a57561904b0f127e0d9a3e2c33688daf8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a57561904b0f127e0d9a3e2c33688daf8">get_children</a> ($item_ident)</td></tr>
-<tr class="separator:a57561904b0f127e0d9a3e2c33688daf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a107703a43a1b0ceb2af7ae470cb3f218"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a107703a43a1b0ceb2af7ae470cb3f218">convert_item</a> ($item_ident)</td></tr>
-<tr class="separator:a107703a43a1b0ceb2af7ae470cb3f218"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:addf6e53dacd971eaab49be4b17a767d6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#addf6e53dacd971eaab49be4b17a767d6">convert_taxonomy</a> ($item_ident)</td></tr>
-<tr class="separator:addf6e53dacd971eaab49be4b17a767d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5434325afb2c633c52540127d717800a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a5434325afb2c633c52540127d717800a">convert_child</a> ($child)</td></tr>
-<tr class="separator:a5434325afb2c633c52540127d717800a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a33ed595de044c0ec1cd84cca719e31dc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a33ed595de044c0ec1cd84cca719e31dc">store</a> ($item, $update=false)</td></tr>
-<tr class="separator:a33ed595de044c0ec1cd84cca719e31dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8d138a9a7d4f79b81d3446ca216a602c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">run</a> ()</td></tr>
-<tr class="separator:a8d138a9a7d4f79b81d3446ca216a602c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr class="memitem:ad0d2bdc3b388220479063915b4f5c2fc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#ad0d2bdc3b388220479063915b4f5c2fc">$itemlist</a> = null</td></tr>
-<tr class="separator:ad0d2bdc3b388220479063915b4f5c2fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a88c2eeba8d0cba3e7c12a2c45ba0fbc6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a88c2eeba8d0cba3e7c12a2c45ba0fbc6">$src_items</a> = null</td></tr>
-<tr class="separator:a88c2eeba8d0cba3e7c12a2c45ba0fbc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0a05dac405ccc5b617b7b7b3c8ed783c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a0a05dac405ccc5b617b7b7b3c8ed783c">$items</a> = null</td></tr>
-<tr class="separator:a0a05dac405ccc5b617b7b7b3c8ed783c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
-Private Attributes</h2></td></tr>
-<tr class="memitem:a864aac9fadb4846f5d9f840e8e0f440f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classHubzilla_1_1Import_1_1Import.html#a864aac9fadb4846f5d9f840e8e0f440f">$credentials</a> = null</td></tr>
-<tr class="separator:a864aac9fadb4846f5d9f840e8e0f440f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-<h2 class="groupheader">Member Function Documentation</h2>
-<a class="anchor" id="a5434325afb2c633c52540127d717800a"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::convert_child </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$child</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a107703a43a1b0ceb2af7ae470cb3f218"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::convert_item </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item_ident</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="addf6e53dacd971eaab49be4b17a767d6"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::convert_taxonomy </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item_ident</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a57561904b0f127e0d9a3e2c33688daf8"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::get_children </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item_ident</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a24134929d9a8a682da2036a0bf326367"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::get_credentials </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a27987a41cb703a796f1821baeb4774a2"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::get_item </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item_ident</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a772c28edf36aaf8e66007a95004c4059"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::get_item_ident </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a855cd5a79b95d269ae8737fae774e3bc"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::get_itemlist </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ae3c6472bea1a44025bc2e152604eb20c"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::get_taxonomy </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item_ident</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a8d138a9a7d4f79b81d3446ca216a602c">Hubzilla\Import\Import\run()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a8d138a9a7d4f79b81d3446ca216a602c"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::run </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a33ed595de044c0ec1cd84cca719e31dc"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::store </td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$item</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>$update</em> = <code>false</code>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a864aac9fadb4846f5d9f840e8e0f440f"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::$credentials = null</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">private</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a24134929d9a8a682da2036a0bf326367">Hubzilla\Import\Import\get_credentials()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad0d2bdc3b388220479063915b4f5c2fc"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::$itemlist = null</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">protected</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-<p>Referenced by <a class="el" href="classHubzilla_1_1Import_1_1Import.html#a855cd5a79b95d269ae8737fae774e3bc">Hubzilla\Import\Import\get_itemlist()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a0a05dac405ccc5b617b7b7b3c8ed783c"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::$items = null</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">protected</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a88c2eeba8d0cba3e7c12a2c45ba0fbc6"></a>
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">Hubzilla\Import\Import::$src_items = null</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">protected</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>include/Import/<a class="el" href="Importer_8php.html">Importer.php</a></li>
-</ul>
-</div><!-- contents -->
-</div><!-- doc-content --> \ No newline at end of file
diff --git a/doc/de/develop.bb b/doc/de/develop.bb
index 473b18b68..30e2954c6 100644
--- a/doc/de/develop.bb
+++ b/doc/de/develop.bb
@@ -25,9 +25,6 @@
[zrl=[baseurl]/help/git_for_non_developers]Git für Nicht-Entwickler[/zrl]
[zrl=[baseurl]/help/dev_beginner]Schritt-für-Schritt-Einführung für neue Entwickler[/zrl]
-[h3]Häufig gestellte Fragen für Entwickler[/h3]
-[zrl=[baseurl]/help/faq_developers]FAQ für Entwickler[/zrl]
-
[h3]Externe Ressourcen[/h3]
[url=https://zothub.com/channel/one]Entwickler-Kanal[/url]
[url=https://federated.social/channel/postgres]Postgres-spezifischer Admin-Support-Kanal[/url]
diff --git a/doc/develop.bb b/doc/develop.bb
index 56ba08421..ef3ea5bd0 100644
--- a/doc/develop.bb
+++ b/doc/develop.bb
@@ -26,9 +26,6 @@
[zrl=[baseurl]/help/git_for_non_developers]Git for Non-Developers[/zrl]
[zrl=[baseurl]/help/dev_beginner]Step-for-step manual for beginning developers[/zrl]
-[h3]Frequently Asked Questions For Developers[/h3]
-[zrl=[baseurl]/help/faq_developers]FAQ For Developers[/zrl]
-
[h3]External Resources[/h3]
[url=https://zothub.com/channel/one]Development Channel[/url]
[url=https://federated.social/channel/postgres]Postgres-specific $Projectname Admin Support Channel[/url]
diff --git a/doc/developer_function_primer.bb b/doc/developer_function_primer.bb
index 684fea569..183581361 100644
--- a/doc/developer_function_primer.bb
+++ b/doc/developer_function_primer.bb
@@ -12,10 +12,6 @@ Returns authenticated numeric channel_id if authenticated and connected to a cha
Returns authenticated string hash of Red global identifier, if authenticated via remote auth, or an empty string.
-[b]get_app()[/b]
-
-Returns the global app structure ($a).
-
[b]App::get_observer()[/b]
returns an xchan structure representing the current viewer if authenticated (locally or remotely).
diff --git a/doc/faq_developers.bb b/doc/faq_developers.bb
deleted file mode 100644
index 5da2c19ff..000000000
--- a/doc/faq_developers.bb
+++ /dev/null
@@ -1,454 +0,0 @@
-[size=large][b]Frequently Asked Questions For Developers[/b][/size]
-
-[toc]
-
-
-[h3]What does $a mean?[/h3]
-$a is a class defined in boot.php and passed all around $Projectname as a global reference variable. It defines everything necessary for the $Projectname application: Server variables, URL arguments, page structures, layouts, content, installed plugins, output device info, theme info, identity of the observer and (potential) page owner ...
-
-We don't ever create more than one instance and always modify the elements of the single instance. The mechanics of this are somewhat tricky. If you have a function that is passed $a and needs to modify $a you need to declare it as a reference with '&' e.g.
-
-[code]function foo(&$a) { App::$something = 'x'; // whatever };
-
-*or* access it within your function as a global variable via get_app()
-
-function foo() {
- $a = get_app();
- App::$something = 'x';
-}
-
-
-function foo($a) { App::$something = 'x'; };
-
-will *not* change the global app state.
-
-function foo() {
- App::$something = 'x';
-}
-[/code]
-
-
-An example (large) &$a object showing some of its many members and structures-- in JSON format for easier readability-- is here:
-
-[code] {
- "category": null,
- "nav_sel": {
- "home": null,
- "community": null,
- "contacts": null,
- "directory": null,
- "settings": null,
- "notifications": null,
- "intros": null,
- "messages": null,
- "register": null,
- "manage": null,
- "profiles": null,
- "network": null,
- "help": "active"
- },
- "argc": 2,
- "install": false,
- "is_mobile": false,
- "timezone": "America/Los_Angeles",
- "sourcename": "",
- "module_loaded": true,
- "contacts": null,
- "interactive": true,
- "config": {
- "system": {
- "max_import_size": 200000,
- "logfile": "/tmp/hubzilla.log",
- "channels_active_monthly_stat": "3",
- "last_expire_day": "4",
- "loglevel": "4",
- "sitename": "Hubzilla",
- "access_policy": 0,
- "directory_mode": 0,
- "debugging": "1",
- "verify_email": 1,
- "register_text": "",
- "urlverify": "687474703a2f2f6875627a696c6c61",
- "register_policy": 2,
- "theme": "redbasic",
- "smarty3_folder": "/home/src/hubzilla/store/[data]/smarty3",
- "channels_total_stat": "4",
- "admin_email": "foo@bar.com",
- "channels_active_halfyear_stat": "3",
- "location_hash": "910792b7bf75296cbf238ae29a5493f3c78805812652d3f0396e88763a26ce1b",
- "local_posts_stat": "63",
- "lastpollcheck": "2015-11-03 07:40:38",
- "baseurl": "http://hubzilla",
- "config_loaded": true,
- "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAuR4neYAxuWwZg34fqofU\nZg8y1YSTX39Tzhgcgn7QFCeH600NHJBHWXbPdS5imdYq6W+P1vtKxsVNLI9d01+j\ns3MF3amgEuJH0X+JLLjyittQksyAiukvh/o4MSit8mcYcXs8Dxaybe+KaY09N4ys\ndxKcn6EPlthUiQPJMPitybp4vYkw9LupWZOQWThz9ur6T5wnk9ehBIPFN8gYvKrT\nAG9RFfbq3y59rTOiSHNA2PIUMzo2HEh4QBVCvVolKt7GPhUM4Bze40VRe8ELZTPp\nyehNxEHyhHZfnC+XRVNlvSPXBU2vtE+zcok+5DXsKAqMt8YgFIThNEOLQKvff/lv\nsdGvk6jJZok7+9lKtYfwnNnRWf51aVVuSAO3aIIVLroLyhiji0KA7G5YRHeF1rNL\np88e8peMyUMCX2Svv1wudJzqOfWSvOpY0NLZrdGZXRN2/rXyHPRD/TtS3SNDdd7J\nYQUjyxGjF1/zB3xqvPr09s8tzXqJl9pZNcN9iz58oPBbTuGdUr8CJro/3nVHgkRf\nw7/zhapSW1UaroJjecrC9yWx5QUD3KNU51phsP9iHCFdMyPBdUHjmNvE5f7YJWBh\nO1rRKUoE3i+eHLYAWeYblFX7T+EKOCB2hd3NUrIqDL98OSpfDiZT7rf9PdcWCOY5\nuddm6KzwHjffl5kZd8MM8bMCAwEAAQ==\n-----END PUBLIC KEY-----\n",
- "addon": "converse",
- "lastpoll": "2015-11-04 07:40:01",
- "php_path": "/usr/bin/php",
- "allowed_themes": "redbasic",
- "sellpage": "",
- "prvkey": "-----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----\n",
- "directory_server": "https://red.zottel.red",
- "curl_ssl_ciphers": "ALL:!eNULL",
- "db_version": "1158"
- },
- "config": {
- "config_loaded": true
- },
- "feature": {
- "config_loaded": true
- },
- "2": {
- "redbasic": {
- "schema": "dark",
- "comment_indent": "",
- "toolicon_activecolour": "",
- "item_colour": "",
- "nav_gradient_top": "",
- "nav_active_icon_colour": "",
- "nav_active_gradient_top": "",
- "top_photo": "",
- "converse_width": "",
- "nav_min_opacity": "",
- "body_font_size": "",
- "reply_photo": "",
- "background_colour": "",
- "radius": "",
- "nav_gradient_bottom": "",
- "toolicon_colour": "",
- "nav_active_gradient_bottom": "",
- "nav_icon_colour": "",
- "narrow_navbar": "",
- "nav_bg": "",
- "comment_item_colour": "",
- "config_loaded": true,
- "banner_colour": "",
- "comment_border_colour": "",
- "align_left": "",
- "font_size": "",
- "font_colour": "",
- "nav_bd": "",
- "photo_shadow": "",
- "background_image": "",
- "link_colour": ""
- },
- "system": {
- "network_list_mode": "0",
- "post_joingroup": "0",
- "channel_list_mode": "0",
- "title_tosource": "0",
- "blocktags": "0",
- "photo_path": "%Y-%m",
- "suggestme": "0",
- "autoperms": "0",
- "hide_presence": "0",
- "channel_divmore_height": "400",
- "network_divmore_height": "400",
- "post_profilechange": "0",
- "channel_menu": "",
- "always_show_in_notices": "0",
- "use_browser_location": "0",
- "update_interval": "80000",
- "itemspage": "20",
- "attach_path": "%Y-%m",
- "permissions_role": "social",
- "vnotify": "2047",
- "post_newfriend": "0",
- "config_loaded": true,
- "no_smilies": "0",
- "evdays": "3",
- "user_scalable": "1"
- }
- }
- },
- "layout": {
- "region_aside": "\n&lt;div class=&quot;widget&quot;&gt;&lt;h3&gt;Documentation&lt;/h3&gt;&lt;ul class=&quot;nav nav-pills nav-stacked&quot;&gt;&lt;li&gt;&lt;a href=&quot;help/general&quot;&gt;Project/Site Information&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;help/members&quot;&gt;For Members&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;help/admins&quot;&gt;For Administrators&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;help/develop&quot;&gt;For Developers&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;\n"
- },
- "is_sys": false,
- "content": null,
- "cid": null,
- "profile_uid": 0,
- "hooks": {
- "construct_page": [
- [
- "addon/converse/converse.php",
- "converse_content"
- ]
- ]
- },
- "strings": [],
- "js_sources": [
- "jquery.js",
- "library/justifiedGallery/jquery.justifiedGallery.min.js",
- "library/sprintf.js/dist/sprintf.min.js",
- "spin.js",
- "jquery.spin.js",
- "jquery.textinputs.js",
- "autocomplete.js",
- "library/jquery-textcomplete/jquery.textcomplete.js",
- "library/jquery.timeago.js",
- "library/readmore.js/readmore.js",
- "library/jgrowl/jquery.jgrowl_minimized.js",
- "library/cryptojs/components/core-min.js",
- "library/cryptojs/rollups/aes.js",
- "library/cryptojs/rollups/rabbit.js",
- "library/cryptojs/rollups/tripledes.js",
- "acl.js",
- "webtoolkit.base64.js",
- "main.js",
- "crypto.js",
- "library/jRange/jquery.range.js",
- "library/colorbox/jquery.colorbox-min.js",
- "library/jquery.AreYouSure/jquery.are-you-sure.js",
- "library/tableofcontents/jquery.toc.js",
- "library/bootstrap/js/bootstrap.min.js",
- "library/bootbox/bootbox.min.js",
- "library/bootstrap-tagsinput/bootstrap-tagsinput.js",
- "library/datetimepicker/jquery.datetimepicker.js",
- "library/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js",
- "view/theme/redbasic/js/redbasic.js",
- "mod_help.js"
- ],
- "channel": {
- "channel_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
- "channel_address": "testes",
- "channel_primary": "1",
- "channel_allow_gid": "",
- "xchan_deleted": "0",
- "xchan_connpage": "",
- "channel_r_storage": "1",
- "xchan_pubforum": "0",
- "channel_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
- "xchan_flags": "0",
- "channel_allow_cid": "",
- "xchan_censored": "0",
- "channel_w_pages": "128",
- "xchan_instance_url": "",
- "xchan_photo_s": "http://hubzilla/photo/profile/s/2",
- "channel_w_stream": "128",
- "channel_timezone": "America/Los_Angeles",
- "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
- "channel_w_chat": "128",
- "xchan_connurl": "http://hubzilla/poco/testes",
- "channel_guid_sig": "XXX",
- "xchan_name_date": "2015-10-09 00:45:41",
- "channel_expire_days": "0",
- "xchan_system": "0",
- "xchan_photo_date": "2015-10-09 00:45:41",
- "channel_startpage": "",
- "channel_deny_gid": "",
- "channel_lastpost": "2015-10-09 02:53:23",
- "xchan_photo_m": "http://hubzilla/photo/profile/m/2",
- "channel_passwd_reset": "",
- "xchan_hidden": "0",
- "xchan_selfcensored": "0",
- "xchan_photo_mimetype": "image/jpeg",
- "channel_a_republish": "128",
- "channel_w_tagwall": "128",
- "channel_r_stream": "1",
- "channel_w_comment": "128",
- "channel_system": "0",
- "channel_w_mail": "128",
- "channel_pageflags": "0",
- "xchan_network": "zot",
- "channel_id": "2",
- "xchan_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
- "channel_removed": "0",
- "channel_dirdate": "2015-10-09 00:46:00",
- "channel_w_storage": "128",
- "channel_w_photos": "0",
- "channel_prvkey": "-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----\n",
- "channel_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
- "channel_max_friend_req": "0",
- "channel_w_wall": "128",
- "channel_r_abook": "1",
- "channel_max_anon_mail": "0",
- "channel_location": "",
- "channel_a_delegate": "128",
- "channel_deny_cid": "",
- "channel_r_profile": "1",
- "channel_name": "testes",
- "xchan_guid_sig": "XXX",
- "xchan_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
- "channel_notifyflags": "703",
- "channel_theme": "redbasic",
- "channel_w_like": "2",
- "xchan_url": "http://hubzilla/channel/testes",
- "channel_default_group": "",
- "channel_r_photos": "0",
- "channel_account_id": "1",
- "xchan_addr": "testes@hubzilla",
- "channel_r_pages": "1",
- "channel_deleted": "0000-00-00 00:00:00",
- "xchan_orphan": "0",
- "xchan_follow": "http://hubzilla/follow?f=&amp;url=%s",
- "xchan_name": "testes",
- "xchan_photo_l": "http://hubzilla/photo/profile/l/2"
- },
- "page": {
- "content": "&lt;div id=&quot;help-content&quot; class=&quot;generic-content-wrapper&quot;&gt;\n\t&lt;div class=&quot;section-title-wrapper&quot;&gt;\n\t&lt;h2&gt;Hubzilla Documentation&lt;/h2&gt;\n\t&lt;/div&gt;\n\t&lt;div class=&quot;section-content-wrapper&quot;&gt;\n\t&lt;h2&gt;Documentation for Developers&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Technical Documentation&lt;/h3&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/Zot---A-High-Level-Overview&quot; target=&quot;_blank&quot; &gt;A high level overview of Zot&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/zot&quot; target=&quot;_blank&quot; &gt;An introduction to Zot&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/zot_structures&quot; target=&quot;_blank&quot; &gt;Zot Stuctures&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/comanche&quot; target=&quot;_blank&quot; &gt;Comanche Page Descriptions&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/Creating-Templates&quot; target=&quot;_blank&quot; &gt;Creating Comanche Templates&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/Widgets&quot; target=&quot;_blank&quot; &gt;Widgets&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/plugins&quot; target=&quot;_blank&quot; &gt;Plugins&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/hooks&quot; target=&quot;_blank&quot; &gt;Hooks&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/doco&quot; target=&quot;_blank&quot; &gt;Contributing Documentation&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/DerivedTheme1&quot; target=&quot;_blank&quot; &gt;Creating Derivative Themes&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/schema_development&quot; target=&quot;_blank&quot; &gt;Schemas&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/Translations&quot; target=&quot;_blank&quot; &gt;Translations&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/developers&quot; target=&quot;_blank&quot; &gt;Developers&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/intro_for_developers&quot; target=&quot;_blank&quot; &gt;Intro for Developers&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/database&quot; target=&quot;_blank&quot; &gt;Database schema documentation&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/api_functions&quot; target=&quot;_blank&quot; &gt;API functions&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/api_posting&quot; target=&quot;_blank&quot; &gt;Posting to the red# using the API&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/developer_function_primer&quot; target=&quot;_blank&quot; &gt;Red Functions 101&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/doc/html/&quot; target=&quot;_blank&quot; &gt;Code Reference (Doxygen generated - sets cookies)&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/to_do_doco&quot; target=&quot;_blank&quot; &gt;To-Do list for the Red Documentation Project&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/to_do_code&quot; target=&quot;_blank&quot; &gt;To-Do list for Developers&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/roadmap&quot; target=&quot;_blank&quot; &gt;Version 3 roadmap&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/git_for_non_developers&quot; target=&quot;_blank&quot; &gt;Git for Non-Developers&lt;/a&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/dev_beginner&quot; target=&quot;_blank&quot; &gt;Step-for-step manual for beginning developers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Frequently Asked Questions For Developers&lt;/h3&gt;&lt;br /&gt;&lt;a class=&quot;zrl&quot; href=&quot;http://hubzilla/help/faq_developers&quot; target=&quot;_blank&quot; &gt;FAQ For Developers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;External Resources&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://zothub.com/channel/one&quot; target=&quot;_blank&quot; &gt;Development Channel&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://federated.social/channel/postgres&quot; target=&quot;_blank&quot; &gt;Postgres-specific Hubzilla Admin Support Channel&lt;/a&gt;&lt;br /&gt;\n\t&lt;/div&gt;\n&lt;/div&gt;\n&lt;script&gt;var homebase = &quot;http://hubzilla/channel/testes&quot;;&lt;/script&gt;",
- "page_title": "help",
- "title": "Help: Develop",
- "nav": "\t&lt;div class=&quot;container-fluid&quot;&gt;\n\t\t&lt;div class=&quot;navbar-header&quot;&gt;\n\t\t\t&lt;button type=&quot;button&quot; class=&quot;navbar-toggle&quot; data-toggle=&quot;collapse&quot; data-target=&quot;#navbar-collapse-1&quot;&gt;\n\t\t\t\t&lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;span class=&quot;icon-bar&quot;&gt;&lt;/span&gt;\n\t\t\t&lt;/button&gt;\n\t\t\t&lt;button id=&quot;expand-tabs&quot; type=&quot;button&quot; class=&quot;navbar-toggle&quot; data-toggle=&quot;collapse&quot; data-target=&quot;#tabs-collapse-1&quot;&gt;\n\t\t\t\t&lt;i class=&quot;icon-circle-arrow-down&quot; id=&quot;expand-tabs-icon&quot;&gt;&lt;/i&gt;\n\t\t\t&lt;/button&gt;\n\t\t\t&lt;button id=&quot;expand-aside&quot; type=&quot;button&quot; class=&quot;navbar-toggle&quot; data-toggle=&quot;offcanvas&quot; data-target=&quot;#region_1&quot;&gt;\n\t\t\t\t&lt;i class=&quot;icon-circle-arrow-right&quot; id=&quot;expand-aside-icon&quot;&gt;&lt;/i&gt;\n\t\t\t&lt;/button&gt;\n\t\t\t\t\t\t\t&lt;img class=&quot;dropdown-toggle fakelink&quot; data-toggle=&quot;dropdown&quot; id=&quot;avatar&quot; src=&quot;http://hubzilla/photo/profile/m/2&quot; alt=&quot;testes@hubzilla&quot;&gt;&lt;span class=&quot;caret&quot; id=&quot;usermenu-caret&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t\t\t\t\t&lt;ul class=&quot;dropdown-menu&quot; role=&quot;menu&quot; aria-labelledby=&quot;avatar&quot;&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;channel/testes&quot; title=&quot;Your posts and conversations&quot; role=&quot;menuitem&quot; id=&quot;channel_nav_btn&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;profile/testes&quot; title=&quot;Your profile page&quot; role=&quot;menuitem&quot; id=&quot;profile_nav_btn&quot;&gt;View Profile&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;profiles/2&quot; title=&quot;Edit your profile&quot; role=&quot;menuitem&quot; id=&quot;profiles_nav_btn&quot;&gt;Edit Profile&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;photos/testes&quot; title=&quot;Your photos&quot; role=&quot;menuitem&quot; id=&quot;photos_nav_btn&quot;&gt;Photos&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;cloud/testes&quot; title=&quot;Your files&quot; role=&quot;menuitem&quot; id=&quot;cloud_nav_btn&quot;&gt;Files&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;chat/testes/new&quot; title=&quot;Your chatrooms&quot; role=&quot;menuitem&quot; id=&quot;chat_nav_btn&quot;&gt;Chat&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot; class=&quot;divider&quot;&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;settings&quot; title=&quot;Account/Channel Settings&quot; role=&quot;menuitem&quot; id=&quot;settings_nav_btn&quot;&gt;Settings&lt;/a&gt;&lt;/li&gt;\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;manage&quot; title=&quot;Manage Your Channels&quot; role=&quot;menuitem&quot; id=&quot;manage_nav_btn&quot;&gt;Channel Manager&lt;/a&gt;&lt;/li&gt;\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot; class=&quot;divider&quot;&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;admin/&quot; title=&quot;Site Setup and Configuration&quot; role=&quot;menuitem&quot; id=&quot;admin_nav_btn&quot;&gt;Admin&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t&lt;li role=&quot;presentation&quot; class=&quot;divider&quot;&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li role=&quot;presentation&quot;&gt;&lt;a href=&quot;logout&quot; title=&quot;End this session&quot; role=&quot;menuitem&quot; id=&quot;logout_nav_btn&quot;&gt;Logout&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t\t\t\t\t\t&lt;/div&gt;\n\t\t&lt;div class=&quot;collapse navbar-collapse&quot; id=&quot;navbar-collapse-1&quot;&gt;\n\t\t\t&lt;ul class=&quot;nav navbar-nav navbar-left&quot;&gt;\n\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;network&quot; title=&quot;Your grid&quot; id=&quot;network_nav_btn&quot;&gt;&lt;i class=&quot;icon-th&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;net-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-network-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-network-menu&quot; role=&quot;menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;network&quot;&gt;\n\t\t\t\t\t\t\n\t\t\t\t\t\t&lt;li id=&quot;nav-network-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('network'); return false;&quot;&gt;Mark all grid notifications seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;network&quot; title=&quot;Your grid&quot; &gt;&lt;i class=&quot;icon-th&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;net-update badge&quot; rel=&quot;#nav-network-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;channel/testes&quot; title=&quot;Channel home&quot; id=&quot;home_nav_btn&quot;&gt;&lt;i class=&quot;icon-home&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;home-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-home-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-home-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;home&quot;&gt;\n\t\t\t\t\t\t\n\t\t\t\t\t\t&lt;li id=&quot;nav-home-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('home'); return false;&quot;&gt;Mark all channel notifications seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;channel/testes&quot; title=&quot;Channel home&quot; &gt;&lt;i class=&quot;icon-home&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;home-update badge&quot; rel=&quot;#nav-home-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;mail/combined&quot; title=&quot;Private mail&quot; id=&quot;mail_nav_btn&quot;&gt;&lt;i class=&quot;icon-envelope&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;mail-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-messages-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-messages-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;messages&quot;&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-messages-see-all&quot;&gt;&lt;a href=&quot;mail/combined&quot;&gt;See all private messages&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-messages-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('messages'); return false;&quot;&gt;Mark all private messages seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;mail/combined&quot; title=&quot;Private mail&quot; &gt;&lt;i class=&quot;icon-envelope&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;mail-update badge&quot; rel=&quot;#nav-messages-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;events&quot; title=&quot;Event Calendar&quot; id='events_nav_btn'&gt;&lt;i class=&quot;icon-calendar&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;all_events-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-all_events-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-all_events-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;all_events&quot;&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-all_events-see-all&quot;&gt;&lt;a href=&quot;events&quot;&gt;See all events&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-all_events-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('all_events'); return false;&quot;&gt;Mark all events seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;events&quot; title=&quot;Event Calendar&quot; &gt;&lt;i class=&quot;icon-calendar&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;all_events-update badge&quot; rel=&quot;#nav-all_events-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;connections/ifpending&quot; title=&quot;Connections&quot; id=&quot;connections_nav_btn&quot;&gt;&lt;i class=&quot;icon-user&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;intro-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-intros-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-intros-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;intros&quot;&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-intros-see-all&quot;&gt;&lt;a href=&quot;&quot;&gt;&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;connections/ifpending&quot; title=&quot;Connections&quot; &gt;&lt;i class=&quot;icon-user&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;intro-update badge&quot; rel=&quot;#nav-intros-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot; hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;notifications/system&quot; title=&quot;Notices&quot; id=&quot;notifications_nav_btn&quot;&gt;&lt;i class=&quot;icon-exclamation&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;notify-update badge dropdown-toggle&quot; data-toggle=&quot;dropdown&quot; rel=&quot;#nav-notify-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t\t&lt;ul id=&quot;nav-notify-menu&quot; class=&quot;dropdown-menu&quot; rel=&quot;notify&quot;&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-notify-see-all&quot;&gt;&lt;a href=&quot;notifications/system&quot;&gt;See all notifications&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li id=&quot;nav-notify-mark-all&quot;&gt;&lt;a href=&quot;#&quot; onclick=&quot;markRead('notify'); return false;&quot;&gt;Mark all system notifications seen&lt;/a&gt;&lt;/li&gt;\n\t\t\t\t\t\t&lt;li class=&quot;empty&quot;&gt;Loading...&lt;/li&gt;\n\t\t\t\t\t&lt;/ul&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot; visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;notifications/system&quot; title=&quot;Notices&quot;&gt;&lt;i class=&quot;icon-exclamation&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t\t&lt;span class=&quot;notify-update badge&quot; rel=&quot;#nav-notify-menu&quot;&gt;&lt;/span&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t\t\t&lt;/ul&gt;\n\t\t\t&lt;ul class=&quot;nav navbar-nav navbar-right&quot;&gt;\n\t\t\t\t&lt;li class=&quot;hidden-xs&quot;&gt;\n\t\t\t\t\t&lt;form method=&quot;get&quot; action=&quot;search&quot; role=&quot;search&quot;&gt;\n\t\t\t\t\t\t&lt;div id=&quot;nav-search-spinner&quot;&gt;&lt;/div&gt;&lt;input class=&quot;icon-search&quot; id=&quot;nav-search-text&quot; type=&quot;text&quot; value=&quot;&quot; placeholder=&quot;&amp;#xf002; @name, #tag, ?doc, content&quot; name=&quot;search&quot; title=&quot;Search site @name, #tag, ?docs, content&quot; onclick=&quot;this.submit();&quot;/&gt;\n\t\t\t\t\t&lt;/form&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t&lt;li class=&quot;visible-xs&quot;&gt;\n\t\t\t\t\t&lt;a href=&quot;/search&quot; title=&quot;Search site @name, #tag, ?docs, content&quot;&gt;&lt;i class=&quot;icon-search&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t&lt;/li&gt;\n\n\t\t\t\t\t\t\t\t\t\t&lt;li class=&quot;&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;directory&quot; title=&quot;Channel Directory&quot; id=&quot;directory_nav_btn&quot;&gt;&lt;i class=&quot;icon-sitemap&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot;&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; href=&quot;apps&quot; title=&quot;Applications, utilities, links, games&quot; id=&quot;apps_nav_btn&quot;&gt;&lt;i class=&quot;icon-cogs&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\n\t\t\t\t\t\t\t&lt;li class=&quot;active&quot;&gt;\n\t\t\t\t\t&lt;a class=&quot;&quot; target=&quot;hubzilla-help&quot; href=&quot;http://hubzilla/help?f=&amp;cmd=help/develop&quot; title=&quot;Help and documentation&quot; id=&quot;help_nav_btn&quot;&gt;&lt;i class=&quot;icon-question&quot;&gt;&lt;/i&gt;&lt;/a&gt;\n\t\t\t\t&lt;/li&gt;\n\t\t\t\t\t\t&lt;/ul&gt;\n\t\t&lt;/div&gt;\n\t&lt;/div&gt;\n",
- "htmlhead": "&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html;charset=utf-8&quot; /&gt;\n&lt;base href=&quot;http://hubzilla/&quot; /&gt;\n&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, height=device-height, initial-scale=1, user-scalable=1&quot; /&gt;\n&lt;meta name=&quot;generator&quot; content=&quot;hubzilla 2015-11-03.1205H&quot; /&gt;\n\n&lt;!--[if IE]&gt;\n&lt;script src=&quot;http://hubzilla/library/html5.js&quot;&gt;&lt;/script&gt;\n&lt;![endif]--&gt;\n\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/font_awesome/css/font-awesome.min.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/bootstrap/css/bootstrap.min.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/bootstrap-tagsinput/bootstrap-tagsinput.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/bootstrap-red.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/datetimepicker/jquery.datetimepicker.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/tiptip/tipTip.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/jgrowl/jquery.jgrowl.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/jRange/jquery.range.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/conversation.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/widgets.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/colorbox.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/library/justifiedGallery/justifiedGallery.min.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/css/default.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/view/theme/redbasic/php/style.pcss&quot; type=&quot;text/css&quot; media=&quot;screen&quot;&gt;\r\n\n\n&lt;script&gt;\n\n\tvar aStr = {\n\n\t\t'delitem' : &quot;Delete this item?&quot;,\n\t\t'comment' : &quot;Comment&quot;,\n\t\t'showmore' : &quot;[+] show all&quot;,\n\t\t'showfewer' : &quot;[-] show less&quot;,\n\t\t'divgrowmore' : &quot;[+] expand&quot;,\n\t\t'divgrowless' : &quot;[-] collapse&quot;,\n\t\t'pwshort' : &quot;Password too short&quot;,\n\t\t'pwnomatch' : &quot;Passwords do not match&quot;,\n\t\t'everybody' : &quot;everybody&quot;,\n\t\t'passphrase' : &quot;Secret Passphrase&quot;,\n\t\t'passhint' : &quot;Passphrase hint&quot;,\n\t\t'permschange' : &quot;Notice: Permissions have changed but have not yet been submitted.&quot;,\n\t\t'closeAll' : &quot;close all&quot;,\n\t\t'nothingnew' : &quot;Nothing new here&quot;,\n\t\t'rating_desc' : &quot;Rate This Channel (this is public)&quot;,\n\t\t'rating_val' : &quot;Rating&quot;,\n\t\t'rating_text' : &quot;Describe (optional)&quot;,\n\t\t'submit' : &quot;Submit&quot;,\n\t\t'linkurl' : &quot;Please enter a link URL&quot;,\n\t\t'leavethispage' : &quot;Unsaved changes. Are you sure you wish to leave this page?&quot;,\n\n\t\t't01' : &quot;&quot;,\n\t\t't02' : &quot;&quot;,\n\t\t't03' : &quot;ago&quot;,\n\t\t't04' : &quot;from now&quot;,\n\t\t't05' : &quot;less than a minute&quot;,\n\t\t't06' : &quot;about a minute&quot;,\n\t\t't07' : &quot;%d minutes&quot;,\n\t\t't08' : &quot;about an hour&quot;,\n\t\t't09' : &quot;about %d hours&quot;,\n\t\t't10' : &quot;a day&quot;,\n\t\t't11' : &quot;%d days&quot;,\n\t\t't12' : &quot;about a month&quot;,\n\t\t't13' : &quot;%d months&quot;,\n\t\t't14' : &quot;about a year&quot;,\n\t\t't15' : &quot;%d years&quot;,\n\t\t't16' : &quot; &quot;,\n\t\t't17' : &quot;[]&quot;,\n\n\t\t'monthNames' : [ &quot;January&quot;,&quot;February&quot;,&quot;March&quot;,&quot;April&quot;,&quot;May&quot;,&quot;June&quot;,&quot;July&quot;,&quot;August&quot;,&quot;September&quot;,&quot;October&quot;,&quot;November&quot;,&quot;December&quot; ],\n\t\t'monthNamesShort' : [ &quot;Jan&quot;,&quot;Feb&quot;,&quot;Mar&quot;,&quot;Apr&quot;,&quot;May&quot;,&quot;Jun&quot;,&quot;Jul&quot;,&quot;Aug&quot;,&quot;Sep&quot;,&quot;Oct&quot;,&quot;Nov&quot;,&quot;Dec&quot; ],\n\t\t'dayNames' : [&quot;Sunday&quot;,&quot;Monday&quot;,&quot;Tuesday&quot;,&quot;Wednesday&quot;,&quot;Thursday&quot;,&quot;Friday&quot;,&quot;Saturday&quot;],\n\t\t'dayNamesShort' : [&quot;Sun&quot;,&quot;Mon&quot;,&quot;Tue&quot;,&quot;Wed&quot;,&quot;Thu&quot;,&quot;Fri&quot;,&quot;Sat&quot;],\n\t\t'today' : &quot;today&quot;,\n\t\t'month' : &quot;month&quot;,\n\t\t'week' : &quot;week&quot;,\n\t\t'day' : &quot;day&quot;,\n\t\t'allday' : &quot;All day&quot;\n\t};\n\n&lt;/script&gt;\n\t\t\n\n\n&lt;script src=&quot;http://hubzilla/view/js/jquery.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/justifiedGallery/jquery.justifiedGallery.min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/sprintf.js/dist/sprintf.min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/spin.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/jquery.spin.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/jquery.textinputs.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/autocomplete.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jquery-textcomplete/jquery.textcomplete.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jquery.timeago.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/readmore.js/readmore.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jgrowl/jquery.jgrowl_minimized.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/cryptojs/components/core-min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/cryptojs/rollups/aes.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/cryptojs/rollups/rabbit.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/cryptojs/rollups/tripledes.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/acl.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/webtoolkit.base64.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/js/crypto.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jRange/jquery.range.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/colorbox/jquery.colorbox-min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/jquery.AreYouSure/jquery.are-you-sure.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/tableofcontents/jquery.toc.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/bootstrap/js/bootstrap.min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/bootbox/bootbox.min.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/bootstrap-tagsinput/bootstrap-tagsinput.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/datetimepicker/jquery.datetimepicker.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/library/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js&quot; &gt;&lt;/script&gt;\r\n&lt;script src=&quot;http://hubzilla/view/theme/redbasic/js/redbasic.js&quot; &gt;&lt;/script&gt;\r\n\n\n&lt;link rel=&quot;shortcut icon&quot; href=&quot;http://hubzilla/images/hz-32.png&quot; /&gt;\n&lt;link rel=&quot;search&quot;\n href=&quot;http://hubzilla/opensearch&quot; \n type=&quot;application/opensearchdescription+xml&quot; \n title=&quot;Search in the Hubzilla&quot; /&gt;\n\n\n&lt;script&gt;\n\n\tvar updateInterval = 80000;\n\tvar localUser = 2;\n\tvar zid = 'testes@hubzilla';\n\tvar justifiedGalleryActive = false;\n\t\t\n&lt;/script&gt;\n\n\n\n\n&lt;script&gt;$(document).ready(function() {\n\t$(&quot;#nav-search-text&quot;).search_autocomplete('http://hubzilla/acl');\n});\n\n&lt;/script&gt;&lt;script src=&quot;http://hubzilla/view/js/main.js&quot; &gt;&lt;/script&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;http://hubzilla/addon/converse/converse.min.js&quot; media=&quot;all&quot; /&gt;&lt;script src=&quot;http://hubzilla/addon/converse/converse.min.js&quot;&gt;&lt;/script&gt;",
- "header": "&lt;div id=&quot;banner&quot; class=&quot;hidden-sm hidden-xs&quot;&gt;Hubzilla&lt;/div&gt;\n\n&lt;ul id=&quot;nav-notifications-template&quot; style=&quot;display:none;&quot; rel=&quot;template&quot;&gt;\n\t&lt;li class=&quot;{5}&quot;&gt;&lt;a href=&quot;{0}&quot; title=&quot;{2} {3}&quot;&gt;&lt;img data-src=&quot;{1}&quot;&gt;&lt;span class=&quot;contactname&quot;&gt;{2}&lt;/span&gt;&lt;span class=&quot;dropdown-sub-text&quot;&gt;{3}&lt;br&gt;{4}&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;\n&lt;/ul&gt;\n"
- },
- "poi": null,
- "force_max_items": 0,
- "module": "help",
- "template_engines": {
- "smarty3": "FriendicaSmartyEngine",
- "internal": "Template"
- },
- "account": {
- "account_flags": "0",
- "account_service_class": "",
- "account_id": "1",
- "account_salt": "9bf8c193c35a56c4c666f47728fe20da",
- "account_expires": "0000-00-00 00:00:00",
- "account_lastlog": "2015-11-04 07:47:55",
- "account_password_changed": "0000-00-00 00:00:00",
- "account_language": "en",
- "account_default_channel": "2",
- "account_password": "",
- "account_parent": "1",
- "account_expire_notified": "0000-00-00 00:00:00",
- "account_reset": "",
- "account_email": "foo@bar.com",
- "account_level": "0",
- "account_roles": "4096",
- "account_external": "",
- "account_created": "2015-10-09 00:44:51"
- },
- "theme_info": [],
- "argv": [
- "help",
- "develop"
- ],
- "template_engine_instance": {
- "smarty3": {}
- },
- "language": "en",
- "pager": {
- "page": 1,
- "itemspage": 60,
- "start": 0,
- "total": 0
- },
- "plugins": [
- "converse"
- ],
- "error": false,
- "pdl": "[region=aside]\n[widget=helpindex][/widget]\n[/region]\n",
- "query_string": "help/develop",
- "cmd": "help/develop",
- "groups": null,
- "videowidth": 425,
- "css_sources": [
- [
- "library/font_awesome/css/font-awesome.min.css",
- "screen"
- ],
- [
- "library/bootstrap/css/bootstrap.min.css",
- "screen"
- ],
- [
- "library/bootstrap-tagsinput/bootstrap-tagsinput.css",
- "screen"
- ],
- [
- "view/css/bootstrap-red.css",
- "screen"
- ],
- [
- "library/datetimepicker/jquery.datetimepicker.css",
- "screen"
- ],
- [
- "library/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css",
- "screen"
- ],
- [
- "library/tiptip/tipTip.css",
- "screen"
- ],
- [
- "library/jgrowl/jquery.jgrowl.css",
- "screen"
- ],
- [
- "library/jRange/jquery.range.css",
- "screen"
- ],
- [
- "view/css/conversation.css",
- "screen"
- ],
- [
- "view/css/widgets.css",
- "screen"
- ],
- [
- "view/css/colorbox.css",
- "screen"
- ],
- [
- "library/justifiedGallery/justifiedGallery.min.css",
- "screen"
- ],
- [
- "default.css",
- "screen"
- ],
- [
- "mod_help.css",
- "screen"
- ],
- [
- "view/theme/redbasic/php/style.pcss",
- "screen"
- ]
- ],
- "is_tablet": false,
- "observer": {
- "xchan_deleted": "0",
- "xchan_connpage": "",
- "xchan_pubforum": "0",
- "xchan_flags": "0",
- "xchan_censored": "0",
- "xchan_instance_url": "",
- "xchan_photo_s": "http://hubzilla/photo/profile/s/2",
- "xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7MP/xxsq/srA8I7m+WKf\nHlguwwg0b1tz+I3o+djp7b+wF8q03XPKQpYmKfXIj47vpAOu75nKA4Tn90lLymmk\nSXUHogOqOMy1CHoaVrAw2T2/tAeRoMAjAJ5IxSOAM7Xda0nVUK6FmfxPcvftKf9y\nPmvvFadXpaHT4JGPH0tszDhGXLkqlt9xSkIkpsgMA6emj/7bacc6x8eTdtvzo2e5\n/NyPXvBKH4henmYaKjq/4aIYZcBWYVGt6onxaP2j1cSNbksnOY7GbJl+hy95iFoZ\nDWGxiFwQd+CroiBbdlpVGp13cV/WKp2spZzlzkmCRGYoNbbM5RlgFLnmyTa4XMZE\nwnA3ZUB59MsrUJK+0H/utiZrpX5NQcFl33z8k5zB3pPnhc5S5/P+UJZRnqhet1wQ\n7AZVmdP30D75QD8LZ4SytZ1DHn/N76EsVhSADNMnUfEphs708V33Z0gFWultYDoK\nlvXUf4O0/V8GTufFHb6XdAiy92IUzrormXCpXoOmdOcJdaH9RnotZi/DkuQ0zP+Y\nCvxU9nrjyZvAwAdew//XFDjw4HoThVM4k4jzkIhCTlCao/yRnNM7A/i3OKcXq9wU\n7OZqcRfM9o0BFpZTIoXB7BMtpeioJcBi/7FUaV9U9uYLFuLL0qWa1YxLwfsN9rDk\n6A1gbhD60G9/dAbolp8xAHkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
- "xchan_connurl": "http://hubzilla/poco/testes",
- "xchan_name_date": "2015-10-09 00:45:41",
- "xchan_system": "0",
- "xchan_photo_date": "2015-10-09 00:45:41",
- "xchan_photo_m": "http://hubzilla/photo/profile/m/2",
- "xchan_hidden": "0",
- "xchan_selfcensored": "0",
- "xchan_photo_mimetype": "image/jpeg",
- "xchan_network": "zot",
- "xchan_guid": "Ok-ycNKQYMzjokLnIz5OTCF8M5f4CtRT4vJCUeUivJhIOJWk3ORwIQgGx3P5g2Yz79KxQ-rs_Cn2G_jsgM6hmw",
- "xchan_guid_sig": "XXX",
- "xchan_hash": "uRy0nF-urp6k_bFrkdtCc2EkBynwpgCJL_FQFoTwyw2Hep7AHkrSt1MZcHWV_8DQucNlHSY1vHgUNS2Fvoirpw",
- "xchan_url": "http://hubzilla/channel/testes",
- "xchan_addr": "testes@hubzilla",
- "xchan_orphan": "0",
- "xchan_follow": "http://hubzilla/follow?f=&amp;url=%s",
- "xchan_name": "testes",
- "xchan_photo_l": "http://hubzilla/photo/profile/l/2"
- },
- "contact": null,
- "identities": null,
- "user": null,
- "videoheight": 350,
- "profile": null,
- "theme_thread_allow": true,
- "data": {
- "pageicon": "/images/hz-32.png"
- }
-}[/code]
-
-
-#include doc/macros/main_footer.bb;
-
diff --git a/doc/hooks.html b/doc/hooks.html
index c05de58ef..f4a5a7630 100644
--- a/doc/hooks.html
+++ b/doc/hooks.html
@@ -1 +1 @@
-<div><h3>Hooks</h3><table><tr><td>Function</td><td>Source File</td><td>Arg</td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>$a-&gt;module . _mod_aftercontent</td><td>index.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _mod_content</td><td>index.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _mod_init</td><td>index.php</td><td>$placeholder</td></tr><tr><td>$a-&gt;module . _mod_post</td><td>index.php</td><td>$_POST</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$name</td><td>include/plugin.php</td><td>&amp;$data = null</td></tr><tr><td>about_hook</td><td>mod/siteinfo.php</td><td>$o</td></tr><tr><td>accept_follow</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_settings</td><td>mod/settings.php</td><td>$account_settings</td></tr><tr><td>activity_received</td><td>include/zot.php</td><td>$parr</td></tr><tr><td>affinity_labels</td><td>include/widgets.php</td><td>$labels</td></tr><tr><td>affinity_labels</td><td>mod/connedit.php</td><td>$labels</td></tr><tr><td>api_perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>app_menu</td><td>index.php</td><td>$arr</td></tr><tr><td>atom_author</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_entry</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_feed</td><td>include/items.php</td><td>$atom</td></tr><tr><td>atom_feed_end</td><td>include/items.php</td><td>$atom</td></tr><tr><td>attach_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>authenticate</td><td>include/auth.php</td><td>$addon_auth</td></tr><tr><td>avatar_lookup</td><td>include/network.php</td><td>$avatar</td></tr><tr><td>bb2diaspora</td><td>include/bb2diaspora.php</td><td>$Text</td></tr><tr><td>bbcode</td><td>include/bbcode.php</td><td>$Text</td></tr><tr><td>channel_remove</td><td>include/Contact.php</td><td>$r[0]</td></tr><tr><td>chat_message</td><td>include/chat.php</td><td>$arr</td></tr><tr><td>chat_post</td><td>mod/chatsvc.php</td><td>$arr</td></tr><tr><td>check_account_email</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_invite</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_password</td><td>include/account.php</td><td>$arr</td></tr><tr><td>connect_premium</td><td>mod/connect.php</td><td>$arr</td></tr><tr><td>connector_settings</td><td>mod/settings.php</td><td>$settings_connectors</td></tr><tr><td>construct_page</td><td>boot.php</td><td>$arr</td></tr><tr><td>contact_block_end</td><td>include/text.php</td><td>$arr</td></tr><tr><td>contact_edit</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>contact_edit_post</td><td>mod/connedit.php</td><td>$_POST</td></tr><tr><td>contact_select_options</td><td>include/acl_selectors.php</td><td>$x</td></tr><tr><td>conversation_start</td><td>include/conversation.php</td><td>$cb</td></tr><tr><td>create_identity</td><td>include/identity.php</td><td>$newuid</td></tr><tr><td>cron</td><td>include/cronhooks.php</td><td>$d</td></tr><tr><td>cron_daily</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>cron_weekly</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>directory_item</td><td>mod/directory.php</td><td>$arr</td></tr><tr><td>discover_by_webbie</td><td>include/network.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/ItemObject.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>display_settings</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>display_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>donate_contributors</td><td>extend/addon/matrix/donate/donate.php</td><td>$contributors</td></tr><tr><td>donate_plugin</td><td>extend/addon/matrix/donate/donate.php</td><td>$o</td></tr><tr><td>donate_sponsors</td><td>extend/addon/matrix/donate/donate.php</td><td>$sponsors</td></tr><tr><td>dreport_is_storable</td><td>include/zot.php</td><td>$dr</td></tr><tr><td>drop_item</td><td>include/items.php</td><td>$arr</td></tr><tr><td>enotify</td><td>include/enotify.php</td><td>$h</td></tr><tr><td>enotify_mail</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>enotify_store</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>event_created</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>event_updated</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>externals_url_select</td><td>include/externals.php</td><td>$arr</td></tr><tr><td>feature_enabled</td><td>include/features.php</td><td>$arr</td></tr><tr><td>feature_settings</td><td>mod/settings.php</td><td>$settings_addons</td></tr><tr><td>feature_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow_allow</td><td>include/follow.php</td><td>$x</td></tr><tr><td>gender_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>gender_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>generate_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>generate_named_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>get_all_api_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_all_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_features</td><td>include/features.php</td><td>$arr</td></tr><tr><td>get_role_perms</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>global_permissions</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>home_content</td><td>mod/home.php</td><td>$o</td></tr><tr><td>home_init</td><td>mod/home.php</td><td>$ret</td></tr><tr><td>hostxrd</td><td>mod/hostxrd.php</td><td>$arr</td></tr><tr><td>html2bbcode</td><td>include/html2bbcode.php</td><td>$message</td></tr><tr><td>identity_basic_export</td><td>include/identity.php</td><td>$addon</td></tr><tr><td>import_author_xchan</td><td>include/items.php</td><td>$arr</td></tr><tr><td>import_channel</td><td>mod/import.php</td><td>$addon</td></tr><tr><td>import_directory_profile</td><td>include/zot.php</td><td>$d</td></tr><tr><td>import_xchan</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>item_photo_menu</td><td>include/conversation.php</td><td>$args</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$arr</td></tr><tr><td>item_store_update</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>jot_networks</td><td>include/acl_selectors.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>include/conversation.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editblock.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editpost.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editwebpage.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editlayout.php</td><td>$jotnets</td></tr><tr><td>jot_tool</td><td>include/conversation.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editblock.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editpost.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editwebpage.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editlayout.php</td><td>$jotplugins</td></tr><tr><td>load_pdl</td><td>boot.php</td><td>$arr</td></tr><tr><td>local_dir_update</td><td>include/dir_fns.php</td><td>$arr</td></tr><tr><td>logged_in</td><td>include/oauth.php</td><td>$a-&gt;user</td></tr><tr><td>logged_in</td><td>include/api.php</td><td>$a-&gt;user</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$a-&gt;account</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$user_record</td></tr><tr><td>logging_out</td><td>include/auth.php</td><td>$args</td></tr><tr><td>login_hook</td><td>boot.php</td><td>$o</td></tr><tr><td>magic_auth</td><td>mod/magic.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_success</td><td>mod/post.php</td><td>$arr</td></tr><tr><td>main_slider</td><td>include/widgets.php</td><td>$arr</td></tr><tr><td>marital_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>marital_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>module_loaded</td><td>index.php</td><td>$x</td></tr><tr><td>mood_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>nav</td><td>include/nav.php</td><td>$x</td></tr><tr><td>network_content_init</td><td>mod/network.php</td><td>$arr</td></tr><tr><td>network_ping</td><td>mod/ping.php</td><td>$arr</td></tr><tr><td>network_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>network_to_name</td><td>include/contact_selectors.php</td><td>$nets</td></tr><tr><td>notifier_end</td><td>include/notifier.php</td><td>$target_item</td></tr><tr><td>notifier_hub</td><td>include/notifier.php</td><td>$narr</td></tr><tr><td>notifier_normal</td><td>include/deliver_hooks.php</td><td>$r[0]</td></tr><tr><td>obj_verbs</td><td>include/taxonomy.php</td><td>$arr</td></tr><tr><td>oembed_probe</td><td>include/oembed.php</td><td>$x</td></tr><tr><td>page_content_top</td><td>index.php</td><td>$a-&gt;page[content]</td></tr><tr><td>page_end</td><td>index.php</td><td>$a-&gt;page[content]</td></tr><tr><td>page_header</td><td>include/nav.php</td><td>$a-&gt;page[nav]</td></tr><tr><td>parse_atom</td><td>include/items.php</td><td>$arr</td></tr><tr><td>parse_link</td><td>mod/linkinfo.php</td><td>$arr</td></tr><tr><td>pdl_selector</td><td>include/comanche.php</td><td>$arr</td></tr><tr><td>perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>permissions_create</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>permissions_update</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>personal_xrd</td><td>mod/xrd.php</td><td>$arr</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_begin</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>photo_upload_begin</td><td>include/photos.php</td><td>$args</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>photo_upload_file</td><td>include/photos.php</td><td>$f</td></tr><tr><td>photo_upload_form</td><td>mod/photos.php</td><td>$ret</td></tr><tr><td>poke_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>mod/mood.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/like.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>mod/subthread.php</td><td>$arr</td></tr><tr><td>post_local_start</td><td>mod/item.php</td><td>$_REQUEST</td></tr><tr><td>post_mail</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_mail_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>prepare_body</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_final</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_init</td><td>include/text.php</td><td>$item</td></tr><tr><td>probe_well_known</td><td>include/probe.php</td><td>$ret</td></tr><tr><td>proc_run</td><td>boot.php</td><td>$arr</td></tr><tr><td>process_channel_sync_delivery</td><td>include/zot.php</td><td>$addon</td></tr><tr><td>profile_advanced</td><td>mod/profile.php</td><td>$o</td></tr><tr><td>profile_edit</td><td>mod/profiles.php</td><td>$arr</td></tr><tr><td>profile_photo_content_end</td><td>mod/profile_photo.php</td><td>$o</td></tr><tr><td>profile_post</td><td>mod/profiles.php</td><td>$_POST</td></tr><tr><td>profile_sidebar</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>profile_sidebar_enter</td><td>include/identity.php</td><td>$profile</td></tr><tr><td>profile_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>register_account</td><td>include/account.php</td><td>$result</td></tr><tr><td>render_location</td><td>include/conversation.php</td><td>$locate</td></tr><tr><td>replace_macros</td><td>include/text.php</td><td>$arr</td></tr><tr><td>reverse_magic_auth</td><td>mod/rmagic.php</td><td>$arr</td></tr><tr><td>settings_account</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>settings_form</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>sexpref_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>sexpref_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>smilie</td><td>include/text.php</td><td>$params</td></tr><tr><td>smilie</td><td>extend/addon/matrix/smileybutton/smileybutton.php</td><td>$params</td></tr><tr><td>tagged</td><td>include/items.php</td><td>$arr</td></tr><tr><td>validate_channelname</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>webfinger</td><td>mod/wfinger.php</td><td>$arr</td></tr><tr><td>well_known</td><td>mod/_well_known.php</td><td>$arr</td></tr><tr><td>zid</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>zid_init</td><td>include/identity.php</td><td>$arr</td></tr><tr><td>zot_finger</td><td>include/zot.php</td><td>$ret</td></tr></table><p>Generated Tue Nov 03 21:19:02 PST 2015</p></div> \ No newline at end of file
+<div><h3>Hooks</h3><table><tr><td>Function</td><td>Source File</td><td>Arg</td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>$a-&gt;module . _mod_aftercontent</td><td>index.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _mod_content</td><td>index.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _mod_init</td><td>index.php</td><td>$placeholder</td></tr><tr><td>$a-&gt;module . _mod_post</td><td>index.php</td><td>$_POST</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _post_ . $selname</td><td>include/acl_selectors.php</td><td>$o</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$a-&gt;module . _pre_ . $selname</td><td>include/acl_selectors.php</td><td>$arr</td></tr><tr><td>$name</td><td>include/plugin.php</td><td>&amp;$data = null</td></tr><tr><td>about_hook</td><td>mod/siteinfo.php</td><td>$o</td></tr><tr><td>accept_follow</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_downgrade</td><td>include/account.php</td><td>$ret</td></tr><tr><td>account_settings</td><td>mod/settings.php</td><td>$account_settings</td></tr><tr><td>activity_received</td><td>include/zot.php</td><td>$parr</td></tr><tr><td>affinity_labels</td><td>include/widgets.php</td><td>$labels</td></tr><tr><td>affinity_labels</td><td>mod/connedit.php</td><td>$labels</td></tr><tr><td>api_perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>app_menu</td><td>index.php</td><td>$arr</td></tr><tr><td>atom_author</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_entry</td><td>include/items.php</td><td>$o</td></tr><tr><td>atom_feed</td><td>include/items.php</td><td>$atom</td></tr><tr><td>atom_feed_end</td><td>include/items.php</td><td>$atom</td></tr><tr><td>attach_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>authenticate</td><td>include/auth.php</td><td>$addon_auth</td></tr><tr><td>avatar_lookup</td><td>include/network.php</td><td>$avatar</td></tr><tr><td>bb2diaspora</td><td>include/bb2diaspora.php</td><td>$Text</td></tr><tr><td>bbcode</td><td>include/bbcode.php</td><td>$Text</td></tr><tr><td>channel_remove</td><td>include/Contact.php</td><td>$r[0]</td></tr><tr><td>chat_message</td><td>include/chat.php</td><td>$arr</td></tr><tr><td>chat_post</td><td>mod/chatsvc.php</td><td>$arr</td></tr><tr><td>check_account_email</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_invite</td><td>include/account.php</td><td>$arr</td></tr><tr><td>check_account_password</td><td>include/account.php</td><td>$arr</td></tr><tr><td>connect_premium</td><td>mod/connect.php</td><td>$arr</td></tr><tr><td>connector_settings</td><td>mod/settings.php</td><td>$settings_connectors</td></tr><tr><td>construct_page</td><td>boot.php</td><td>$arr</td></tr><tr><td>contact_block_end</td><td>include/text.php</td><td>$arr</td></tr><tr><td>contact_edit</td><td>mod/connedit.php</td><td>$arr</td></tr><tr><td>contact_edit_post</td><td>mod/connedit.php</td><td>$_POST</td></tr><tr><td>contact_select_options</td><td>include/acl_selectors.php</td><td>$x</td></tr><tr><td>conversation_start</td><td>include/conversation.php</td><td>$cb</td></tr><tr><td>create_identity</td><td>include/channel.php</td><td>$newuid</td></tr><tr><td>cron</td><td>include/cronhooks.php</td><td>$d</td></tr><tr><td>cron_daily</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>cron_weekly</td><td>include/poller.php</td><td>datetime_convert()</td></tr><tr><td>directory_item</td><td>mod/directory.php</td><td>$arr</td></tr><tr><td>discover_by_webbie</td><td>include/network.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/ItemObject.php</td><td>$arr</td></tr><tr><td>display_item</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>display_settings</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>display_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>donate_contributors</td><td>extend/addon/matrix/donate/donate.php</td><td>$contributors</td></tr><tr><td>donate_plugin</td><td>extend/addon/matrix/donate/donate.php</td><td>$o</td></tr><tr><td>donate_sponsors</td><td>extend/addon/matrix/donate/donate.php</td><td>$sponsors</td></tr><tr><td>dreport_is_storable</td><td>include/zot.php</td><td>$dr</td></tr><tr><td>drop_item</td><td>include/items.php</td><td>$arr</td></tr><tr><td>enotify</td><td>include/enotify.php</td><td>$h</td></tr><tr><td>enotify_mail</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>enotify_store</td><td>include/enotify.php</td><td>$datarray</td></tr><tr><td>event_created</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>event_updated</td><td>include/event.php</td><td>$event[id]</td></tr><tr><td>externals_url_select</td><td>include/externals.php</td><td>$arr</td></tr><tr><td>feature_enabled</td><td>include/features.php</td><td>$arr</td></tr><tr><td>feature_settings</td><td>mod/settings.php</td><td>$settings_addons</td></tr><tr><td>feature_settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow</td><td>include/follow.php</td><td>$arr</td></tr><tr><td>follow_allow</td><td>include/follow.php</td><td>$x</td></tr><tr><td>gender_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>gender_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>generate_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>generate_named_map</td><td>include/text.php</td><td>$arr</td></tr><tr><td>get_all_api_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_all_perms</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>get_features</td><td>include/features.php</td><td>$arr</td></tr><tr><td>get_role_perms</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>get_widgets</td><td>boot.php</td><td>$arr</td></tr><tr><td>global_permissions</td><td>include/permissions.php</td><td>$ret</td></tr><tr><td>home_content</td><td>mod/home.php</td><td>$o</td></tr><tr><td>home_init</td><td>mod/home.php</td><td>$ret</td></tr><tr><td>hostxrd</td><td>mod/hostxrd.php</td><td>$arr</td></tr><tr><td>html2bbcode</td><td>include/html2bbcode.php</td><td>$message</td></tr><tr><td>identity_basic_export</td><td>include/channel.php</td><td>$addon</td></tr><tr><td>import_author_xchan</td><td>include/items.php</td><td>$arr</td></tr><tr><td>import_channel</td><td>mod/import.php</td><td>$addon</td></tr><tr><td>import_directory_profile</td><td>include/zot.php</td><td>$d</td></tr><tr><td>import_xchan</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>item_photo_menu</td><td>include/conversation.php</td><td>$args</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_store</td><td>include/items.php</td><td>$arr</td></tr><tr><td>item_store_update</td><td>include/items.php</td><td>$d</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>item_translate</td><td>include/items.php</td><td>$translate</td></tr><tr><td>jot_networks</td><td>include/acl_selectors.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>include/conversation.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editblock.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editpost.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editwebpage.php</td><td>$jotnets</td></tr><tr><td>jot_networks</td><td>mod/editlayout.php</td><td>$jotnets</td></tr><tr><td>jot_tool</td><td>include/conversation.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editblock.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editpost.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editwebpage.php</td><td>$jotplugins</td></tr><tr><td>jot_tool</td><td>mod/editlayout.php</td><td>$jotplugins</td></tr><tr><td>load_pdl</td><td>boot.php</td><td>$arr</td></tr><tr><td>local_dir_update</td><td>include/dir_fns.php</td><td>$arr</td></tr><tr><td>logged_in</td><td>include/oauth.php</td><td>$a-&gt;user</td></tr><tr><td>logged_in</td><td>include/api.php</td><td>$a-&gt;user</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$a-&gt;account</td></tr><tr><td>logged_in</td><td>include/security.php</td><td>$user_record</td></tr><tr><td>logging_out</td><td>include/auth.php</td><td>$args</td></tr><tr><td>login_hook</td><td>boot.php</td><td>$o</td></tr><tr><td>magic_auth</td><td>mod/magic.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_openid_success</td><td>mod/openid.php</td><td>$arr</td></tr><tr><td>magic_auth_success</td><td>mod/post.php</td><td>$arr</td></tr><tr><td>main_slider</td><td>include/widgets.php</td><td>$arr</td></tr><tr><td>marital_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>marital_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>module_loaded</td><td>index.php</td><td>$x</td></tr><tr><td>mood_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>nav</td><td>include/nav.php</td><td>$x</td></tr><tr><td>network_content_init</td><td>mod/network.php</td><td>$arr</td></tr><tr><td>network_ping</td><td>mod/ping.php</td><td>$arr</td></tr><tr><td>network_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>network_to_name</td><td>include/contact_selectors.php</td><td>$nets</td></tr><tr><td>notifier_end</td><td>include/notifier.php</td><td>$target_item</td></tr><tr><td>notifier_hub</td><td>include/notifier.php</td><td>$narr</td></tr><tr><td>notifier_normal</td><td>include/deliver_hooks.php</td><td>$r[0]</td></tr><tr><td>obj_verbs</td><td>include/taxonomy.php</td><td>$arr</td></tr><tr><td>oembed_probe</td><td>include/oembed.php</td><td>$x</td></tr><tr><td>page_content_top</td><td>index.php</td><td>$a-&gt;page[content]</td></tr><tr><td>page_end</td><td>index.php</td><td>$a-&gt;page[content]</td></tr><tr><td>page_header</td><td>include/nav.php</td><td>$a-&gt;page[nav]</td></tr><tr><td>parse_atom</td><td>include/items.php</td><td>$arr</td></tr><tr><td>parse_link</td><td>mod/linkinfo.php</td><td>$arr</td></tr><tr><td>pdl_selector</td><td>include/comanche.php</td><td>$arr</td></tr><tr><td>perm_is_allowed</td><td>include/permissions.php</td><td>$arr</td></tr><tr><td>permissions_create</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>permissions_update</td><td>include/notifier.php</td><td>$perm_update</td></tr><tr><td>personal_xrd</td><td>mod/xrd.php</td><td>$arr</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_post_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_begin</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>photo_upload_begin</td><td>include/photos.php</td><td>$args</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/attach.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_end</td><td>include/photos.php</td><td>$ret</td></tr><tr><td>photo_upload_file</td><td>include/attach.php</td><td>$f</td></tr><tr><td>photo_upload_file</td><td>include/photos.php</td><td>$f</td></tr><tr><td>photo_upload_form</td><td>mod/photos.php</td><td>$ret</td></tr><tr><td>poke_verbs</td><td>include/text.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/zot.php</td><td>$arr</td></tr><tr><td>post_local</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>include/attach.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>extend/addon/matrix/randpost/randpost.php</td><td>$x</td></tr><tr><td>post_local_end</td><td>mod/mood.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/like.php</td><td>$arr</td></tr><tr><td>post_local_end</td><td>mod/item.php</td><td>$datarray</td></tr><tr><td>post_local_end</td><td>mod/subthread.php</td><td>$arr</td></tr><tr><td>post_local_start</td><td>mod/item.php</td><td>$_REQUEST</td></tr><tr><td>post_mail</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_mail_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update</td><td>include/items.php</td><td>$arr</td></tr><tr><td>post_remote_update_end</td><td>include/items.php</td><td>$arr</td></tr><tr><td>prepare_body</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_final</td><td>include/text.php</td><td>$prep_arr</td></tr><tr><td>prepare_body_init</td><td>include/text.php</td><td>$item</td></tr><tr><td>probe_well_known</td><td>include/probe.php</td><td>$ret</td></tr><tr><td>proc_run</td><td>boot.php</td><td>$arr</td></tr><tr><td>process_channel_sync_delivery</td><td>include/zot.php</td><td>$addon</td></tr><tr><td>profile_advanced</td><td>mod/profile.php</td><td>$o</td></tr><tr><td>profile_edit</td><td>mod/profiles.php</td><td>$arr</td></tr><tr><td>profile_photo_content_end</td><td>mod/profile_photo.php</td><td>$o</td></tr><tr><td>profile_post</td><td>mod/profiles.php</td><td>$_POST</td></tr><tr><td>profile_sidebar</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>profile_sidebar_enter</td><td>include/channel.php</td><td>$profile</td></tr><tr><td>profile_tabs</td><td>include/conversation.php</td><td>$arr</td></tr><tr><td>register_account</td><td>include/account.php</td><td>$result</td></tr><tr><td>render_location</td><td>include/conversation.php</td><td>$locate</td></tr><tr><td>replace_macros</td><td>include/text.php</td><td>$arr</td></tr><tr><td>reverse_magic_auth</td><td>mod/rmagic.php</td><td>$arr</td></tr><tr><td>settings_account</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>settings_form</td><td>mod/settings.php</td><td>$o</td></tr><tr><td>settings_post</td><td>mod/settings.php</td><td>$_POST</td></tr><tr><td>sexpref_selector</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>sexpref_selector_min</td><td>include/profile_selectors.php</td><td>$select</td></tr><tr><td>smilie</td><td>include/text.php</td><td>$params</td></tr><tr><td>smilie</td><td>extend/addon/matrix/smileybutton/smileybutton.php</td><td>$params</td></tr><tr><td>tagged</td><td>include/items.php</td><td>$arr</td></tr><tr><td>validate_channelname</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>webfinger</td><td>mod/wfinger.php</td><td>$arr</td></tr><tr><td>well_known</td><td>mod/_well_known.php</td><td>$arr</td></tr><tr><td>zid</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>zid_init</td><td>include/channel.php</td><td>$arr</td></tr><tr><td>zot_finger</td><td>include/zot.php</td><td>$ret</td></tr></table><p>Generated Tue Nov 03 21:19:02 PST 2015</p></div> \ No newline at end of file
diff --git a/doc/sv/main.bb b/doc/sv/main.bb
index 26d9c78f6..a5c1d4f7a 100644
--- a/doc/sv/main.bb
+++ b/doc/sv/main.bb
@@ -67,9 +67,6 @@ Zot är en fantastisk ny kommunikationsprotokoll uppfunnit speciellt för $Proje
[zrl=[baseurl]/help/git_for_non_developers]Git for Non-Developers[/zrl]
[zrl=[baseurl]/help/dev_beginner]Sep-for-step manual for beginning developers[/zrl]
-[h3]FAQ för utvecklare[/h3]
-[zrl=[baseurl]/help/faq_developers]FAQ For Developers[/zrl]
-
[h3]Externa resurser[/h3]
[zrl=[baseurl]/help/external-resource-links]External Resource Links[/zrl]
[url=https://github.com/friendica/red]Main Website[/url]
diff --git a/doc/zot.md b/doc/zot.md
index f8881c551..1e454e495 100644
--- a/doc/zot.md
+++ b/doc/zot.md
@@ -140,6 +140,8 @@ target_sig => an RSA signature (base64url encoded) of the guid
key => The public key needed to verify the signature
+token => a string (possibly random) chosen by the requesting service. If provided, an entry in the discovered packet will be provided called 'signed_token' which consists of the base64url_encoded RSA signature of the concatenation of the string 'token.' and the provided token using the private key of the discovered channel. This can be verified using the provided 'key' entry, and provides assurance that the server is in possession of the private key for the discovered identity. After 2017-01-01 it is **required** that a server provide a signed_token *if* a token was provided in the request.
+
With no target provided, the permissions returned will be generic permissions
for unknown or unauthenticated observers
@@ -148,6 +150,7 @@ Example of discovery packet for 'mike@zothub.com'
{
"success": true,
+ "signed_token": "KBJrKTq1qrctNuxF3GwVh3GAGRqmgkirlXANPcJZAeWlvSt_9TMV097slR4AYnYCBEushbVqHEJ9Rb5wHTa0HzMbfRo8cRdl2yAirvvv5d98dtwHddQgX1jB0xEypXtmIYMdPGDLvhI1RNdIBhHkkrRcNreRzoy4xD--HM6m1W0-A8PJJJ9BcNxmGPcBtLzW08wzoP9trJ3M7DQ6Gkk6j7iwVsyApw1ZBaDvabGTdc_SFV-Iegtqw3rjzT_xXWsfzMlKBy-019MYn_KS-gu23YzjvGu5tS_zDfkQb8DMUlPLz5yyxM0yOMlUDtG2qQgIJAU2O0X6T5xDdJ6mtolNyhepg845PvFDEqBQGMIH1nc47CNumeudDi8IWymEALhjG_U8KAK7JVlQTJj2EKUb0au1g6fpiBFab5mmxCMtZEX3Jreyak5GOcFFz-WpxuXJD9TdSoIvaBfBFOoJnXkg2zE4RHXeQzZ2FotmrbBG5dm8B-_6byYGoHBc08ZsWze1K96JIeRnLpBaj6ifUDcVHxZMPcGHHT27dvU2PNbgLiBjlAsxhYqkhN5qOHN8XBcg2KRjcMBaI3V0YMxlzXz5MztmZq3fcB1p-ccIoIyMPMzSj3yMB7J9CEU2LYPSTHMdPkIeDE6GaCkQKviaQQJQde346tK_YjA2k7_SOBmvPYE",
"guid": "sebQ-IC4rmFn9d9iu17m4BXO-kHuNutWo2ySjeV2SIW1LzksUkss12xVo3m3fykYxN5HMcc7gUZVYv26asx-Pg",
"guid_sig": "Llenlbl4zHo6-g4sa63MlQmTP5dRCrsPmXHHFmoCHG63BLq5CUZJRLS1vRrrr_MNxr7zob_Ykt_m5xPKe5H0_i4pDj-UdP8dPZqH2fqhhx00kuYL4YUMJ8gRr5eO17vsZQ3XxTcyKewtgeW0j7ytwMp6-hFVUx_Cq08MrXas429ZrjzaEwgTfxGnbgeQYQ0R5EXpHpEmoERnZx77VaEahftmdjAUx9R4YKAp13pGYadJOX5xnLfqofHQD8DyRHWeMJ4G1OfWPSOlXfRayrV_jhnFlZjMU7vOdQwHoCMoR5TFsRsHuzd-qepbvo3pzvQZRWnTNu6oPucgbf94p13QbalYRpBXKOxdTXJrGdESNhGvhtaZnpT9c1QVqC46jdfP0LOX2xrVdbvvG2JMWFv7XJUVjLSk_yjzY6or2VD4V6ztYcjpCi9d_WoNHruoxro_br1YO3KatySxJs-LQ7SOkQI60FpysfbphNyvYMkotwUFI59G08IGKTMu3-GPnV1wp7NOQD1yzJbGGEGSEEysmEP0SO9vnN45kp3MiqbffBGc1r4_YM4e7DPmqOGM94qksOcLOJk1HNESw2dQYWxWQTBXPfOJT6jW9_crGLMEOsZ3Jcss0XS9KzBUA2p_9osvvhUKuKXbNztqH0oZIWlg37FEVsDs_hUwUJpv2Ar09k4",
"key": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA7QCwvuEIwCHjhjbpz3Oc\ntyei/Pz9nDksNbsc44Cm8jxYGMXsTPFXDZYCcCB5rcAhPPdZSlzaPkv4vPVcMIrw\n5cdX0tvbwa3rNTng6uFE7qkt15D3YCTkwF0Y9FVZiZ2Ko+G23QeBt9wqb9dlDN1d\nuPmu9BLYXIT/JXoBwf0vjIPFM9WBi5W/EHGaiuqw7lt0qI7zDGw77yO5yehKE4cu\n7dt3SakrXphL70LGiZh2XGoLg9Gmpz98t+gvPAUEotAJxIUqnoiTA8jlxoiQjeRK\nHlJkwMOGmRNPS33awPos0kcSxAywuBbh2X3aSqUMjcbE4cGJ++/13zoa6RUZRObC\nZnaLYJxqYBh13/N8SfH7d005hecDxWnoYXeYuuMeT3a2hV0J84ztkJX5OoxIwk7S\nWmvBq4+m66usn6LNL+p5IAcs93KbvOxxrjtQrzohBXc6+elfLVSQ1Rr9g5xbgpub\npSc+hvzbB6p0tleDRzwAy9X16NI4DYiTj4nkmVjigNo9v2VPnAle5zSam86eiYLO\nt2u9YRqysMLPKevNdj3CIvst+BaGGQONlQalRdIcq8Lin+BhuX+1TBgqyav4XD9K\nd+JHMb1aBk/rFLI9/f2S3BJ1XqpbjXz7AbYlaCwKiJ836+HS8PmLKxwVOnpLMbfH\nPYM8k83Lip4bEKIyAuf02qkCAwEAAQ==\n-----END PUBLIC KEY-----\n",
@@ -217,6 +220,8 @@ Discovery returns a JSON array with the following components:
'success' => ('1' or '') Operation was successful if '1'. Otherwise an optional 'message' may be present indicating the source of error.
+'signed_token' => If a token parameter was provided in the request, it is prepended with the text 'token.' and then RSA signed with the channel private key and base64url encoded and returned as 'signed_token'.
+
'guid' => the guid of the address on the target system
'guid_sig' => the base64url encoded RSA signature of the guid, signed with the private key associated with that guid.
diff --git a/include/Import/import_diaspora.php b/include/Import/import_diaspora.php
index a94e73395..b664badf1 100644
--- a/include/Import/import_diaspora.php
+++ b/include/Import/import_diaspora.php
@@ -6,7 +6,6 @@ require_once('include/follow.php');
require_once('include/photo/photo_driver.php');
function import_diaspora($data) {
- $a = get_app();
$account = App::get_account();
if(! $account)
diff --git a/include/account.php b/include/account.php
index 5998609d4..a442f3073 100644
--- a/include/account.php
+++ b/include/account.php
@@ -11,7 +11,7 @@ require_once('include/text.php');
require_once('include/language.php');
require_once('include/datetime.php');
require_once('include/crypto.php');
-require_once('include/identity.php');
+require_once('include/channel.php');
function check_account_email($email) {
@@ -656,7 +656,8 @@ function account_service_class_allows($aid, $property, $usage = false) {
* @todo Should we merge this with account_service_class_fetch()?
*/
function service_class_fetch($uid, $property) {
- $a = get_app();
+
+
if($uid == local_channel()) {
$service_class = App::$account['account_service_class'];
}
diff --git a/include/acl_selectors.php b/include/acl_selectors.php
index 886574714..54ea0304b 100644
--- a/include/acl_selectors.php
+++ b/include/acl_selectors.php
@@ -11,8 +11,6 @@ require_once("include/PermissionDescription.php");
function group_select($selname,$selclass,$preselected = false,$size = 4) {
- $a = get_app();
-
$o = '';
$o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"$size\" >\r\n";
@@ -51,7 +49,6 @@ function group_select($selname,$selclass,$preselected = false,$size = 4) {
/* MicMee 20130114 function contact_selector no longer in use, sql table contact does no longer exist
function contact_selector($selname, $selclass, $preselected = false, $options) {
- $a = get_app();
$mutual = false;
$networks = null;
@@ -157,7 +154,6 @@ function contact_selector($selname, $selclass, $preselected = false, $options) {
function contact_select($selname, $selclass, $preselected = false, $size = 4, $privmail = false, $celeb = false, $privatenet = false, $tabindex = null) {
- $a = get_app();
$o = '';
@@ -270,7 +266,6 @@ function populate_acl($defaults = null,$show_jotnets = true, $emptyACL_descripti
$o = replace_macros($tpl, array(
'$showall' => $showall_caption,
'$onlyme' => t('Only me'),
- '$add_others' => t('Add others'),
'$showallOrigin' => $showall_origin,
'$showallIcon' => $showall_icon,
'$select_label' => t('Who can see this?'),
diff --git a/include/activities.php b/include/activities.php
index 7b9aa9963..3271db993 100644
--- a/include/activities.php
+++ b/include/activities.php
@@ -1,7 +1,6 @@
<?php /** @file */
function profile_activity($changed, $value) {
- $a = get_app();
if(! local_channel() || ! is_array($changed) || ! count($changed))
return;
diff --git a/include/api.php b/include/api.php
index 4a462d1e8..af5a22a74 100644
--- a/include/api.php
+++ b/include/api.php
@@ -451,8 +451,6 @@ require_once('include/api_auth.php');
*/
function api_apply_template($templatename, $type, $data){
- $a = get_app();
-
switch($type){
case "atom":
case "rss":
@@ -514,7 +512,7 @@ require_once('include/api_auth.php');
return false;
}
- require_once('include/identity.php');
+ require_once('include/channel.php');
json_return_and_die(identity_basic_export(api_user(),(($_REQUEST['posts']) ? intval($_REQUEST['posts']) : 0 )));
}
@@ -1904,7 +1902,6 @@ require_once('include/api_auth.php');
//logger('api_format_items: ' . print_r($user_info,true));
- $a = get_app();
$ret = array();
if(! $r)
diff --git a/include/apps.php b/include/apps.php
deleted file mode 100644
index 7439be6d4..000000000
--- a/include/apps.php
+++ /dev/null
@@ -1,658 +0,0 @@
-<?php /** @file */
-
-/**
- * apps
- *
- */
-
-require_once('include/plugin.php');
-require_once('include/identity.php');
-
-function get_system_apps($translate = true) {
-
- $ret = array();
- if(is_dir('apps'))
- $files = glob('apps/*.apd');
- else
- $files = glob('app/*.apd');
- if($files) {
- foreach($files as $f) {
- $x = parse_app_description($f,$translate);
- if($x) {
- $ret[] = $x;
- }
- }
- }
- $files = glob('addon/*/*.apd');
- if($files) {
- foreach($files as $f) {
- $n = basename($f,'.apd');
- if(plugin_is_installed($n)) {
- $x = parse_app_description($f,$translate);
- if($x) {
- $ret[] = $x;
- }
- }
- }
- }
-
- return $ret;
-
-}
-
-
-function import_system_apps() {
- if(! local_channel())
- return;
-
- // Eventually we want to look at modification dates and update system apps.
-
- $installed = get_pconfig(local_channel(),'system','apps_installed');
- if($installed)
- return;
- $apps = get_system_apps(false);
- if($apps) {
- foreach($apps as $app) {
- $app['uid'] = local_channel();
- $app['guid'] = hash('whirlpool',$app['name']);
- $app['system'] = 1;
- app_install(local_channel(),$app);
- }
- }
- set_pconfig(local_channel(),'system','apps_installed',1);
-}
-
-
-
-
-function app_name_compare($a,$b) {
- return strcmp($a['name'],$b['name']);
-}
-
-
-function parse_app_description($f,$translate = true) {
- $ret = array();
-
- $baseurl = z_root();
- $channel = App::get_channel();
- $address = (($channel) ? $channel['channel_address'] : '');
-
- //future expansion
-
- $observer = App::get_observer();
-
-
- $lines = @file($f);
- if($lines) {
- foreach($lines as $x) {
- if(preg_match('/^([a-zA-Z].*?):(.*?)$/ism',$x,$matches)) {
- $ret[$matches[1]] = trim(str_replace(array('$baseurl','$nick'),array($baseurl,$address),$matches[2]));
- }
- }
- }
-
-
- if(! $ret['photo'])
- $ret['photo'] = $baseurl . '/' . get_default_profile_photo(80);
-
- $ret['type'] = 'system';
-
- foreach($ret as $k => $v) {
- if(strpos($v,'http') === 0)
- $ret[$k] = zid($v);
- }
-
- if(array_key_exists('desc',$ret))
- $ret['desc'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$ret['desc']);
-
- if(array_key_exists('target',$ret))
- $ret['target'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$ret['target']);
-
- if(array_key_exists('requires',$ret)) {
- $requires = explode(',',$ret['requires']);
- foreach($requires as $require) {
- $require = trim(strtolower($require));
- switch($require) {
- case 'nologin':
- if(local_channel())
- unset($ret);
- break;
- case 'admin':
- if(! is_site_admin())
- unset($ret);
- break;
- case 'local_channel':
- if(! local_channel())
- unset($ret);
- break;
- case 'public_profile':
- if(! is_public_profile())
- unset($ret);
- break;
- case 'observer':
- if(! $observer)
- unset($ret);
- break;
- default:
- if(! (local_channel() && feature_enabled(local_channel(),$require)))
- unset($ret);
- break;
-
- }
- }
- }
- if($ret) {
- if($translate)
- translate_system_apps($ret);
- return $ret;
- }
- return false;
-}
-
-
-function translate_system_apps(&$arr) {
- $apps = array(
- 'Site Admin' => t('Site Admin'),
- 'Bug Report' => t('Bug Report'),
- 'View Bookmarks' => t('View Bookmarks'),
- 'My Chatrooms' => t('My Chatrooms'),
- 'Connections' => t('Connections'),
- 'Firefox Share' => t('Firefox Share'),
- 'Remote Diagnostics' => t('Remote Diagnostics'),
- 'Suggest Channels' => t('Suggest Channels'),
- 'Login' => t('Login'),
- 'Channel Manager' => t('Channel Manager'),
- 'Grid' => t('Grid'),
- 'Settings' => t('Settings'),
- 'Files' => t('Files'),
- 'Webpages' => t('Webpages'),
- 'Channel Home' => t('Channel Home'),
- 'View Profile' => t('View Profile'),
- 'Photos' => t('Photos'),
- 'Events' => t('Events'),
- 'Directory' => t('Directory'),
- 'Help' => t('Help'),
- 'Mail' => t('Mail'),
- 'Mood' => t('Mood'),
- 'Poke' => t('Poke'),
- 'Chat' => t('Chat'),
- 'Search' => t('Search'),
- 'Probe' => t('Probe'),
- 'Suggest' => t('Suggest'),
- 'Random Channel' => t('Random Channel'),
- 'Invite' => t('Invite'),
- 'Features' => t('Features'),
- 'Language' => t('Language'),
- 'Post' => t('Post'),
- 'Profile Photo' => t('Profile Photo')
- );
-
- if(array_key_exists($arr['name'],$apps))
- $arr['name'] = $apps[$arr['name']];
-
-}
-
-
-// papp is a portable app
-
-function app_render($papp,$mode = 'view') {
-
- /**
- * modes:
- * view: normal mode for viewing an app via bbcode from a conversation or page
- * provides install/update button if you're logged in locally
- * list: normal mode for viewing an app on the app page
- * no buttons are shown
- * edit: viewing the app page in editing mode provides a delete button
- */
-
- $installed = false;
-
- if(! $papp)
- return;
-
- if(! $papp['photo'])
- $papp['photo'] = z_root() . '/' . get_default_profile_photo(80);
-
-
-
- $papp['papp'] = papp_encode($papp);
-
- if(! strstr($papp['url'],'://'))
- $papp['url'] = z_root() . ((strpos($papp['url'],'/') === 0) ? '' : '/') . $papp['url'];
-
- foreach($papp as $k => $v) {
- if(strpos($v,'http') === 0 && $k != 'papp')
- $papp[$k] = zid($v);
- if($k === 'desc')
- $papp['desc'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$papp['desc']);
-
- if($k === 'requires') {
- $requires = explode(',',$v);
- foreach($requires as $require) {
- $require = trim(strtolower($require));
- switch($require) {
- case 'nologin':
- if(local_channel())
- return '';
- break;
- case 'admin':
- if(! is_site_admin())
- return '';
- break;
- case 'local_channel':
- if(! local_channel())
- return '';
- break;
- case 'public_profile':
- if(! is_public_profile())
- return '';
- break;
- case 'observer':
- $observer = App::get_observer();
- if(! $observer)
- return '';
- break;
- default:
- if(! (local_channel() && feature_enabled(local_channel(),$require)))
- return '';
- break;
-
- }
- }
-
- }
- }
-
- $hosturl = '';
-
- if(local_channel()) {
- $installed = app_installed(local_channel(),$papp);
- $hosturl = z_root() . '/';
- }
- elseif(remote_channel()) {
- $observer = App::get_observer();
- if($observer && $observer['xchan_network'] === 'zot') {
- // some folks might have xchan_url redirected offsite, use the connurl
- $x = parse_url($observer['xchan_connurl']);
- if($x) {
- $hosturl = $x['scheme'] . '://' . $x['host'] . '/';
- }
- }
- }
-
- $install_action = (($installed) ? t('Update') : t('Install'));
-
- return replace_macros(get_markup_template('app.tpl'),array(
- '$app' => $papp,
- '$hosturl' => $hosturl,
- '$purchase' => (($papp['page'] && (! $installed)) ? t('Purchase') : ''),
- '$install' => (($hosturl && $mode == 'view') ? $install_action : ''),
- '$edit' => ((local_channel() && $installed && $mode == 'edit') ? t('Edit') : ''),
- '$delete' => ((local_channel() && $installed && $mode == 'edit') ? t('Delete') : '')
- ));
-}
-
-
-function app_install($uid,$app) {
- $app['uid'] = $uid;
-
- if(app_installed($uid,$app))
- $x = app_update($app);
- else
- $x = app_store($app);
-
- if($x['success']) {
- $r = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
- dbesc($x['app_id']),
- intval($uid)
- );
- if($r) {
- if(! $r[0]['app_system']) {
- if($app['categories'] && (! $app['term'])) {
- $r[0]['term'] = q("select * from term where otype = %d and oid = d",
- intval(TERM_OBJ_APP),
- intval($r[0]['id'])
- );
- build_sync_packet($uid,array('app' => $r[0]));
- }
- }
- }
- return $x['app_id'];
- }
- return false;
-}
-
-function app_destroy($uid,$app) {
-
-
- if($uid && $app['guid']) {
-
- $x = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
- dbesc($app['guid']),
- intval($uid)
- );
- if($x) {
- $x[0]['app_deleted'] = 1;
- q("delete from term where otype = %d and oid = %d",
- intval(TERM_OBJ_APP),
- intval($x[0]['id'])
- );
- if($x[0]['app_system']) {
- $r = q("update app set app_deleted = 1 where app_id = '%s' and app_channel = %d",
- dbesc($app['guid']),
- intval($uid)
- );
- }
- else {
- $r = q("delete from app where app_id = '%s' and app_channel = %d",
- dbesc($app['guid']),
- intval($uid)
- );
-
- // we don't sync system apps - they may be completely different on the other system
- build_sync_packet($uid,array('app' => $x));
- }
- }
- }
-}
-
-
-function app_installed($uid,$app) {
-
- $r = q("select id from app where app_id = '%s' and app_version = '%s' and app_channel = %d limit 1",
- dbesc((array_key_exists('guid',$app)) ? $app['guid'] : ''),
- dbesc((array_key_exists('version',$app)) ? $app['version'] : ''),
- intval($uid)
- );
- return(($r) ? true : false);
-
-}
-
-
-function app_list($uid, $deleted = false, $cat = '') {
- if($deleted)
- $sql_extra = " and app_deleted = 1 ";
- else
- $sql_extra = " and app_deleted = 0 ";
-
- if($cat) {
- $r = q("select oid from term where otype = %d and term = '%s'",
- intval(TERM_OBJ_APP),
- dbesc($cat)
- );
- if(! $r)
- return $r;
- $sql_extra .= " and app.id in ( ";
- $s = '';
- foreach($r as $rr) {
- if($s)
- $s .= ',';
- $s .= intval($rr['oid']);
- }
- $sql_extra .= $s . ') ';
- }
-
- $r = q("select * from app where app_channel = %d $sql_extra order by app_name asc",
- intval($uid)
- );
- if($r) {
- for($x = 0; $x < count($r); $x ++) {
- if(! $r[$x]['app_system'])
- $r[$x]['type'] = 'personal';
- $r[$x]['term'] = q("select * from term where otype = %d and oid = %d",
- intval(TERM_OBJ_APP),
- intval($r[$x]['id'])
- );
- }
- }
- return($r);
-}
-
-
-function app_decode($s) {
- $x = base64_decode(str_replace(array('<br />',"\r","\n",' '),array('','','',''),$s));
- return json_decode($x,true);
-}
-
-
-function app_store($arr) {
-
- // logger('app_store: ' . print_r($arr,true));
-
- $darray = array();
- $ret = array('success' => false);
-
- $darray['app_url'] = ((x($arr,'url')) ? $arr['url'] : '');
- $darray['app_channel'] = ((x($arr,'uid')) ? $arr['uid'] : 0);
-
- if((! $darray['app_url']) || (! $darray['app_channel']))
- return $ret;
-
- if($arr['photo'] && ! strstr($arr['photo'],z_root())) {
- $x = import_xchan_photo($arr['photo'],get_observer_hash(),true);
- $arr['photo'] = $x[1];
- }
-
-
- $darray['app_id'] = ((x($arr,'guid')) ? $arr['guid'] : random_string(). '.' . App::get_hostname());
- $darray['app_sig'] = ((x($arr,'sig')) ? $arr['sig'] : '');
- $darray['app_author'] = ((x($arr,'author')) ? $arr['author'] : get_observer_hash());
- $darray['app_name'] = ((x($arr,'name')) ? escape_tags($arr['name']) : t('Unknown'));
- $darray['app_desc'] = ((x($arr,'desc')) ? escape_tags($arr['desc']) : '');
- $darray['app_photo'] = ((x($arr,'photo')) ? $arr['photo'] : z_root() . '/' . get_default_profile_photo(80));
- $darray['app_version'] = ((x($arr,'version')) ? escape_tags($arr['version']) : '');
- $darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : '');
- $darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : '');
- $darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
- $darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
- $darray['app_system'] = ((x($arr,'system')) ? intval($arr['system']) : 0);
- $darray['app_deleted'] = ((x($arr,'deleted')) ? intval($arr['deleted']) : 0);
-
- $created = datetime_convert();
-
- $r = q("insert into app ( app_id, app_sig, app_author, app_name, app_desc, app_url, app_photo, app_version, app_channel, app_addr, app_price, app_page, app_requires, app_created, app_edited, app_system, app_deleted ) values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s', %d, %d )",
- dbesc($darray['app_id']),
- dbesc($darray['app_sig']),
- dbesc($darray['app_author']),
- dbesc($darray['app_name']),
- dbesc($darray['app_desc']),
- dbesc($darray['app_url']),
- dbesc($darray['app_photo']),
- dbesc($darray['app_version']),
- intval($darray['app_channel']),
- dbesc($darray['app_addr']),
- dbesc($darray['app_price']),
- dbesc($darray['app_page']),
- dbesc($darray['app_requires']),
- dbesc($created),
- dbesc($created),
- intval($darray['app_system']),
- intval($darray['app_deleted'])
- );
- if($r) {
- $ret['success'] = true;
- $ret['app_id'] = $darray['app_id'];
- }
- if($arr['categories']) {
- $x = q("select id from app where app_id = '%s' and app_channel = %d limit 1",
- dbesc($darray['app_id']),
- intval($darray['app_channel'])
- );
- $y = explode(',',$arr['categories']);
- if($y) {
- foreach($y as $t) {
- $t = trim($t);
- if($t) {
- store_item_tag($darray['app_channel'],$x[0]['id'],TERM_OBJ_APP,TERM_CATEGORY,escape_tags($t),escape_tags(z_root() . '/apps/?f=&cat=' . escape_tags($t)));
- }
- }
- }
- }
-
- return $ret;
-}
-
-
-function app_update($arr) {
-
- $darray = array();
- $ret = array('success' => false);
-
- $darray['app_url'] = ((x($arr,'url')) ? $arr['url'] : '');
- $darray['app_channel'] = ((x($arr,'uid')) ? $arr['uid'] : 0);
- $darray['app_id'] = ((x($arr,'guid')) ? $arr['guid'] : 0);
-
- if((! $darray['app_url']) || (! $darray['app_channel']) || (! $darray['app_id']))
- return $ret;
-
- if($arr['photo'] && ! strstr($arr['photo'],z_root())) {
- $x = import_xchan_photo($arr['photo'],get_observer_hash(),true);
- $arr['photo'] = $x[1];
- }
-
- $darray['app_sig'] = ((x($arr,'sig')) ? $arr['sig'] : '');
- $darray['app_author'] = ((x($arr,'author')) ? $arr['author'] : get_observer_hash());
- $darray['app_name'] = ((x($arr,'name')) ? escape_tags($arr['name']) : t('Unknown'));
- $darray['app_desc'] = ((x($arr,'desc')) ? escape_tags($arr['desc']) : '');
- $darray['app_photo'] = ((x($arr,'photo')) ? $arr['photo'] : z_root() . '/' . get_default_profile_photo(80));
- $darray['app_version'] = ((x($arr,'version')) ? escape_tags($arr['version']) : '');
- $darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : '');
- $darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : '');
- $darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
- $darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
- $darray['app_system'] = ((x($arr,'system')) ? intval($arr['system']) : 0);
- $darray['app_deleted'] = ((x($arr,'deleted')) ? intval($arr['deleted']) : 0);
-
- $edited = datetime_convert();
-
- $r = q("update app set app_sig = '%s', app_author = '%s', app_name = '%s', app_desc = '%s', app_url = '%s', app_photo = '%s', app_version = '%s', app_addr = '%s', app_price = '%s', app_page = '%s', app_requires = '%s', app_edited = '%s', app_system = %d, app_deleted = %d where app_id = '%s' and app_channel = %d",
- dbesc($darray['app_sig']),
- dbesc($darray['app_author']),
- dbesc($darray['app_name']),
- dbesc($darray['app_desc']),
- dbesc($darray['app_url']),
- dbesc($darray['app_photo']),
- dbesc($darray['app_version']),
- dbesc($darray['app_addr']),
- dbesc($darray['app_price']),
- dbesc($darray['app_page']),
- dbesc($darray['app_requires']),
- dbesc($edited),
- intval($darray['app_system']),
- intval($darray['app_deleted']),
- dbesc($darray['app_id']),
- intval($darray['app_channel'])
- );
- if($r) {
- $ret['success'] = true;
- $ret['app_id'] = $darray['app_id'];
- }
-
- $x = q("select id from app where app_id = '%s' and app_channel = %d limit 1",
- dbesc($darray['app_id']),
- intval($darray['app_channel'])
- );
- if($x) {
- q("delete from term where otype = %d and oid = %d",
- intval(TERM_OBJ_APP),
- intval($x[0]['id'])
- );
- if($arr['categories']) {
- $y = explode(',',$arr['categories']);
- if($y) {
- foreach($y as $t) {
- $t = trim($t);
- if($t) {
- store_item_tag($darray['app_channel'],$x[0]['id'],TERM_OBJ_APP,TERM_CATEGORY,escape_tags($t),escape_tags(z_root() . '/apps/?f=&cat=' . escape_tags($t)));
- }
- }
- }
- }
- }
-
- return $ret;
-
-}
-
-
-function app_encode($app,$embed = false) {
-
- $ret = array();
-
- $ret['type'] = 'personal';
-
- if($app['app_id'])
- $ret['guid'] = $app['app_id'];
-
- if($app['app_id'])
- $ret['guid'] = $app['app_id'];
-
- if($app['app_sig'])
- $ret['sig'] = $app['app_sig'];
-
- if($app['app_author'])
- $ret['author'] = $app['app_author'];
-
- if($app['app_name'])
- $ret['name'] = $app['app_name'];
-
- if($app['app_desc'])
- $ret['desc'] = $app['app_desc'];
-
- if($app['app_url'])
- $ret['url'] = $app['app_url'];
-
- if($app['app_photo'])
- $ret['photo'] = $app['app_photo'];
-
- if($app['app_version'])
- $ret['version'] = $app['app_version'];
-
- if($app['app_addr'])
- $ret['addr'] = $app['app_addr'];
-
- if($app['app_price'])
- $ret['price'] = $app['app_price'];
-
- if($app['app_page'])
- $ret['page'] = $app['app_page'];
-
- if($app['app_requires'])
- $ret['requires'] = $app['app_requires'];
-
- if($app['app_system'])
- $ret['system'] = $app['app_system'];
-
- if($app['app_deleted'])
- $ret['deleted'] = $app['app_deleted'];
-
- if($app['term']) {
- $s = '';
- foreach($app['term'] as $t) {
- if($s)
- $s .= ',';
- $s .= $t['term'];
- }
- $ret['categories'] = $s;
- }
-
-
- if(! $embed)
- return $ret;
-
- if(array_key_exists('categories',$ret))
- unset($ret['categories']);
-
- $j = json_encode($ret);
- return '[app]' . chunk_split(base64_encode($j),72,"\n") . '[/app]';
-
-}
-
-
-function papp_encode($papp) {
- return chunk_split(base64_encode(json_encode($papp)),72,"\n");
-
-}
-
-
diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php
index 9167cb5ad..c7d0e56b1 100644
--- a/include/bb2diaspora.php
+++ b/include/bb2diaspora.php
@@ -479,8 +479,6 @@ function unescape_underscores_in_links($m) {
function format_event_diaspora($ev) {
- $a = get_app();
-
if(! ((is_array($ev)) && count($ev)))
return '';
diff --git a/include/bbcode.php b/include/bbcode.php
index fd2d2f97a..f47dc6f2e 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -165,11 +165,10 @@ function bb_parse_crypt($match) {
}
function bb_parse_app($match) {
- require_once('include/apps.php');
- $app = app_decode($match[1]);
+ $app = Zotlabs\Lib\Apps::app_decode($match[1]);
if ($app)
- return app_render($app);
+ return Zotlabs\Lib\Apps::app_render($app);
}
function bb_parse_element($match) {
@@ -276,7 +275,6 @@ function bb_location($match) {
* @return string HTML iframe with content of $match[1]
*/
function bb_iframe($match) {
- $a = get_app();
$sandbox = ((strpos($match[1], App::get_hostname())) ? ' sandbox="allow-scripts" ' : '');
@@ -450,8 +448,6 @@ function bb_sanitize_style($input) {
function bb_observer($Text) {
- $a = get_app();
-
$observer = App::get_observer();
if ((strpos($Text,'[/observer]') !== false) || (strpos($Text,'[/rpost]') !== false)) {
@@ -985,6 +981,7 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false)
$Text = preg_replace("/\[event\-summary\](.*?)\[\/event\-summary\]/ism",'',$Text);
$Text = preg_replace("/\[event\-description\](.*?)\[\/event\-description\]/ism",'',$Text);
$Text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/ism",'',$Text);
+ $Text = preg_replace("/\[event\-id\](.*?)\[\/event\-id\]/ism",'',$Text);
$Text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/ism",'',$Text);
$Text = preg_replace("/\[event\-adjust\](.*?)\[\/event\-adjust\]/ism",'',$Text);
diff --git a/include/identity.php b/include/channel.php
index 4ef1105ea..35084741f 100644
--- a/include/identity.php
+++ b/include/channel.php
@@ -1,6 +1,6 @@
<?php
/**
- * @file include/identity.php
+ * @file include/channel.php
*/
require_once('include/zot.php');
@@ -847,7 +847,7 @@ function profile_load(&$a, $nickname, $profile = '') {
$extra_fields = array();
- require_once('include/identity.php');
+ require_once('include/channel.php');
$profile_fields_basic = get_profile_fields_basic();
$profile_fields_advanced = get_profile_fields_advanced();
@@ -1004,8 +1004,6 @@ function profile_sidebar($profile, $block = 0, $show_connect = true, $zcard = fa
call_hooks('profile_sidebar_enter', $profile);
- require_once('include/Contact.php');
-
if($show_connect) {
// This will return an empty string if we're already connected.
@@ -1569,7 +1567,7 @@ function get_online_status($nick) {
$ret = array('result' => false);
- if(get_config('system','block_public') && ! local_channel() && ! remote_channel())
+ if(observer_prohibited())
return $ret;
$r = q("select channel_id, channel_hash from channel where channel_address = '%s' limit 1",
@@ -1947,3 +1945,26 @@ function get_zcard_embed($channel,$observer_hash = '',$args = array()) {
return $o;
}
+
+
+function channelx_by_nick($nick) {
+ $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_address = '%s' and channel_removed = 0 LIMIT 1",
+ dbesc($nick)
+ );
+ return(($r) ? $r[0] : false);
+}
+
+function channelx_by_hash($hash) {
+ $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_hash = '%s' and channel_removed = 0 LIMIT 1",
+ dbesc($hash)
+ );
+ return(($r) ? $r[0] : false);
+}
+
+function channelx_by_n($id) {
+ $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_id = %d and channel_removed = 0 LIMIT 1",
+ dbesc($id)
+ );
+ return(($r) ? $r[0] : false);
+}
+
diff --git a/include/chat.php b/include/chat.php
deleted file mode 100644
index 604402045..000000000
--- a/include/chat.php
+++ /dev/null
@@ -1,262 +0,0 @@
-<?php
-/**
- * @file include/chat.php
- * @brief Chat related functions.
- */
-
-
-/**
- * @brief Creates a chatroom.
- *
- * @param array $channel
- * @param array $arr
- * @return An associative array containing:
- * - success: A boolean
- * - message: (optional) A string
- */
-function chatroom_create($channel, $arr) {
-
- $ret = array('success' => false);
-
- $name = trim($arr['name']);
- if(! $name) {
- $ret['message'] = t('Missing room name');
- return $ret;
- }
-
- $r = q("select cr_id from chatroom where cr_uid = %d and cr_name = '%s' limit 1",
- intval($channel['channel_id']),
- dbesc($name)
- );
- if($r) {
- $ret['message'] = t('Duplicate room name');
- return $ret;
- }
-
- $r = q("select count(cr_id) as total from chatroom where cr_aid = %d",
- intval($channel['channel_account_id'])
- );
- if($r)
- $limit = service_class_fetch($channel['channel_id'], 'chatrooms');
-
- if(($r) && ($limit !== false) && ($r[0]['total'] >= $limit)) {
- $ret['message'] = upgrade_message();
- return $ret;
- }
-
- if(! array_key_exists('expire', $arr))
- $arr['expire'] = 120; // minutes, e.g. 2 hours
-
- $created = datetime_convert();
-
- $x = q("insert into chatroom ( cr_aid, cr_uid, cr_name, cr_created, cr_edited, cr_expire, allow_cid, allow_gid, deny_cid, deny_gid )
- values ( %d, %d , '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s' ) ",
- intval($channel['channel_account_id']),
- intval($channel['channel_id']),
- dbesc($name),
- dbesc($created),
- dbesc($created),
- intval($arr['expire']),
- dbesc($arr['allow_cid']),
- dbesc($arr['allow_gid']),
- dbesc($arr['deny_cid']),
- dbesc($arr['deny_gid'])
- );
-
- if($x)
- $ret['success'] = true;
-
- return $ret;
-}
-
-
-function chatroom_destroy($channel,$arr) {
-
- $ret = array('success' => false);
-
- if(intval($arr['cr_id']))
- $sql_extra = " and cr_id = " . intval($arr['cr_id']) . " ";
- elseif(trim($arr['cr_name']))
- $sql_extra = " and cr_name = '" . protect_sprintf(dbesc(trim($arr['cr_name']))) . "' ";
- else {
- $ret['message'] = t('Invalid room specifier.');
- return $ret;
- }
-
- $r = q("select * from chatroom where cr_uid = %d $sql_extra limit 1",
- intval($channel['channel_id'])
- );
- if(! $r) {
- $ret['message'] = t('Invalid room specifier.');
- return $ret;
- }
-
- build_sync_packet($channel['channel_id'],array('chatroom' => $r));
-
- q("delete from chatroom where cr_id = %d",
- intval($r[0]['cr_id'])
- );
- if($r[0]['cr_id']) {
- q("delete from chatpresence where cp_room = %d",
- intval($r[0]['cr_id'])
- );
- q("delete from chat where chat_room = %d",
- intval($r[0]['cr_id'])
- );
- }
-
- $ret['success'] = true;
- return $ret;
-}
-
-
-function chatroom_enter($observer_xchan, $room_id, $status, $client) {
-
- if(! $room_id || ! $observer_xchan)
- return;
-
- $r = q("select * from chatroom where cr_id = %d limit 1",
- intval($room_id)
- );
- if(! $r) {
- notice( t('Room not found.') . EOL);
- return false;
- }
- require_once('include/security.php');
- $sql_extra = permissions_sql($r[0]['cr_uid']);
-
- $x = q("select * from chatroom where cr_id = %d and cr_uid = %d $sql_extra limit 1",
- intval($room_id),
- intval($r[0]['cr_uid'])
- );
- if(! $x) {
- notice( t('Permission denied.') . EOL);
- return false;
- }
-
- $limit = service_class_fetch($r[0]['cr_uid'], 'chatters_inroom');
- if($limit !== false) {
- $y = q("select count(*) as total from chatpresence where cp_room = %d",
- intval($room_id)
- );
- if($y && $y[0]['total'] > $limit) {
- notice( t('Room is full') . EOL);
- return false;
- }
- }
-
- if(intval($x[0]['cr_expire'])) {
- $r = q("delete from chat where created < %s - INTERVAL %s and chat_room = %d",
- db_utcnow(),
- db_quoteinterval( intval($x[0]['cr_expire']) . ' MINUTE' ),
- intval($x[0]['cr_id'])
- );
- }
-
- $r = q("select * from chatpresence where cp_xchan = '%s' and cp_room = %d limit 1",
- dbesc($observer_xchan),
- intval($room_id)
- );
- if($r) {
- q("update chatpresence set cp_last = '%s' where cp_id = %d and cp_client = '%s'",
- dbesc(datetime_convert()),
- intval($r[0]['cp_id']),
- dbesc($client)
- );
- return true;
- }
-
- $r = q("insert into chatpresence ( cp_room, cp_xchan, cp_last, cp_status, cp_client )
- values ( %d, '%s', '%s', '%s', '%s' )",
- intval($room_id),
- dbesc($observer_xchan),
- dbesc(datetime_convert()),
- dbesc($status),
- dbesc($client)
- );
-
- return $r;
-}
-
-
-function chatroom_leave($observer_xchan, $room_id, $client) {
- if(! $room_id || ! $observer_xchan)
- return;
-
- $r = q("select * from chatpresence where cp_xchan = '%s' and cp_room = %d and cp_client = '%s' limit 1",
- dbesc($observer_xchan),
- intval($room_id),
- dbesc($client)
- );
- if($r) {
- q("delete from chatpresence where cp_id = %d",
- intval($r[0]['cp_id'])
- );
- }
-
- return true;
-}
-
-
-function chatroom_list($uid) {
- require_once('include/security.php');
- $sql_extra = permissions_sql($uid);
-
- $r = q("select allow_cid, allow_gid, deny_cid, deny_gid, cr_name, cr_expire, cr_id, count(cp_id) as cr_inroom from chatroom left join chatpresence on cr_id = cp_room where cr_uid = %d $sql_extra group by cr_name, cr_id order by cr_name",
- intval($uid)
- );
-
- return $r;
-}
-
-function chatroom_list_count($uid) {
- require_once('include/security.php');
- $sql_extra = permissions_sql($uid);
-
- $r = q("select count(*) as total from chatroom where cr_uid = %d $sql_extra",
- intval($uid)
- );
-
- return $r[0]['total'];
-}
-
-/**
- * create a chat message via API.
- * It is the caller's responsibility to enter the room.
- */
-
-function chat_message($uid, $room_id, $xchan, $text) {
-
- $ret = array('success' => false);
-
- if(! $text)
- return;
-
- $sql_extra = permissions_sql($uid);
-
- $r = q("select * from chatroom where cr_uid = %d and cr_id = %d $sql_extra",
- intval($uid),
- intval($room_id)
- );
- if(! $r)
- return $ret;
-
- $arr = array(
- 'chat_room' => $room_id,
- 'chat_xchan' => $xchan,
- 'chat_text' => $text
- );
-
- call_hooks('chat_message', $arr);
-
- $x = q("insert into chat ( chat_room, chat_xchan, created, chat_text )
- values( %d, '%s', '%s', '%s' )",
- intval($room_id),
- dbesc($xchan),
- dbesc(datetime_convert()),
- dbesc($arr['chat_text'])
- );
-
- $ret['success'] = true;
- return $ret;
-}
diff --git a/include/cli_startup.php b/include/cli_startup.php
index a33f7acb0..a4c1f629a 100644
--- a/include/cli_startup.php
+++ b/include/cli_startup.php
@@ -6,37 +6,7 @@ require_once('boot.php');
function cli_startup() {
- global $a, $db, $default_timezone;
-
- if(is_null($a)) {
- $a = new miniApp;
- }
-
- App::init();
-
- if(is_null($db)) {
- @include(".htconfig.php");
-
- $a->convert();
-
- if(! defined('UNO'))
- define('UNO', 0);
-
- App::$timezone = ((x($default_timezone)) ? $default_timezone : 'UTC');
- date_default_timezone_set(App::$timezone);
-
- require_once('include/dba/dba_driver.php');
- $db = dba_factory($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
- unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
- };
-
- App::$session = new Zotlabs\Web\Session();
- App::$session->init();
-
- load_config('system');
-
+ sys_boot();
App::set_baseurl(get_config('system','baseurl'));
- load_hooks();
-
} \ No newline at end of file
diff --git a/include/config.php b/include/config.php
index 12768f4da..3017c3865 100644
--- a/include/config.php
+++ b/include/config.php
@@ -44,7 +44,6 @@
* The category of the configuration value
*/
function load_config($family) {
- global $a;
if(! array_key_exists($family, App::$config))
App::$config[$family] = array();
@@ -81,7 +80,6 @@ function load_config($family) {
* @return mixed Return value or false on error or if not set
*/
function get_config($family, $key) {
- global $a;
if((! array_key_exists($family, App::$config)) || (! array_key_exists('config_loaded', App::$config[$family])))
load_config($family);
@@ -110,6 +108,7 @@ function get_config($family, $key) {
* The configuration key to query
* @return mixed
*/
+
function get_config_from_storage($family, $key) {
$ret = q("SELECT * FROM config WHERE cat = '%s' AND k = '%s' LIMIT 1",
dbesc($family),
@@ -135,7 +134,6 @@ function get_config_from_storage($family, $key) {
* Return the set value, or false if the database update failed
*/
function set_config($family, $key, $value) {
- global $a;
// manage array value
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
@@ -180,7 +178,7 @@ function set_config($family, $key, $value) {
* @return mixed
*/
function del_config($family, $key) {
- global $a;
+
$ret = false;
if(array_key_exists($family, App::$config) && array_key_exists($key, App::$config[$family]))
@@ -204,7 +202,6 @@ function del_config($family, $key) {
* @return void|false Nothing or false if $uid is false
*/
function load_pconfig($uid) {
- global $a;
if($uid === false)
return false;
@@ -249,7 +246,6 @@ function load_pconfig($uid) {
*/
function get_pconfig($uid, $family, $key, $instore = false) {
// logger('include/config.php: get_pconfig() deprecated instore param used', LOGGER_DEBUG);
- global $a;
if($uid === false)
return false;
@@ -285,7 +281,6 @@ function get_pconfig($uid, $family, $key, $instore = false) {
* @return mixed Stored $value or false
*/
function set_pconfig($uid, $family, $key, $value) {
- global $a;
// this catches subtle errors where this function has been called
// with local_channel() when not logged in (which returns false)
@@ -372,7 +367,7 @@ function set_pconfig($uid, $family, $key, $value) {
* @return mixed
*/
function del_pconfig($uid, $family, $key) {
- global $a;
+
$ret = false;
if (x(App::$config[$uid][$family], $key))
@@ -398,7 +393,6 @@ function del_pconfig($uid, $family, $key) {
* @return void|false Returns false if xchan is not set
*/
function load_xconfig($xchan) {
- global $a;
if(! $xchan)
return false;
@@ -441,7 +435,6 @@ function load_xconfig($xchan) {
* @return mixed Stored $value or false if it does not exist
*/
function get_xconfig($xchan, $family, $key) {
- global $a;
if(! $xchan)
return false;
@@ -477,7 +470,6 @@ function get_xconfig($xchan, $family, $key) {
* @return mixed Stored $value or false
*/
function set_xconfig($xchan, $family, $key, $value) {
- global $a;
// manage array value
$dbvalue = ((is_array($value)) ? serialize($value) : $value);
@@ -530,7 +522,7 @@ function set_xconfig($xchan, $family, $key, $value) {
* @return mixed
*/
function del_xconfig($xchan, $family, $key) {
- global $a;
+
$ret = false;
if(x(App::$config[$xchan][$family], $key))
diff --git a/include/Contact.php b/include/connections.php
index e50670a89..d18383fad 100644
--- a/include/Contact.php
+++ b/include/connections.php
@@ -48,32 +48,9 @@ function abook_self($channel_id) {
return(($r) ? $r[0] : array());
}
-function channelx_by_nick($nick) {
- $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_address = '%s' and channel_removed = 0 LIMIT 1",
- dbesc($nick)
- );
- return(($r) ? $r[0] : false);
-}
-
-function channelx_by_hash($hash) {
- $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_hash = '%s' and channel_removed = 0 LIMIT 1",
- dbesc($hash)
- );
- return(($r) ? $r[0] : false);
-}
-
-function channelx_by_n($id) {
- $r = q("SELECT * FROM channel left join xchan on channel_hash = xchan_hash WHERE channel_id = %d and channel_removed = 0 LIMIT 1",
- dbesc($id)
- );
- return(($r) ? $r[0] : false);
-}
-
function vcard_from_xchan($xchan, $observer = null, $mode = '') {
- $a = get_app();
-
if(! $xchan) {
if(App::$poi) {
$xchan = App::$poi;
@@ -198,7 +175,7 @@ function account_remove($account_id,$local = true,$unset_session=true) {
// Don't let anybody nuke the only admin account.
- $r = q("select account_id from account where (account_roles & %d)>0",
+ $r = q("select account_id from account where (account_roles & %d) > 0",
intval(ACCOUNT_ROLE_ADMIN)
);
@@ -267,7 +244,7 @@ function channel_remove($channel_id, $local = true, $unset_session=false) {
if(! $channel_id)
return;
- $a = get_app();
+
logger('Removing channel: ' . $channel_id);
logger('channel_remove: local only: ' . intval($local));
diff --git a/include/contact_widgets.php b/include/contact_widgets.php
index e62d57aa2..14d26e257 100644
--- a/include/contact_widgets.php
+++ b/include/contact_widgets.php
@@ -3,9 +3,6 @@
function findpeople_widget() {
- require_once('include/Contact.php');
-
- $a = get_app();
if(get_config('system','invitation_only')) {
$x = get_pconfig(local_channel(),'system','invites_remaining');
@@ -37,7 +34,6 @@ function findpeople_widget() {
function fileas_widget($baseurl,$selected = '') {
- $a = get_app();
if(! local_channel())
return '';
@@ -65,8 +61,6 @@ function fileas_widget($baseurl,$selected = '') {
}
function categories_widget($baseurl,$selected = '') {
-
- $a = get_app();
if(! feature_enabled(App::$profile['profile_uid'],'categories'))
return '';
@@ -108,8 +102,6 @@ function categories_widget($baseurl,$selected = '') {
function common_friends_visitor_widget($profile_uid) {
- $a = get_app();
-
if(local_channel() == $profile_uid)
return;
diff --git a/include/conversation.php b/include/conversation.php
index fca07a91d..dabe2ca93 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -858,8 +858,6 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
function best_link_url($item) {
- $a = get_app();
-
$best_url = '';
$sparkle = false;
@@ -888,7 +886,7 @@ function best_link_url($item) {
function item_photo_menu($item){
- $a = get_app();
+
$contact = null;
$ssl_state = false;
@@ -1107,7 +1105,6 @@ function status_editor($a, $x, $popup = false) {
$o = '';
- require_once('include/Contact.php');
$c = channelx_by_n($x['profile_uid']);
if($c && $c['channel_moved'])
return $o;
@@ -1160,7 +1157,7 @@ function status_editor($a, $x, $popup = false) {
$layoutselect = '<input type="hidden" name="layout_mid" value="' . $layout . '" />';
if(array_key_exists('channel_select',$x) && $x['channel_select']) {
- require_once('include/identity.php');
+ require_once('include/channel.php');
$id_select = identity_selector();
}
else
@@ -1409,7 +1406,7 @@ function render_location_default($item) {
function prepare_page($item) {
- $a = get_app();
+
$naked = 1;
// $naked = ((get_pconfig($item['uid'],'system','nakedpage')) ? 1 : 0);
$observer = App::get_observer();
@@ -1443,7 +1440,7 @@ function prepare_page($item) {
function network_tabs() {
- $a = get_app();
+
$no_active='';
$starred_active = '';
$new_active = '';
@@ -1659,8 +1656,7 @@ function profile_tabs($a, $is_owner = false, $nickname = null){
if ($p['chat'] && feature_enabled($uid,'ajaxchat')) {
- require_once('include/chat.php');
- $has_chats = chatroom_list_count($uid);
+ $has_chats = Zotlabs\Lib\Chatroom::list_count($uid);
if ($has_chats) {
$tabs[] = array(
'label' => t('Chatrooms'),
diff --git a/include/crypto.php b/include/crypto.php
index d636c6848..42aa45b72 100644
--- a/include/crypto.php
+++ b/include/crypto.php
@@ -46,27 +46,29 @@ function pkcs5_unpad($text)
}
function AES256CBC_encrypt($data,$key,$iv) {
- if(get_config('system','openssl_encrypt')) {
- return openssl_encrypt($data,'aes-256-cbc',str_pad($key,32,"\0"),OPENSSL_RAW_DATA,str_pad($iv,16,"\0"));
- }
+
+ return openssl_encrypt($data,'aes-256-cbc',str_pad($key,32,"\0"),OPENSSL_RAW_DATA,str_pad($iv,16,"\0"));
+
+/* deprecated in php 7.1
return mcrypt_encrypt(
MCRYPT_RIJNDAEL_128,
str_pad($key,32,"\0"),
pkcs5_pad($data,16),
MCRYPT_MODE_CBC,
str_pad($iv,16,"\0"));
+*/
}
function AES256CBC_decrypt($data,$key,$iv) {
- if(get_config('system','openssl_encrypt')) {
- return openssl_decrypt($data,'aes-256-cbc',str_pad($key,32,"\0"),OPENSSL_RAW_DATA,str_pad($iv,16,"\0"));
- }
+ return openssl_decrypt($data,'aes-256-cbc',str_pad($key,32,"\0"),OPENSSL_RAW_DATA,str_pad($iv,16,"\0"));
+/* deprecated in php 7.1
return pkcs5_unpad(mcrypt_decrypt(
MCRYPT_RIJNDAEL_128,
str_pad($key,32,"\0"),
$data,
MCRYPT_MODE_CBC,
str_pad($iv,16,"\0")));
+*/
}
function crypto_encapsulate($data,$pubkey,$alg='aes256cbc') {
diff --git a/include/datetime.php b/include/datetime.php
index 83fb49d04..bf58866e9 100644
--- a/include/datetime.php
+++ b/include/datetime.php
@@ -119,7 +119,6 @@ function datetime_convert($from = 'UTC', $to = 'UTC', $s = 'now', $fmt = "Y-m-d
* @return string
*/
function dob($dob) {
- $a = get_app();
list($year, $month, $day) = sscanf($dob, '%4d-%2d-%2d');
$f = get_config('system', 'birthday_input_format');
diff --git a/include/dba/dba_driver.php b/include/dba/dba_driver.php
index e15e107a8..0ab5830ed 100755
--- a/include/dba/dba_driver.php
+++ b/include/dba/dba_driver.php
@@ -1,66 +1,78 @@
<?php
-/**
- * @file dba_driver.php
- * @brief some database related functions and abstract driver class.
- *
- * This file contains the abstract database driver class dba_driver and some
- * functions for working with databases.
- */
-/**
- * @brief Returns the database driver object.
- *
- * If available it will use PHP's mysqli otherwise mysql driver.
- *
- * @param string $server DB server name
- * @param string $port DB port
- * @param string $user DB username
- * @param string $pass DB password
- * @param string $db database name
- * @param string $dbtype 0 for mysql, 1 for postgres
- * @param bool $install Defaults to false
- * @return null|dba_driver A database driver object (dba_mysql|dba_mysqli) or null if no driver found.
- */
-function dba_factory($server, $port,$user,$pass,$db,$dbtype,$install = false) {
- $dba = null;
-
- $dbtype = intval($dbtype);
- $set_port = $port;
-
- if($dbtype == DBTYPE_POSTGRES) {
- require_once('include/dba/dba_postgres.php');
- if(is_null($port)) $set_port = 5432;
- $dba = new dba_postgres($server, $set_port, $user, $pass, $db, $install);
- } else {
-
-// Highly experimental at the present time.
-// require_once('include/dba/dba_pdo.php');
-// $dba = new dba_pdo($server, $set_port,$user,$pass,$db,$install);
-// }
-
- if(class_exists('mysqli')) {
- if (is_null($port)) $set_port = ini_get("mysqli.default_port");
- require_once('include/dba/dba_mysqli.php');
- $dba = new dba_mysqli($server, $set_port,$user,$pass,$db,$install);
+class DBA {
+
+ /**
+ * @file dba_driver.php
+ * @brief some database related functions and abstract driver class.
+ *
+ * This file contains the abstract database driver class dba_driver and some
+ * functions for working with databases.
+ */
+
+ static public $dba = null;
+ static public $dbtype = null;
+
+
+ /**
+ * @brief Returns the database driver object.
+ *
+ * If available it will use PHP's mysqli otherwise mysql driver.
+ *
+ * @param string $server DB server name
+ * @param string $port DB port
+ * @param string $user DB username
+ * @param string $pass DB password
+ * @param string $db database name
+ * @param string $dbtype 0 for mysql, 1 for postgres
+ * @param bool $install Defaults to false
+ * @return null|dba_driver A database driver object (dba_mysql|dba_mysqli) or null if no driver found.
+ */
+
+ static public function dba_factory($server, $port,$user,$pass,$db,$dbtype,$install = false) {
+
+ self::$dba = null;
+
+ self::$dbtype = intval($dbtype);
+ $set_port = $port;
+
+ if(self::$dbtype == DBTYPE_POSTGRES) {
+ require_once('include/dba/dba_postgres.php');
+ if(is_null($port)) $set_port = 5432;
+ self::$dba = new dba_postgres($server, $set_port, $user, $pass, $db, $install);
+ }
+ else {
+
+// Highly experimental at the present time.
+// require_once('include/dba/dba_pdo.php');
+// self::$dba = new dba_pdo($server, $set_port,$user,$pass,$db,$install);
+// }
+
+ if(class_exists('mysqli')) {
+ if (is_null($port)) $set_port = ini_get("mysqli.default_port");
+ require_once('include/dba/dba_mysqli.php');
+ self::$dba = new dba_mysqli($server, $set_port,$user,$pass,$db,$install);
+ }
}
- }
- // Until we have a proper PDO driver, store the DB connection parameters for
- // plugins/addons which use PDO natively (such as cdav). This is wasteful as
- // it opens a separate connection to the DB, but saves a lot of effort re-writing
- // third-party interfaces that are working and well tested.
+ // Until we have a proper PDO driver, store the DB connection parameters for
+ // plugins/addons which use PDO natively (such as cdav). This is wasteful as
+ // it opens a separate connection to the DB, but saves a lot of effort re-writing
+ // third-party interfaces that are working and well tested.
- if(is_object($dba) && $dba->connected) {
- $dns = (($dbtype == DBTYPE_POSTGRES) ? 'postgres' : 'mysql')
- . ':host=' . $server . (is_null($port) ? '' : ';port=' . $port)
- . ';dbname=' . $db;
- $dba->pdo_set(array($dns,$user,$pass));
+ if(is_object(self::$dba) && self::$dba->connected) {
+ $dns = ((self::$dbtype == DBTYPE_POSTGRES) ? 'postgres' : 'mysql')
+ . ':host=' . $server . (is_null($port) ? '' : ';port=' . $port)
+ . ';dbname=' . $db;
+ self::$dba->pdo_set(array($dns,$user,$pass));
+ }
+
+ define('NULL_DATE', self::$dba->get_null_date());
+ define('ACTIVE_DBTYPE', self::$dbtype);
+ return self::$dba;
}
- define('NULL_DATE', $dba->get_null_date());
- define('ACTIVE_DBTYPE', $dbtype);
- return $dba;
}
/**
@@ -232,8 +244,8 @@ function printable($s) {
function dbg($state) {
global $db;
- if($db)
- $db->dbg($state);
+ if(\DBA::$dba)
+ \DBA::$dba->dbg($state);
}
/**
@@ -247,21 +259,18 @@ function dbg($state) {
* @return Return an escaped string of the value to pass to a DB query.
*/
function dbesc($str) {
- global $db;
- if($db && $db->connected)
- return($db->escape($str));
+ if(\DBA::$dba && \DBA::$dba->connected)
+ return(\DBA::$dba->escape($str));
else
return(str_replace("'", "\\'", $str));
}
function dbescbin($str) {
- global $db;
- return $db->escapebin($str);
+ return \DBA::$dba->escapebin($str);
}
function dbunescbin($str) {
- global $db;
- return $db->unescapebin($str);
+ return \DBA::$dba->unescapebin($str);
}
function dbescdate($date) {
@@ -274,36 +283,25 @@ function dbescdate($date) {
}
function db_quoteinterval($txt) {
- global $db;
- return $db->quote_interval($txt);
+ return \DBA::$dba->quote_interval($txt);
}
function dbesc_identifier($str) {
- global $db;
- return $db->escape_identifier($str);
+ return \DBA::$dba->escape_identifier($str);
}
function db_utcnow() {
- global $db;
- return $db->utcnow();
+ return \DBA::$dba->utcnow();
}
function db_optimizetable($table) {
- global $db;
- $db->optimize_table($table);
+ \DBA::$dba->optimize_table($table);
}
function db_concat($fld, $sep) {
- global $db;
- return $db->concat($fld, $sep);
+ return \DBA::$dba->concat($fld, $sep);
}
-// Function: q($sql,$args);
-// Description: execute SQL query with printf style args.
-// Example: $r = q("SELECT * FROM `%s` WHERE `uid` = %d",
-// 'user', 1);
-
-
/**
* @brief Execute a SQL query with printf style args.
*
@@ -319,13 +317,13 @@ function db_concat($fld, $sep) {
* @param string $sql The SQL query to execute
* @return bool|array
*/
+
function q($sql) {
- global $db;
$args = func_get_args();
unset($args[0]);
- if($db && $db->connected) {
+ if(\DBA::$dba && \DBA::$dba->connected) {
$stmt = vsprintf($sql, $args);
if($stmt === false) {
if(version_compare(PHP_VERSION, '5.4.0') >= 0)
@@ -334,13 +332,14 @@ function q($sql) {
else
db_logger('dba: vsprintf error: ' . print_r(debug_backtrace(), true),LOGGER_NORMAL,LOG_CRIT);
}
- return $db->q($stmt);
+ return \DBA::$dba->q($stmt);
}
/*
* This will happen occasionally trying to store the
* session data after abnormal program termination
*/
+
db_logger('dba: no database: ' . print_r($args,true),LOGGER_NORMAL,LOG_CRIT);
return false;
@@ -354,10 +353,9 @@ function q($sql) {
* @param string $sql The SQL query to execute
*/
function dbq($sql) {
- global $db;
- if($db && $db->connected)
- $ret = $db->q($sql);
+ if(\DBA::$dba && \DBA::$dba->connected)
+ $ret = \DBA::$dba->q($sql);
else
$ret = false;
@@ -418,13 +416,13 @@ function db_getfunc($f) {
// The logger function may make DB calls internally to query the system logging parameters.
// This can cause a recursion if database debugging is enabled.
-// So this function preserves the current database debugging state and then turns it off while
-// doing the logger() call
+// So this function preserves the current database debugging state and then turns it off
+// temporarily while doing the logger() call
function db_logger($s,$level = LOGGER_NORMAL,$syslog = LOG_INFO) {
- global $db;
- $saved = $db->debug;
- $db->debug = false;
+
+ $saved = \DBA::$dba->debug;
+ \DBA::$dba->debug = false;
logger($s,$level,$syslog);
- $db->debug = $saved;
+ \DBA::$dba->debug = $saved;
} \ No newline at end of file
diff --git a/include/dir_fns.php b/include/dir_fns.php
index 1c3149081..9f1be1a42 100644
--- a/include/dir_fns.php
+++ b/include/dir_fns.php
@@ -69,9 +69,8 @@ function check_upstream_directory() {
if ($directory) {
$h = parse_url($directory);
if ($h) {
- $x = zot_finger('[system]@' . $h['host']);
- if ($x['success']) {
- $j = json_decode($x['body'], true);
+ $j = Zotlabs\Zot\Finger::run('[system]@' . $h['host']);
+ if ($j['success']) {
if (array_key_exists('site', $j) && array_key_exists('directory_mode', $j['site'])) {
if ($j['site']['directory_mode'] === 'normal') {
$isadir = false;
@@ -95,6 +94,9 @@ function get_directory_setting($observer, $setting) {
if($ret === false)
$ret = get_config('directory', $setting);
+
+ // 'safemode' is the default if there is no observer or no established preference.
+
if($setting == 'safemode' && $ret === false)
$ret = 1;
diff --git a/include/event.php b/include/event.php
index 29ca5bb79..db67dac64 100644
--- a/include/event.php
+++ b/include/event.php
@@ -175,6 +175,9 @@ function format_event_bbcode($ev) {
if($ev['location'])
$o .= '[event-location]' . $ev['location'] . '[/event-location]';
+ if($ev['event_hash'])
+ $o .= '[event-id]' . $ev['event_hash'] . '[/event-id]';
+
if($ev['adjust'])
$o .= '[event-adjust]' . $ev['adjust'] . '[/event-adjust]';
@@ -212,6 +215,9 @@ function bbtoevent($s) {
if(preg_match("/\[event\-location\](.*?)\[\/event\-location\]/is",$s,$match))
$ev['location'] = $match[1];
$match = '';
+ if(preg_match("/\[event\-id\](.*?)\[\/event\-id\]/is",$s,$match))
+ $ev['event_hash'] = $match[1];
+ $match = '';
if(preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match))
$ev['adjust'] = $match[1];
if(array_key_exists('start',$ev)) {
@@ -278,34 +284,41 @@ function event_store_event($arr) {
else
$arr['event_status_date'] = NULL_DATE;
- // Existing event being modified
- if($arr['id'] || $arr['event_hash']) {
+ $existing_event = null;
- // has the event actually changed?
+ if($arr['event_hash']) {
+ $r = q("SELECT * FROM event WHERE event_hash = '%s' AND uid = %d LIMIT 1",
+ dbesc($arr['event_hash']),
+ intval($arr['uid'])
+ );
+ if($r) {
+ $existing_event = $r[0];
+ }
+ }
- if($arr['event_hash']) {
- $r = q("SELECT * FROM event WHERE event_hash = '%s' AND uid = %d LIMIT 1",
- dbesc($arr['event_hash']),
- intval($arr['uid'])
- );
+ if($arr['id']) {
+ $r = q("SELECT * FROM event WHERE id = %d AND uid = %d LIMIT 1",
+ intval($arr['id']),
+ intval($arr['uid'])
+ );
+ if($r) {
+ $existing_event = $r[0];
}
else {
- $r = q("SELECT * FROM event WHERE id = %d AND uid = %d LIMIT 1",
- intval($arr['id']),
- intval($arr['uid'])
- );
+ return false;
}
+ }
- if(! $r)
- return false;
- if($r[0]['edited'] === $arr['edited']) {
- // Nothing has changed. Return the ID.
- return $r[0];
+ if($existing_event) {
+
+ if($existing_event['edited'] >= $arr['edited']) {
+ // Nothing has changed.
+ return $existing_event;
}
- $hash = $r[0]['event_hash'];
+ $hash = $existing_event['event_hash'];
// The event changed. Update it.
@@ -350,7 +363,7 @@ function event_store_event($arr) {
dbesc($arr['allow_gid']),
dbesc($arr['deny_cid']),
dbesc($arr['deny_gid']),
- intval($r[0]['id']),
+ intval($existing_event['id']),
intval($arr['uid'])
);
} else {
@@ -360,6 +373,8 @@ function event_store_event($arr) {
if(array_key_exists('external_id',$arr))
$hash = $arr['external_id'];
+ elseif(array_key_exists('event_hash',$arr))
+ $hash = $arr['event_hash'];
else
$hash = random_string() . '@' . App::get_hostname();
@@ -436,7 +451,7 @@ function event_addtocal($item_id, $uid) {
// is this an edit?
- if($item['resource_type'] === 'event') {
+ if($item['resource_type'] === 'event' && (! $ev['event_hash'])) {
$ev['event_hash'] = $item['resource_id'];
}
@@ -472,7 +487,6 @@ function event_addtocal($item_id, $uid) {
if($z) {
build_sync_packet($channel['channel_id'],array('event_item' => array(encode_item($sync_item[0],true)),'event' => $z));
}
-
return true;
}
}
@@ -764,6 +778,9 @@ function event_store_item($arr, $event) {
$prefix = '';
// $birthday = false;
+ if(($event) && array_key_exists('event_hash',$event) && (! array_key_exists('event_hash',$arr)))
+ $arr['event_hash'] = $event['event_hash'];
+
if($event['type'] === 'birthday') {
if(! is_sys_channel($arr['uid']))
$prefix = t('This event has been added to your calendar.');
diff --git a/include/feedutils.php b/include/feedutils.php
index 700198ff8..f370c540a 100644
--- a/include/feedutils.php
+++ b/include/feedutils.php
@@ -1087,7 +1087,6 @@ function update_feed_item($uid,$datarray) {
function handle_feed($uid,$abook_id,$url) {
- require_once('include/Contact.php');
$channel = channelx_by_n($uid);
if(! $channel)
return;
diff --git a/include/follow.php b/include/follow.php
index e4f7e8557..0c3973175 100644
--- a/include/follow.php
+++ b/include/follow.php
@@ -17,7 +17,6 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
$result = array('success' => false,'message' => '');
- $a = get_app();
$is_red = false;
$is_http = ((strpos($url,'://') !== false) ? true : false);
@@ -56,11 +55,11 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
if($arr['channel']['success'])
$ret = $arr['channel'];
elseif(! $is_http)
- $ret = zot_finger($url,$channel);
+ $ret = Zotlabs\Zot\Finger::run($url,$channel);
- if($ret && $ret['success']) {
+ if($ret && is_array($ret) && $ret['success']) {
$is_red = true;
- $j = json_decode($ret['body'],true);
+ $j = $ret;
}
$my_perms = get_channel_default_perms($uid);
diff --git a/include/help.php b/include/help.php
index 13473164d..5518eeb70 100644
--- a/include/help.php
+++ b/include/help.php
@@ -24,8 +24,6 @@ function find_doc_file($s) {
function search_doc_files($s) {
- $a = get_app();
-
$itemspage = get_pconfig(local_channel(),'system','itemspage');
\App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 20));
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(\App::$pager['itemspage']), intval(\App::$pager['start']));
diff --git a/include/items.php b/include/items.php
index a25be72b3..a60c10bdd 100755
--- a/include/items.php
+++ b/include/items.php
@@ -6,6 +6,8 @@
// uncertain if this line is needed and why
use Sabre\HTTP\URLUtil;
+use Zotlabs\Lib as Zlib;
+
require_once('include/bbcode.php');
require_once('include/oembed.php');
require_once('include/crypto.php');
@@ -77,7 +79,7 @@ function collect_recipients($item, &$private_envelope) {
// by the directives in $item['public_policy'].
$private_envelope = false;
- require_once('include/identity.php');
+ require_once('include/channel.php');
//$sys = get_sys_channel();
if(array_key_exists('public_policy',$item) && $item['public_policy'] !== 'self') {
@@ -2284,8 +2286,8 @@ function send_status_notifications($post_id,$item) {
if(! $notify)
return;
- require_once('include/enotify.php');
- notification(array(
+
+ Zlib\Enotify::submit(array(
'type' => NOTIFY_COMMENT,
'from_xchan' => $item['author_xchan'],
'to_xchan' => $r[0]['channel_hash'],
@@ -2378,8 +2380,7 @@ function tag_deliver($uid, $item_id) {
$verb = urldecode(substr($item['verb'],strpos($item['verb'],'#')+1));
if($poke_notify) {
- require_once('include/enotify.php');
- notification(array(
+ Zlib\Enotify::submit(array(
'to_xchan' => $u[0]['channel_hash'],
'from_xchan' => $item['author_xchan'],
'type' => NOTIFY_POKE,
@@ -2544,8 +2545,7 @@ function tag_deliver($uid, $item_id) {
* Kill two birds with one stone. As long as we're here, send a mention notification.
*/
- require_once('include/enotify.php');
- notification(array(
+ Zlib\Enotify::submit(array(
'to_xchan' => $u[0]['channel_hash'],
'from_xchan' => $item['author_xchan'],
'type' => NOTIFY_TAGSELF,
@@ -3046,7 +3046,6 @@ function mail_store($arr) {
);
}
else {
- require_once('include/enotify.php');
$notif_params = array(
'from_xchan' => $arr['from_xchan'],
@@ -3057,7 +3056,7 @@ function mail_store($arr) {
'otype' => 'mail'
);
- notification($notif_params);
+ Zlib\Enotify::submit($notif_params);
}
call_hooks('post_mail_end',$arr);
diff --git a/include/language.php b/include/language.php
index 14139e90c..238c23028 100644
--- a/include/language.php
+++ b/include/language.php
@@ -82,13 +82,11 @@ function get_best_language() {
if($arr['preferred'] !== 'unset')
return $arr['preferred'];
- $a = get_app();
return ((isset(App::$config['system']['language'])) ? App::$config['system']['language'] : 'en');
}
function push_lang($language) {
- global $a;
App::$langsave = App::$language;
@@ -104,7 +102,6 @@ function push_lang($language) {
}
function pop_lang() {
- global $a;
if(App::$language === App::$langsave)
return;
@@ -124,7 +121,6 @@ function pop_lang() {
* @param boolean $install (optional) default false
*/
function load_translation_table($lang, $install = false) {
- global $a;
App::$strings = array();
@@ -170,7 +166,6 @@ function load_translation_table($lang, $install = false) {
*
*/
function t($s, $ctx = '') {
- global $a;
$cs = $ctx ? '__ctx:' . $ctx . '__ ' . $s : $s;
if (x(App::$strings, $cs)) {
@@ -205,7 +200,6 @@ function translate_projectname($s) {
* @return string
*/
function tt($singular, $plural, $count, $ctx = ''){
- $a = get_app();
$cs = $ctx ? "__ctx:" . $ctx . "__ " . $singular : $singular;
if (x(App::$strings,$cs)) {
diff --git a/include/network.php b/include/network.php
index 3e5263d3e..dd266f5d1 100644
--- a/include/network.php
+++ b/include/network.php
@@ -595,8 +595,6 @@ function parse_xml_string($s,$strict = true) {
function scale_external_images($s, $include_link = true, $scale_replace = false) {
- $a = get_app();
-
// Picture addresses can contain special characters
$s = htmlspecialchars_decode($s, ENT_COMPAT);
@@ -1618,8 +1616,6 @@ function fetch_xrd_links($url) {
function scrape_vcard($url) {
- $a = get_app();
-
$ret = array();
logger('scrape_vcard: url=' . $url);
@@ -1699,8 +1695,6 @@ function scrape_vcard($url) {
function scrape_feed($url) {
- $a = get_app();
-
$ret = array();
$level = 0;
$x = z_fetch_url($url,false,$level,array('novalidate' => true));
@@ -1819,8 +1813,6 @@ function service_plink($contact, $guid) {
function format_and_send_email($sender,$xchan,$item) {
- require_once('include/enotify.php');
-
$title = $item['title'];
$body = $item['body'];
@@ -1885,7 +1877,7 @@ function format_and_send_email($sender,$xchan,$item) {
// use the EmailNotification library to send the message
- enotify::send(array(
+ Zotlabs\Lib\Enotify::send(array(
'fromName' => $product,
'fromEmail' => $sender_email,
'replyTo' => $sender_email,
@@ -1940,9 +1932,6 @@ function do_delivery($deliveries) {
function get_site_info() {
- global $db;
- global $a;
-
$register_policy = Array('REGISTER_CLOSED', 'REGISTER_APPROVE', 'REGISTER_OPEN');
$directory_mode = Array('DIRECTORY_MODE_NORMAL', 'DIRECTORY_MODE_PRIMARY', 'DIRECTORY_MODE_SECONDARY', 256 => 'DIRECTORY_MODE_STANDALONE');
@@ -2042,7 +2031,7 @@ function get_site_info() {
'admin' => $admin,
'site_name' => (($site_name) ? $site_name : ''),
'platform' => Zotlabs\Lib\System::get_platform_name(),
- 'dbdriver' => $db->getdriver(),
+ 'dbdriver' => DBA::$dba->getdriver(),
'lastpoll' => get_config('system','lastpoll'),
'info' => (($site_info) ? $site_info : ''),
'channels_total' => $channels_total_stat,
diff --git a/include/notify.php b/include/notify.php
deleted file mode 100644
index 2b032b56b..000000000
--- a/include/notify.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php /** @file */
-
-
-function format_notification($item) {
-
- $ret = '';
-
- require_once('include/conversation.php');
-
- // Call localize_item with the "brief" flag to get a one line status for activities.
- // This should set $item['localized'] to indicate we have a brief summary.
-
- localize_item($item);
-
- if($item_localize) {
- $itemem_text = $item['localize'];
- }
- else {
- $itemem_text = (($item['item_thread_top'])
- ? t('created a new post')
- : sprintf( t('commented on %s\'s post'), $item['owner']['xchan_name']));
- }
-
- // convert this logic into a json array just like the system notifications
-
- return array(
- 'notify_link' => $item['llink'],
- 'name' => $item['author']['xchan_name'],
- 'url' => $item['author']['xchan_url'],
- 'photo' => $item['author']['xchan_photo_s'],
- 'when' => relative_date($item['created']),
- 'class' => (intval($item['item_unseen']) ? 'notify-unseen' : 'notify-seen'),
- 'message' => strip_tags(bbcode($itemem_text))
- );
-
-}
-
diff --git a/include/oembed.php b/include/oembed.php
index 1e5c51172..08363e488 100755
--- a/include/oembed.php
+++ b/include/oembed.php
@@ -227,7 +227,7 @@ function oembed_fetch_url($embedurl){
}
function oembed_format_object($j){
- $a = get_app();
+
$embedurl = $j->embedurl;
// logger('format: ' . print_r($j,true));
diff --git a/include/photo/photo_driver.php b/include/photo/photo_driver.php
index 3bea54fd4..e57a9165a 100644
--- a/include/photo/photo_driver.php
+++ b/include/photo/photo_driver.php
@@ -521,7 +521,7 @@ function guess_image_type($filename, $headers = '') {
logger('Photo: guess_image_type: '.$filename . ($headers?' from curl headers':''), LOGGER_DEBUG);
$type = null;
if ($headers) {
- $a = get_app();
+
$hdrs=array();
$h = explode("\n",$headers);
foreach ($h as $l) {
@@ -580,8 +580,6 @@ function guess_image_type($filename, $headers = '') {
function import_xchan_photo($photo,$xchan,$thing = false) {
- $a = get_app();
-
$flags = (($thing) ? PHOTO_THING : PHOTO_XCHAN);
$album = (($thing) ? 'Things' : 'Contact Photos');
@@ -703,8 +701,6 @@ function import_xchan_photo($photo,$xchan,$thing = false) {
function import_channel_photo($photo,$type,$aid,$uid) {
- $a = get_app();
-
logger('import_channel_photo: importing channel photo for ' . $uid, LOGGER_DEBUG);
$hash = photo_new_resource();
diff --git a/include/photos.php b/include/photos.php
index d8d3d102c..c333a4d04 100644
--- a/include/photos.php
+++ b/include/photos.php
@@ -19,8 +19,6 @@ require_once('include/text.php');
*/
function photo_upload($channel, $observer, $args) {
- $a = get_app();
-
$ret = array('success' => false);
$channel_id = $channel['channel_id'];
$account_id = $channel['channel_account_id'];
diff --git a/include/plugin.php b/include/plugin.php
index 0466360bb..6c108fcc5 100755
--- a/include/plugin.php
+++ b/include/plugin.php
@@ -500,7 +500,7 @@ function get_theme_info($theme){
* @return string
*/
function get_theme_screenshot($theme) {
- $a = get_app();
+
$exts = array('.png', '.jpg');
foreach($exts as $ext) {
if(file_exists('view/theme/' . $theme . '/img/screenshot' . $ext))
@@ -521,7 +521,7 @@ function head_add_css($src, $media = 'screen') {
}
function head_remove_css($src, $media = 'screen') {
- $a = get_app();
+
$index = array_search(array($src, $media), App::$css_sources);
if ($index !== false)
unset(App::$css_sources[$index]);
@@ -592,7 +592,7 @@ function head_add_js($src) {
}
function head_remove_js($src) {
- $a = get_app();
+
$index = array_search($src, App::$js_sources);
if($index !== false)
unset(App::$js_sources[$index]);
@@ -633,7 +633,6 @@ function format_js_if_exists($source) {
function theme_include($file, $root = '') {
- $a = get_app();
// Make sure $root ends with a slash / if it's not blank
if($root !== '' && $root[strlen($root)-1] !== '/')
@@ -671,7 +670,7 @@ function theme_include($file, $root = '') {
function get_intltext_template($s, $root = '') {
- $a = get_app();
+
$t = App::template_engine();
$template = $t->get_intltext_template($s, $root);
@@ -680,7 +679,7 @@ function get_intltext_template($s, $root = '') {
function get_markup_template($s, $root = '') {
- $a = get_app();
+
$t = App::template_engine();
$template = $t->get_markup_template($s, $root);
return $template;
diff --git a/include/socgraph.php b/include/socgraph.php
index 1b1bccf20..4cb5600ec 100644
--- a/include/socgraph.php
+++ b/include/socgraph.php
@@ -152,11 +152,9 @@ function poco_load($xchan = '', $url = null) {
if(($x !== false) && (! count($x))) {
if($address) {
if($network === 'zot') {
- $z = zot_finger($address,null);
- if($z['success']) {
- $j = json_decode($z['body'],true);
- if($j)
- import_xchan($j);
+ $j = Zotlabs\Zot\Finger::run($address,null);
+ if($j['success']) {
+ import_xchan($j);
}
$x = q("select xchan_hash from xchan where xchan_hash = '%s' limit 1",
dbesc($hash)
@@ -404,7 +402,7 @@ function poco($a,$extended = false) {
$system_mode = false;
- if(intval(get_config('system','block_public')) && (! local_channel()) && (! remote_channel())) {
+ if(observer_prohibited()) {
logger('mod_poco: block_public');
http_status_exit(401);
}
diff --git a/include/text.php b/include/text.php
index df6dac056..375a89d3f 100644
--- a/include/text.php
+++ b/include/text.php
@@ -20,7 +20,6 @@ define('RANDOM_STRING_TEXT', 0x01 );
* @return string substituted string
*/
function replace_macros($s, $r) {
- $a = get_app();
$arr = array('template' => $s, 'params' => $r);
call_hooks('replace_macros', $arr);
@@ -96,7 +95,6 @@ function z_input_filter($channel_id,$s,$type = 'text/bbcode') {
if($type == 'application/x-pdl')
return escape_tags($s);
- $a = get_app();
if(App::$is_sys) {
return $s;
}
@@ -324,6 +322,15 @@ function autoname($len) {
function xmlify($str) {
$buffer = '';
+ if(is_array($str)) {
+
+ // allow to fall through so we ge a PHP error, as the log statement will
+ // probably get lost in the noise unless we're specifically looking for it.
+
+ btlogger('xmlify called with array: ' . print_r($str,true), LOGGER_NORMAL, LOG_WARNING);
+ }
+
+
$len = mb_strlen($str);
for($x = 0; $x < $len; $x ++) {
$char = mb_substr($str,$x,1);
@@ -567,21 +574,25 @@ function attribute_contains($attr, $s) {
*/
function logger($msg, $level = LOGGER_NORMAL, $priority = LOG_INFO) {
- // turn off logger in install mode
- global $a;
- global $db;
-
- if((App::$module == 'install') || (! ($db && $db->connected)))
- return;
- $debugging = get_config('system', 'debugging');
- $loglevel = intval(get_config('system', 'loglevel'));
- $logfile = get_config('system', 'logfile');
+ if(App::$module == 'setup' && is_writable('install.log')) {
+ $debugging = true;
+ $logfile = 'install.log';
+ $loglevel = LOGGER_ALL;
+ }
+ else {
+ $debugging = get_config('system', 'debugging');
+ $loglevel = intval(get_config('system', 'loglevel'));
+ $logfile = get_config('system', 'logfile');
+ }
if((! $debugging) || (! $logfile) || ($level > $loglevel))
return;
$where = '';
+
+ // We require > 5.4 but leave the version check so that install issues (including version) can be logged
+
if(version_compare(PHP_VERSION, '5.4.0') >= 0) {
$stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
$where = basename($stack[0]['file']) . ':' . $stack[0]['line'] . ':' . $stack[1]['function'] . ': ';
@@ -590,7 +601,8 @@ function logger($msg, $level = LOGGER_NORMAL, $priority = LOG_INFO) {
$s = datetime_convert() . ':' . log_priority_str($priority) . ':' . session_id() . ':' . $where . $msg . PHP_EOL;
$pluginfo = array('filename' => $logfile, 'loglevel' => $level, 'message' => $s,'priority' => $priority, 'logged' => false);
- call_hooks('logger',$pluginfo);
+ if(! (App::$module == 'setup'))
+ call_hooks('logger',$pluginfo);
if(! $pluginfo['logged'])
@file_put_contents($pluginfo['filename'], $pluginfo['message'], FILE_APPEND);
@@ -648,11 +660,10 @@ function log_priority_str($priority) {
* @param int $level A log level.
*/
function dlogger($msg, $level = 0) {
+
// turn off logger in install mode
- global $a;
- global $db;
- if((App::$module == 'install') || (! ($db && $db->connected)))
+ if(App::$module == 'setup')
return;
$debugging = get_config('system','debugging');
@@ -810,7 +821,6 @@ function get_mentions($item,$tags) {
function contact_block() {
$o = '';
- $a = get_app();
if(! App::$profile['uid'])
return;
@@ -923,7 +933,7 @@ function micropro($contact, $redirect = false, $class = '', $textmode = false) {
function search($s,$id='search-box',$url='/search',$save = false) {
- $a = get_app();
+
return replace_macros(get_markup_template('searchbox.tpl'),array(
'$s' => $s,
'$id' => $id,
@@ -1068,7 +1078,7 @@ function get_mood_verbs() {
// Function to list all smilies, both internal and from addons
// Returns array with keys 'texts' and 'icons'
function list_smilies() {
- $a = get_app();
+
$texts = array(
'&lt;3',
'&lt;/3',
@@ -1101,10 +1111,8 @@ function list_smilies() {
':coffee',
':facepalm',
':like',
- ':dislike',
- 'red#matrix',
- 'red#',
- 'r#'
+ ':dislike'
+
);
$icons = array(
@@ -1140,9 +1148,6 @@ function list_smilies() {
'<img class="smiley" src="' . z_root() . '/images/smiley-facepalm.gif" alt=":facepalm" />',
'<img class="smiley" src="' . z_root() . '/images/like.gif" alt=":like" />',
'<img class="smiley" src="' . z_root() . '/images/dislike.gif" alt=":dislike" />',
- '<a href="http://getzot.com"><strong>red<img class="smiley bb_rm-logo" src="' . z_root() . '/images/rm-32.png" alt="' . urlencode('red#matrix') . '" />matrix</strong></a>',
- '<a href="http://getzot.com"><strong>red<img class="smiley bb_rm-logo" src="' . z_root() . '/images/rm-32.png" alt="' . urlencode('red#') . '" />matrix</strong></a>',
- '<a href="http://getzot.com"><strong>red<img class="smiley bb_rm-logo" src="' . z_root() . '/images/rm-32.png" alt="r#" />matrix</strong></a>'
);
@@ -1213,7 +1218,7 @@ function smile_unshield($m) {
* @param array $x
*/
function preg_heart($x) {
- $a = get_app();
+
if (strlen($x[1]) == 1)
return $x[0];
@@ -1319,7 +1324,7 @@ function theme_attachments(&$item) {
$title = t('Size') . ' ' . (($r['length']) ? userReadableSize($r['length']) : t('unknown'));
- require_once('include/identity.php');
+ require_once('include/channel.php');
if(is_foreigner($item['author_xchan']))
$url = $r['href'];
else
@@ -1486,7 +1491,6 @@ function format_event($jobject) {
}
function prepare_body(&$item,$attach = false) {
- require_once('include/identity.php');
call_hooks('prepare_body_init', $item);
@@ -1716,7 +1720,6 @@ function feed_hublinks() {
/* return atom link elements for salmon endpoints */
function feed_salmonlinks($nick) {
- $a = get_app();
$salmon = '<link rel="salmon" href="' . xmlify(z_root() . '/salmon/' . $nick) . '" />' . "\n" ;
@@ -1784,7 +1787,7 @@ function mimetype_select($channel_id, $current = 'text/bbcode') {
'application/x-pdl'
);
- $a = get_app();
+
if(App::$is_sys) {
$x[] = 'application/x-php';
}
@@ -1817,7 +1820,6 @@ function mimetype_select($channel_id, $current = 'text/bbcode') {
function lang_selector() {
- global $a;
$langs = glob('view/*/hstrings.php');
@@ -2261,7 +2263,7 @@ function design_tools() {
$sys = false;
if(App::$is_sys && is_site_admin()) {
- require_once('include/identity.php');
+ require_once('include/channel.php');
$channel = get_sys_channel();
$sys = true;
}
diff --git a/include/widgets.php b/include/widgets.php
index cff58d225..1cc6dfc28 100644
--- a/include/widgets.php
+++ b/include/widgets.php
@@ -8,17 +8,17 @@
require_once('include/dir_fns.php');
require_once('include/contact_widgets.php');
require_once('include/attach.php');
-require_once('include/Contact.php');
+
function widget_profile($args) {
- $block = (((get_config('system', 'block_public')) && (! local_channel()) && (! remote_channel())) ? true : false);
+ $block = observer_prohibited();
return profile_sidebar(App::$profile, $block, true);
}
function widget_zcard($args) {
- $block = (((get_config('system', 'block_public')) && (! local_channel()) && (! remote_channel())) ? true : false);
+ $block = observer_prohibited();
$channel = channelx_by_n(App::$profile_uid);
return get_zcard($channel,get_observer_hash(),array('width' => 875));
}
@@ -369,7 +369,7 @@ function widget_fullprofile($arr) {
if(! App::$profile['profile_uid'])
return;
- $block = (((get_config('system', 'block_public')) && (! local_channel()) && (! remote_channel())) ? true : false);
+ $block = observer_prohibited();
return profile_sidebar(App::$profile, $block);
}
@@ -379,7 +379,7 @@ function widget_shortprofile($arr) {
if(! App::$profile['profile_uid'])
return;
- $block = (((get_config('system', 'block_public')) && (! local_channel()) && (! remote_channel())) ? true : false);
+ $block = observer_prohibited();
return profile_sidebar(App::$profile, $block, true, true);
}
@@ -771,7 +771,6 @@ function widget_eventstools($arr) {
}
function widget_design_tools($arr) {
- $a = get_app();
// mod menu doesn't load a profile. For any modules which load a profile, check it.
// otherwise local_channel() is sufficient for permissions.
@@ -806,7 +805,6 @@ function widget_photo_albums($arr) {
function widget_vcard($arr) {
- require_once ('include/Contact.php');
return vcard_from_xchan('', App::get_observer());
}
@@ -835,8 +833,7 @@ function widget_menu_preview($arr) {
function widget_chatroom_list($arr) {
- require_once("include/chat.php");
- $r = chatroom_list(App::$profile['profile_uid']);
+ $r = Zotlabs\Lib\Chatroom::roomlist(App::$profile['profile_uid']);
if($r) {
return replace_macros(get_markup_template('chatroomlist.tpl'), array(
@@ -1085,7 +1082,7 @@ function widget_photo($arr) {
function widget_cover_photo($arr) {
- require_once('include/identity.php');
+ require_once('include/channel.php');
$o = '';
if(App::$module == 'channel' && $_REQUEST['mid'])
diff --git a/include/zot.php b/include/zot.php
index 54a3fe640..ecfbfa128 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -329,8 +329,12 @@ function zot_refresh($them, $channel = null, $force = false) {
return false;
}
+ $token = random_string();
+
$postvars = array();
+ $postvars['token'] = $token;
+
if($channel) {
$postvars['target'] = $channel['channel_guid'];
$postvars['target_sig'] = $channel['channel_guid_sig'];
@@ -343,11 +347,13 @@ function zot_refresh($them, $channel = null, $force = false) {
$postvars['guid_hash'] = $them['xchan_hash'];
if (array_key_exists('xchan_guid',$them) && $them['xchan_guid']
&& array_key_exists('xchan_guid_sig',$them) && $them['xchan_guid_sig']) {
-
$postvars['guid'] = $them['xchan_guid'];
$postvars['guid_sig'] = $them['xchan_guid_sig'];
+
}
+ $token = random_string();
+
$rhs = '/.well-known/zot-info';
$result = z_post_url($url . $rhs,$postvars);
@@ -363,6 +369,22 @@ function zot_refresh($them, $channel = null, $force = false) {
return false;
}
+ $signed_token = ((is_array($j) && array_key_exists('signed_token',$j)) ? $j['signed_token'] : null);
+ if($signed_token) {
+ $valid = rsa_verify('token.' . $token,base64url_decode($signed_token),$j['key']);
+ if(! $valid) {
+ logger('invalid signed token: ' . $url . $rhs, LOGGER_NORMAL, LOG_ERR);
+ return false;
+ }
+ }
+ else {
+ logger('No signed token from ' . $url . $rhs, LOGGER_NORMAL, LOG_WARNING);
+ // after 2017-01-01 this will be a hard error unless you over-ride it.
+ if((time() > 1483228800) && (! get_config('system','allow_unsigned_zotfinger'))) {
+ return false;
+ }
+ }
+
$x = import_xchan($j, (($force) ? UPDATE_FLAGS_FORCED : UPDATE_FLAGS_UPDATED));
if(! $x['success'])
@@ -505,8 +527,7 @@ function zot_refresh($them, $channel = null, $force = false) {
if($new_connection) {
if($new_perms != $previous_perms)
Zotlabs\Daemon\Master::Summon(array('Notifier','permission_create',$new_connection[0]['abook_id']));
- require_once('include/enotify.php');
- notification(array(
+ Zotlabs\Lib\Enotify::submit(array(
'type' => NOTIFY_INTRO,
'from_xchan' => $x['hash'],
'to_xchan' => $channel['channel_hash'],
@@ -1332,7 +1353,7 @@ function zot_import($arr, $sender_url) {
*/
function public_recips($msg) {
- require_once('include/identity.php');
+ require_once('include/channel.php');
$check_mentions = false;
$include_sys = false;
@@ -1494,7 +1515,7 @@ function public_recips($msg) {
/**
* @brief
*
- * This is the second part of public_recipes().
+ * This is the second part of public_recips().
* We'll find all the channels willing to accept public posts from us, then
* match them against the sender privacy scope and see who in that list that
* the sender is allowing.
@@ -2945,8 +2966,6 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) {
if(UNO)
return;
- $a = get_app();
-
logger('build_sync_packet');
if($packet)
@@ -3222,7 +3241,6 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
$clean = array();
if($abook['abook_xchan'] && $abook['entry_deleted']) {
logger('process_channel_sync_delivery: removing abook entry for ' . $abook['abook_xchan']);
- require_once('include/Contact.php');
$r = q("select abook_id, abook_feed from abook where abook_xchan = '%s' and abook_channel = %d and abook_self = 0 limit 1",
dbesc($abook['abook_xchan']),
@@ -3672,6 +3690,8 @@ function zotinfo($arr) {
$zsig = ((x($arr,'target_sig')) ? $arr['target_sig'] : '');
$zkey = ((x($arr,'key')) ? $arr['key'] : '');
$mindate = ((x($arr,'mindate')) ? $arr['mindate'] : '');
+ $token = ((x($arr,'token')) ? $arr['token'] : '');
+
$feed = ((x($arr,'feed')) ? intval($arr['feed']) : 0);
if($ztarget) {
@@ -3816,6 +3836,10 @@ function zotinfo($arr) {
// Communication details
+ if($token)
+ $ret['signed_token'] = base64url_encode(rsa_sign('token.' . $token,$e['channel_prvkey']));
+
+
$ret['guid'] = $e['xchan_guid'];
$ret['guid_sig'] = $e['xchan_guid_sig'];
$ret['key'] = $e['xchan_pubkey'];
@@ -3920,7 +3944,7 @@ function zotinfo($arr) {
$ret['site']['accounts'] = account_total();
- require_once('include/identity.php');
+ require_once('include/channel.php');
$ret['site']['channels'] = channel_total();
@@ -3928,8 +3952,6 @@ function zotinfo($arr) {
$ret['site']['admin'] = get_config('system','admin_email');
- $a = get_app();
-
$visible_plugins = array();
if(is_array(App::$plugins) && count(App::$plugins)) {
$r = q("select * from addon where hidden = 0");
@@ -3944,7 +3966,7 @@ function zotinfo($arr) {
$ret['site']['sellpage'] = get_config('system','sellpage');
$ret['site']['location'] = get_config('system','site_location');
$ret['site']['realm'] = get_directory_realm();
- $ret['site']['project'] = Zotlabs\Lib\System::get_platform_name() . Zotlabs\Lib\System::get_server_role();
+ $ret['site']['project'] = Zotlabs\Lib\System::get_platform_name() . ' ' . Zotlabs\Lib\System::get_server_role();
}
@@ -4415,7 +4437,6 @@ function zot_reply_purge($sender,$recipients) {
$arr = $sender;
$sender_hash = make_xchan_hash($arr['guid'],$arr['guid_sig']);
- require_once('include/Contact.php');
remove_all_xchan_resources($sender_hash);
$ret['success'] = true;
diff --git a/index.php b/index.php
index 5a25e67c7..d47bda27e 100755
--- a/index.php
+++ b/index.php
@@ -1,183 +1,15 @@
<?php
-/**
- * @file index.php
- *
- * @brief The main entry point to the application.
- *
- * Bootstrap the application, load configuration, load modules, load theme, etc.
- */
-
-/*
- * bootstrap the application
- */
-require_once('boot.php');
-
-if(file_exists('.htsite.php'))
- include('.htsite.php');
-
-// our global App object
-
-$a = new miniApp;
-
-App::init();
-
-/*
- * Load the configuration file which contains our DB credentials.
- * Ignore errors. If the file doesn't exist or is empty, we are running in
- * installation mode.
- */
-
-App::$install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false : true);
-
-@include('.htconfig.php');
-
-if(! defined('UNO'))
- define('UNO', 0);
-
-$a->convert();
-
-App::$timezone = ((x($default_timezone)) ? $default_timezone : 'UTC');
-date_default_timezone_set(App::$timezone);
-
-
-/*
- * Try to open the database;
- */
-
-require_once('include/dba/dba_driver.php');
-
-if(! App::$install) {
- $db = dba_factory($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type, App::$install);
- if(! $db->connected) {
- system_unavailable();
- }
-
- unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
-
- /**
- * Load configs from db. Overwrite configs from .htconfig.php
- */
-
- load_config('config');
- load_config('system');
- load_config('feature');
-
- App::$session = new \Zotlabs\Web\Session();
- App::$session->init();
- load_hooks();
- call_hooks('init_1');
-
-}
-
-
- App::$language = get_best_language();
- load_translation_table(App::$language,App::$install);
+namespace Zotlabs\Web;
/**
+ * @file index.php
*
- * Important stuff we always need to do.
- *
- * The order of these may be important so use caution if you think they're all
- * intertwingled with no logical order and decide to sort it out. Some of the
- * dependencies have changed, but at least at one time in the recent past - the
- * order was critical to everything working properly
- *
- */
-
- if(App::$session) {
- App::$session->start();
- }
- else {
- session_start();
- register_shutdown_function('session_write_close');
- }
-
-/**
- * Language was set earlier, but we can over-ride it in the session.
- * We have to do it here because the session was just now opened.
- */
-
-if(array_key_exists('system_language',$_POST)) {
- if(strlen($_POST['system_language']))
- $_SESSION['language'] = $_POST['system_language'];
- else
- unset($_SESSION['language']);
-}
-if((x($_SESSION, 'language')) && ($_SESSION['language'] !== $lang)) {
- App::$language = $_SESSION['language'];
- load_translation_table(App::$language);
-}
-
-if((x($_GET,'zid')) && (! App::$install)) {
- App::$query_string = strip_zids(App::$query_string);
- if(! local_channel()) {
- $_SESSION['my_address'] = $_GET['zid'];
- zid_init($a);
- }
-}
-
-if((x($_SESSION, 'authenticated')) || (x($_POST, 'auth-params')) || (App::$module === 'login'))
- require('include/auth.php');
-
-if(! x($_SESSION, 'sysmsg'))
- $_SESSION['sysmsg'] = array();
-
-if(! x($_SESSION, 'sysmsg_info'))
- $_SESSION['sysmsg_info'] = array();
-
-/*
- * check_config() is responsible for running update scripts. These automatically
- * update the DB schema whenever we push a new one out. It also checks to see if
- * any plugins have been added or removed and reacts accordingly.
+ * @brief The main entry point to the application.
*/
+require_once('Zotlabs/Web/WebServer.php');
-if(App::$install) {
- /* Allow an exception for the view module so that pcss will be interpreted during installation */
- if(App::$module != 'view')
- App::$module = 'setup';
-}
-else
- check_config($a);
-
-nav_set_selected('nothing');
-
-$Router = new Zotlabs\Web\Router($a);
-
-/* initialise content region */
-
-if(! x(App::$page, 'content'))
- App::$page['content'] = '';
-
-call_hooks('page_content_top', App::$page['content']);
-
-
-$Router->Dispatch($a);
-
-
-// If you're just visiting, let javascript take you home
-
-if(x($_SESSION, 'visitor_home')) {
- $homebase = $_SESSION['visitor_home'];
-} elseif(local_channel()) {
- $homebase = z_root() . '/channel/' . App::$channel['channel_address'];
-}
-
-if(isset($homebase)) {
- App::$page['content'] .= '<script>var homebase = "' . $homebase . '";</script>';
-}
-
-// now that we've been through the module content, see if the page reported
-// a permission problem and if so, a 403 response would seem to be in order.
-
-if(stristr(implode("", $_SESSION['sysmsg']), t('Permission denied'))) {
- header($_SERVER['SERVER_PROTOCOL'] . ' 403 ' . t('Permission denied.'));
-}
-
-
-call_hooks('page_end', App::$page['content']);
-
-construct_page($a);
+$server = new WebServer();
+$server->run();
-killme();
diff --git a/install/INSTALL.txt b/install/INSTALL.txt
index efcf8c9af..50d755f0f 100644
--- a/install/INSTALL.txt
+++ b/install/INSTALL.txt
@@ -83,10 +83,9 @@ but may be an issue with nginx or other web server platforms.
php.ini file - and with no hosting provider restrictions on the use of
exec() and proc_open().
- - curl, gd (with at least jpeg and png support), mysqli, mbstring, mcrypt,
- and openssl extensions. The imagick extension is not required but desirable.
-
- - xml extension is required if you want webdav to work.
+ - curl, gd (with at least jpeg and png support), mysqli, mbstring, xml,
+ and openssl extensions. The imagick extension MAY be used instead of gd,
+ but is not required and MAY also be disabled via configuration option.
- some form of email server or email gateway such that PHP mail() works.
diff --git a/install/htconfig.sample.php b/install/htconfig.sample.php
index 5e506225e..c46805171 100755
--- a/install/htconfig.sample.php
+++ b/install/htconfig.sample.php
@@ -37,11 +37,11 @@ define( 'UNO', 0 );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = 'America/Los_Angeles';
+App::$config['system']['timezone'] = 'America/Los_Angeles';
// What is your site name? DO NOT ADD A TRAILING SLASH!
-App::$config['system']['baseurl'] = 'https://myredsite.example';
+App::$config['system']['baseurl'] = 'https://mysite.example';
App::$config['system']['sitename'] = "Hubzilla";
App::$config['system']['location_hash'] = 'if the auto install failed, put a unique random string here';
diff --git a/util/fresh b/util/fresh
index c70f1cac9..9d74ea584 100755
--- a/util/fresh
+++ b/util/fresh
@@ -68,9 +68,9 @@ function process_command($line) {
case 'finger':
if(argv(1)) {
- $x = zot_finger(argv(1),$channel);
+ $x = Zotlabs\Zot\Finger::run(argv(1),$channel);
if($x['success'])
- echo jindent($x['body']);
+ echo jindent($x);
}
break;
diff --git a/util/hmessages.po b/util/hmessages.po
index abc4d1a9f..c863c6a67 100644
--- a/util/hmessages.po
+++ b/util/hmessages.po
@@ -111,8 +111,8 @@ msgstr ""
#: ../../Zotlabs/Module/Editwebpage.php:146
#: ../../Zotlabs/Module/Layouts.php:190 ../../Zotlabs/Module/Menu.php:112
#: ../../Zotlabs/Module/Settings.php:652 ../../Zotlabs/Module/Thing.php:260
-#: ../../Zotlabs/Module/Webpages.php:187 ../../include/identity.php:937
-#: ../../include/identity.php:941 ../../include/ItemObject.php:100
+#: ../../Zotlabs/Module/Webpages.php:187 ../../include/channel.php:937
+#: ../../include/channel.php:941 ../../include/ItemObject.php:100
#: ../../include/menu.php:108 ../../include/page_widgets.php:8
#: ../../include/page_widgets.php:36 ../../include/apps.php:291
msgid "Edit"
@@ -247,7 +247,7 @@ msgstr ""
#: ../../Zotlabs/Module/Editwebpage.php:33
#: ../../Zotlabs/Module/Filestorage.php:60 ../../Zotlabs/Module/Hcard.php:12
#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Profile.php:20
-#: ../../Zotlabs/Module/Webpages.php:34 ../../include/identity.php:837
+#: ../../Zotlabs/Module/Webpages.php:34 ../../include/channel.php:837
msgid "Requested profile is not available."
msgstr ""
@@ -2030,8 +2030,8 @@ msgstr ""
#: ../../Zotlabs/Module/Settings.php:346 ../../Zotlabs/Module/Settings.php:347
#: ../../Zotlabs/Module/Settings.php:350 ../../Zotlabs/Module/Settings.php:361
#: ../../include/profile_selectors.php:80 ../../include/widgets.php:495
-#: ../../include/identity.php:389 ../../include/identity.php:390
-#: ../../include/identity.php:397
+#: ../../include/channel.php:389 ../../include/channel.php:390
+#: ../../include/channel.php:397
msgid "Friends"
msgstr ""
@@ -2236,7 +2236,7 @@ msgstr ""
msgid "%1$s updated their %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/identity.php:1807
+#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1807
msgid "cover photo"
msgstr ""
@@ -2318,12 +2318,12 @@ msgstr ""
msgid "Homepage: "
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:306 ../../include/identity.php:1329
+#: ../../Zotlabs/Module/Directory.php:306 ../../include/channel.php:1329
msgid "Age:"
msgstr ""
#: ../../Zotlabs/Module/Directory.php:311 ../../include/event.php:52
-#: ../../include/identity.php:1029 ../../include/text.php:1481
+#: ../../include/channel.php:1029 ../../include/text.php:1481
#: ../../include/bb2diaspora.php:509
msgid "Location:"
msgstr ""
@@ -2332,18 +2332,18 @@ msgstr ""
msgid "Description:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:322 ../../include/identity.php:1345
+#: ../../Zotlabs/Module/Directory.php:322 ../../include/channel.php:1345
msgid "Hometown:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:324 ../../include/identity.php:1353
+#: ../../Zotlabs/Module/Directory.php:324 ../../include/channel.php:1353
msgid "About:"
msgstr ""
#: ../../Zotlabs/Module/Directory.php:325 ../../Zotlabs/Module/Match.php:68
#: ../../Zotlabs/Module/Suggest.php:56 ../../include/Contact.php:101
#: ../../include/widgets.php:147 ../../include/widgets.php:184
-#: ../../include/identity.php:1014 ../../include/conversation.php:961
+#: ../../include/channel.php:1014 ../../include/conversation.php:961
msgid "Connect"
msgstr ""
@@ -4182,7 +4182,7 @@ msgstr ""
msgid "View all"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1130 ../../include/identity.php:1304
+#: ../../Zotlabs/Module/Photos.php:1130 ../../include/channel.php:1304
#: ../../include/ItemObject.php:179 ../../include/conversation.php:1748
#: ../../include/taxonomy.php:403
msgctxt "noun"
@@ -4243,13 +4243,13 @@ msgstr ""
msgid "added your channel"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:322 ../../include/identity.php:1123
-#: ../../include/identity.php:1199
+#: ../../Zotlabs/Module/Ping.php:322 ../../include/channel.php:1123
+#: ../../include/channel.php:1199
msgid "g A l F d"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:345 ../../include/identity.php:1169
-#: ../../include/identity.php:1239
+#: ../../Zotlabs/Module/Ping.php:345 ../../include/channel.php:1169
+#: ../../include/channel.php:1239
msgid "[today]"
msgstr ""
@@ -4387,7 +4387,7 @@ msgid "View this profile"
msgstr ""
#: ../../Zotlabs/Module/Profiles.php:693 ../../Zotlabs/Module/Profiles.php:775
-#: ../../include/identity.php:959
+#: ../../include/channel.php:959
msgid "Edit visibility"
msgstr ""
@@ -4399,7 +4399,7 @@ msgstr ""
msgid "Change cover photo"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:696 ../../include/identity.php:930
+#: ../../Zotlabs/Module/Profiles.php:696 ../../include/channel.php:930
msgid "Change profile photo"
msgstr ""
@@ -4560,11 +4560,11 @@ msgstr ""
msgid "My other channels"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:771 ../../include/identity.php:955
+#: ../../Zotlabs/Module/Profiles.php:771 ../../include/channel.php:955
msgid "Profile Image"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:781 ../../include/identity.php:937
+#: ../../Zotlabs/Module/Profiles.php:781 ../../include/channel.php:937
#: ../../include/nav.php:88
msgid "Edit Profiles"
msgstr ""
@@ -4577,7 +4577,7 @@ msgstr ""
msgid "Profile Visibility Editor"
msgstr ""
-#: ../../Zotlabs/Module/Profperm.php:117 ../../include/identity.php:1395
+#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1395
msgid "Profile"
msgstr ""
@@ -5190,7 +5190,7 @@ msgstr ""
msgid "Basic Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings.php:1040 ../../include/identity.php:1286
+#: ../../Zotlabs/Module/Settings.php:1040 ../../include/channel.php:1286
msgid "Full Name:"
msgstr ""
@@ -6952,185 +6952,185 @@ msgstr ""
msgid "Room is full"
msgstr ""
-#: ../../include/identity.php:32
+#: ../../include/channel.php:32
msgid "Unable to obtain identity information from database"
msgstr ""
-#: ../../include/identity.php:66
+#: ../../include/channel.php:66
msgid "Empty name"
msgstr ""
-#: ../../include/identity.php:69
+#: ../../include/channel.php:69
msgid "Name too long"
msgstr ""
-#: ../../include/identity.php:180
+#: ../../include/channel.php:180
msgid "No account identifier"
msgstr ""
-#: ../../include/identity.php:192
+#: ../../include/channel.php:192
msgid "Nickname is required."
msgstr ""
-#: ../../include/identity.php:206
+#: ../../include/channel.php:206
msgid "Reserved nickname. Please choose another."
msgstr ""
-#: ../../include/identity.php:211
+#: ../../include/channel.php:211
msgid ""
"Nickname has unsupported characters or is already being used on this site."
msgstr ""
-#: ../../include/identity.php:287
+#: ../../include/channel.php:287
msgid "Unable to retrieve created identity"
msgstr ""
-#: ../../include/identity.php:345
+#: ../../include/channel.php:345
msgid "Default Profile"
msgstr ""
-#: ../../include/identity.php:791
+#: ../../include/channel.php:791
msgid "Requested channel is not available."
msgstr ""
-#: ../../include/identity.php:938
+#: ../../include/channel.php:938
msgid "Create New Profile"
msgstr ""
-#: ../../include/identity.php:941 ../../include/nav.php:90
+#: ../../include/channel.php:941 ../../include/nav.php:90
msgid "Edit Profile"
msgstr ""
-#: ../../include/identity.php:958
+#: ../../include/channel.php:958
msgid "Visible to everybody"
msgstr ""
-#: ../../include/identity.php:1033 ../../include/identity.php:1288
+#: ../../include/channel.php:1033 ../../include/channel.php:1288
msgid "Gender:"
msgstr ""
-#: ../../include/identity.php:1034 ../../include/identity.php:1332
+#: ../../include/channel.php:1034 ../../include/channel.php:1332
msgid "Status:"
msgstr ""
-#: ../../include/identity.php:1035 ../../include/identity.php:1343
+#: ../../include/channel.php:1035 ../../include/channel.php:1343
msgid "Homepage:"
msgstr ""
-#: ../../include/identity.php:1036
+#: ../../include/channel.php:1036
msgid "Online Now"
msgstr ""
-#: ../../include/identity.php:1124 ../../include/identity.php:1200
+#: ../../include/channel.php:1124 ../../include/channel.php:1200
msgid "F d"
msgstr ""
-#: ../../include/identity.php:1180
+#: ../../include/channel.php:1180
msgid "Birthday Reminders"
msgstr ""
-#: ../../include/identity.php:1181
+#: ../../include/channel.php:1181
msgid "Birthdays this week:"
msgstr ""
-#: ../../include/identity.php:1232
+#: ../../include/channel.php:1232
msgid "[No description]"
msgstr ""
-#: ../../include/identity.php:1250
+#: ../../include/channel.php:1250
msgid "Event Reminders"
msgstr ""
-#: ../../include/identity.php:1251
+#: ../../include/channel.php:1251
msgid "Events this week:"
msgstr ""
-#: ../../include/identity.php:1293
+#: ../../include/channel.php:1293
msgid "Like this channel"
msgstr ""
-#: ../../include/identity.php:1317
+#: ../../include/channel.php:1317
msgid "j F, Y"
msgstr ""
-#: ../../include/identity.php:1318
+#: ../../include/channel.php:1318
msgid "j F"
msgstr ""
-#: ../../include/identity.php:1325
+#: ../../include/channel.php:1325
msgid "Birthday:"
msgstr ""
-#: ../../include/identity.php:1338
+#: ../../include/channel.php:1338
#, php-format
msgid "for %1$d %2$s"
msgstr ""
-#: ../../include/identity.php:1341
+#: ../../include/channel.php:1341
msgid "Sexual Preference:"
msgstr ""
-#: ../../include/identity.php:1347
+#: ../../include/channel.php:1347
msgid "Tags:"
msgstr ""
-#: ../../include/identity.php:1349
+#: ../../include/channel.php:1349
msgid "Political Views:"
msgstr ""
-#: ../../include/identity.php:1351
+#: ../../include/channel.php:1351
msgid "Religion:"
msgstr ""
-#: ../../include/identity.php:1355
+#: ../../include/channel.php:1355
msgid "Hobbies/Interests:"
msgstr ""
-#: ../../include/identity.php:1357
+#: ../../include/channel.php:1357
msgid "Likes:"
msgstr ""
-#: ../../include/identity.php:1359
+#: ../../include/channel.php:1359
msgid "Dislikes:"
msgstr ""
-#: ../../include/identity.php:1361
+#: ../../include/channel.php:1361
msgid "Contact information and Social Networks:"
msgstr ""
-#: ../../include/identity.php:1363
+#: ../../include/channel.php:1363
msgid "My other channels:"
msgstr ""
-#: ../../include/identity.php:1365
+#: ../../include/channel.php:1365
msgid "Musical interests:"
msgstr ""
-#: ../../include/identity.php:1367
+#: ../../include/channel.php:1367
msgid "Books, literature:"
msgstr ""
-#: ../../include/identity.php:1369
+#: ../../include/channel.php:1369
msgid "Television:"
msgstr ""
-#: ../../include/identity.php:1371
+#: ../../include/channel.php:1371
msgid "Film/dance/culture/entertainment:"
msgstr ""
-#: ../../include/identity.php:1373
+#: ../../include/channel.php:1373
msgid "Love/Romance:"
msgstr ""
-#: ../../include/identity.php:1375
+#: ../../include/channel.php:1375
msgid "Work/employment:"
msgstr ""
-#: ../../include/identity.php:1377
+#: ../../include/channel.php:1377
msgid "School/education:"
msgstr ""
-#: ../../include/identity.php:1397
+#: ../../include/channel.php:1397
msgid "Like this thing"
msgstr ""
diff --git a/util/messages.po b/util/messages.po
index f3c9782f3..dd847e9e0 100644
--- a/util/messages.po
+++ b/util/messages.po
@@ -1023,7 +1023,7 @@ msgstr ""
#: ../../include/widgets.php:136 ../../include/widgets.php:175
#: ../../include/Contact.php:107 ../../include/conversation.php:956
-#: ../../include/identity.php:956 ../../mod/directory.php:316
+#: ../../include/channel.php:956 ../../mod/directory.php:316
#: ../../mod/match.php:64 ../../mod/suggest.php:52
msgid "Connect"
msgstr ""
@@ -1088,8 +1088,8 @@ msgstr ""
msgid "Family"
msgstr ""
-#: ../../include/widgets.php:431 ../../include/identity.php:394
-#: ../../include/identity.php:395 ../../include/identity.php:402
+#: ../../include/widgets.php:431 ../../include/channel.php:394
+#: ../../include/channel.php:395 ../../include/channel.php:402
#: ../../include/profile_selectors.php:80 ../../mod/settings.php:345
#: ../../mod/settings.php:349 ../../mod/settings.php:350
#: ../../mod/settings.php:353 ../../mod/settings.php:364
@@ -1206,7 +1206,7 @@ msgid "Finishes:"
msgstr ""
#: ../../include/event.php:50 ../../include/bb2diaspora.php:481
-#: ../../include/identity.php:1007 ../../mod/directory.php:302
+#: ../../include/channel.php:1007 ../../mod/directory.php:302
#: ../../mod/events.php:684
msgid "Location:"
msgstr ""
@@ -1523,7 +1523,7 @@ msgid "View all"
msgstr ""
#: ../../include/ItemObject.php:179 ../../include/taxonomy.php:396
-#: ../../include/conversation.php:1712 ../../include/identity.php:1266
+#: ../../include/conversation.php:1712 ../../include/channel.php:1266
#: ../../mod/photos.php:1019
msgctxt "noun"
msgid "Like"
@@ -1775,7 +1775,7 @@ msgstr ""
msgid "Manage/Edit profiles"
msgstr ""
-#: ../../include/nav.php:95 ../../include/identity.php:979
+#: ../../include/nav.php:95 ../../include/channel.php:979
msgid "Edit Profile"
msgstr ""
@@ -3279,48 +3279,48 @@ msgstr ""
msgid "database storage failed."
msgstr ""
-#: ../../include/identity.php:33
+#: ../../include/channel.php:33
msgid "Unable to obtain identity information from database"
msgstr ""
-#: ../../include/identity.php:67
+#: ../../include/channel.php:67
msgid "Empty name"
msgstr ""
-#: ../../include/identity.php:70
+#: ../../include/channel.php:70
msgid "Name too long"
msgstr ""
-#: ../../include/identity.php:186
+#: ../../include/channel.php:186
msgid "No account identifier"
msgstr ""
-#: ../../include/identity.php:198
+#: ../../include/channel.php:198
msgid "Nickname is required."
msgstr ""
-#: ../../include/identity.php:212
+#: ../../include/channel.php:212
msgid "Reserved nickname. Please choose another."
msgstr ""
-#: ../../include/identity.php:217 ../../include/dimport.php:34
+#: ../../include/channel.php:217 ../../include/dimport.php:34
msgid ""
"Nickname has unsupported characters or is already being used on this site."
msgstr ""
-#: ../../include/identity.php:292
+#: ../../include/channel.php:292
msgid "Unable to retrieve created identity"
msgstr ""
-#: ../../include/identity.php:350
+#: ../../include/channel.php:350
msgid "Default Profile"
msgstr ""
-#: ../../include/identity.php:759
+#: ../../include/channel.php:759
msgid "Requested channel is not available."
msgstr ""
-#: ../../include/identity.php:806 ../../mod/profile.php:16
+#: ../../include/channel.php:806 ../../mod/profile.php:16
#: ../../mod/achievements.php:11 ../../mod/webpages.php:29
#: ../../mod/connect.php:13 ../../mod/hcard.php:8 ../../mod/blocks.php:29
#: ../../mod/editlayout.php:27 ../../mod/editwebpage.php:28
@@ -3329,193 +3329,193 @@ msgstr ""
msgid "Requested profile is not available."
msgstr ""
-#: ../../include/identity.php:969 ../../mod/profiles.php:774
+#: ../../include/channel.php:969 ../../mod/profiles.php:774
msgid "Change profile photo"
msgstr ""
-#: ../../include/identity.php:975
+#: ../../include/channel.php:975
msgid "Profiles"
msgstr ""
-#: ../../include/identity.php:975
+#: ../../include/channel.php:975
msgid "Manage/edit profiles"
msgstr ""
-#: ../../include/identity.php:976 ../../mod/profiles.php:775
+#: ../../include/channel.php:976 ../../mod/profiles.php:775
msgid "Create New Profile"
msgstr ""
-#: ../../include/identity.php:991 ../../mod/profiles.php:786
+#: ../../include/channel.php:991 ../../mod/profiles.php:786
msgid "Profile Image"
msgstr ""
-#: ../../include/identity.php:994
+#: ../../include/channel.php:994
msgid "visible to everybody"
msgstr ""
-#: ../../include/identity.php:995 ../../mod/profiles.php:669
+#: ../../include/channel.php:995 ../../mod/profiles.php:669
#: ../../mod/profiles.php:790
msgid "Edit visibility"
msgstr ""
-#: ../../include/identity.php:1011 ../../include/identity.php:1250
+#: ../../include/channel.php:1011 ../../include/channel.php:1250
msgid "Gender:"
msgstr ""
-#: ../../include/identity.php:1012 ../../include/identity.php:1294
+#: ../../include/channel.php:1012 ../../include/channel.php:1294
msgid "Status:"
msgstr ""
-#: ../../include/identity.php:1013 ../../include/identity.php:1305
+#: ../../include/channel.php:1013 ../../include/channel.php:1305
msgid "Homepage:"
msgstr ""
-#: ../../include/identity.php:1014
+#: ../../include/channel.php:1014
msgid "Online Now"
msgstr ""
-#: ../../include/identity.php:1097 ../../include/identity.php:1175
+#: ../../include/channel.php:1097 ../../include/channel.php:1175
#: ../../mod/ping.php:324
msgid "g A l F d"
msgstr ""
-#: ../../include/identity.php:1098 ../../include/identity.php:1176
+#: ../../include/channel.php:1098 ../../include/channel.php:1176
msgid "F d"
msgstr ""
-#: ../../include/identity.php:1143 ../../include/identity.php:1215
+#: ../../include/channel.php:1143 ../../include/channel.php:1215
#: ../../mod/ping.php:346
msgid "[today]"
msgstr ""
-#: ../../include/identity.php:1154
+#: ../../include/channel.php:1154
msgid "Birthday Reminders"
msgstr ""
-#: ../../include/identity.php:1155
+#: ../../include/channel.php:1155
msgid "Birthdays this week:"
msgstr ""
-#: ../../include/identity.php:1208
+#: ../../include/channel.php:1208
msgid "[No description]"
msgstr ""
-#: ../../include/identity.php:1226
+#: ../../include/channel.php:1226
msgid "Event Reminders"
msgstr ""
-#: ../../include/identity.php:1227
+#: ../../include/channel.php:1227
msgid "Events this week:"
msgstr ""
-#: ../../include/identity.php:1240 ../../include/identity.php:1357
+#: ../../include/channel.php:1240 ../../include/channel.php:1357
#: ../../include/apps.php:138 ../../mod/profperm.php:112
msgid "Profile"
msgstr ""
-#: ../../include/identity.php:1248 ../../mod/settings.php:1056
+#: ../../include/channel.php:1248 ../../mod/settings.php:1056
msgid "Full Name:"
msgstr ""
-#: ../../include/identity.php:1255
+#: ../../include/channel.php:1255
msgid "Like this channel"
msgstr ""
-#: ../../include/identity.php:1279
+#: ../../include/channel.php:1279
msgid "j F, Y"
msgstr ""
-#: ../../include/identity.php:1280
+#: ../../include/channel.php:1280
msgid "j F"
msgstr ""
-#: ../../include/identity.php:1287
+#: ../../include/channel.php:1287
msgid "Birthday:"
msgstr ""
-#: ../../include/identity.php:1291 ../../mod/directory.php:297
+#: ../../include/channel.php:1291 ../../mod/directory.php:297
msgid "Age:"
msgstr ""
-#: ../../include/identity.php:1300
+#: ../../include/channel.php:1300
#, php-format
msgid "for %1$d %2$s"
msgstr ""
-#: ../../include/identity.php:1303 ../../mod/profiles.php:691
+#: ../../include/channel.php:1303 ../../mod/profiles.php:691
msgid "Sexual Preference:"
msgstr ""
-#: ../../include/identity.php:1307 ../../mod/directory.php:313
+#: ../../include/channel.php:1307 ../../mod/directory.php:313
#: ../../mod/profiles.php:693
msgid "Hometown:"
msgstr ""
-#: ../../include/identity.php:1309
+#: ../../include/channel.php:1309
msgid "Tags:"
msgstr ""
-#: ../../include/identity.php:1311 ../../mod/profiles.php:694
+#: ../../include/channel.php:1311 ../../mod/profiles.php:694
msgid "Political Views:"
msgstr ""
-#: ../../include/identity.php:1313
+#: ../../include/channel.php:1313
msgid "Religion:"
msgstr ""
-#: ../../include/identity.php:1315 ../../mod/directory.php:315
+#: ../../include/channel.php:1315 ../../mod/directory.php:315
msgid "About:"
msgstr ""
-#: ../../include/identity.php:1317
+#: ../../include/channel.php:1317
msgid "Hobbies/Interests:"
msgstr ""
-#: ../../include/identity.php:1319 ../../mod/profiles.php:697
+#: ../../include/channel.php:1319 ../../mod/profiles.php:697
msgid "Likes:"
msgstr ""
-#: ../../include/identity.php:1321 ../../mod/profiles.php:698
+#: ../../include/channel.php:1321 ../../mod/profiles.php:698
msgid "Dislikes:"
msgstr ""
-#: ../../include/identity.php:1323
+#: ../../include/channel.php:1323
msgid "Contact information and Social Networks:"
msgstr ""
-#: ../../include/identity.php:1325
+#: ../../include/channel.php:1325
msgid "My other channels:"
msgstr ""
-#: ../../include/identity.php:1327
+#: ../../include/channel.php:1327
msgid "Musical interests:"
msgstr ""
-#: ../../include/identity.php:1329
+#: ../../include/channel.php:1329
msgid "Books, literature:"
msgstr ""
-#: ../../include/identity.php:1331
+#: ../../include/channel.php:1331
msgid "Television:"
msgstr ""
-#: ../../include/identity.php:1333
+#: ../../include/channel.php:1333
msgid "Film/dance/culture/entertainment:"
msgstr ""
-#: ../../include/identity.php:1335
+#: ../../include/channel.php:1335
msgid "Love/Romance:"
msgstr ""
-#: ../../include/identity.php:1337
+#: ../../include/channel.php:1337
msgid "Work/employment:"
msgstr ""
-#: ../../include/identity.php:1339
+#: ../../include/channel.php:1339
msgid "School/education:"
msgstr ""
-#: ../../include/identity.php:1359
+#: ../../include/channel.php:1359
msgid "Like this thing"
msgstr ""
diff --git a/view/cs/htconfig.tpl b/view/cs/htconfig.tpl
index d0a799cf6..802b31b49 100644
--- a/view/cs/htconfig.tpl
+++ b/view/cs/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/de/hmessages.po b/view/de/hmessages.po
index 966acced9..b2657a242 100644
--- a/view/de/hmessages.po
+++ b/view/de/hmessages.po
@@ -23,8 +23,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-13 00:02-0700\n"
-"PO-Revision-Date: 2016-05-16 12:43+0000\n"
+"POT-Creation-Date: 2016-05-20 00:02-0700\n"
+"PO-Revision-Date: 2016-05-21 14:16+0000\n"
"Last-Translator: Phellmes <forum@suschka.de>\n"
"Language-Team: German (http://www.transifex.com/Friendica/red-matrix/language/de/)\n"
"MIME-Version: 1.0\n"
@@ -82,14 +82,14 @@ msgstr "Summe"
msgid "Shared"
msgstr "Geteilt"
-#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:303
+#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:305
#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:182
#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/New_channel.php:142
#: ../../Zotlabs/Module/Webpages.php:186
msgid "Create"
msgstr "Erstelle"
-#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:305
+#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:307
#: ../../Zotlabs/Module/Cover_photo.php:357
#: ../../Zotlabs/Module/Photos.php:825 ../../Zotlabs/Module/Photos.php:1367
#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1519
@@ -117,7 +117,7 @@ msgstr "Größe"
msgid "Last Modified"
msgstr "Zuletzt geändert"
-#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Admin.php:2075
+#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Admin.php:2089
#: ../../Zotlabs/Module/Blocks.php:157
#: ../../Zotlabs/Module/Connections.php:290
#: ../../Zotlabs/Module/Connections.php:310
@@ -135,7 +135,7 @@ msgid "Edit"
msgstr "Bearbeiten"
#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Admin.php:1043
-#: ../../Zotlabs/Module/Admin.php:1202 ../../Zotlabs/Module/Admin.php:2076
+#: ../../Zotlabs/Module/Admin.php:1202 ../../Zotlabs/Module/Admin.php:2090
#: ../../Zotlabs/Module/Blocks.php:159
#: ../../Zotlabs/Module/Connections.php:263
#: ../../Zotlabs/Module/Connedit.php:573
@@ -149,25 +149,25 @@ msgstr "Bearbeiten"
msgid "Delete"
msgstr "Löschen"
-#: ../../Zotlabs/Storage/Browser.php:282
+#: ../../Zotlabs/Storage/Browser.php:284
#, php-format
msgid "You are using %1$s of your available file storage."
msgstr "Sie verwenden %1$s von Ihrem verfügbaren Dateispeicher."
-#: ../../Zotlabs/Storage/Browser.php:287
+#: ../../Zotlabs/Storage/Browser.php:289
#, php-format
msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
msgstr "Sie verwenden %1$s von %2$s verfügbarem Dateispeicher. (%3$s&#37;)"
-#: ../../Zotlabs/Storage/Browser.php:299
+#: ../../Zotlabs/Storage/Browser.php:301
msgid "WARNING:"
msgstr "WARNUNG:"
-#: ../../Zotlabs/Storage/Browser.php:302
+#: ../../Zotlabs/Storage/Browser.php:304
msgid "Create new folder"
msgstr "Neuen Ordner anlegen"
-#: ../../Zotlabs/Storage/Browser.php:304
+#: ../../Zotlabs/Storage/Browser.php:306
msgid "Upload file"
msgstr "Datei hochladen"
@@ -213,7 +213,7 @@ msgstr "Datei hochladen"
#: ../../Zotlabs/Module/Profile_photo.php:256
#: ../../Zotlabs/Module/Profile_photo.php:269
#: ../../Zotlabs/Module/Profiles.php:202 ../../Zotlabs/Module/Profiles.php:600
-#: ../../Zotlabs/Module/Rate.php:115 ../../Zotlabs/Module/Register.php:77
+#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Register.php:77
#: ../../Zotlabs/Module/Regmod.php:21
#: ../../Zotlabs/Module/Service_limits.php:11
#: ../../Zotlabs/Module/Settings.php:572 ../../Zotlabs/Module/Setup.php:238
@@ -224,14 +224,14 @@ msgstr "Datei hochladen"
#: ../../Zotlabs/Module/Viewconnections.php:26
#: ../../Zotlabs/Module/Viewconnections.php:31
#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:74
-#: ../../include/photos.php:29 ../../include/chat.php:133
-#: ../../include/items.php:3439 ../../include/attach.php:141
-#: ../../include/attach.php:189 ../../include/attach.php:252
-#: ../../include/attach.php:266 ../../include/attach.php:273
-#: ../../include/attach.php:338 ../../include/attach.php:352
-#: ../../include/attach.php:359 ../../include/attach.php:437
-#: ../../include/attach.php:895 ../../include/attach.php:966
-#: ../../include/attach.php:1118 ../../index.php:174
+#: ../../include/chat.php:133 ../../include/photos.php:29
+#: ../../include/attach.php:141 ../../include/attach.php:189
+#: ../../include/attach.php:252 ../../include/attach.php:266
+#: ../../include/attach.php:273 ../../include/attach.php:338
+#: ../../include/attach.php:352 ../../include/attach.php:359
+#: ../../include/attach.php:437 ../../include/attach.php:895
+#: ../../include/attach.php:966 ../../include/attach.php:1118
+#: ../../include/items.php:3439 ../../index.php:175
msgid "Permission denied."
msgstr "Berechtigung verweigert."
@@ -284,7 +284,7 @@ msgid "Theme settings updated."
msgstr "Theme-Einstellungen aktualisiert."
#: ../../Zotlabs/Module/Admin.php:164 ../../Zotlabs/Module/Admin.php:1239
-#: ../../Zotlabs/Module/Admin.php:1541 ../../Zotlabs/Module/Display.php:44
+#: ../../Zotlabs/Module/Admin.php:1543 ../../Zotlabs/Module/Display.php:44
#: ../../Zotlabs/Module/Filestorage.php:33 ../../Zotlabs/Module/Thing.php:89
#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3360
msgid "Item not found."
@@ -330,8 +330,8 @@ msgstr "Die installierte Software sollte aktualisiert werden"
#: ../../Zotlabs/Module/Admin.php:711 ../../Zotlabs/Module/Admin.php:755
#: ../../Zotlabs/Module/Admin.php:1034 ../../Zotlabs/Module/Admin.php:1198
#: ../../Zotlabs/Module/Admin.php:1313 ../../Zotlabs/Module/Admin.php:1403
-#: ../../Zotlabs/Module/Admin.php:1592 ../../Zotlabs/Module/Admin.php:1626
-#: ../../Zotlabs/Module/Admin.php:1711
+#: ../../Zotlabs/Module/Admin.php:1594 ../../Zotlabs/Module/Admin.php:1628
+#: ../../Zotlabs/Module/Admin.php:1713
msgid "Administration"
msgstr "Administration"
@@ -400,7 +400,7 @@ msgstr "nicht unterstützt"
#: ../../Zotlabs/Module/Settings.php:581 ../../include/dir_fns.php:141
#: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143
#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1619
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1633
msgid "No"
msgstr "Nein"
@@ -420,7 +420,7 @@ msgstr "Ja - mit Zustimmung"
#: ../../Zotlabs/Module/Settings.php:581 ../../include/dir_fns.php:141
#: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143
#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1619
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1633
msgid "Yes"
msgstr "Ja"
@@ -447,10 +447,10 @@ msgstr "Seite"
#: ../../Zotlabs/Module/Admin.php:492 ../../Zotlabs/Module/Admin.php:688
#: ../../Zotlabs/Module/Admin.php:771 ../../Zotlabs/Module/Admin.php:1036
#: ../../Zotlabs/Module/Admin.php:1200 ../../Zotlabs/Module/Admin.php:1405
-#: ../../Zotlabs/Module/Admin.php:1628 ../../Zotlabs/Module/Admin.php:1713
-#: ../../Zotlabs/Module/Admin.php:2078 ../../Zotlabs/Module/Appman.php:125
+#: ../../Zotlabs/Module/Admin.php:1630 ../../Zotlabs/Module/Admin.php:1715
+#: ../../Zotlabs/Module/Admin.php:2092 ../../Zotlabs/Module/Appman.php:125
#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Chat.php:194
-#: ../../Zotlabs/Module/Chat.php:236 ../../Zotlabs/Module/Connect.php:97
+#: ../../Zotlabs/Module/Chat.php:236 ../../Zotlabs/Module/Connect.php:98
#: ../../Zotlabs/Module/Connedit.php:734 ../../Zotlabs/Module/Events.php:475
#: ../../Zotlabs/Module/Events.php:672
#: ../../Zotlabs/Module/Filestorage.php:162
@@ -463,7 +463,7 @@ msgstr "Seite"
#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Photos.php:677
#: ../../Zotlabs/Module/Photos.php:1052 ../../Zotlabs/Module/Photos.php:1092
#: ../../Zotlabs/Module/Photos.php:1210 ../../Zotlabs/Module/Poke.php:186
-#: ../../Zotlabs/Module/Profiles.php:691 ../../Zotlabs/Module/Rate.php:172
+#: ../../Zotlabs/Module/Profiles.php:691 ../../Zotlabs/Module/Rate.php:170
#: ../../Zotlabs/Module/Settings.php:590 ../../Zotlabs/Module/Settings.php:703
#: ../../Zotlabs/Module/Settings.php:731 ../../Zotlabs/Module/Settings.php:754
#: ../../Zotlabs/Module/Settings.php:842
@@ -1012,7 +1012,7 @@ msgstr "Antragsdatum"
#: ../../Zotlabs/Module/Admin.php:1039 ../../Zotlabs/Module/Admin.php:1048
#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
-#: ../../include/contact_selectors.php:81 ../../boot.php:1617
+#: ../../include/contact_selectors.php:81 ../../boot.php:1631
msgid "Email"
msgstr "E-Mail"
@@ -1174,11 +1174,11 @@ msgstr "Plug-In %s deaktiviert."
msgid "Plugin %s enabled."
msgstr "Plug-In %s aktiviert."
-#: ../../Zotlabs/Module/Admin.php:1282 ../../Zotlabs/Module/Admin.php:1565
+#: ../../Zotlabs/Module/Admin.php:1282 ../../Zotlabs/Module/Admin.php:1567
msgid "Disable"
msgstr "Deaktivieren"
-#: ../../Zotlabs/Module/Admin.php:1285 ../../Zotlabs/Module/Admin.php:1567
+#: ../../Zotlabs/Module/Admin.php:1285 ../../Zotlabs/Module/Admin.php:1569
msgid "Enable"
msgstr "Aktivieren"
@@ -1187,21 +1187,21 @@ msgstr "Aktivieren"
msgid "Plugins"
msgstr "Plug-Ins"
-#: ../../Zotlabs/Module/Admin.php:1315 ../../Zotlabs/Module/Admin.php:1594
+#: ../../Zotlabs/Module/Admin.php:1315 ../../Zotlabs/Module/Admin.php:1596
msgid "Toggle"
msgstr "Umschalten"
-#: ../../Zotlabs/Module/Admin.php:1316 ../../Zotlabs/Module/Admin.php:1595
+#: ../../Zotlabs/Module/Admin.php:1316 ../../Zotlabs/Module/Admin.php:1597
#: ../../include/widgets.php:638 ../../include/nav.php:208
#: ../../include/apps.php:166
msgid "Settings"
msgstr "Einstellungen"
-#: ../../Zotlabs/Module/Admin.php:1323 ../../Zotlabs/Module/Admin.php:1604
+#: ../../Zotlabs/Module/Admin.php:1323 ../../Zotlabs/Module/Admin.php:1606
msgid "Author: "
msgstr "Autor: "
-#: ../../Zotlabs/Module/Admin.php:1324 ../../Zotlabs/Module/Admin.php:1605
+#: ../../Zotlabs/Module/Admin.php:1324 ../../Zotlabs/Module/Admin.php:1607
msgid "Maintainer: "
msgstr "Betreuer:"
@@ -1261,146 +1261,154 @@ msgid "Cancel"
msgstr "Abbrechen"
#: ../../Zotlabs/Module/Admin.php:1411
-msgid "Add Plugin Repo"
-msgstr "Plugin-Repository hinzufügen"
+msgid "Manage Repos"
+msgstr "Repositorien verwalten"
+
+#: ../../Zotlabs/Module/Admin.php:1412
+msgid "Installed Plugin Repositories"
+msgstr "Installierte Plugin-Repositorien"
+
+#: ../../Zotlabs/Module/Admin.php:1413
+msgid "Install a New Plugin Repository"
+msgstr "Ein neues Plugin-Repository installieren"
-#: ../../Zotlabs/Module/Admin.php:1417 ../../Zotlabs/Module/Settings.php:77
+#: ../../Zotlabs/Module/Admin.php:1419 ../../Zotlabs/Module/Settings.php:77
#: ../../Zotlabs/Module/Settings.php:616 ../../include/apps.php:284
msgid "Update"
msgstr "Aktualisieren"
-#: ../../Zotlabs/Module/Admin.php:1418
+#: ../../Zotlabs/Module/Admin.php:1420
msgid "Switch branch"
msgstr "Zweig/Branch wechseln"
-#: ../../Zotlabs/Module/Admin.php:1419 ../../Zotlabs/Module/Photos.php:998
+#: ../../Zotlabs/Module/Admin.php:1421 ../../Zotlabs/Module/Photos.php:998
#: ../../Zotlabs/Module/Tagrm.php:137
msgid "Remove"
-msgstr "Entferne"
+msgstr "Entfernen"
-#: ../../Zotlabs/Module/Admin.php:1530
+#: ../../Zotlabs/Module/Admin.php:1532
msgid "No themes found."
msgstr "Keine Theme gefunden."
-#: ../../Zotlabs/Module/Admin.php:1586
+#: ../../Zotlabs/Module/Admin.php:1588
msgid "Screenshot"
msgstr "Bildschirmfoto"
-#: ../../Zotlabs/Module/Admin.php:1593 ../../Zotlabs/Module/Admin.php:1627
+#: ../../Zotlabs/Module/Admin.php:1595 ../../Zotlabs/Module/Admin.php:1629
#: ../../include/widgets.php:1389
msgid "Themes"
msgstr "Themes"
-#: ../../Zotlabs/Module/Admin.php:1632
+#: ../../Zotlabs/Module/Admin.php:1634
msgid "[Experimental]"
msgstr "[Experimentell]"
-#: ../../Zotlabs/Module/Admin.php:1633
+#: ../../Zotlabs/Module/Admin.php:1635
msgid "[Unsupported]"
msgstr "[Nicht unterstützt]"
-#: ../../Zotlabs/Module/Admin.php:1657
+#: ../../Zotlabs/Module/Admin.php:1659
msgid "Log settings updated."
msgstr "Protokoll-Einstellungen aktualisiert."
-#: ../../Zotlabs/Module/Admin.php:1712 ../../include/widgets.php:1410
+#: ../../Zotlabs/Module/Admin.php:1714 ../../include/widgets.php:1410
#: ../../include/widgets.php:1420
msgid "Logs"
msgstr "Protokolle"
-#: ../../Zotlabs/Module/Admin.php:1714
+#: ../../Zotlabs/Module/Admin.php:1716
msgid "Clear"
msgstr "Leeren"
-#: ../../Zotlabs/Module/Admin.php:1720
+#: ../../Zotlabs/Module/Admin.php:1722
msgid "Debugging"
msgstr "Debugging"
-#: ../../Zotlabs/Module/Admin.php:1721
+#: ../../Zotlabs/Module/Admin.php:1723
msgid "Log file"
msgstr "Protokolldatei"
-#: ../../Zotlabs/Module/Admin.php:1721
+#: ../../Zotlabs/Module/Admin.php:1723
msgid ""
"Must be writable by web server. Relative to your Red top-level directory."
msgstr "Muss für den Webserver schreibbar sein. Relativ zum $Projectname-Stammverzeichnis."
-#: ../../Zotlabs/Module/Admin.php:1722
+#: ../../Zotlabs/Module/Admin.php:1724
msgid "Log level"
msgstr "Protokollstufe"
-#: ../../Zotlabs/Module/Admin.php:1990
+#: ../../Zotlabs/Module/Admin.php:2004
msgid "New Profile Field"
msgstr "Neues Profilfeld"
-#: ../../Zotlabs/Module/Admin.php:1991 ../../Zotlabs/Module/Admin.php:2011
+#: ../../Zotlabs/Module/Admin.php:2005 ../../Zotlabs/Module/Admin.php:2025
msgid "Field nickname"
msgstr "Kurzname für das Feld"
-#: ../../Zotlabs/Module/Admin.php:1991 ../../Zotlabs/Module/Admin.php:2011
+#: ../../Zotlabs/Module/Admin.php:2005 ../../Zotlabs/Module/Admin.php:2025
msgid "System name of field"
msgstr "Systemname des Feldes"
-#: ../../Zotlabs/Module/Admin.php:1992 ../../Zotlabs/Module/Admin.php:2012
+#: ../../Zotlabs/Module/Admin.php:2006 ../../Zotlabs/Module/Admin.php:2026
msgid "Input type"
msgstr "Art des Inhalts"
-#: ../../Zotlabs/Module/Admin.php:1993 ../../Zotlabs/Module/Admin.php:2013
+#: ../../Zotlabs/Module/Admin.php:2007 ../../Zotlabs/Module/Admin.php:2027
msgid "Field Name"
msgstr "Feldname"
-#: ../../Zotlabs/Module/Admin.php:1993 ../../Zotlabs/Module/Admin.php:2013
+#: ../../Zotlabs/Module/Admin.php:2007 ../../Zotlabs/Module/Admin.php:2027
msgid "Label on profile pages"
msgstr "Bezeichnung auf Profilseiten"
-#: ../../Zotlabs/Module/Admin.php:1994 ../../Zotlabs/Module/Admin.php:2014
+#: ../../Zotlabs/Module/Admin.php:2008 ../../Zotlabs/Module/Admin.php:2028
msgid "Help text"
msgstr "Hilfetext"
-#: ../../Zotlabs/Module/Admin.php:1994 ../../Zotlabs/Module/Admin.php:2014
+#: ../../Zotlabs/Module/Admin.php:2008 ../../Zotlabs/Module/Admin.php:2028
msgid "Additional info (optional)"
msgstr "Zusätzliche Informationen (optional)"
-#: ../../Zotlabs/Module/Admin.php:1995 ../../Zotlabs/Module/Admin.php:2015
+#: ../../Zotlabs/Module/Admin.php:2009 ../../Zotlabs/Module/Admin.php:2029
#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Rbmark.php:32
#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/widgets.php:201
#: ../../include/text.php:934 ../../include/text.php:946
msgid "Save"
msgstr "Speichern"
-#: ../../Zotlabs/Module/Admin.php:2004
+#: ../../Zotlabs/Module/Admin.php:2018
msgid "Field definition not found"
msgstr "Feld-Definition nicht gefunden"
-#: ../../Zotlabs/Module/Admin.php:2010
+#: ../../Zotlabs/Module/Admin.php:2024
msgid "Edit Profile Field"
msgstr "Profilfeld bearbeiten"
-#: ../../Zotlabs/Module/Admin.php:2068 ../../include/widgets.php:1391
+#: ../../Zotlabs/Module/Admin.php:2082 ../../include/widgets.php:1391
msgid "Profile Fields"
msgstr "Profil Felder"
-#: ../../Zotlabs/Module/Admin.php:2069
+#: ../../Zotlabs/Module/Admin.php:2083
msgid "Basic Profile Fields"
msgstr "Notwendige Profil Felder"
-#: ../../Zotlabs/Module/Admin.php:2070
+#: ../../Zotlabs/Module/Admin.php:2084
msgid "Advanced Profile Fields"
msgstr "Erweiterte Profil Felder"
-#: ../../Zotlabs/Module/Admin.php:2070
+#: ../../Zotlabs/Module/Admin.php:2084
msgid "(In addition to basic fields)"
msgstr "(zusätzlich zu notwendige Felder)"
-#: ../../Zotlabs/Module/Admin.php:2072
+#: ../../Zotlabs/Module/Admin.php:2086
msgid "All available fields"
msgstr "Alle verfügbaren Felder"
-#: ../../Zotlabs/Module/Admin.php:2073
+#: ../../Zotlabs/Module/Admin.php:2087
msgid "Custom Fields"
msgstr "Benutzerdefinierte Felder"
-#: ../../Zotlabs/Module/Admin.php:2077
+#: ../../Zotlabs/Module/Admin.php:2091
msgid "Create Custom Field"
msgstr "Erstelle benutzerdefiniertes Feld"
@@ -1676,7 +1684,7 @@ msgstr "Verfall von Chats (Minuten)"
#: ../../Zotlabs/Module/Chat.php:233 ../../Zotlabs/Module/Filestorage.php:153
#: ../../Zotlabs/Module/Photos.php:671 ../../Zotlabs/Module/Photos.php:1045
#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:359
-#: ../../include/acl_selectors.php:285
+#: ../../include/acl_selectors.php:288
msgid "Permissions"
msgstr "Berechtigungen"
@@ -1722,46 +1730,46 @@ msgstr "Gemeinsame Verbindungen"
msgid "No connections in common."
msgstr "Keine gemeinsamen Verbindungen."
-#: ../../Zotlabs/Module/Connect.php:60 ../../Zotlabs/Module/Connect.php:108
+#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109
msgid "Continue"
msgstr "Fortfahren"
-#: ../../Zotlabs/Module/Connect.php:89
+#: ../../Zotlabs/Module/Connect.php:90
msgid "Premium Channel Setup"
msgstr "Premium-Kanal-Einrichtung"
-#: ../../Zotlabs/Module/Connect.php:91
+#: ../../Zotlabs/Module/Connect.php:92
msgid "Enable premium channel connection restrictions"
msgstr "Einschränkungen für einen Premium-Kanal aktivieren"
-#: ../../Zotlabs/Module/Connect.php:92
+#: ../../Zotlabs/Module/Connect.php:93
msgid ""
"Please enter your restrictions or conditions, such as paypal receipt, usage "
"guidelines, etc."
msgstr "Bitte gib Deine Nutzungsbedingungen ein, z.B. Paypal-Quittung, Richtlinien etc."
-#: ../../Zotlabs/Module/Connect.php:94 ../../Zotlabs/Module/Connect.php:114
+#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115
msgid ""
"This channel may require additional steps or acknowledgement of the "
"following conditions prior to connecting:"
msgstr "Unter Umständen sind weitere Schritte oder die Bestätigung der folgenden Bedingungen vor dem Verbinden mit diesem Kanal nötig."
-#: ../../Zotlabs/Module/Connect.php:95
+#: ../../Zotlabs/Module/Connect.php:96
msgid ""
"Potential connections will then see the following text before proceeding:"
msgstr "Potentielle Kontakte werden den folgenden Text sehen, bevor fortgefahren wird:"
-#: ../../Zotlabs/Module/Connect.php:96 ../../Zotlabs/Module/Connect.php:117
+#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118
msgid ""
"By continuing, I certify that I have complied with any instructions provided"
" on this page."
msgstr "Indem ich fortfahre, bestätige ich die Erfüllung aller Anweisungen auf dieser Seite."
-#: ../../Zotlabs/Module/Connect.php:105
+#: ../../Zotlabs/Module/Connect.php:106
msgid "(No specific instructions have been provided by the channel owner.)"
msgstr "(Der Kanal-Besitzer hat keine speziellen Anweisungen hinterlegt.)"
-#: ../../Zotlabs/Module/Connect.php:113
+#: ../../Zotlabs/Module/Connect.php:114
msgid "Restricted or Premium Channel"
msgstr "Eingeschränkter oder Premium-Kanal"
@@ -1887,9 +1895,9 @@ msgid "Connections"
msgstr "Verbindungen"
#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44
-#: ../../include/acl_selectors.php:278 ../../include/nav.php:165
-#: ../../include/text.php:933 ../../include/text.php:945
-#: ../../include/apps.php:179
+#: ../../include/nav.php:165 ../../include/text.php:933
+#: ../../include/text.php:945 ../../include/apps.php:179
+#: ../../include/acl_selectors.php:281
msgid "Search"
msgstr "Suche"
@@ -2039,9 +2047,9 @@ msgstr "Familie"
#: ../../Zotlabs/Module/Connedit.php:595 ../../Zotlabs/Module/Settings.php:342
#: ../../Zotlabs/Module/Settings.php:346 ../../Zotlabs/Module/Settings.php:347
#: ../../Zotlabs/Module/Settings.php:350 ../../Zotlabs/Module/Settings.php:361
+#: ../../include/profile_selectors.php:80 ../../include/widgets.php:495
#: ../../include/identity.php:389 ../../include/identity.php:390
-#: ../../include/identity.php:397 ../../include/profile_selectors.php:80
-#: ../../include/widgets.php:495
+#: ../../include/identity.php:397
msgid "Friends"
msgstr "Freunde"
@@ -2112,7 +2120,7 @@ msgstr "Verbindungswerkzeuge"
msgid "Slide to adjust your degree of friendship"
msgstr "Verschieben, um den Grad der Freundschaft zu einzustellen"
-#: ../../Zotlabs/Module/Connedit.php:717 ../../Zotlabs/Module/Rate.php:161
+#: ../../Zotlabs/Module/Connedit.php:717 ../../Zotlabs/Module/Rate.php:159
#: ../../include/js_strings.php:20
msgid "Rating"
msgstr "Bewertung"
@@ -2333,8 +2341,8 @@ msgstr "Webseite:"
msgid "Age:"
msgstr "Alter:"
-#: ../../Zotlabs/Module/Directory.php:311 ../../include/identity.php:1029
-#: ../../include/event.php:52 ../../include/text.php:1481
+#: ../../Zotlabs/Module/Directory.php:311 ../../include/event.php:52
+#: ../../include/identity.php:1029 ../../include/text.php:1481
#: ../../include/bb2diaspora.php:509
msgid "Location:"
msgstr "Ort:"
@@ -2352,9 +2360,9 @@ msgid "About:"
msgstr "Über:"
#: ../../Zotlabs/Module/Directory.php:325 ../../Zotlabs/Module/Match.php:68
-#: ../../Zotlabs/Module/Suggest.php:56 ../../include/identity.php:1014
+#: ../../Zotlabs/Module/Suggest.php:56 ../../include/Contact.php:101
#: ../../include/widgets.php:147 ../../include/widgets.php:184
-#: ../../include/Contact.php:101 ../../include/conversation.php:961
+#: ../../include/identity.php:1014 ../../include/conversation.php:961
msgid "Connect"
msgstr "Verbinden"
@@ -2435,7 +2443,7 @@ msgstr "Dieser Verzeichnisserver benötigt einen Zugriffstoken"
#: ../../Zotlabs/Module/Group.php:72 ../../Zotlabs/Module/Import_items.php:112
#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Profperm.php:28
#: ../../Zotlabs/Module/Subthread.php:62 ../../include/items.php:383
-#: ../../index.php:173
+#: ../../index.php:174
msgid "Permission denied"
msgstr "Keine Berechtigung"
@@ -3362,7 +3370,7 @@ msgid ""
"Password reset failed."
msgstr "Die Anfrage konnte nicht verifiziert werden. (Vielleicht hast Du schon einmal auf den Link in der E-Mail geklickt?) Passwort-Rücksetzung fehlgeschlagen."
-#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1623
+#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1637
msgid "Password Reset"
msgstr "Zurücksetzen des Kennworts"
@@ -4233,8 +4241,8 @@ msgctxt "noun"
msgid "Dislikes"
msgstr "Gefällt nicht"
-#: ../../Zotlabs/Module/Photos.php:1263 ../../include/acl_selectors.php:287
-#: ../../include/ItemObject.php:384
+#: ../../Zotlabs/Module/Photos.php:1263 ../../include/ItemObject.php:384
+#: ../../include/acl_selectors.php:290
msgid "Close"
msgstr "Schließen"
@@ -4626,6 +4634,10 @@ msgstr "Zugriffstyp"
msgid "Registration Policy"
msgstr "Registrierungsrichtlinien"
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Software"
+msgstr "Software"
+
#: ../../Zotlabs/Module/Pubsites.php:31 ../../Zotlabs/Module/Ratings.php:103
#: ../../include/conversation.php:964
msgid "Ratings"
@@ -4635,20 +4647,20 @@ msgstr "Bewertungen"
msgid "Rate"
msgstr "Bewerten"
-#: ../../Zotlabs/Module/Rate.php:162
+#: ../../Zotlabs/Module/Rate.php:160
msgid "Website:"
msgstr "Webseite:"
-#: ../../Zotlabs/Module/Rate.php:165
+#: ../../Zotlabs/Module/Rate.php:163
#, php-format
msgid "Remote Channel [%s] (not yet known on this site)"
msgstr "Kanal [%s] (auf diesem Server noch unbekannt)"
-#: ../../Zotlabs/Module/Rate.php:166
+#: ../../Zotlabs/Module/Rate.php:164
msgid "Rating (this information is public)"
msgstr "Bewertung (öffentlich sichtbar)"
-#: ../../Zotlabs/Module/Rate.php:167
+#: ../../Zotlabs/Module/Rate.php:165
msgid "Optionally explain your rating (this information is public)"
msgstr "Optional kannst du deine Bewertung erklären (öffentlich sichtbar)"
@@ -4772,7 +4784,7 @@ msgid "Membership on this site is by invitation only."
msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich."
#: ../../Zotlabs/Module/Register.php:262 ../../include/nav.php:147
-#: ../../boot.php:1597
+#: ../../boot.php:1611
msgid "Register"
msgstr "Registrieren"
@@ -5287,10 +5299,21 @@ msgid "Expire other channel content after this many days"
msgstr "Den Inhalt anderer Kanäle nach dieser Anzahl Tage verfallen lassen"
#: ../../Zotlabs/Module/Settings.php:1065
+msgid "0 or blank to use the website limit."
+msgstr "0 oder leer lassen, um den voreingestellten Wert der Webseite zu verwenden."
+
+#: ../../Zotlabs/Module/Settings.php:1065
#, php-format
-msgid ""
-"0 or blank to use the website limit. The website expires after %d days."
-msgstr "0 oder leer lassen um das Webseiten limit zu nutzen. Die Webseite läuft nach %d Tagen ab."
+msgid "This website expires after %d days."
+msgstr "Diese Webseite läuft nach %d Tagen ab."
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "This website does not expire imported content."
+msgstr "Diese Webseite lässt importierte Inhalte nicht verfallen."
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "The website limit takes precedence if lower than your limit."
+msgstr "Das Verfallslimit der Webseite hat Vorrang, wenn es niedriger als Deines hier ist."
#: ../../Zotlabs/Module/Settings.php:1066
msgid "Maximum Friend Requests/Day:"
@@ -5301,12 +5324,12 @@ msgid "May reduce spam activity"
msgstr "Kann die Spam-Aktivität verringern"
#: ../../Zotlabs/Module/Settings.php:1067
-msgid "Default Post Permissions"
-msgstr "Standardeinstellungen für Beitrags-Zugriffsrechte"
+msgid "Default Post and Publish Permissions"
+msgstr "Standard-Berechtigungen für Beiträge und andere Inhalte"
#: ../../Zotlabs/Module/Settings.php:1069
-msgid "Use my default audience setting for the type of post"
-msgstr "Benutze meine Standard-Zielgruppen-Einstellungen für diesen Beitragstyp"
+msgid "Use my default audience setting for the type of object published"
+msgstr "Verwende Deine eingestellte Standard-Zielgruppe des jeweiligen Inhaltstyps"
#: ../../Zotlabs/Module/Settings.php:1072
msgid "Channel permissions category:"
@@ -6281,192 +6304,14 @@ msgstr "Kein Benutzername in der Importdatei gefunden."
msgid "Unable to create a unique channel address. Import failed."
msgstr "Es war nicht möglich, eine eindeutige Kanal-Adresse zu erzeugen. Der Import ist fehlgeschlagen."
-#: ../../include/dba/dba_driver.php:142
+#: ../../include/dba/dba_driver.php:159
#, php-format
msgid "Cannot locate DNS info for database server '%s'"
msgstr "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden"
-#: ../../include/identity.php:32
-msgid "Unable to obtain identity information from database"
-msgstr "Kann keine Identitäts-Informationen aus Datenbank beziehen"
-
-#: ../../include/identity.php:66
-msgid "Empty name"
-msgstr "Namensfeld leer"
-
-#: ../../include/identity.php:69
-msgid "Name too long"
-msgstr "Name ist zu lang"
-
-#: ../../include/identity.php:180
-msgid "No account identifier"
-msgstr "Keine Account-Kennung"
-
-#: ../../include/identity.php:192
-msgid "Nickname is required."
-msgstr "Spitzname ist erforderlich."
-
-#: ../../include/identity.php:206
-msgid "Reserved nickname. Please choose another."
-msgstr "Reservierter Kurzname. Bitte wähle einen anderen."
-
-#: ../../include/identity.php:211
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt."
-
-#: ../../include/identity.php:287
-msgid "Unable to retrieve created identity"
-msgstr "Kann die erstellte Identität nicht empfangen"
-
-#: ../../include/identity.php:345
-msgid "Default Profile"
-msgstr "Standard-Profil"
-
-#: ../../include/identity.php:791
-msgid "Requested channel is not available."
-msgstr "Angeforderte Kanal nicht verfügbar."
-
-#: ../../include/identity.php:938
-msgid "Create New Profile"
-msgstr "Neues Profil erstellen"
-
-#: ../../include/identity.php:941 ../../include/nav.php:90
-msgid "Edit Profile"
-msgstr "Profile bearbeiten"
-
-#: ../../include/identity.php:958
-msgid "Visible to everybody"
-msgstr "Für jeden sichtbar"
-
-#: ../../include/identity.php:1033 ../../include/identity.php:1288
-msgid "Gender:"
-msgstr "Geschlecht:"
-
-#: ../../include/identity.php:1034 ../../include/identity.php:1332
-msgid "Status:"
-msgstr "Status:"
-
-#: ../../include/identity.php:1035 ../../include/identity.php:1343
-msgid "Homepage:"
-msgstr "Homepage:"
-
-#: ../../include/identity.php:1036
-msgid "Online Now"
-msgstr "gerade online"
-
-#: ../../include/identity.php:1124 ../../include/identity.php:1200
-msgid "F d"
-msgstr "d. F"
-
-#: ../../include/identity.php:1180
-msgid "Birthday Reminders"
-msgstr "Geburtstags Erinnerungen"
-
-#: ../../include/identity.php:1181
-msgid "Birthdays this week:"
-msgstr "Geburtstage in dieser Woche:"
-
-#: ../../include/identity.php:1232
-msgid "[No description]"
-msgstr "[Keine Beschreibung]"
-
-#: ../../include/identity.php:1250
-msgid "Event Reminders"
-msgstr "Termin-Erinnerungen"
-
-#: ../../include/identity.php:1251
-msgid "Events this week:"
-msgstr "Termine in dieser Woche:"
-
-#: ../../include/identity.php:1293
-msgid "Like this channel"
-msgstr "Dieser Kanal gefällt mir"
-
-#: ../../include/identity.php:1317
-msgid "j F, Y"
-msgstr "j. F Y"
-
-#: ../../include/identity.php:1318
-msgid "j F"
-msgstr "j. F"
-
-#: ../../include/identity.php:1325
-msgid "Birthday:"
-msgstr "Geburtstag:"
-
-#: ../../include/identity.php:1338
-#, php-format
-msgid "for %1$d %2$s"
-msgstr "seit %1$d %2$s"
-
-#: ../../include/identity.php:1341
-msgid "Sexual Preference:"
-msgstr "Sexuelle Orientierung:"
-
-#: ../../include/identity.php:1347
-msgid "Tags:"
-msgstr "Schlagworte:"
-
-#: ../../include/identity.php:1349
-msgid "Political Views:"
-msgstr "Politische Ansichten:"
-
-#: ../../include/identity.php:1351
-msgid "Religion:"
-msgstr "Religion:"
-
-#: ../../include/identity.php:1355
-msgid "Hobbies/Interests:"
-msgstr "Hobbys/Interessen:"
-
-#: ../../include/identity.php:1357
-msgid "Likes:"
-msgstr "Gefällt:"
-
-#: ../../include/identity.php:1359
-msgid "Dislikes:"
-msgstr "Gefällt nicht:"
-
-#: ../../include/identity.php:1361
-msgid "Contact information and Social Networks:"
-msgstr "Kontaktinformation und soziale Netzwerke:"
-
-#: ../../include/identity.php:1363
-msgid "My other channels:"
-msgstr "Meine anderen Kanäle:"
-
-#: ../../include/identity.php:1365
-msgid "Musical interests:"
-msgstr "Musikalische Interessen:"
-
-#: ../../include/identity.php:1367
-msgid "Books, literature:"
-msgstr "Bücher, Literatur:"
-
-#: ../../include/identity.php:1369
-msgid "Television:"
-msgstr "Fernsehen:"
-
-#: ../../include/identity.php:1371
-msgid "Film/dance/culture/entertainment:"
-msgstr "Film/Tanz/Kultur/Unterhaltung:"
-
-#: ../../include/identity.php:1373
-msgid "Love/Romance:"
-msgstr "Liebe/Romantik:"
-
-#: ../../include/identity.php:1375
-msgid "Work/employment:"
-msgstr "Arbeit/Anstellung:"
-
-#: ../../include/identity.php:1377
-msgid "School/education:"
-msgstr "Schule/Ausbildung:"
-
-#: ../../include/identity.php:1397
-msgid "Like this thing"
-msgstr "Gefällt mir"
+#: ../../include/api.php:1338
+msgid "Public Timeline"
+msgstr "Öffentliche Zeitleiste"
#: ../../include/notify.php:20
msgid "created a new post"
@@ -6485,40 +6330,6 @@ msgstr "Eingebetteter Inhalt"
msgid "Embedding disabled"
msgstr "Einbetten ausgeschaltet"
-#: ../../include/acl_selectors.php:236
-#: ../../include/PermissionDescription.php:31
-msgid "Visible to your default audience"
-msgstr "Standard-Sichtbarkeit gemäß Kanaleinstellungen"
-
-#: ../../include/acl_selectors.php:274
-msgid "Limit access:"
-msgstr "Beschränke Zugriff:"
-
-#: ../../include/acl_selectors.php:275
-msgid ""
-"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
-" the scope of \"Show\"."
-msgstr "Wähle \"Anzeigen\", um Betrachtung zuzulassen. \"Nicht anzeigen\" überstimmt und limitiert den Aktionsradius von \"Anzeigen\" für Ausnahmen."
-
-#: ../../include/acl_selectors.php:276
-msgid "Show"
-msgstr "Anzeigen"
-
-#: ../../include/acl_selectors.php:277
-msgid "Don't show"
-msgstr "Nicht anzeigen"
-
-#: ../../include/acl_selectors.php:283
-msgid "Other networks and post services"
-msgstr "Andere Netzwerke und Platformen"
-
-#: ../../include/acl_selectors.php:313
-#, php-format
-msgid ""
-"Post permissions %s cannot be changed %s after a post is shared.</br />These"
-" permissions set who is allowed to view the post."
-msgstr "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der Beitrag gesendet wurde.<br />Diese Berechtigungen bestimmen, wer den Beitrag sehen kann."
-
#: ../../include/profile_selectors.php:6
msgid "Currently Male"
msgstr "Momentan männlich"
@@ -6752,28 +6563,35 @@ msgstr "Interessiert mich nicht"
msgid "Ask me"
msgstr "Frag mich mal"
-#: ../../include/activities.php:42
-msgid " and "
-msgstr "und"
+#: ../../include/Contact.php:118
+msgid "New window"
+msgstr "Neues Fenster"
-#: ../../include/activities.php:50
-msgid "public profile"
-msgstr "öffentliches Profil"
+#: ../../include/Contact.php:119
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab"
-#: ../../include/activities.php:59
+#: ../../include/Contact.php:237
#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s hat %2$s auf &ldquo;%3$s&rdquo; geändert"
+msgid "User '%s' deleted"
+msgstr "Benutzer '%s' gelöscht"
-#: ../../include/activities.php:60
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Besuche %1$s's %2$s"
+#: ../../include/zot.php:680
+msgid "Invalid data packet"
+msgstr "Ungültiges Datenpaket"
-#: ../../include/activities.php:63
+#: ../../include/zot.php:696
+msgid "Unable to verify channel signature"
+msgstr "Konnte die Signatur des Kanals nicht verifizieren"
+
+#: ../../include/zot.php:2342
#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s hat ein aktualisiertes %2$s, %3$s wurde verändert."
+msgid "Unable to verify site signature for %s"
+msgstr "Kann die Signatur der Seite von %s nicht verifizieren"
+
+#: ../../include/zot.php:3680
+msgid "invalid target signature"
+msgstr "Ungültige Signatur des Ziels"
#: ../../include/contact_widgets.php:14
#, php-format
@@ -6876,63 +6694,6 @@ msgstr "In Bearbeitung"
msgid "Cancelled"
msgstr "gestrichen"
-#: ../../include/photos.php:112
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "Bild überschreitet das Webseitenlimit von %lu Bytes"
-
-#: ../../include/photos.php:119
-msgid "Image file is empty."
-msgstr "Bilddatei ist leer."
-
-#: ../../include/photos.php:257
-msgid "Photo storage failed."
-msgstr "Fotospeicherung fehlgeschlagen."
-
-#: ../../include/photos.php:297
-msgid "a new photo"
-msgstr "ein neues Foto"
-
-#: ../../include/photos.php:301
-#, php-format
-msgctxt "photo_upload"
-msgid "%1$s posted %2$s to %3$s"
-msgstr "%1$s hat %2$s auf %3$s veröffentlicht"
-
-#: ../../include/photos.php:506 ../../include/conversation.php:1641
-msgid "Photo Albums"
-msgstr "Fotoalben"
-
-#: ../../include/photos.php:510
-msgid "Upload New Photos"
-msgstr "Neue Fotos hochladen"
-
-#: ../../include/import.php:27
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen."
-
-#: ../../include/import.php:74
-msgid "Channel clone failed. Import failed."
-msgstr "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen."
-
-#: ../../include/zot.php:680
-msgid "Invalid data packet"
-msgstr "Ungültiges Datenpaket"
-
-#: ../../include/zot.php:696
-msgid "Unable to verify channel signature"
-msgstr "Konnte die Signatur des Kanals nicht verifizieren"
-
-#: ../../include/zot.php:2342
-#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Kann die Signatur der Seite von %s nicht verifizieren"
-
-#: ../../include/zot.php:3680
-msgid "invalid target signature"
-msgstr "Ungültige Signatur des Ziels"
-
#: ../../include/widgets.php:103
msgid "System"
msgstr "System"
@@ -7216,88 +6977,226 @@ msgstr "Chatraum konnte nicht gefunden werden."
msgid "Room is full"
msgstr "Der Chatraum ist voll"
-#: ../../include/Contact.php:118
-msgid "New window"
-msgstr "Neues Fenster"
+#: ../../include/identity.php:32
+msgid "Unable to obtain identity information from database"
+msgstr "Kann keine Identitäts-Informationen aus Datenbank beziehen"
-#: ../../include/Contact.php:119
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab"
+#: ../../include/identity.php:66
+msgid "Empty name"
+msgstr "Namensfeld leer"
-#: ../../include/Contact.php:237
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Benutzer '%s' gelöscht"
+#: ../../include/identity.php:69
+msgid "Name too long"
+msgstr "Name ist zu lang"
-#: ../../include/auth.php:105
-msgid "Logged out."
-msgstr "Ausgeloggt."
+#: ../../include/identity.php:180
+msgid "No account identifier"
+msgstr "Keine Account-Kennung"
-#: ../../include/auth.php:212
-msgid "Failed authentication"
-msgstr "Authentifizierung fehlgeschlagen"
+#: ../../include/identity.php:192
+msgid "Nickname is required."
+msgstr "Spitzname ist erforderlich."
-#: ../../include/security.php:383
+#: ../../include/identity.php:206
+msgid "Reserved nickname. Please choose another."
+msgstr "Reservierter Kurzname. Bitte wähle einen anderen."
+
+#: ../../include/identity.php:211
msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde."
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt."
-#: ../../include/items.php:890 ../../include/items.php:935
-msgid "(Unknown)"
-msgstr "(Unbekannt)"
+#: ../../include/identity.php:287
+msgid "Unable to retrieve created identity"
+msgstr "Kann die erstellte Identität nicht empfangen"
-#: ../../include/items.php:1134
-msgid "Visible to anybody on the internet."
-msgstr "Für jeden im Internet sichtbar."
+#: ../../include/identity.php:345
+msgid "Default Profile"
+msgstr "Standard-Profil"
-#: ../../include/items.php:1136
-msgid "Visible to you only."
-msgstr "Nur für Dich sichtbar."
+#: ../../include/identity.php:791
+msgid "Requested channel is not available."
+msgstr "Angeforderte Kanal nicht verfügbar."
-#: ../../include/items.php:1138
-msgid "Visible to anybody in this network."
-msgstr "Für jedes $Projectname-Mitglied sichtbar."
+#: ../../include/identity.php:938
+msgid "Create New Profile"
+msgstr "Neues Profil erstellen"
-#: ../../include/items.php:1140
-msgid "Visible to anybody authenticated."
-msgstr "Für jeden sichtbar, der angemeldet ist."
+#: ../../include/identity.php:941 ../../include/nav.php:90
+msgid "Edit Profile"
+msgstr "Profile bearbeiten"
-#: ../../include/items.php:1142
+#: ../../include/identity.php:958
+msgid "Visible to everybody"
+msgstr "Für jeden sichtbar"
+
+#: ../../include/identity.php:1033 ../../include/identity.php:1288
+msgid "Gender:"
+msgstr "Geschlecht:"
+
+#: ../../include/identity.php:1034 ../../include/identity.php:1332
+msgid "Status:"
+msgstr "Status:"
+
+#: ../../include/identity.php:1035 ../../include/identity.php:1343
+msgid "Homepage:"
+msgstr "Homepage:"
+
+#: ../../include/identity.php:1036
+msgid "Online Now"
+msgstr "gerade online"
+
+#: ../../include/identity.php:1124 ../../include/identity.php:1200
+msgid "F d"
+msgstr "d. F"
+
+#: ../../include/identity.php:1180
+msgid "Birthday Reminders"
+msgstr "Geburtstags Erinnerungen"
+
+#: ../../include/identity.php:1181
+msgid "Birthdays this week:"
+msgstr "Geburtstage in dieser Woche:"
+
+#: ../../include/identity.php:1232
+msgid "[No description]"
+msgstr "[Keine Beschreibung]"
+
+#: ../../include/identity.php:1250
+msgid "Event Reminders"
+msgstr "Termin-Erinnerungen"
+
+#: ../../include/identity.php:1251
+msgid "Events this week:"
+msgstr "Termine in dieser Woche:"
+
+#: ../../include/identity.php:1293
+msgid "Like this channel"
+msgstr "Dieser Kanal gefällt mir"
+
+#: ../../include/identity.php:1317
+msgid "j F, Y"
+msgstr "j. F Y"
+
+#: ../../include/identity.php:1318
+msgid "j F"
+msgstr "j. F"
+
+#: ../../include/identity.php:1325
+msgid "Birthday:"
+msgstr "Geburtstag:"
+
+#: ../../include/identity.php:1338
#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Für jeden auf %s sichtbar."
+msgid "for %1$d %2$s"
+msgstr "seit %1$d %2$s"
-#: ../../include/items.php:1144
-msgid "Visible to all connections."
-msgstr "Für alle Verbindungen sichtbar."
+#: ../../include/identity.php:1341
+msgid "Sexual Preference:"
+msgstr "Sexuelle Orientierung:"
-#: ../../include/items.php:1146
-msgid "Visible to approved connections."
-msgstr "Nur für akzeptierte Verbindungen sichtbar."
+#: ../../include/identity.php:1347
+msgid "Tags:"
+msgstr "Schlagworte:"
-#: ../../include/items.php:1148
-msgid "Visible to specific connections."
-msgstr "Sichtbar für bestimmte Verbindungen."
+#: ../../include/identity.php:1349
+msgid "Political Views:"
+msgstr "Politische Ansichten:"
-#: ../../include/items.php:3910
-msgid "Privacy group is empty."
-msgstr "Gruppe ist leer."
+#: ../../include/identity.php:1351
+msgid "Religion:"
+msgstr "Religion:"
-#: ../../include/items.php:3917
+#: ../../include/identity.php:1355
+msgid "Hobbies/Interests:"
+msgstr "Hobbys/Interessen:"
+
+#: ../../include/identity.php:1357
+msgid "Likes:"
+msgstr "Gefällt:"
+
+#: ../../include/identity.php:1359
+msgid "Dislikes:"
+msgstr "Gefällt nicht:"
+
+#: ../../include/identity.php:1361
+msgid "Contact information and Social Networks:"
+msgstr "Kontaktinformation und soziale Netzwerke:"
+
+#: ../../include/identity.php:1363
+msgid "My other channels:"
+msgstr "Meine anderen Kanäle:"
+
+#: ../../include/identity.php:1365
+msgid "Musical interests:"
+msgstr "Musikalische Interessen:"
+
+#: ../../include/identity.php:1367
+msgid "Books, literature:"
+msgstr "Bücher, Literatur:"
+
+#: ../../include/identity.php:1369
+msgid "Television:"
+msgstr "Fernsehen:"
+
+#: ../../include/identity.php:1371
+msgid "Film/dance/culture/entertainment:"
+msgstr "Film/Tanz/Kultur/Unterhaltung:"
+
+#: ../../include/identity.php:1373
+msgid "Love/Romance:"
+msgstr "Liebe/Romantik:"
+
+#: ../../include/identity.php:1375
+msgid "Work/employment:"
+msgstr "Arbeit/Anstellung:"
+
+#: ../../include/identity.php:1377
+msgid "School/education:"
+msgstr "Schule/Ausbildung:"
+
+#: ../../include/identity.php:1397
+msgid "Like this thing"
+msgstr "Gefällt mir"
+
+#: ../../include/security.php:383
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde."
+
+#: ../../include/photos.php:112
#, php-format
-msgid "Privacy group: %s"
-msgstr "Gruppe: %s"
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "Bild überschreitet das Webseitenlimit von %lu Bytes"
-#: ../../include/items.php:3929
-msgid "Connection not found."
-msgstr "Die Verbindung wurde nicht gefunden."
+#: ../../include/photos.php:119
+msgid "Image file is empty."
+msgstr "Bilddatei ist leer."
-#: ../../include/items.php:4278
-msgid "profile photo"
-msgstr "Profilfoto"
+#: ../../include/photos.php:257
+msgid "Photo storage failed."
+msgstr "Fotospeicherung fehlgeschlagen."
-#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1614
+#: ../../include/photos.php:297
+msgid "a new photo"
+msgstr "ein neues Foto"
+
+#: ../../include/photos.php:301
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s to %3$s"
+msgstr "%1$s hat %2$s auf %3$s veröffentlicht"
+
+#: ../../include/photos.php:506 ../../include/conversation.php:1641
+msgid "Photo Albums"
+msgstr "Fotoalben"
+
+#: ../../include/photos.php:510
+msgid "Upload New Photos"
+msgstr "Neue Fotos hochladen"
+
+#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1628
msgid "Logout"
msgstr "Abmelden"
@@ -7353,7 +7252,7 @@ msgstr "Deine Lesezeichen"
msgid "Your webpages"
msgstr "Deine Webseiten"
-#: ../../include/nav.php:110 ../../include/apps.php:163 ../../boot.php:1615
+#: ../../include/nav.php:110 ../../include/apps.php:163 ../../boot.php:1629
msgid "Login"
msgstr "Anmelden"
@@ -7495,36 +7394,6 @@ msgstr "@Name, #Schlagwort, ?Dokumentation, Inhalt"
msgid "Please wait..."
msgstr "Bitte warten..."
-#: ../../include/network.php:659
-msgid "view full size"
-msgstr "In Vollbildansicht anschauen"
-
-#: ../../include/network.php:1827 ../../include/enotify.php:57
-msgid "$Projectname Notification"
-msgstr "$Projectname-Benachrichtigung"
-
-#: ../../include/network.php:1828 ../../include/enotify.php:58
-msgid "$projectname"
-msgstr "$projectname"
-
-#: ../../include/network.php:1830 ../../include/enotify.php:60
-msgid "Thank You,"
-msgstr "Danke."
-
-#: ../../include/network.php:1832 ../../include/enotify.php:62
-#, php-format
-msgid "%s Administrator"
-msgstr "der Administrator von %s"
-
-#: ../../include/network.php:1875 ../../include/account.php:317
-#: ../../include/account.php:344 ../../include/account.php:404
-msgid "Administrator"
-msgstr "Administrator"
-
-#: ../../include/network.php:1889
-msgid "No Subject"
-msgstr "Kein Betreff"
-
#: ../../include/contact_selectors.php:56
msgid "Frequently"
msgstr "Häufig"
@@ -7590,6 +7459,14 @@ msgstr "XMPP/IM"
msgid "MySpace"
msgstr "MySpace"
+#: ../../include/auth.php:105
+msgid "Logged out."
+msgstr "Ausgeloggt."
+
+#: ../../include/auth.php:212
+msgid "Failed authentication"
+msgstr "Authentifizierung fehlgeschlagen"
+
#: ../../include/attach.php:247 ../../include/attach.php:333
msgid "Item was not found."
msgstr "Beitrag wurde nicht gefunden."
@@ -7664,7 +7541,7 @@ msgstr "Alter:"
msgid "YYYY-MM-DD or MM-DD"
msgstr "JJJJ-MM-TT oder MM-TT"
-#: ../../include/datetime.php:273 ../../boot.php:2463
+#: ../../include/datetime.php:273 ../../boot.php:2399
msgid "never"
msgstr "Nie"
@@ -7753,6 +7630,23 @@ msgstr "Nur öffentliche Foren"
msgid "This Website Only"
msgstr "Nur dieser Hub"
+#: ../../include/enotify.php:57 ../../include/network.php:1831
+msgid "$Projectname Notification"
+msgstr "$Projectname-Benachrichtigung"
+
+#: ../../include/enotify.php:58 ../../include/network.php:1832
+msgid "$projectname"
+msgstr "$projectname"
+
+#: ../../include/enotify.php:60 ../../include/network.php:1834
+msgid "Thank You,"
+msgstr "Danke."
+
+#: ../../include/enotify.php:62 ../../include/network.php:1836
+#, php-format
+msgid "%s Administrator"
+msgstr "der Administrator von %s"
+
#: ../../include/enotify.php:96
#, php-format
msgid "%s <!item_type!>"
@@ -8107,6 +8001,57 @@ msgstr "Link einfügen"
msgid "Video"
msgstr "Video"
+#: ../../include/activities.php:42
+msgid " and "
+msgstr "und"
+
+#: ../../include/activities.php:50
+msgid "public profile"
+msgstr "öffentliches Profil"
+
+#: ../../include/activities.php:59
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s hat %2$s auf &ldquo;%3$s&rdquo; geändert"
+
+#: ../../include/activities.php:60
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Besuche %1$s's %2$s"
+
+#: ../../include/activities.php:63
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s hat ein aktualisiertes %2$s, %3$s wurde verändert."
+
+#: ../../include/follow.php:28
+msgid "Channel is blocked on this site."
+msgstr "Der Kanal ist auf dieser Seite blockiert "
+
+#: ../../include/follow.php:33
+msgid "Channel location missing."
+msgstr "Adresse des Kanals fehlt."
+
+#: ../../include/follow.php:82
+msgid "Response from remote channel was incomplete."
+msgstr "Antwort des entfernten Kanals war unvollständig."
+
+#: ../../include/follow.php:99
+msgid "Channel was deleted and no longer exists."
+msgstr "Kanal wurde gelöscht und existiert nicht mehr."
+
+#: ../../include/follow.php:155 ../../include/follow.php:191
+msgid "Protocol disabled."
+msgstr "Protokoll deaktiviert."
+
+#: ../../include/follow.php:179
+msgid "Channel discovery failed."
+msgstr "Kanalsuche fehlgeschlagen"
+
+#: ../../include/follow.php:217
+msgid "Cannot connect to yourself."
+msgstr "Du kannst Dich nicht mit Dir selbst verbinden."
+
#: ../../include/features.php:48
msgid "General Features"
msgstr "Allgemeine Funktionen"
@@ -8386,33 +8331,34 @@ msgstr "Schlagwort-Wolke"
msgid "Provide a personal tag cloud on your channel page"
msgstr "Aktiviert die Anzeige einer Schlagwort-Wolke (Tag Cloud) auf Deiner Kanal-Seite"
-#: ../../include/follow.php:28
-msgid "Channel is blocked on this site."
-msgstr "Der Kanal ist auf dieser Seite blockiert "
+#: ../../include/message.php:20
+msgid "No recipient provided."
+msgstr "Kein Empfänger angegeben"
-#: ../../include/follow.php:33
-msgid "Channel location missing."
-msgstr "Adresse des Kanals fehlt."
+#: ../../include/message.php:25
+msgid "[no subject]"
+msgstr "[no subject]"
-#: ../../include/follow.php:82
-msgid "Response from remote channel was incomplete."
-msgstr "Antwort des entfernten Kanals war unvollständig."
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "Kann Absender nicht bestimmen."
-#: ../../include/follow.php:99
-msgid "Channel was deleted and no longer exists."
-msgstr "Kanal wurde gelöscht und existiert nicht mehr."
+#: ../../include/message.php:222
+msgid "Stored post could not be verified."
+msgstr "Gespeicherter Beitrag konnten nicht überprüft werden."
-#: ../../include/follow.php:155 ../../include/follow.php:191
-msgid "Protocol disabled."
-msgstr "Protokoll deaktiviert."
+#: ../../include/network.php:659
+msgid "view full size"
+msgstr "In Vollbildansicht anschauen"
-#: ../../include/follow.php:179
-msgid "Channel discovery failed."
-msgstr "Kanalsuche fehlgeschlagen"
+#: ../../include/network.php:1879 ../../include/account.php:317
+#: ../../include/account.php:344 ../../include/account.php:404
+msgid "Administrator"
+msgstr "Administrator"
-#: ../../include/follow.php:217
-msgid "Cannot connect to yourself."
-msgstr "Du kannst Dich nicht mit Dir selbst verbinden."
+#: ../../include/network.php:1893
+msgid "No Subject"
+msgstr "Kein Betreff"
#: ../../include/group.php:26
msgid ""
@@ -9140,7 +9086,13 @@ msgstr "gefällt"
msgid "dislikes"
msgstr "missfällt"
+#: ../../include/PermissionDescription.php:31
+#: ../../include/acl_selectors.php:236
+msgid "Visible to your default audience"
+msgstr "Standard-Sichtbarkeit gemäß Kanaleinstellungen"
+
#: ../../include/PermissionDescription.php:115
+#: ../../include/acl_selectors.php:272
msgid "Only me"
msgstr "Nur ich"
@@ -9161,39 +9113,39 @@ msgstr "Jedes Nutzerkonto auf %s"
msgid "Any of my connections"
msgstr "Alle meine Verbindungen"
-#: ../../include/PermissionDescription.php:124
-msgid "Only me (only specified contacts and me)"
-msgstr "Nur ich (nur ausgewählte Kontakte und ich)"
+#: ../../include/PermissionDescription.php:120
+msgid "Only connections I specifically allow"
+msgstr "Nur Verbindungen, denen ich es explizit erlaube"
-#: ../../include/PermissionDescription.php:125
+#: ../../include/PermissionDescription.php:121
msgid "Anybody authenticated (could include visitors from other networks)"
msgstr "Jeder, der angemeldet ist (kann Besucher anderer Netzwerke beinhalten)"
-#: ../../include/PermissionDescription.php:126
+#: ../../include/PermissionDescription.php:122
msgid "Any connections including those who haven't yet been approved"
msgstr "Alle Verbindungen einschließlich der noch nicht bestätigten"
-#: ../../include/PermissionDescription.php:169
+#: ../../include/PermissionDescription.php:161
msgid ""
"This is your default setting for the audience of your normal stream, and "
"posts."
msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner normalen Beiträge (Stream)."
-#: ../../include/PermissionDescription.php:170
+#: ../../include/PermissionDescription.php:162
msgid ""
"This is your default setting for who can view your default channel profile"
msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deines Standard-Kanalprofils."
-#: ../../include/PermissionDescription.php:171
+#: ../../include/PermissionDescription.php:163
msgid "This is your default setting for who can view your connections"
msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Verbindungen."
-#: ../../include/PermissionDescription.php:172
+#: ../../include/PermissionDescription.php:164
msgid ""
"This is your default setting for who can view your file storage and photos"
msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Dateien und Fotos."
-#: ../../include/PermissionDescription.php:173
+#: ../../include/PermissionDescription.php:165
msgid "This is your default setting for the audience of your webpages"
msgstr "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner Webseiten."
@@ -9441,25 +9393,68 @@ msgctxt "calendar"
msgid "All day"
msgstr "Ganztägig"
-#: ../../include/message.php:20
-msgid "No recipient provided."
-msgstr "Kein Empfänger angegeben"
+#: ../../include/import.php:27
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen."
-#: ../../include/message.php:25
-msgid "[no subject]"
-msgstr "[no subject]"
+#: ../../include/import.php:74
+msgid "Channel clone failed. Import failed."
+msgstr "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen."
-#: ../../include/message.php:45
-msgid "Unable to determine sender."
-msgstr "Kann Absender nicht bestimmen."
+#: ../../include/items.php:890 ../../include/items.php:935
+msgid "(Unknown)"
+msgstr "(Unbekannt)"
-#: ../../include/message.php:222
-msgid "Stored post could not be verified."
-msgstr "Gespeicherter Beitrag konnten nicht überprüft werden."
+#: ../../include/items.php:1134
+msgid "Visible to anybody on the internet."
+msgstr "Für jeden im Internet sichtbar."
-#: ../../include/api.php:1338
-msgid "Public Timeline"
-msgstr "Öffentliche Zeitleiste"
+#: ../../include/items.php:1136
+msgid "Visible to you only."
+msgstr "Nur für Dich sichtbar."
+
+#: ../../include/items.php:1138
+msgid "Visible to anybody in this network."
+msgstr "Für jedes $Projectname-Mitglied sichtbar."
+
+#: ../../include/items.php:1140
+msgid "Visible to anybody authenticated."
+msgstr "Für jeden sichtbar, der angemeldet ist."
+
+#: ../../include/items.php:1142
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Für jeden auf %s sichtbar."
+
+#: ../../include/items.php:1144
+msgid "Visible to all connections."
+msgstr "Für alle Verbindungen sichtbar."
+
+#: ../../include/items.php:1146
+msgid "Visible to approved connections."
+msgstr "Nur für akzeptierte Verbindungen sichtbar."
+
+#: ../../include/items.php:1148
+msgid "Visible to specific connections."
+msgstr "Sichtbar für bestimmte Verbindungen."
+
+#: ../../include/items.php:3910
+msgid "Privacy group is empty."
+msgstr "Gruppe ist leer."
+
+#: ../../include/items.php:3917
+#, php-format
+msgid "Privacy group: %s"
+msgstr "Gruppe: %s"
+
+#: ../../include/items.php:3929
+msgid "Connection not found."
+msgstr "Die Verbindung wurde nicht gefunden."
+
+#: ../../include/items.php:4278
+msgid "profile photo"
+msgstr "Profilfoto"
#: ../../include/page_widgets.php:6
msgid "New Page"
@@ -9666,6 +9661,43 @@ msgstr "Anhänge:"
msgid "$Projectname event notification:"
msgstr "$Projectname-Terminbenachrichtigung:"
+#: ../../include/acl_selectors.php:273
+msgid "Add others"
+msgstr "Andere hinzufügen"
+
+#: ../../include/acl_selectors.php:276
+msgid "Who can see this?"
+msgstr "Wer kann das sehen?"
+
+#: ../../include/acl_selectors.php:277
+msgid "Custom selection"
+msgstr "Benutzerdefinierte Auswahl"
+
+#: ../../include/acl_selectors.php:278
+msgid ""
+"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
+" the scope of \"Show\"."
+msgstr "Wähle \"Anzeigen\", um Betrachtung zuzulassen. \"Nicht anzeigen\" überstimmt und limitiert den Aktionsradius von \"Anzeigen\" für Ausnahmen."
+
+#: ../../include/acl_selectors.php:279
+msgid "Show"
+msgstr "Anzeigen"
+
+#: ../../include/acl_selectors.php:280
+msgid "Don't show"
+msgstr "Nicht anzeigen"
+
+#: ../../include/acl_selectors.php:286
+msgid "Other networks and post services"
+msgstr "Andere Netzwerke und Platformen"
+
+#: ../../include/acl_selectors.php:316
+#, php-format
+msgid ""
+"Post permissions %s cannot be changed %s after a post is shared.</br />These"
+" permissions set who is allowed to view the post."
+msgstr "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der Beitrag gesendet wurde.<br />Diese Berechtigungen bestimmen, wer den Beitrag sehen kann."
+
#: ../../view/theme/redbasic/php/config.php:82
msgid "Focus (Hubzilla default)"
msgstr "Focus (Voreinstellung für Hubzilla)"
@@ -9802,62 +9834,62 @@ msgstr "Größe der Avatare von Themenstartern"
msgid "Set size of followup author photos"
msgstr "Größe der Avatare von Kommentatoren"
-#: ../../boot.php:1075
+#: ../../boot.php:1089
#, php-format
msgctxt "opensearch"
msgid "Search %1$s (%2$s)"
msgstr "Suche %1$s (%2$s)"
-#: ../../boot.php:1075
+#: ../../boot.php:1089
msgctxt "opensearch"
msgid "$Projectname"
msgstr "$Projectname"
-#: ../../boot.php:1392
+#: ../../boot.php:1406
#, php-format
msgid "Update %s failed. See error logs."
msgstr "Aktualisierung %s fehlgeschlagen. Details in den Fehlerprotokollen."
-#: ../../boot.php:1395
+#: ../../boot.php:1409
#, php-format
msgid "Update Error at %s"
msgstr "Aktualisierungsfehler auf %s"
-#: ../../boot.php:1596
+#: ../../boot.php:1610
msgid ""
"Create an account to access services and applications within the Hubzilla"
msgstr "Erstelle ein Konto, um Anwendungen und Dienste innerhalb von Hubzilla nutzen zu können."
-#: ../../boot.php:1618
+#: ../../boot.php:1632
msgid "Password"
msgstr "Kennwort"
-#: ../../boot.php:1619
+#: ../../boot.php:1633
msgid "Remember me"
msgstr "Angaben speichern"
-#: ../../boot.php:1622
+#: ../../boot.php:1636
msgid "Forgot your password?"
msgstr "Passwort vergessen?"
-#: ../../boot.php:2269
+#: ../../boot.php:2205
msgid "toggle mobile"
msgstr "auf/von mobile Ansicht wechseln"
-#: ../../boot.php:2422
+#: ../../boot.php:2358
msgid "Website SSL certificate is not valid. Please correct."
msgstr "Das SSL-Zertifikat der Website ist nicht gültig. Bitte beheben."
-#: ../../boot.php:2425
+#: ../../boot.php:2361
#, php-format
msgid "[hubzilla] Website SSL error for %s"
msgstr "[hubzilla] Website-SSL-Fehler für %s"
-#: ../../boot.php:2462
+#: ../../boot.php:2398
msgid "Cron/Scheduled tasks not running."
msgstr "Cron-Aufgaben laufen nicht."
-#: ../../boot.php:2466
+#: ../../boot.php:2402
#, php-format
msgid "[hubzilla] Cron tasks not running on %s"
msgstr "[hubzilla] Cron-Aufgaben für %s laufen nicht"
diff --git a/view/de/hstrings.php b/view/de/hstrings.php
index 2c7ba67d4..fc15af0b7 100644
--- a/view/de/hstrings.php
+++ b/view/de/hstrings.php
@@ -257,10 +257,12 @@ App::$strings["Download Plugin Repo"] = "Plugin-Repository herunterladen";
App::$strings["Install new repo"] = "Neues Repository installieren";
App::$strings["Install"] = "Installieren";
App::$strings["Cancel"] = "Abbrechen";
-App::$strings["Add Plugin Repo"] = "Plugin-Repository hinzufügen";
+App::$strings["Manage Repos"] = "Repositorien verwalten";
+App::$strings["Installed Plugin Repositories"] = "Installierte Plugin-Repositorien";
+App::$strings["Install a New Plugin Repository"] = "Ein neues Plugin-Repository installieren";
App::$strings["Update"] = "Aktualisieren";
App::$strings["Switch branch"] = "Zweig/Branch wechseln";
-App::$strings["Remove"] = "Entferne";
+App::$strings["Remove"] = "Entfernen";
App::$strings["No themes found."] = "Keine Theme gefunden.";
App::$strings["Screenshot"] = "Bildschirmfoto";
App::$strings["Themes"] = "Themes";
@@ -1034,6 +1036,7 @@ App::$strings["The listed hubs allow public registration for the \$Projectname n
App::$strings["Hub URL"] = "Hub-URL";
App::$strings["Access Type"] = "Zugriffstyp";
App::$strings["Registration Policy"] = "Registrierungsrichtlinien";
+App::$strings["Software"] = "Software";
App::$strings["Ratings"] = "Bewertungen";
App::$strings["Rate"] = "Bewerten";
App::$strings["Website:"] = "Webseite:";
@@ -1188,11 +1191,14 @@ App::$strings["Allow others to tag your posts"] = "Erlaube anderen, Deine Beitr
App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Wird oft von der Community genutzt um rückwirkend anstößigen Inhalt zu markieren";
App::$strings["Advanced Privacy Settings"] = "Fortgeschrittene Privatsphäre-Einstellungen";
App::$strings["Expire other channel content after this many days"] = "Den Inhalt anderer Kanäle nach dieser Anzahl Tage verfallen lassen";
-App::$strings["0 or blank to use the website limit. The website expires after %d days."] = "0 oder leer lassen um das Webseiten limit zu nutzen. Die Webseite läuft nach %d Tagen ab.";
+App::$strings["0 or blank to use the website limit."] = "0 oder leer lassen, um den voreingestellten Wert der Webseite zu verwenden.";
+App::$strings["This website expires after %d days."] = "Diese Webseite läuft nach %d Tagen ab.";
+App::$strings["This website does not expire imported content."] = "Diese Webseite lässt importierte Inhalte nicht verfallen.";
+App::$strings["The website limit takes precedence if lower than your limit."] = "Das Verfallslimit der Webseite hat Vorrang, wenn es niedriger als Deines hier ist.";
App::$strings["Maximum Friend Requests/Day:"] = "Maximale Kontaktanfragen pro Tag:";
App::$strings["May reduce spam activity"] = "Kann die Spam-Aktivität verringern";
-App::$strings["Default Post Permissions"] = "Standardeinstellungen für Beitrags-Zugriffsrechte";
-App::$strings["Use my default audience setting for the type of post"] = "Benutze meine Standard-Zielgruppen-Einstellungen für diesen Beitragstyp";
+App::$strings["Default Post and Publish Permissions"] = "Standard-Berechtigungen für Beiträge und andere Inhalte";
+App::$strings["Use my default audience setting for the type of object published"] = "Verwende Deine eingestellte Standard-Zielgruppe des jeweiligen Inhaltstyps";
App::$strings["Channel permissions category:"] = "Zugriffsrechte-Kategorie des Kanals:";
App::$strings["Maximum private messages per day from unknown people:"] = "Maximale Anzahl privater Nachrichten pro Tag von unbekannten Leuten:";
App::$strings["Useful to reduce spamming"] = "Nützlich, um Spam zu verringern";
@@ -1406,62 +1412,11 @@ App::$strings["Lookup xchan beginning with (or webbie): "] = "Nach xchans oder W
App::$strings["No username found in import file."] = "Kein Benutzername in der Importdatei gefunden.";
App::$strings["Unable to create a unique channel address. Import failed."] = "Es war nicht möglich, eine eindeutige Kanal-Adresse zu erzeugen. Der Import ist fehlgeschlagen.";
App::$strings["Cannot locate DNS info for database server '%s'"] = "Kann die DNS-Informationen für den Datenbank-Server '%s' nicht finden";
-App::$strings["Unable to obtain identity information from database"] = "Kann keine Identitäts-Informationen aus Datenbank beziehen";
-App::$strings["Empty name"] = "Namensfeld leer";
-App::$strings["Name too long"] = "Name ist zu lang";
-App::$strings["No account identifier"] = "Keine Account-Kennung";
-App::$strings["Nickname is required."] = "Spitzname ist erforderlich.";
-App::$strings["Reserved nickname. Please choose another."] = "Reservierter Kurzname. Bitte wähle einen anderen.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt.";
-App::$strings["Unable to retrieve created identity"] = "Kann die erstellte Identität nicht empfangen";
-App::$strings["Default Profile"] = "Standard-Profil";
-App::$strings["Requested channel is not available."] = "Angeforderte Kanal nicht verfügbar.";
-App::$strings["Create New Profile"] = "Neues Profil erstellen";
-App::$strings["Edit Profile"] = "Profile bearbeiten";
-App::$strings["Visible to everybody"] = "Für jeden sichtbar";
-App::$strings["Gender:"] = "Geschlecht:";
-App::$strings["Status:"] = "Status:";
-App::$strings["Homepage:"] = "Homepage:";
-App::$strings["Online Now"] = "gerade online";
-App::$strings["F d"] = "d. F";
-App::$strings["Birthday Reminders"] = "Geburtstags Erinnerungen";
-App::$strings["Birthdays this week:"] = "Geburtstage in dieser Woche:";
-App::$strings["[No description]"] = "[Keine Beschreibung]";
-App::$strings["Event Reminders"] = "Termin-Erinnerungen";
-App::$strings["Events this week:"] = "Termine in dieser Woche:";
-App::$strings["Like this channel"] = "Dieser Kanal gefällt mir";
-App::$strings["j F, Y"] = "j. F Y";
-App::$strings["j F"] = "j. F";
-App::$strings["Birthday:"] = "Geburtstag:";
-App::$strings["for %1\$d %2\$s"] = "seit %1\$d %2\$s";
-App::$strings["Sexual Preference:"] = "Sexuelle Orientierung:";
-App::$strings["Tags:"] = "Schlagworte:";
-App::$strings["Political Views:"] = "Politische Ansichten:";
-App::$strings["Religion:"] = "Religion:";
-App::$strings["Hobbies/Interests:"] = "Hobbys/Interessen:";
-App::$strings["Likes:"] = "Gefällt:";
-App::$strings["Dislikes:"] = "Gefällt nicht:";
-App::$strings["Contact information and Social Networks:"] = "Kontaktinformation und soziale Netzwerke:";
-App::$strings["My other channels:"] = "Meine anderen Kanäle:";
-App::$strings["Musical interests:"] = "Musikalische Interessen:";
-App::$strings["Books, literature:"] = "Bücher, Literatur:";
-App::$strings["Television:"] = "Fernsehen:";
-App::$strings["Film/dance/culture/entertainment:"] = "Film/Tanz/Kultur/Unterhaltung:";
-App::$strings["Love/Romance:"] = "Liebe/Romantik:";
-App::$strings["Work/employment:"] = "Arbeit/Anstellung:";
-App::$strings["School/education:"] = "Schule/Ausbildung:";
-App::$strings["Like this thing"] = "Gefällt mir";
+App::$strings["Public Timeline"] = "Öffentliche Zeitleiste";
App::$strings["created a new post"] = "Neuer Beitrag wurde erzeugt";
App::$strings["commented on %s's post"] = "hat %s's Beitrag kommentiert";
App::$strings["Embedded content"] = "Eingebetteter Inhalt";
App::$strings["Embedding disabled"] = "Einbetten ausgeschaltet";
-App::$strings["Visible to your default audience"] = "Standard-Sichtbarkeit gemäß Kanaleinstellungen";
-App::$strings["Limit access:"] = "Beschränke Zugriff:";
-App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Wähle \"Anzeigen\", um Betrachtung zuzulassen. \"Nicht anzeigen\" überstimmt und limitiert den Aktionsradius von \"Anzeigen\" für Ausnahmen.";
-App::$strings["Show"] = "Anzeigen";
-App::$strings["Don't show"] = "Nicht anzeigen";
-App::$strings["Other networks and post services"] = "Andere Netzwerke und Platformen";
-App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der Beitrag gesendet wurde.<br />Diese Berechtigungen bestimmen, wer den Beitrag sehen kann.";
App::$strings["Currently Male"] = "Momentan männlich";
App::$strings["Currently Female"] = "Momentan weiblich";
App::$strings["Mostly Male"] = "Größtenteils männlich";
@@ -1517,11 +1472,13 @@ App::$strings["Uncertain"] = "Ungewiss";
App::$strings["It's complicated"] = "Es ist kompliziert";
App::$strings["Don't care"] = "Interessiert mich nicht";
App::$strings["Ask me"] = "Frag mich mal";
-App::$strings[" and "] = "und";
-App::$strings["public profile"] = "öffentliches Profil";
-App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s hat %2\$s auf &ldquo;%3\$s&rdquo; geändert";
-App::$strings["Visit %1\$s's %2\$s"] = "Besuche %1\$s's %2\$s";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s hat ein aktualisiertes %2\$s, %3\$s wurde verändert.";
+App::$strings["New window"] = "Neues Fenster";
+App::$strings["Open the selected location in a different window or browser tab"] = "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab";
+App::$strings["User '%s' deleted"] = "Benutzer '%s' gelöscht";
+App::$strings["Invalid data packet"] = "Ungültiges Datenpaket";
+App::$strings["Unable to verify channel signature"] = "Konnte die Signatur des Kanals nicht verifizieren";
+App::$strings["Unable to verify site signature for %s"] = "Kann die Signatur der Seite von %s nicht verifizieren";
+App::$strings["invalid target signature"] = "Ungültige Signatur des Ziels";
App::$strings["%d invitation available"] = array(
0 => "%d Einladung verfügbar",
1 => "%d Einladungen verfügbar",
@@ -1550,19 +1507,6 @@ App::$strings["Needs Action"] = "Aktion erforderlich";
App::$strings["Completed"] = "Abgeschlossen";
App::$strings["In Process"] = "In Bearbeitung";
App::$strings["Cancelled"] = "gestrichen";
-App::$strings["Image exceeds website size limit of %lu bytes"] = "Bild überschreitet das Webseitenlimit von %lu Bytes";
-App::$strings["Image file is empty."] = "Bilddatei ist leer.";
-App::$strings["Photo storage failed."] = "Fotospeicherung fehlgeschlagen.";
-App::$strings["a new photo"] = "ein neues Foto";
-App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s hat %2\$s auf %3\$s veröffentlicht";
-App::$strings["Photo Albums"] = "Fotoalben";
-App::$strings["Upload New Photos"] = "Neue Fotos hochladen";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen.";
-App::$strings["Channel clone failed. Import failed."] = "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen.";
-App::$strings["Invalid data packet"] = "Ungültiges Datenpaket";
-App::$strings["Unable to verify channel signature"] = "Konnte die Signatur des Kanals nicht verifizieren";
-App::$strings["Unable to verify site signature for %s"] = "Kann die Signatur der Seite von %s nicht verifizieren";
-App::$strings["invalid target signature"] = "Ungültige Signatur des Ziels";
App::$strings["System"] = "System";
App::$strings["New App"] = "Neue App";
App::$strings["Suggestions"] = "Vorschläge";
@@ -1633,25 +1577,59 @@ App::$strings["Duplicate room name"] = "Name des Chatraums bereits vergeben";
App::$strings["Invalid room specifier."] = "Ungültiger Raumbezeichner.";
App::$strings["Room not found."] = "Chatraum konnte nicht gefunden werden.";
App::$strings["Room is full"] = "Der Chatraum ist voll";
-App::$strings["New window"] = "Neues Fenster";
-App::$strings["Open the selected location in a different window or browser tab"] = "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab";
-App::$strings["User '%s' deleted"] = "Benutzer '%s' gelöscht";
-App::$strings["Logged out."] = "Ausgeloggt.";
-App::$strings["Failed authentication"] = "Authentifizierung fehlgeschlagen";
+App::$strings["Unable to obtain identity information from database"] = "Kann keine Identitäts-Informationen aus Datenbank beziehen";
+App::$strings["Empty name"] = "Namensfeld leer";
+App::$strings["Name too long"] = "Name ist zu lang";
+App::$strings["No account identifier"] = "Keine Account-Kennung";
+App::$strings["Nickname is required."] = "Spitzname ist erforderlich.";
+App::$strings["Reserved nickname. Please choose another."] = "Reservierter Kurzname. Bitte wähle einen anderen.";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Der Spitzname enthält nicht-unterstütze Zeichen oder wird bereits auf dieser Seite genutzt.";
+App::$strings["Unable to retrieve created identity"] = "Kann die erstellte Identität nicht empfangen";
+App::$strings["Default Profile"] = "Standard-Profil";
+App::$strings["Requested channel is not available."] = "Angeforderte Kanal nicht verfügbar.";
+App::$strings["Create New Profile"] = "Neues Profil erstellen";
+App::$strings["Edit Profile"] = "Profile bearbeiten";
+App::$strings["Visible to everybody"] = "Für jeden sichtbar";
+App::$strings["Gender:"] = "Geschlecht:";
+App::$strings["Status:"] = "Status:";
+App::$strings["Homepage:"] = "Homepage:";
+App::$strings["Online Now"] = "gerade online";
+App::$strings["F d"] = "d. F";
+App::$strings["Birthday Reminders"] = "Geburtstags Erinnerungen";
+App::$strings["Birthdays this week:"] = "Geburtstage in dieser Woche:";
+App::$strings["[No description]"] = "[Keine Beschreibung]";
+App::$strings["Event Reminders"] = "Termin-Erinnerungen";
+App::$strings["Events this week:"] = "Termine in dieser Woche:";
+App::$strings["Like this channel"] = "Dieser Kanal gefällt mir";
+App::$strings["j F, Y"] = "j. F Y";
+App::$strings["j F"] = "j. F";
+App::$strings["Birthday:"] = "Geburtstag:";
+App::$strings["for %1\$d %2\$s"] = "seit %1\$d %2\$s";
+App::$strings["Sexual Preference:"] = "Sexuelle Orientierung:";
+App::$strings["Tags:"] = "Schlagworte:";
+App::$strings["Political Views:"] = "Politische Ansichten:";
+App::$strings["Religion:"] = "Religion:";
+App::$strings["Hobbies/Interests:"] = "Hobbys/Interessen:";
+App::$strings["Likes:"] = "Gefällt:";
+App::$strings["Dislikes:"] = "Gefällt nicht:";
+App::$strings["Contact information and Social Networks:"] = "Kontaktinformation und soziale Netzwerke:";
+App::$strings["My other channels:"] = "Meine anderen Kanäle:";
+App::$strings["Musical interests:"] = "Musikalische Interessen:";
+App::$strings["Books, literature:"] = "Bücher, Literatur:";
+App::$strings["Television:"] = "Fernsehen:";
+App::$strings["Film/dance/culture/entertainment:"] = "Film/Tanz/Kultur/Unterhaltung:";
+App::$strings["Love/Romance:"] = "Liebe/Romantik:";
+App::$strings["Work/employment:"] = "Arbeit/Anstellung:";
+App::$strings["School/education:"] = "Schule/Ausbildung:";
+App::$strings["Like this thing"] = "Gefällt mir";
App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "Das Security-Token des Formulars war nicht korrekt. Das ist wahrscheinlich passiert, weil das Formular zu lange (>3 Stunden) offen war, bevor es abgeschickt wurde.";
-App::$strings["(Unknown)"] = "(Unbekannt)";
-App::$strings["Visible to anybody on the internet."] = "Für jeden im Internet sichtbar.";
-App::$strings["Visible to you only."] = "Nur für Dich sichtbar.";
-App::$strings["Visible to anybody in this network."] = "Für jedes \$Projectname-Mitglied sichtbar.";
-App::$strings["Visible to anybody authenticated."] = "Für jeden sichtbar, der angemeldet ist.";
-App::$strings["Visible to anybody on %s."] = "Für jeden auf %s sichtbar.";
-App::$strings["Visible to all connections."] = "Für alle Verbindungen sichtbar.";
-App::$strings["Visible to approved connections."] = "Nur für akzeptierte Verbindungen sichtbar.";
-App::$strings["Visible to specific connections."] = "Sichtbar für bestimmte Verbindungen.";
-App::$strings["Privacy group is empty."] = "Gruppe ist leer.";
-App::$strings["Privacy group: %s"] = "Gruppe: %s";
-App::$strings["Connection not found."] = "Die Verbindung wurde nicht gefunden.";
-App::$strings["profile photo"] = "Profilfoto";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "Bild überschreitet das Webseitenlimit von %lu Bytes";
+App::$strings["Image file is empty."] = "Bilddatei ist leer.";
+App::$strings["Photo storage failed."] = "Fotospeicherung fehlgeschlagen.";
+App::$strings["a new photo"] = "ein neues Foto";
+App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s hat %2\$s auf %3\$s veröffentlicht";
+App::$strings["Photo Albums"] = "Fotoalben";
+App::$strings["Upload New Photos"] = "Neue Fotos hochladen";
App::$strings["Logout"] = "Abmelden";
App::$strings["End this session"] = "Beende diese Sitzung";
App::$strings["Home"] = "Home";
@@ -1701,13 +1679,6 @@ App::$strings["Site Setup and Configuration"] = "Seiten-Einrichtung und -Konfigu
App::$strings["Loading..."] = "Lädt ...";
App::$strings["@name, #tag, ?doc, content"] = "@Name, #Schlagwort, ?Dokumentation, Inhalt";
App::$strings["Please wait..."] = "Bitte warten...";
-App::$strings["view full size"] = "In Vollbildansicht anschauen";
-App::$strings["\$Projectname Notification"] = "\$Projectname-Benachrichtigung";
-App::$strings["\$projectname"] = "\$projectname";
-App::$strings["Thank You,"] = "Danke.";
-App::$strings["%s Administrator"] = "der Administrator von %s";
-App::$strings["Administrator"] = "Administrator";
-App::$strings["No Subject"] = "Kein Betreff";
App::$strings["Frequently"] = "Häufig";
App::$strings["Hourly"] = "Stündlich";
App::$strings["Twice daily"] = "Zwei Mal am Tag";
@@ -1724,6 +1695,8 @@ App::$strings["Zot"] = "Zot!";
App::$strings["LinkedIn"] = "LinkedIn";
App::$strings["XMPP/IM"] = "XMPP/IM";
App::$strings["MySpace"] = "MySpace";
+App::$strings["Logged out."] = "Ausgeloggt.";
+App::$strings["Failed authentication"] = "Authentifizierung fehlgeschlagen";
App::$strings["Item was not found."] = "Beitrag wurde nicht gefunden.";
App::$strings["No source file."] = "Keine Quelldatei.";
App::$strings["Cannot locate file to replace"] = "Kann Datei zum Ersetzen nicht finden";
@@ -1779,6 +1752,10 @@ App::$strings["Directory Options"] = "Verzeichnisoptionen";
App::$strings["Safe Mode"] = "Sicherer Modus";
App::$strings["Public Forums Only"] = "Nur öffentliche Foren";
App::$strings["This Website Only"] = "Nur dieser Hub";
+App::$strings["\$Projectname Notification"] = "\$Projectname-Benachrichtigung";
+App::$strings["\$projectname"] = "\$projectname";
+App::$strings["Thank You,"] = "Danke.";
+App::$strings["%s Administrator"] = "der Administrator von %s";
App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Benachrichtigung] Neue Mail empfangen auf %s";
App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s hat Dir eine private Nachricht auf %3\$s gesendet.";
@@ -1860,6 +1837,18 @@ App::$strings["Code"] = "Code";
App::$strings["Image"] = "Bild";
App::$strings["Insert Link"] = "Link einfügen";
App::$strings["Video"] = "Video";
+App::$strings[" and "] = "und";
+App::$strings["public profile"] = "öffentliches Profil";
+App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s hat %2\$s auf &ldquo;%3\$s&rdquo; geändert";
+App::$strings["Visit %1\$s's %2\$s"] = "Besuche %1\$s's %2\$s";
+App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s hat ein aktualisiertes %2\$s, %3\$s wurde verändert.";
+App::$strings["Channel is blocked on this site."] = "Der Kanal ist auf dieser Seite blockiert ";
+App::$strings["Channel location missing."] = "Adresse des Kanals fehlt.";
+App::$strings["Response from remote channel was incomplete."] = "Antwort des entfernten Kanals war unvollständig.";
+App::$strings["Channel was deleted and no longer exists."] = "Kanal wurde gelöscht und existiert nicht mehr.";
+App::$strings["Protocol disabled."] = "Protokoll deaktiviert.";
+App::$strings["Channel discovery failed."] = "Kanalsuche fehlgeschlagen";
+App::$strings["Cannot connect to yourself."] = "Du kannst Dich nicht mit Dir selbst verbinden.";
App::$strings["General Features"] = "Allgemeine Funktionen";
App::$strings["Content Expiration"] = "Verfall von Inhalten";
App::$strings["Remove posts/comments and/or private messages at a future time"] = "Ermöglicht das automatische Löschen von Beiträgen, Kommentaren und/oder privaten Nachrichten zu einem zukünftigen Datum.";
@@ -1927,13 +1916,13 @@ App::$strings["Star Posts"] = "Beiträge mit Sternchen versehen";
App::$strings["Ability to mark special posts with a star indicator"] = "Ermöglicht die lokale Markierung spezieller Beiträge mit einem Sternchen-Symbol";
App::$strings["Tag Cloud"] = "Schlagwort-Wolke";
App::$strings["Provide a personal tag cloud on your channel page"] = "Aktiviert die Anzeige einer Schlagwort-Wolke (Tag Cloud) auf Deiner Kanal-Seite";
-App::$strings["Channel is blocked on this site."] = "Der Kanal ist auf dieser Seite blockiert ";
-App::$strings["Channel location missing."] = "Adresse des Kanals fehlt.";
-App::$strings["Response from remote channel was incomplete."] = "Antwort des entfernten Kanals war unvollständig.";
-App::$strings["Channel was deleted and no longer exists."] = "Kanal wurde gelöscht und existiert nicht mehr.";
-App::$strings["Protocol disabled."] = "Protokoll deaktiviert.";
-App::$strings["Channel discovery failed."] = "Kanalsuche fehlgeschlagen";
-App::$strings["Cannot connect to yourself."] = "Du kannst Dich nicht mit Dir selbst verbinden.";
+App::$strings["No recipient provided."] = "Kein Empfänger angegeben";
+App::$strings["[no subject]"] = "[no subject]";
+App::$strings["Unable to determine sender."] = "Kann Absender nicht bestimmen.";
+App::$strings["Stored post could not be verified."] = "Gespeicherter Beitrag konnten nicht überprüft werden.";
+App::$strings["view full size"] = "In Vollbildansicht anschauen";
+App::$strings["Administrator"] = "Administrator";
+App::$strings["No Subject"] = "Kein Betreff";
App::$strings["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."] = "Es hat früher schon einmal eine Gruppe mit diesem Namen existiert, die gelöscht wurde. Es <strong>könnten</strong> von damals noch Elemente (Beiträge, Dateien etc.) vorhanden sein, die allen jetzigen und zukünftigen Mitgliedern dieser Gruppe den Zugriff erlauben. Wenn das nicht Deine Absicht ist, erstelle bitte eine neue Gruppe mit einem anderen Namen.";
App::$strings["Add new connections to this privacy group"] = "Neue Verbindung zu dieser Gruppe hinzufügen";
App::$strings["edit"] = "Bearbeiten";
@@ -2129,12 +2118,13 @@ App::$strings["want"] = "will";
App::$strings["wants"] = "will";
App::$strings["likes"] = "gefällt";
App::$strings["dislikes"] = "missfällt";
+App::$strings["Visible to your default audience"] = "Standard-Sichtbarkeit gemäß Kanaleinstellungen";
App::$strings["Only me"] = "Nur ich";
App::$strings["Public"] = "Öffentlich";
App::$strings["Anybody in the \$Projectname network"] = "Jeder innerhalb des \$Projectname Netzwerks";
App::$strings["Any account on %s"] = "Jedes Nutzerkonto auf %s";
App::$strings["Any of my connections"] = "Alle meine Verbindungen";
-App::$strings["Only me (only specified contacts and me)"] = "Nur ich (nur ausgewählte Kontakte und ich)";
+App::$strings["Only connections I specifically allow"] = "Nur Verbindungen, denen ich es explizit erlaube";
App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Jeder, der angemeldet ist (kann Besucher anderer Netzwerke beinhalten)";
App::$strings["Any connections including those who haven't yet been approved"] = "Alle Verbindungen einschließlich der noch nicht bestätigten";
App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Dies ist Deine Voreinstellung für die Sichtbarkeit Deiner normalen Beiträge (Stream).";
@@ -2200,11 +2190,21 @@ App::$strings["__ctx:calendar__ month"] = "Monat";
App::$strings["__ctx:calendar__ week"] = "Woche";
App::$strings["__ctx:calendar__ day"] = "Tag";
App::$strings["__ctx:calendar__ All day"] = "Ganztägig";
-App::$strings["No recipient provided."] = "Kein Empfänger angegeben";
-App::$strings["[no subject]"] = "[no subject]";
-App::$strings["Unable to determine sender."] = "Kann Absender nicht bestimmen.";
-App::$strings["Stored post could not be verified."] = "Gespeicherter Beitrag konnten nicht überprüft werden.";
-App::$strings["Public Timeline"] = "Öffentliche Zeitleiste";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kann keinen doppelten Kanal-Identifikator auf diesem System erzeugen (Spitzname oder Hash schon belegt). Import fehlgeschlagen.";
+App::$strings["Channel clone failed. Import failed."] = "Klonen des Kanals fehlgeschlagen. Import fehlgeschlagen.";
+App::$strings["(Unknown)"] = "(Unbekannt)";
+App::$strings["Visible to anybody on the internet."] = "Für jeden im Internet sichtbar.";
+App::$strings["Visible to you only."] = "Nur für Dich sichtbar.";
+App::$strings["Visible to anybody in this network."] = "Für jedes \$Projectname-Mitglied sichtbar.";
+App::$strings["Visible to anybody authenticated."] = "Für jeden sichtbar, der angemeldet ist.";
+App::$strings["Visible to anybody on %s."] = "Für jeden auf %s sichtbar.";
+App::$strings["Visible to all connections."] = "Für alle Verbindungen sichtbar.";
+App::$strings["Visible to approved connections."] = "Nur für akzeptierte Verbindungen sichtbar.";
+App::$strings["Visible to specific connections."] = "Sichtbar für bestimmte Verbindungen.";
+App::$strings["Privacy group is empty."] = "Gruppe ist leer.";
+App::$strings["Privacy group: %s"] = "Gruppe: %s";
+App::$strings["Connection not found."] = "Die Verbindung wurde nicht gefunden.";
+App::$strings["profile photo"] = "Profilfoto";
App::$strings["New Page"] = "Neue Seite";
App::$strings["Title"] = "Titel";
App::$strings["Can view my normal stream and posts"] = "Kann meine normalen Beiträge sehen";
@@ -2256,6 +2256,14 @@ App::$strings["Post"] = "Beitrag schreiben";
App::$strings["Purchase"] = "Kaufen";
App::$strings["Attachments:"] = "Anhänge:";
App::$strings["\$Projectname event notification:"] = "\$Projectname-Terminbenachrichtigung:";
+App::$strings["Add others"] = "Andere hinzufügen";
+App::$strings["Who can see this?"] = "Wer kann das sehen?";
+App::$strings["Custom selection"] = "Benutzerdefinierte Auswahl";
+App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Wähle \"Anzeigen\", um Betrachtung zuzulassen. \"Nicht anzeigen\" überstimmt und limitiert den Aktionsradius von \"Anzeigen\" für Ausnahmen.";
+App::$strings["Show"] = "Anzeigen";
+App::$strings["Don't show"] = "Nicht anzeigen";
+App::$strings["Other networks and post services"] = "Andere Netzwerke und Platformen";
+App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Beitragsberechtigungen %s können nicht geändert werden %s, nachdem der Beitrag gesendet wurde.<br />Diese Berechtigungen bestimmen, wer den Beitrag sehen kann.";
App::$strings["Focus (Hubzilla default)"] = "Focus (Voreinstellung für Hubzilla)";
App::$strings["Theme settings"] = "Theme-Einstellungen";
App::$strings["Select scheme"] = "Schema wählen";
diff --git a/view/de/htconfig.tpl b/view/de/htconfig.tpl
index adbb7ea92..2b71610b6 100644
--- a/view/de/htconfig.tpl
+++ b/view/de/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/en-au/htconfig.tpl b/view/en-au/htconfig.tpl
index 4dcc3c7c9..896b35bb2 100644
--- a/view/en-au/htconfig.tpl
+++ b/view/en-au/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/en-gb/htconfig.tpl b/view/en-gb/htconfig.tpl
index ead987fcc..04eb404fc 100644
--- a/view/en-gb/htconfig.tpl
+++ b/view/en-gb/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/en/htconfig.tpl b/view/en/htconfig.tpl
index 4aa6132a6..47daf3f99 100644
--- a/view/en/htconfig.tpl
+++ b/view/en/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name? DO NOT ADD A TRAILING SLASH!
diff --git a/view/eo/htconfig.tpl b/view/eo/htconfig.tpl
index 7a452087b..b90c00d6e 100644
--- a/view/eo/htconfig.tpl
+++ b/view/eo/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/es-es/hmessages.po b/view/es-es/hmessages.po
index 8852239f5..a5fb83848 100644
--- a/view/es-es/hmessages.po
+++ b/view/es-es/hmessages.po
@@ -3,7 +3,7 @@
# This file is distributed under the same license as the Red package.
#
# Translators:
-# Alfonso <alfonsomthd@tutanota.com>, 2015
+# alfonsomthd <alfonsomthd@tutanota.com>, 2015
# inboxwall <axetransit@gmail.com>, 2015
# jeroenpraat <jeroenpraat@xs4all.nl>, 2015
# Manuel Jiménez Friaza <mjfriaza@openmailbox.org>, 2015-2016
@@ -13,8 +13,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-13 00:02-0700\n"
-"PO-Revision-Date: 2016-05-13 16:14+0000\n"
+"POT-Creation-Date: 2016-05-20 00:02-0700\n"
+"PO-Revision-Date: 2016-05-20 09:42+0000\n"
"Last-Translator: Manuel Jiménez Friaza <mjfriaza@openmailbox.org>\n"
"Language-Team: Spanish (Spain) (http://www.transifex.com/Friendica/red-matrix/language/es_ES/)\n"
"MIME-Version: 1.0\n"
@@ -72,14 +72,14 @@ msgstr "Total"
msgid "Shared"
msgstr "Compartido"
-#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:303
+#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:305
#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:182
#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/New_channel.php:142
#: ../../Zotlabs/Module/Webpages.php:186
msgid "Create"
msgstr "Crear"
-#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:305
+#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:307
#: ../../Zotlabs/Module/Cover_photo.php:357
#: ../../Zotlabs/Module/Photos.php:825 ../../Zotlabs/Module/Photos.php:1367
#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1519
@@ -107,7 +107,7 @@ msgstr "Tamaño"
msgid "Last Modified"
msgstr "Última modificación"
-#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Admin.php:2075
+#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Admin.php:2089
#: ../../Zotlabs/Module/Blocks.php:157
#: ../../Zotlabs/Module/Connections.php:290
#: ../../Zotlabs/Module/Connections.php:310
@@ -125,7 +125,7 @@ msgid "Edit"
msgstr "Editar"
#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Admin.php:1043
-#: ../../Zotlabs/Module/Admin.php:1202 ../../Zotlabs/Module/Admin.php:2076
+#: ../../Zotlabs/Module/Admin.php:1202 ../../Zotlabs/Module/Admin.php:2090
#: ../../Zotlabs/Module/Blocks.php:159
#: ../../Zotlabs/Module/Connections.php:263
#: ../../Zotlabs/Module/Connedit.php:573
@@ -139,25 +139,25 @@ msgstr "Editar"
msgid "Delete"
msgstr "Eliminar"
-#: ../../Zotlabs/Storage/Browser.php:282
+#: ../../Zotlabs/Storage/Browser.php:284
#, php-format
msgid "You are using %1$s of your available file storage."
msgstr "Está usando %1$s de su espacio disponible para ficheros."
-#: ../../Zotlabs/Storage/Browser.php:287
+#: ../../Zotlabs/Storage/Browser.php:289
#, php-format
msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
msgstr "Está usando %1$s de %2$s que tiene a su disposición para ficheros. (%3$s&#37;)"
-#: ../../Zotlabs/Storage/Browser.php:299
+#: ../../Zotlabs/Storage/Browser.php:301
msgid "WARNING:"
msgstr "ATENCIÓN:"
-#: ../../Zotlabs/Storage/Browser.php:302
+#: ../../Zotlabs/Storage/Browser.php:304
msgid "Create new folder"
msgstr "Crear nueva carpeta"
-#: ../../Zotlabs/Storage/Browser.php:304
+#: ../../Zotlabs/Storage/Browser.php:306
msgid "Upload file"
msgstr "Subir fichero"
@@ -203,7 +203,7 @@ msgstr "Subir fichero"
#: ../../Zotlabs/Module/Profile_photo.php:256
#: ../../Zotlabs/Module/Profile_photo.php:269
#: ../../Zotlabs/Module/Profiles.php:202 ../../Zotlabs/Module/Profiles.php:600
-#: ../../Zotlabs/Module/Rate.php:115 ../../Zotlabs/Module/Register.php:77
+#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Register.php:77
#: ../../Zotlabs/Module/Regmod.php:21
#: ../../Zotlabs/Module/Service_limits.php:11
#: ../../Zotlabs/Module/Settings.php:572 ../../Zotlabs/Module/Setup.php:238
@@ -214,14 +214,14 @@ msgstr "Subir fichero"
#: ../../Zotlabs/Module/Viewconnections.php:26
#: ../../Zotlabs/Module/Viewconnections.php:31
#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:74
-#: ../../include/photos.php:29 ../../include/chat.php:133
-#: ../../include/items.php:3439 ../../include/attach.php:141
-#: ../../include/attach.php:189 ../../include/attach.php:252
-#: ../../include/attach.php:266 ../../include/attach.php:273
-#: ../../include/attach.php:338 ../../include/attach.php:352
-#: ../../include/attach.php:359 ../../include/attach.php:437
-#: ../../include/attach.php:895 ../../include/attach.php:966
-#: ../../include/attach.php:1118 ../../index.php:174
+#: ../../include/chat.php:133 ../../include/photos.php:29
+#: ../../include/attach.php:141 ../../include/attach.php:189
+#: ../../include/attach.php:252 ../../include/attach.php:266
+#: ../../include/attach.php:273 ../../include/attach.php:338
+#: ../../include/attach.php:352 ../../include/attach.php:359
+#: ../../include/attach.php:437 ../../include/attach.php:895
+#: ../../include/attach.php:966 ../../include/attach.php:1118
+#: ../../include/items.php:3439 ../../index.php:175
msgid "Permission denied."
msgstr "Acceso denegado."
@@ -274,7 +274,7 @@ msgid "Theme settings updated."
msgstr "Ajustes del tema actualizados."
#: ../../Zotlabs/Module/Admin.php:164 ../../Zotlabs/Module/Admin.php:1239
-#: ../../Zotlabs/Module/Admin.php:1541 ../../Zotlabs/Module/Display.php:44
+#: ../../Zotlabs/Module/Admin.php:1543 ../../Zotlabs/Module/Display.php:44
#: ../../Zotlabs/Module/Filestorage.php:33 ../../Zotlabs/Module/Thing.php:89
#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3360
msgid "Item not found."
@@ -320,8 +320,8 @@ msgstr "Debe actualizar su software"
#: ../../Zotlabs/Module/Admin.php:711 ../../Zotlabs/Module/Admin.php:755
#: ../../Zotlabs/Module/Admin.php:1034 ../../Zotlabs/Module/Admin.php:1198
#: ../../Zotlabs/Module/Admin.php:1313 ../../Zotlabs/Module/Admin.php:1403
-#: ../../Zotlabs/Module/Admin.php:1592 ../../Zotlabs/Module/Admin.php:1626
-#: ../../Zotlabs/Module/Admin.php:1711
+#: ../../Zotlabs/Module/Admin.php:1594 ../../Zotlabs/Module/Admin.php:1628
+#: ../../Zotlabs/Module/Admin.php:1713
msgid "Administration"
msgstr "Administración"
@@ -390,7 +390,7 @@ msgstr "no soportado"
#: ../../Zotlabs/Module/Settings.php:581 ../../include/dir_fns.php:141
#: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143
#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1619
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1633
msgid "No"
msgstr "No"
@@ -410,7 +410,7 @@ msgstr "Sí - con aprobación"
#: ../../Zotlabs/Module/Settings.php:581 ../../include/dir_fns.php:141
#: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143
#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1619
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1633
msgid "Yes"
msgstr "Sí"
@@ -437,10 +437,10 @@ msgstr "Sitio"
#: ../../Zotlabs/Module/Admin.php:492 ../../Zotlabs/Module/Admin.php:688
#: ../../Zotlabs/Module/Admin.php:771 ../../Zotlabs/Module/Admin.php:1036
#: ../../Zotlabs/Module/Admin.php:1200 ../../Zotlabs/Module/Admin.php:1405
-#: ../../Zotlabs/Module/Admin.php:1628 ../../Zotlabs/Module/Admin.php:1713
-#: ../../Zotlabs/Module/Admin.php:2078 ../../Zotlabs/Module/Appman.php:125
+#: ../../Zotlabs/Module/Admin.php:1630 ../../Zotlabs/Module/Admin.php:1715
+#: ../../Zotlabs/Module/Admin.php:2092 ../../Zotlabs/Module/Appman.php:125
#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Chat.php:194
-#: ../../Zotlabs/Module/Chat.php:236 ../../Zotlabs/Module/Connect.php:97
+#: ../../Zotlabs/Module/Chat.php:236 ../../Zotlabs/Module/Connect.php:98
#: ../../Zotlabs/Module/Connedit.php:734 ../../Zotlabs/Module/Events.php:475
#: ../../Zotlabs/Module/Events.php:672
#: ../../Zotlabs/Module/Filestorage.php:162
@@ -453,7 +453,7 @@ msgstr "Sitio"
#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Photos.php:677
#: ../../Zotlabs/Module/Photos.php:1052 ../../Zotlabs/Module/Photos.php:1092
#: ../../Zotlabs/Module/Photos.php:1210 ../../Zotlabs/Module/Poke.php:186
-#: ../../Zotlabs/Module/Profiles.php:691 ../../Zotlabs/Module/Rate.php:172
+#: ../../Zotlabs/Module/Profiles.php:691 ../../Zotlabs/Module/Rate.php:170
#: ../../Zotlabs/Module/Settings.php:590 ../../Zotlabs/Module/Settings.php:703
#: ../../Zotlabs/Module/Settings.php:731 ../../Zotlabs/Module/Settings.php:754
#: ../../Zotlabs/Module/Settings.php:842
@@ -1002,7 +1002,7 @@ msgstr "Fecha de solicitud"
#: ../../Zotlabs/Module/Admin.php:1039 ../../Zotlabs/Module/Admin.php:1048
#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
-#: ../../include/contact_selectors.php:81 ../../boot.php:1617
+#: ../../include/contact_selectors.php:81 ../../boot.php:1631
msgid "Email"
msgstr "Correo electrónico"
@@ -1164,11 +1164,11 @@ msgstr "Extensión %s desactivada."
msgid "Plugin %s enabled."
msgstr "Extensión %s activada."
-#: ../../Zotlabs/Module/Admin.php:1282 ../../Zotlabs/Module/Admin.php:1565
+#: ../../Zotlabs/Module/Admin.php:1282 ../../Zotlabs/Module/Admin.php:1567
msgid "Disable"
msgstr "Desactivar"
-#: ../../Zotlabs/Module/Admin.php:1285 ../../Zotlabs/Module/Admin.php:1567
+#: ../../Zotlabs/Module/Admin.php:1285 ../../Zotlabs/Module/Admin.php:1569
msgid "Enable"
msgstr "Activar"
@@ -1177,21 +1177,21 @@ msgstr "Activar"
msgid "Plugins"
msgstr "Extensiones (plugins)"
-#: ../../Zotlabs/Module/Admin.php:1315 ../../Zotlabs/Module/Admin.php:1594
+#: ../../Zotlabs/Module/Admin.php:1315 ../../Zotlabs/Module/Admin.php:1596
msgid "Toggle"
msgstr "Cambiar"
-#: ../../Zotlabs/Module/Admin.php:1316 ../../Zotlabs/Module/Admin.php:1595
+#: ../../Zotlabs/Module/Admin.php:1316 ../../Zotlabs/Module/Admin.php:1597
#: ../../include/widgets.php:638 ../../include/nav.php:208
#: ../../include/apps.php:166
msgid "Settings"
msgstr "Ajustes"
-#: ../../Zotlabs/Module/Admin.php:1323 ../../Zotlabs/Module/Admin.php:1604
+#: ../../Zotlabs/Module/Admin.php:1323 ../../Zotlabs/Module/Admin.php:1606
msgid "Author: "
msgstr "Autor:"
-#: ../../Zotlabs/Module/Admin.php:1324 ../../Zotlabs/Module/Admin.php:1605
+#: ../../Zotlabs/Module/Admin.php:1324 ../../Zotlabs/Module/Admin.php:1607
msgid "Maintainer: "
msgstr "Mantenedor:"
@@ -1251,146 +1251,154 @@ msgid "Cancel"
msgstr "Cancelar"
#: ../../Zotlabs/Module/Admin.php:1411
-msgid "Add Plugin Repo"
-msgstr "Añadir un repositorio"
+msgid "Manage Repos"
+msgstr "Gestionar los repositorios"
+
+#: ../../Zotlabs/Module/Admin.php:1412
+msgid "Installed Plugin Repositories"
+msgstr "Repositorios de los plugins instalados"
+
+#: ../../Zotlabs/Module/Admin.php:1413
+msgid "Install a New Plugin Repository"
+msgstr "Instalar un nuevo repositorio de plugins"
-#: ../../Zotlabs/Module/Admin.php:1417 ../../Zotlabs/Module/Settings.php:77
+#: ../../Zotlabs/Module/Admin.php:1419 ../../Zotlabs/Module/Settings.php:77
#: ../../Zotlabs/Module/Settings.php:616 ../../include/apps.php:284
msgid "Update"
msgstr "Actualizar"
-#: ../../Zotlabs/Module/Admin.php:1418
+#: ../../Zotlabs/Module/Admin.php:1420
msgid "Switch branch"
msgstr "Cambiar la rama"
-#: ../../Zotlabs/Module/Admin.php:1419 ../../Zotlabs/Module/Photos.php:998
+#: ../../Zotlabs/Module/Admin.php:1421 ../../Zotlabs/Module/Photos.php:998
#: ../../Zotlabs/Module/Tagrm.php:137
msgid "Remove"
msgstr "Eliminar"
-#: ../../Zotlabs/Module/Admin.php:1530
+#: ../../Zotlabs/Module/Admin.php:1532
msgid "No themes found."
msgstr "No se han encontrado temas."
-#: ../../Zotlabs/Module/Admin.php:1586
+#: ../../Zotlabs/Module/Admin.php:1588
msgid "Screenshot"
msgstr "Instantánea de pantalla"
-#: ../../Zotlabs/Module/Admin.php:1593 ../../Zotlabs/Module/Admin.php:1627
+#: ../../Zotlabs/Module/Admin.php:1595 ../../Zotlabs/Module/Admin.php:1629
#: ../../include/widgets.php:1389
msgid "Themes"
msgstr "Temas"
-#: ../../Zotlabs/Module/Admin.php:1632
+#: ../../Zotlabs/Module/Admin.php:1634
msgid "[Experimental]"
msgstr "[Experimental]"
-#: ../../Zotlabs/Module/Admin.php:1633
+#: ../../Zotlabs/Module/Admin.php:1635
msgid "[Unsupported]"
msgstr "[No soportado]"
-#: ../../Zotlabs/Module/Admin.php:1657
+#: ../../Zotlabs/Module/Admin.php:1659
msgid "Log settings updated."
msgstr "Actualizado el informe de configuraciones."
-#: ../../Zotlabs/Module/Admin.php:1712 ../../include/widgets.php:1410
+#: ../../Zotlabs/Module/Admin.php:1714 ../../include/widgets.php:1410
#: ../../include/widgets.php:1420
msgid "Logs"
msgstr "Informes"
-#: ../../Zotlabs/Module/Admin.php:1714
+#: ../../Zotlabs/Module/Admin.php:1716
msgid "Clear"
msgstr "Vaciar"
-#: ../../Zotlabs/Module/Admin.php:1720
+#: ../../Zotlabs/Module/Admin.php:1722
msgid "Debugging"
msgstr "Depuración"
-#: ../../Zotlabs/Module/Admin.php:1721
+#: ../../Zotlabs/Module/Admin.php:1723
msgid "Log file"
msgstr "Fichero de informe"
-#: ../../Zotlabs/Module/Admin.php:1721
+#: ../../Zotlabs/Module/Admin.php:1723
msgid ""
"Must be writable by web server. Relative to your Red top-level directory."
msgstr "Debe tener permisos de escritura por el servidor web. La ruta es relativa al directorio de instalación de Hubzilla."
-#: ../../Zotlabs/Module/Admin.php:1722
+#: ../../Zotlabs/Module/Admin.php:1724
msgid "Log level"
msgstr "Nivel de depuración"
-#: ../../Zotlabs/Module/Admin.php:1990
+#: ../../Zotlabs/Module/Admin.php:2004
msgid "New Profile Field"
msgstr "Nuevo campo en el perfil"
-#: ../../Zotlabs/Module/Admin.php:1991 ../../Zotlabs/Module/Admin.php:2011
+#: ../../Zotlabs/Module/Admin.php:2005 ../../Zotlabs/Module/Admin.php:2025
msgid "Field nickname"
msgstr "Alias del campo"
-#: ../../Zotlabs/Module/Admin.php:1991 ../../Zotlabs/Module/Admin.php:2011
+#: ../../Zotlabs/Module/Admin.php:2005 ../../Zotlabs/Module/Admin.php:2025
msgid "System name of field"
msgstr "Nombre del campo en el sistema"
-#: ../../Zotlabs/Module/Admin.php:1992 ../../Zotlabs/Module/Admin.php:2012
+#: ../../Zotlabs/Module/Admin.php:2006 ../../Zotlabs/Module/Admin.php:2026
msgid "Input type"
msgstr "Tipo de entrada"
-#: ../../Zotlabs/Module/Admin.php:1993 ../../Zotlabs/Module/Admin.php:2013
+#: ../../Zotlabs/Module/Admin.php:2007 ../../Zotlabs/Module/Admin.php:2027
msgid "Field Name"
msgstr "Nombre del campo"
-#: ../../Zotlabs/Module/Admin.php:1993 ../../Zotlabs/Module/Admin.php:2013
+#: ../../Zotlabs/Module/Admin.php:2007 ../../Zotlabs/Module/Admin.php:2027
msgid "Label on profile pages"
msgstr "Etiqueta a mostrar en la página del perfil"
-#: ../../Zotlabs/Module/Admin.php:1994 ../../Zotlabs/Module/Admin.php:2014
+#: ../../Zotlabs/Module/Admin.php:2008 ../../Zotlabs/Module/Admin.php:2028
msgid "Help text"
msgstr "Texto de ayuda"
-#: ../../Zotlabs/Module/Admin.php:1994 ../../Zotlabs/Module/Admin.php:2014
+#: ../../Zotlabs/Module/Admin.php:2008 ../../Zotlabs/Module/Admin.php:2028
msgid "Additional info (optional)"
msgstr "Información adicional (opcional)"
-#: ../../Zotlabs/Module/Admin.php:1995 ../../Zotlabs/Module/Admin.php:2015
+#: ../../Zotlabs/Module/Admin.php:2009 ../../Zotlabs/Module/Admin.php:2029
#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Rbmark.php:32
#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/widgets.php:201
#: ../../include/text.php:934 ../../include/text.php:946
msgid "Save"
msgstr "Guardar"
-#: ../../Zotlabs/Module/Admin.php:2004
+#: ../../Zotlabs/Module/Admin.php:2018
msgid "Field definition not found"
msgstr "Definición del campo no encontrada"
-#: ../../Zotlabs/Module/Admin.php:2010
+#: ../../Zotlabs/Module/Admin.php:2024
msgid "Edit Profile Field"
msgstr "Modificar el campo del perfil"
-#: ../../Zotlabs/Module/Admin.php:2068 ../../include/widgets.php:1391
+#: ../../Zotlabs/Module/Admin.php:2082 ../../include/widgets.php:1391
msgid "Profile Fields"
msgstr "Campos del perfil"
-#: ../../Zotlabs/Module/Admin.php:2069
+#: ../../Zotlabs/Module/Admin.php:2083
msgid "Basic Profile Fields"
msgstr "Campos básicos del perfil"
-#: ../../Zotlabs/Module/Admin.php:2070
+#: ../../Zotlabs/Module/Admin.php:2084
msgid "Advanced Profile Fields"
msgstr "Campos avanzados del perfil"
-#: ../../Zotlabs/Module/Admin.php:2070
+#: ../../Zotlabs/Module/Admin.php:2084
msgid "(In addition to basic fields)"
msgstr "(Además de los campos básicos)"
-#: ../../Zotlabs/Module/Admin.php:2072
+#: ../../Zotlabs/Module/Admin.php:2086
msgid "All available fields"
msgstr "Todos los campos disponibles"
-#: ../../Zotlabs/Module/Admin.php:2073
+#: ../../Zotlabs/Module/Admin.php:2087
msgid "Custom Fields"
msgstr "Campos personalizados"
-#: ../../Zotlabs/Module/Admin.php:2077
+#: ../../Zotlabs/Module/Admin.php:2091
msgid "Create Custom Field"
msgstr "Crear un campo personalizado"
@@ -1666,7 +1674,7 @@ msgstr "Caducidad de los mensajes en los chats (en minutos)"
#: ../../Zotlabs/Module/Chat.php:233 ../../Zotlabs/Module/Filestorage.php:153
#: ../../Zotlabs/Module/Photos.php:671 ../../Zotlabs/Module/Photos.php:1045
#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:359
-#: ../../include/acl_selectors.php:285
+#: ../../include/acl_selectors.php:288
msgid "Permissions"
msgstr "Permisos"
@@ -1712,46 +1720,46 @@ msgstr "Conexiones comunes"
msgid "No connections in common."
msgstr "Ninguna conexión en común."
-#: ../../Zotlabs/Module/Connect.php:60 ../../Zotlabs/Module/Connect.php:108
+#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109
msgid "Continue"
msgstr "Continuar"
-#: ../../Zotlabs/Module/Connect.php:89
+#: ../../Zotlabs/Module/Connect.php:90
msgid "Premium Channel Setup"
msgstr "Configuración del canal premium"
-#: ../../Zotlabs/Module/Connect.php:91
+#: ../../Zotlabs/Module/Connect.php:92
msgid "Enable premium channel connection restrictions"
msgstr "Habilitar restricciones de conexión del canal premium"
-#: ../../Zotlabs/Module/Connect.php:92
+#: ../../Zotlabs/Module/Connect.php:93
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:94 ../../Zotlabs/Module/Connect.php:114
+#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115
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:95
+#: ../../Zotlabs/Module/Connect.php:96
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:96 ../../Zotlabs/Module/Connect.php:117
+#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118
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:105
+#: ../../Zotlabs/Module/Connect.php:106
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:113
+#: ../../Zotlabs/Module/Connect.php:114
msgid "Restricted or Premium Channel"
msgstr "Canal premium o restringido"
@@ -1877,9 +1885,9 @@ msgid "Connections"
msgstr "Conexiones"
#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44
-#: ../../include/acl_selectors.php:278 ../../include/nav.php:165
-#: ../../include/text.php:933 ../../include/text.php:945
-#: ../../include/apps.php:179
+#: ../../include/nav.php:165 ../../include/text.php:933
+#: ../../include/text.php:945 ../../include/apps.php:179
+#: ../../include/acl_selectors.php:281
msgid "Search"
msgstr "Buscar"
@@ -2029,9 +2037,9 @@ msgstr "Familia"
#: ../../Zotlabs/Module/Connedit.php:595 ../../Zotlabs/Module/Settings.php:342
#: ../../Zotlabs/Module/Settings.php:346 ../../Zotlabs/Module/Settings.php:347
#: ../../Zotlabs/Module/Settings.php:350 ../../Zotlabs/Module/Settings.php:361
+#: ../../include/profile_selectors.php:80 ../../include/widgets.php:495
#: ../../include/identity.php:389 ../../include/identity.php:390
-#: ../../include/identity.php:397 ../../include/profile_selectors.php:80
-#: ../../include/widgets.php:495
+#: ../../include/identity.php:397
msgid "Friends"
msgstr "Amigos/as"
@@ -2102,7 +2110,7 @@ msgstr "Gestión de las conexiones"
msgid "Slide to adjust your degree of friendship"
msgstr "Deslizar para ajustar el grado de amistad"
-#: ../../Zotlabs/Module/Connedit.php:717 ../../Zotlabs/Module/Rate.php:161
+#: ../../Zotlabs/Module/Connedit.php:717 ../../Zotlabs/Module/Rate.php:159
#: ../../include/js_strings.php:20
msgid "Rating"
msgstr "Valoración"
@@ -2323,8 +2331,8 @@ msgstr "Página personal:"
msgid "Age:"
msgstr "Edad:"
-#: ../../Zotlabs/Module/Directory.php:311 ../../include/identity.php:1029
-#: ../../include/event.php:52 ../../include/text.php:1481
+#: ../../Zotlabs/Module/Directory.php:311 ../../include/event.php:52
+#: ../../include/identity.php:1029 ../../include/text.php:1481
#: ../../include/bb2diaspora.php:509
msgid "Location:"
msgstr "Ubicación:"
@@ -2342,9 +2350,9 @@ msgid "About:"
msgstr "Sobre mí:"
#: ../../Zotlabs/Module/Directory.php:325 ../../Zotlabs/Module/Match.php:68
-#: ../../Zotlabs/Module/Suggest.php:56 ../../include/identity.php:1014
+#: ../../Zotlabs/Module/Suggest.php:56 ../../include/Contact.php:101
#: ../../include/widgets.php:147 ../../include/widgets.php:184
-#: ../../include/Contact.php:101 ../../include/conversation.php:961
+#: ../../include/identity.php:1014 ../../include/conversation.php:961
msgid "Connect"
msgstr "Conectar"
@@ -2425,7 +2433,7 @@ msgstr "El servidor de este directorio necesita un \"token\" de acceso"
#: ../../Zotlabs/Module/Group.php:72 ../../Zotlabs/Module/Import_items.php:112
#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Profperm.php:28
#: ../../Zotlabs/Module/Subthread.php:62 ../../include/items.php:383
-#: ../../index.php:173
+#: ../../index.php:174
msgid "Permission denied"
msgstr "Permiso denegado"
@@ -3352,7 +3360,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:90 ../../boot.php:1623
+#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1637
msgid "Password Reset"
msgstr "Restablecer la contraseña"
@@ -4223,8 +4231,8 @@ msgctxt "noun"
msgid "Dislikes"
msgstr "No me gusta"
-#: ../../Zotlabs/Module/Photos.php:1263 ../../include/acl_selectors.php:287
-#: ../../include/ItemObject.php:384
+#: ../../Zotlabs/Module/Photos.php:1263 ../../include/ItemObject.php:384
+#: ../../include/acl_selectors.php:290
msgid "Close"
msgstr "Cerrar"
@@ -4616,6 +4624,10 @@ msgstr "Tipo de acceso"
msgid "Registration Policy"
msgstr "Normas de registro"
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Software"
+msgstr "Software"
+
#: ../../Zotlabs/Module/Pubsites.php:31 ../../Zotlabs/Module/Ratings.php:103
#: ../../include/conversation.php:964
msgid "Ratings"
@@ -4625,20 +4637,20 @@ msgstr "Valoraciones"
msgid "Rate"
msgstr "Valorar"
-#: ../../Zotlabs/Module/Rate.php:162
+#: ../../Zotlabs/Module/Rate.php:160
msgid "Website:"
msgstr "Sitio web:"
-#: ../../Zotlabs/Module/Rate.php:165
+#: ../../Zotlabs/Module/Rate.php:163
#, php-format
msgid "Remote Channel [%s] (not yet known on this site)"
msgstr "Canal remoto [%s] (aún no es conocido en este sitio)"
-#: ../../Zotlabs/Module/Rate.php:166
+#: ../../Zotlabs/Module/Rate.php:164
msgid "Rating (this information is public)"
msgstr "Valoración (esta información es pública)"
-#: ../../Zotlabs/Module/Rate.php:167
+#: ../../Zotlabs/Module/Rate.php:165
msgid "Optionally explain your rating (this information is public)"
msgstr "Opcionalmente puede explicar su valoración (esta información es pública)"
@@ -4762,7 +4774,7 @@ msgid "Membership on this site is by invitation only."
msgstr "Para registrarse en este sitio es necesaria una invitación."
#: ../../Zotlabs/Module/Register.php:262 ../../include/nav.php:147
-#: ../../boot.php:1597
+#: ../../boot.php:1611
msgid "Register"
msgstr "Registrarse"
@@ -5277,10 +5289,21 @@ 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.php:1065
+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.php:1065
#, php-format
-msgid ""
-"0 or blank to use the website limit. The website expires after %d days."
-msgstr "0 o en blanco para usar el límite del sitio. El sitio web caduca después de %d días."
+msgid "This website expires after %d days."
+msgstr "Este sitio web caduca después de %d días."
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "This website does not expire imported content."
+msgstr "Este sitio web no caduca el contenido importado."
+
+#: ../../Zotlabs/Module/Settings.php:1065
+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.php:1066
msgid "Maximum Friend Requests/Day:"
@@ -5291,11 +5314,11 @@ msgid "May reduce spam activity"
msgstr "Podría reducir la actividad de spam"
#: ../../Zotlabs/Module/Settings.php:1067
-msgid "Default Post Permissions"
-msgstr "Permisos de publicación predeterminados"
+msgid "Default Post and Publish Permissions"
+msgstr "Permisos predeterminados de entradas y publicaciones"
#: ../../Zotlabs/Module/Settings.php:1069
-msgid "Use my default audience setting for the type of post"
+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.php:1072
@@ -6271,192 +6294,14 @@ msgstr "No se ha encontrado el nombre de usuario en el fichero importado."
msgid "Unable to create a unique channel address. Import failed."
msgstr "No se ha podido crear una dirección de canal única. Ha fallado la importación."
-#: ../../include/dba/dba_driver.php:142
+#: ../../include/dba/dba_driver.php:159
#, php-format
msgid "Cannot locate DNS info for database server '%s'"
msgstr "No se ha podido localizar información de DNS para el servidor de base de datos “%s”"
-#: ../../include/identity.php:32
-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/identity.php:66
-msgid "Empty name"
-msgstr "Nombre vacío"
-
-#: ../../include/identity.php:69
-msgid "Name too long"
-msgstr "Nombre demasiado largo"
-
-#: ../../include/identity.php:180
-msgid "No account identifier"
-msgstr "Ningún identificador de la cuenta"
-
-#: ../../include/identity.php:192
-msgid "Nickname is required."
-msgstr "Se requiere un sobrenombre (alias)."
-
-#: ../../include/identity.php:206
-msgid "Reserved nickname. Please choose another."
-msgstr "Sobrenombre en uso. Por favor, elija otro."
-
-#: ../../include/identity.php:211
-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/identity.php:287
-msgid "Unable to retrieve created identity"
-msgstr "No ha sido posible recuperar la identidad creada"
-
-#: ../../include/identity.php:345
-msgid "Default Profile"
-msgstr "Perfil principal"
-
-#: ../../include/identity.php:791
-msgid "Requested channel is not available."
-msgstr "El canal solicitado no está disponible."
-
-#: ../../include/identity.php:938
-msgid "Create New Profile"
-msgstr "Crear un nuevo perfil"
-
-#: ../../include/identity.php:941 ../../include/nav.php:90
-msgid "Edit Profile"
-msgstr "Editar el perfil"
-
-#: ../../include/identity.php:958
-msgid "Visible to everybody"
-msgstr "Visible para todos"
-
-#: ../../include/identity.php:1033 ../../include/identity.php:1288
-msgid "Gender:"
-msgstr "Género:"
-
-#: ../../include/identity.php:1034 ../../include/identity.php:1332
-msgid "Status:"
-msgstr "Estado:"
-
-#: ../../include/identity.php:1035 ../../include/identity.php:1343
-msgid "Homepage:"
-msgstr "Página personal:"
-
-#: ../../include/identity.php:1036
-msgid "Online Now"
-msgstr "Ahora en línea"
-
-#: ../../include/identity.php:1124 ../../include/identity.php:1200
-msgid "F d"
-msgstr "d F"
-
-#: ../../include/identity.php:1180
-msgid "Birthday Reminders"
-msgstr "Recordatorios de cumpleaños"
-
-#: ../../include/identity.php:1181
-msgid "Birthdays this week:"
-msgstr "Cumpleaños de esta semana:"
-
-#: ../../include/identity.php:1232
-msgid "[No description]"
-msgstr "[Sin descripción]"
-
-#: ../../include/identity.php:1250
-msgid "Event Reminders"
-msgstr "Recordatorios de eventos"
-
-#: ../../include/identity.php:1251
-msgid "Events this week:"
-msgstr "Eventos de esta semana:"
-
-#: ../../include/identity.php:1293
-msgid "Like this channel"
-msgstr "Me gusta este canal"
-
-#: ../../include/identity.php:1317
-msgid "j F, Y"
-msgstr "j F Y"
-
-#: ../../include/identity.php:1318
-msgid "j F"
-msgstr "j F"
-
-#: ../../include/identity.php:1325
-msgid "Birthday:"
-msgstr "Cumpleaños:"
-
-#: ../../include/identity.php:1338
-#, php-format
-msgid "for %1$d %2$s"
-msgstr "por %1$d %2$s"
-
-#: ../../include/identity.php:1341
-msgid "Sexual Preference:"
-msgstr "Orientación sexual:"
-
-#: ../../include/identity.php:1347
-msgid "Tags:"
-msgstr "Etiquetas:"
-
-#: ../../include/identity.php:1349
-msgid "Political Views:"
-msgstr "Posición política:"
-
-#: ../../include/identity.php:1351
-msgid "Religion:"
-msgstr "Religión:"
-
-#: ../../include/identity.php:1355
-msgid "Hobbies/Interests:"
-msgstr "Aficciones o intereses:"
-
-#: ../../include/identity.php:1357
-msgid "Likes:"
-msgstr "Me gusta:"
-
-#: ../../include/identity.php:1359
-msgid "Dislikes:"
-msgstr "No me gusta:"
-
-#: ../../include/identity.php:1361
-msgid "Contact information and Social Networks:"
-msgstr "Información de contacto y redes sociales:"
-
-#: ../../include/identity.php:1363
-msgid "My other channels:"
-msgstr "Mis otros canales:"
-
-#: ../../include/identity.php:1365
-msgid "Musical interests:"
-msgstr "Preferencias musicales:"
-
-#: ../../include/identity.php:1367
-msgid "Books, literature:"
-msgstr "Libros, literatura:"
-
-#: ../../include/identity.php:1369
-msgid "Television:"
-msgstr "Televisión:"
-
-#: ../../include/identity.php:1371
-msgid "Film/dance/culture/entertainment:"
-msgstr "Cine, danza, cultura, entretenimiento:"
-
-#: ../../include/identity.php:1373
-msgid "Love/Romance:"
-msgstr "Vida sentimental o amorosa:"
-
-#: ../../include/identity.php:1375
-msgid "Work/employment:"
-msgstr "Trabajo:"
-
-#: ../../include/identity.php:1377
-msgid "School/education:"
-msgstr "Estudios:"
-
-#: ../../include/identity.php:1397
-msgid "Like this thing"
-msgstr "Me gusta esto"
+#: ../../include/api.php:1338
+msgid "Public Timeline"
+msgstr "Cronología pública"
#: ../../include/notify.php:20
msgid "created a new post"
@@ -6475,40 +6320,6 @@ msgstr "Contenido incorporado"
msgid "Embedding disabled"
msgstr "Incrustación deshabilitada"
-#: ../../include/acl_selectors.php:236
-#: ../../include/PermissionDescription.php:31
-msgid "Visible to your default audience"
-msgstr "Visible para su público predeterminado."
-
-#: ../../include/acl_selectors.php:274
-msgid "Limit access:"
-msgstr "Acceso limitado: "
-
-#: ../../include/acl_selectors.php:275
-msgid ""
-"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
-" the scope of \"Show\"."
-msgstr "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\"."
-
-#: ../../include/acl_selectors.php:276
-msgid "Show"
-msgstr "Mostrar"
-
-#: ../../include/acl_selectors.php:277
-msgid "Don't show"
-msgstr "No mostrar"
-
-#: ../../include/acl_selectors.php:283
-msgid "Other networks and post services"
-msgstr "Otras redes y servicios de publicación"
-
-#: ../../include/acl_selectors.php:313
-#, php-format
-msgid ""
-"Post permissions %s cannot be changed %s after a post is shared.</br />These"
-" permissions set who is allowed to view the post."
-msgstr "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje."
-
#: ../../include/profile_selectors.php:6
msgid "Currently Male"
msgstr "Actualmente hombre"
@@ -6742,28 +6553,35 @@ msgstr "No me importa"
msgid "Ask me"
msgstr "Pregúnteme"
-#: ../../include/activities.php:42
-msgid " and "
-msgstr " y "
+#: ../../include/Contact.php:118
+msgid "New window"
+msgstr "Nueva ventana"
-#: ../../include/activities.php:50
-msgid "public profile"
-msgstr "el perfil público"
+#: ../../include/Contact.php:119
+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/activities.php:59
+#: ../../include/Contact.php:237
#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s ha cambiado %2$s a &ldquo;%3$s&rdquo;"
+msgid "User '%s' deleted"
+msgstr "El usuario '%s' ha sido eliminado"
-#: ../../include/activities.php:60
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Visitar %2$s de %1$s"
+#: ../../include/zot.php:680
+msgid "Invalid data packet"
+msgstr "Paquete de datos no válido"
-#: ../../include/activities.php:63
+#: ../../include/zot.php:696
+msgid "Unable to verify channel signature"
+msgstr "No ha sido posible de verificar la firma del canal"
+
+#: ../../include/zot.php:2342
#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s ha actualizado %2$s, cambiando %3$s."
+msgid "Unable to verify site signature for %s"
+msgstr "No ha sido posible de verificar la firma del sitio para %s"
+
+#: ../../include/zot.php:3680
+msgid "invalid target signature"
+msgstr "La firma recibida no es válida"
#: ../../include/contact_widgets.php:14
#, php-format
@@ -6866,63 +6684,6 @@ msgstr "En proceso"
msgid "Cancelled"
msgstr "Cancelado/a"
-#: ../../include/photos.php:112
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "La imagen excede el límite de %lu bytes del sitio"
-
-#: ../../include/photos.php:119
-msgid "Image file is empty."
-msgstr "El fichero de imagen está vacío. "
-
-#: ../../include/photos.php:257
-msgid "Photo storage failed."
-msgstr "La foto no ha podido ser guardada."
-
-#: ../../include/photos.php:297
-msgid "a new photo"
-msgstr "una nueva foto"
-
-#: ../../include/photos.php:301
-#, php-format
-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:506 ../../include/conversation.php:1641
-msgid "Photo Albums"
-msgstr "Álbumes de fotos"
-
-#: ../../include/photos.php:510
-msgid "Upload New Photos"
-msgstr "Subir nuevas fotos"
-
-#: ../../include/import.php:27
-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:74
-msgid "Channel clone failed. Import failed."
-msgstr "La clonación del canal no ha salido bien. La importación ha fallado."
-
-#: ../../include/zot.php:680
-msgid "Invalid data packet"
-msgstr "Paquete de datos no válido"
-
-#: ../../include/zot.php:696
-msgid "Unable to verify channel signature"
-msgstr "No ha sido posible de verificar la firma del canal"
-
-#: ../../include/zot.php:2342
-#, 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:3680
-msgid "invalid target signature"
-msgstr "La firma recibida no es válida"
-
#: ../../include/widgets.php:103
msgid "System"
msgstr "Sistema"
@@ -7206,88 +6967,226 @@ msgstr "Sala no encontrada."
msgid "Room is full"
msgstr "La sala está llena."
-#: ../../include/Contact.php:118
-msgid "New window"
-msgstr "Nueva ventana"
+#: ../../include/identity.php:32
+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/Contact.php:119
-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/identity.php:66
+msgid "Empty name"
+msgstr "Nombre vacío"
-#: ../../include/Contact.php:237
-#, php-format
-msgid "User '%s' deleted"
-msgstr "El usuario '%s' ha sido eliminado"
+#: ../../include/identity.php:69
+msgid "Name too long"
+msgstr "Nombre demasiado largo"
-#: ../../include/auth.php:105
-msgid "Logged out."
-msgstr "Desconectado/a."
+#: ../../include/identity.php:180
+msgid "No account identifier"
+msgstr "Ningún identificador de la cuenta"
-#: ../../include/auth.php:212
-msgid "Failed authentication"
-msgstr "Autenticación fallida."
+#: ../../include/identity.php:192
+msgid "Nickname is required."
+msgstr "Se requiere un sobrenombre (alias)."
-#: ../../include/security.php:383
+#: ../../include/identity.php:206
+msgid "Reserved nickname. Please choose another."
+msgstr "Sobrenombre en uso. Por favor, elija otro."
+
+#: ../../include/identity.php:211
msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado"
+"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/items.php:890 ../../include/items.php:935
-msgid "(Unknown)"
-msgstr "(Desconocido)"
+#: ../../include/identity.php:287
+msgid "Unable to retrieve created identity"
+msgstr "No ha sido posible recuperar la identidad creada"
-#: ../../include/items.php:1134
-msgid "Visible to anybody on the internet."
-msgstr "Visible para cualquiera en internet."
+#: ../../include/identity.php:345
+msgid "Default Profile"
+msgstr "Perfil principal"
-#: ../../include/items.php:1136
-msgid "Visible to you only."
-msgstr "Visible sólo para usted."
+#: ../../include/identity.php:791
+msgid "Requested channel is not available."
+msgstr "El canal solicitado no está disponible."
-#: ../../include/items.php:1138
-msgid "Visible to anybody in this network."
-msgstr "Visible para cualquiera en esta red."
+#: ../../include/identity.php:938
+msgid "Create New Profile"
+msgstr "Crear un nuevo perfil"
-#: ../../include/items.php:1140
-msgid "Visible to anybody authenticated."
-msgstr "Visible para cualquiera que haya sido autenticado."
+#: ../../include/identity.php:941 ../../include/nav.php:90
+msgid "Edit Profile"
+msgstr "Editar el perfil"
-#: ../../include/items.php:1142
+#: ../../include/identity.php:958
+msgid "Visible to everybody"
+msgstr "Visible para todos"
+
+#: ../../include/identity.php:1033 ../../include/identity.php:1288
+msgid "Gender:"
+msgstr "Género:"
+
+#: ../../include/identity.php:1034 ../../include/identity.php:1332
+msgid "Status:"
+msgstr "Estado:"
+
+#: ../../include/identity.php:1035 ../../include/identity.php:1343
+msgid "Homepage:"
+msgstr "Página personal:"
+
+#: ../../include/identity.php:1036
+msgid "Online Now"
+msgstr "Ahora en línea"
+
+#: ../../include/identity.php:1124 ../../include/identity.php:1200
+msgid "F d"
+msgstr "d F"
+
+#: ../../include/identity.php:1180
+msgid "Birthday Reminders"
+msgstr "Recordatorios de cumpleaños"
+
+#: ../../include/identity.php:1181
+msgid "Birthdays this week:"
+msgstr "Cumpleaños de esta semana:"
+
+#: ../../include/identity.php:1232
+msgid "[No description]"
+msgstr "[Sin descripción]"
+
+#: ../../include/identity.php:1250
+msgid "Event Reminders"
+msgstr "Recordatorios de eventos"
+
+#: ../../include/identity.php:1251
+msgid "Events this week:"
+msgstr "Eventos de esta semana:"
+
+#: ../../include/identity.php:1293
+msgid "Like this channel"
+msgstr "Me gusta este canal"
+
+#: ../../include/identity.php:1317
+msgid "j F, Y"
+msgstr "j F Y"
+
+#: ../../include/identity.php:1318
+msgid "j F"
+msgstr "j F"
+
+#: ../../include/identity.php:1325
+msgid "Birthday:"
+msgstr "Cumpleaños:"
+
+#: ../../include/identity.php:1338
#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Visible para cualquiera en %s."
+msgid "for %1$d %2$s"
+msgstr "por %1$d %2$s"
-#: ../../include/items.php:1144
-msgid "Visible to all connections."
-msgstr "Visible para todas las conexiones."
+#: ../../include/identity.php:1341
+msgid "Sexual Preference:"
+msgstr "Orientación sexual:"
-#: ../../include/items.php:1146
-msgid "Visible to approved connections."
-msgstr "Visible para las conexiones permitidas."
+#: ../../include/identity.php:1347
+msgid "Tags:"
+msgstr "Etiquetas:"
-#: ../../include/items.php:1148
-msgid "Visible to specific connections."
-msgstr "Visible para conexiones específicas."
+#: ../../include/identity.php:1349
+msgid "Political Views:"
+msgstr "Posición política:"
-#: ../../include/items.php:3910
-msgid "Privacy group is empty."
-msgstr "El grupo de canales está vacío."
+#: ../../include/identity.php:1351
+msgid "Religion:"
+msgstr "Religión:"
-#: ../../include/items.php:3917
+#: ../../include/identity.php:1355
+msgid "Hobbies/Interests:"
+msgstr "Aficciones o intereses:"
+
+#: ../../include/identity.php:1357
+msgid "Likes:"
+msgstr "Me gusta:"
+
+#: ../../include/identity.php:1359
+msgid "Dislikes:"
+msgstr "No me gusta:"
+
+#: ../../include/identity.php:1361
+msgid "Contact information and Social Networks:"
+msgstr "Información de contacto y redes sociales:"
+
+#: ../../include/identity.php:1363
+msgid "My other channels:"
+msgstr "Mis otros canales:"
+
+#: ../../include/identity.php:1365
+msgid "Musical interests:"
+msgstr "Preferencias musicales:"
+
+#: ../../include/identity.php:1367
+msgid "Books, literature:"
+msgstr "Libros, literatura:"
+
+#: ../../include/identity.php:1369
+msgid "Television:"
+msgstr "Televisión:"
+
+#: ../../include/identity.php:1371
+msgid "Film/dance/culture/entertainment:"
+msgstr "Cine, danza, cultura, entretenimiento:"
+
+#: ../../include/identity.php:1373
+msgid "Love/Romance:"
+msgstr "Vida sentimental o amorosa:"
+
+#: ../../include/identity.php:1375
+msgid "Work/employment:"
+msgstr "Trabajo:"
+
+#: ../../include/identity.php:1377
+msgid "School/education:"
+msgstr "Estudios:"
+
+#: ../../include/identity.php:1397
+msgid "Like this thing"
+msgstr "Me gusta esto"
+
+#: ../../include/security.php:383
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado"
+
+#: ../../include/photos.php:112
#, php-format
-msgid "Privacy group: %s"
-msgstr "Grupo de canales: %s"
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "La imagen excede el límite de %lu bytes del sitio"
-#: ../../include/items.php:3929
-msgid "Connection not found."
-msgstr "Conexión no encontrada"
+#: ../../include/photos.php:119
+msgid "Image file is empty."
+msgstr "El fichero de imagen está vacío. "
-#: ../../include/items.php:4278
-msgid "profile photo"
-msgstr "foto del perfil"
+#: ../../include/photos.php:257
+msgid "Photo storage failed."
+msgstr "La foto no ha podido ser guardada."
-#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1614
+#: ../../include/photos.php:297
+msgid "a new photo"
+msgstr "una nueva foto"
+
+#: ../../include/photos.php:301
+#, php-format
+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:506 ../../include/conversation.php:1641
+msgid "Photo Albums"
+msgstr "Álbumes de fotos"
+
+#: ../../include/photos.php:510
+msgid "Upload New Photos"
+msgstr "Subir nuevas fotos"
+
+#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1628
msgid "Logout"
msgstr "Finalizar sesión"
@@ -7343,7 +7242,7 @@ msgstr "Sus marcadores"
msgid "Your webpages"
msgstr "Sus páginas web"
-#: ../../include/nav.php:110 ../../include/apps.php:163 ../../boot.php:1615
+#: ../../include/nav.php:110 ../../include/apps.php:163 ../../boot.php:1629
msgid "Login"
msgstr "Iniciar sesión"
@@ -7485,36 +7384,6 @@ msgstr "@nombre, #etiqueta, ?ayuda, contenido"
msgid "Please wait..."
msgstr "Espere por favor…"
-#: ../../include/network.php:659
-msgid "view full size"
-msgstr "Ver en el tamaño original"
-
-#: ../../include/network.php:1827 ../../include/enotify.php:57
-msgid "$Projectname Notification"
-msgstr "Notificación de $Projectname"
-
-#: ../../include/network.php:1828 ../../include/enotify.php:58
-msgid "$projectname"
-msgstr "$projectname"
-
-#: ../../include/network.php:1830 ../../include/enotify.php:60
-msgid "Thank You,"
-msgstr "Gracias,"
-
-#: ../../include/network.php:1832 ../../include/enotify.php:62
-#, php-format
-msgid "%s Administrator"
-msgstr "%s Administrador"
-
-#: ../../include/network.php:1875 ../../include/account.php:317
-#: ../../include/account.php:344 ../../include/account.php:404
-msgid "Administrator"
-msgstr "Administrador"
-
-#: ../../include/network.php:1889
-msgid "No Subject"
-msgstr "Sin asunto"
-
#: ../../include/contact_selectors.php:56
msgid "Frequently"
msgstr "Frecuentemente"
@@ -7580,6 +7449,14 @@ msgstr "XMPP/IM"
msgid "MySpace"
msgstr "MySpace"
+#: ../../include/auth.php:105
+msgid "Logged out."
+msgstr "Desconectado/a."
+
+#: ../../include/auth.php:212
+msgid "Failed authentication"
+msgstr "Autenticación fallida."
+
#: ../../include/attach.php:247 ../../include/attach.php:333
msgid "Item was not found."
msgstr "Elemento no encontrado."
@@ -7654,7 +7531,7 @@ msgstr "Edad:"
msgid "YYYY-MM-DD or MM-DD"
msgstr "AAAA-MM-DD o MM-DD"
-#: ../../include/datetime.php:273 ../../boot.php:2463
+#: ../../include/datetime.php:273 ../../boot.php:2399
msgid "never"
msgstr "nunca"
@@ -7743,6 +7620,23 @@ msgstr "Solo foros públicos"
msgid "This Website Only"
msgstr "Solo este sitio web"
+#: ../../include/enotify.php:57 ../../include/network.php:1831
+msgid "$Projectname Notification"
+msgstr "Notificación de $Projectname"
+
+#: ../../include/enotify.php:58 ../../include/network.php:1832
+msgid "$projectname"
+msgstr "$projectname"
+
+#: ../../include/enotify.php:60 ../../include/network.php:1834
+msgid "Thank You,"
+msgstr "Gracias,"
+
+#: ../../include/enotify.php:62 ../../include/network.php:1836
+#, php-format
+msgid "%s Administrator"
+msgstr "%s Administrador"
+
#: ../../include/enotify.php:96
#, php-format
msgid "%s <!item_type!>"
@@ -8097,6 +7991,57 @@ msgstr "Insertar enlace"
msgid "Video"
msgstr "Vídeo"
+#: ../../include/activities.php:42
+msgid " and "
+msgstr " y "
+
+#: ../../include/activities.php:50
+msgid "public profile"
+msgstr "el perfil público"
+
+#: ../../include/activities.php:59
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s ha cambiado %2$s a &ldquo;%3$s&rdquo;"
+
+#: ../../include/activities.php:60
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Visitar %2$s de %1$s"
+
+#: ../../include/activities.php:63
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s ha actualizado %2$s, cambiando %3$s."
+
+#: ../../include/follow.php:28
+msgid "Channel is blocked on this site."
+msgstr "El canal está bloqueado en este sitio."
+
+#: ../../include/follow.php:33
+msgid "Channel location missing."
+msgstr "Falta la dirección del canal."
+
+#: ../../include/follow.php:82
+msgid "Response from remote channel was incomplete."
+msgstr "Respuesta incompleta del canal."
+
+#: ../../include/follow.php:99
+msgid "Channel was deleted and no longer exists."
+msgstr "El canal ha sido eliminado y ya no existe."
+
+#: ../../include/follow.php:155 ../../include/follow.php:191
+msgid "Protocol disabled."
+msgstr "Protocolo deshabilitado."
+
+#: ../../include/follow.php:179
+msgid "Channel discovery failed."
+msgstr "El intento de acceder al canal ha fallado."
+
+#: ../../include/follow.php:217
+msgid "Cannot connect to yourself."
+msgstr "No puede conectarse consigo mismo."
+
#: ../../include/features.php:48
msgid "General Features"
msgstr "Funcionalidades básicas"
@@ -8376,33 +8321,34 @@ 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/follow.php:28
-msgid "Channel is blocked on this site."
-msgstr "El canal está bloqueado en este sitio."
+#: ../../include/message.php:20
+msgid "No recipient provided."
+msgstr "No se ha especificado ningún destinatario."
-#: ../../include/follow.php:33
-msgid "Channel location missing."
-msgstr "Falta la dirección del canal."
+#: ../../include/message.php:25
+msgid "[no subject]"
+msgstr "[sin asunto]"
-#: ../../include/follow.php:82
-msgid "Response from remote channel was incomplete."
-msgstr "Respuesta incompleta del canal."
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "No ha sido posible determinar el remitente. "
-#: ../../include/follow.php:99
-msgid "Channel was deleted and no longer exists."
-msgstr "El canal ha sido eliminado y ya no existe."
+#: ../../include/message.php:222
+msgid "Stored post could not be verified."
+msgstr "No se han podido verificar las publicaciones guardadas."
-#: ../../include/follow.php:155 ../../include/follow.php:191
-msgid "Protocol disabled."
-msgstr "Protocolo deshabilitado."
+#: ../../include/network.php:659
+msgid "view full size"
+msgstr "Ver en el tamaño original"
-#: ../../include/follow.php:179
-msgid "Channel discovery failed."
-msgstr "El intento de acceder al canal ha fallado."
+#: ../../include/network.php:1879 ../../include/account.php:317
+#: ../../include/account.php:344 ../../include/account.php:404
+msgid "Administrator"
+msgstr "Administrador"
-#: ../../include/follow.php:217
-msgid "Cannot connect to yourself."
-msgstr "No puede conectarse consigo mismo."
+#: ../../include/network.php:1893
+msgid "No Subject"
+msgstr "Sin asunto"
#: ../../include/group.php:26
msgid ""
@@ -9130,7 +9076,13 @@ msgstr "gusta de"
msgid "dislikes"
msgstr "no gusta de"
+#: ../../include/PermissionDescription.php:31
+#: ../../include/acl_selectors.php:236
+msgid "Visible to your default audience"
+msgstr "Visible para su público predeterminado."
+
#: ../../include/PermissionDescription.php:115
+#: ../../include/acl_selectors.php:272
msgid "Only me"
msgstr "Sólo yo"
@@ -9151,39 +9103,39 @@ msgstr "Cualquier cuenta en %s"
msgid "Any of my connections"
msgstr "Cualquiera de mis conexiones"
-#: ../../include/PermissionDescription.php:124
-msgid "Only me (only specified contacts and me)"
-msgstr "Sólo yo (sólo los contactos especificados y yo)"
+#: ../../include/PermissionDescription.php:120
+msgid "Only connections I specifically allow"
+msgstr "Sólo las conexiones que yo permita de forma explícita"
-#: ../../include/PermissionDescription.php:125
+#: ../../include/PermissionDescription.php:121
msgid "Anybody authenticated (could include visitors from other networks)"
msgstr "Cualquiera que se haya autenticado (podría incluir a los visitantes de otras redes)"
-#: ../../include/PermissionDescription.php:126
+#: ../../include/PermissionDescription.php:122
msgid "Any connections including those who haven't yet been approved"
msgstr "Cualquier conexión incluyendo aquellas que aún no han sido aprobadas"
-#: ../../include/PermissionDescription.php:169
+#: ../../include/PermissionDescription.php:161
msgid ""
"This is your default setting for the audience of your normal stream, and "
"posts."
msgstr "Esta es la configuración predeterminada para su flujo (stream) habitual de publicaciones."
-#: ../../include/PermissionDescription.php:170
+#: ../../include/PermissionDescription.php:162
msgid ""
"This is your default setting for who can view your default channel profile"
msgstr "Esta es su configuración por defecto para establecer quién puede ver su perfil del canal predeterminado"
-#: ../../include/PermissionDescription.php:171
+#: ../../include/PermissionDescription.php:163
msgid "This is your default setting for who can view your connections"
msgstr "Este es su ajuste predeterminado para establecer quién puede ver sus conexiones"
-#: ../../include/PermissionDescription.php:172
+#: ../../include/PermissionDescription.php:164
msgid ""
"This is your default setting for who can view your file storage and photos"
msgstr "Este es su ajuste predeterminado para establecer quién puede ver su repositorio de ficheros y sus fotos"
-#: ../../include/PermissionDescription.php:173
+#: ../../include/PermissionDescription.php:165
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"
@@ -9431,25 +9383,68 @@ msgctxt "calendar"
msgid "All day"
msgstr "Todos los días"
-#: ../../include/message.php:20
-msgid "No recipient provided."
-msgstr "No se ha especificado ningún destinatario."
+#: ../../include/import.php:27
+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/message.php:25
-msgid "[no subject]"
-msgstr "[sin asunto]"
+#: ../../include/import.php:74
+msgid "Channel clone failed. Import failed."
+msgstr "La clonación del canal no ha salido bien. La importación ha fallado."
-#: ../../include/message.php:45
-msgid "Unable to determine sender."
-msgstr "No ha sido posible determinar el remitente. "
+#: ../../include/items.php:890 ../../include/items.php:935
+msgid "(Unknown)"
+msgstr "(Desconocido)"
-#: ../../include/message.php:222
-msgid "Stored post could not be verified."
-msgstr "No se han podido verificar las publicaciones guardadas."
+#: ../../include/items.php:1134
+msgid "Visible to anybody on the internet."
+msgstr "Visible para cualquiera en internet."
-#: ../../include/api.php:1338
-msgid "Public Timeline"
-msgstr "Cronología pública"
+#: ../../include/items.php:1136
+msgid "Visible to you only."
+msgstr "Visible sólo para usted."
+
+#: ../../include/items.php:1138
+msgid "Visible to anybody in this network."
+msgstr "Visible para cualquiera en esta red."
+
+#: ../../include/items.php:1140
+msgid "Visible to anybody authenticated."
+msgstr "Visible para cualquiera que haya sido autenticado."
+
+#: ../../include/items.php:1142
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Visible para cualquiera en %s."
+
+#: ../../include/items.php:1144
+msgid "Visible to all connections."
+msgstr "Visible para todas las conexiones."
+
+#: ../../include/items.php:1146
+msgid "Visible to approved connections."
+msgstr "Visible para las conexiones permitidas."
+
+#: ../../include/items.php:1148
+msgid "Visible to specific connections."
+msgstr "Visible para conexiones específicas."
+
+#: ../../include/items.php:3910
+msgid "Privacy group is empty."
+msgstr "El grupo de canales está vacío."
+
+#: ../../include/items.php:3917
+#, php-format
+msgid "Privacy group: %s"
+msgstr "Grupo de canales: %s"
+
+#: ../../include/items.php:3929
+msgid "Connection not found."
+msgstr "Conexión no encontrada"
+
+#: ../../include/items.php:4278
+msgid "profile photo"
+msgstr "foto del perfil"
#: ../../include/page_widgets.php:6
msgid "New Page"
@@ -9656,6 +9651,43 @@ msgstr "Ficheros adjuntos:"
msgid "$Projectname event notification:"
msgstr "Notificación de eventos de $Projectname:"
+#: ../../include/acl_selectors.php:273
+msgid "Add others"
+msgstr "Añadir otros"
+
+#: ../../include/acl_selectors.php:276
+msgid "Who can see this?"
+msgstr "¿Quién puede ver esto?"
+
+#: ../../include/acl_selectors.php:277
+msgid "Custom selection"
+msgstr "Selección personalizada"
+
+#: ../../include/acl_selectors.php:278
+msgid ""
+"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
+" the scope of \"Show\"."
+msgstr "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\"."
+
+#: ../../include/acl_selectors.php:279
+msgid "Show"
+msgstr "Mostrar"
+
+#: ../../include/acl_selectors.php:280
+msgid "Don't show"
+msgstr "No mostrar"
+
+#: ../../include/acl_selectors.php:286
+msgid "Other networks and post services"
+msgstr "Otras redes y servicios de publicación"
+
+#: ../../include/acl_selectors.php:316
+#, php-format
+msgid ""
+"Post permissions %s cannot be changed %s after a post is shared.</br />These"
+" permissions set who is allowed to view the post."
+msgstr "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje."
+
#: ../../view/theme/redbasic/php/config.php:82
msgid "Focus (Hubzilla default)"
msgstr "Focus (predefinido)"
@@ -9792,62 +9824,62 @@ msgstr "Ajustar el tamaño de la foto del autor de la conversación"
msgid "Set size of followup author photos"
msgstr "Ajustar el tamaño de foto de los seguidores del autor"
-#: ../../boot.php:1075
+#: ../../boot.php:1089
#, php-format
msgctxt "opensearch"
msgid "Search %1$s (%2$s)"
msgstr "Buscar %1$s (%2$s)"
-#: ../../boot.php:1075
+#: ../../boot.php:1089
msgctxt "opensearch"
msgid "$Projectname"
msgstr "$Projectname"
-#: ../../boot.php:1392
+#: ../../boot.php:1406
#, php-format
msgid "Update %s failed. See error logs."
msgstr "La actualización %s ha fallado. Mire el informe de errores."
-#: ../../boot.php:1395
+#: ../../boot.php:1409
#, php-format
msgid "Update Error at %s"
msgstr "Error de actualización en %s"
-#: ../../boot.php:1596
+#: ../../boot.php:1610
msgid ""
"Create an account to access services and applications within the Hubzilla"
msgstr "Crear una cuenta para acceder a los servicios y aplicaciones dentro de Hubzilla"
-#: ../../boot.php:1618
+#: ../../boot.php:1632
msgid "Password"
msgstr "Contraseña"
-#: ../../boot.php:1619
+#: ../../boot.php:1633
msgid "Remember me"
msgstr "Recordarme"
-#: ../../boot.php:1622
+#: ../../boot.php:1636
msgid "Forgot your password?"
msgstr "¿Olvidó su contraseña?"
-#: ../../boot.php:2269
+#: ../../boot.php:2205
msgid "toggle mobile"
msgstr "cambiar a modo móvil"
-#: ../../boot.php:2422
+#: ../../boot.php:2358
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:2425
+#: ../../boot.php:2361
#, php-format
msgid "[hubzilla] Website SSL error for %s"
msgstr "[hubzilla] Error SSL del sitio web en %s"
-#: ../../boot.php:2462
+#: ../../boot.php:2398
msgid "Cron/Scheduled tasks not running."
msgstr "Las tareas del Planificador/Cron no están funcionando."
-#: ../../boot.php:2466
+#: ../../boot.php:2402
#, php-format
msgid "[hubzilla] Cron tasks not running on %s"
msgstr "[hubzilla] Las tareas de Cron no están funcionando en %s"
diff --git a/view/es-es/hstrings.php b/view/es-es/hstrings.php
index cbb8f6e57..f2f79b2e9 100644
--- a/view/es-es/hstrings.php
+++ b/view/es-es/hstrings.php
@@ -257,7 +257,9 @@ App::$strings["Download Plugin Repo"] = "Descargar el repositorio";
App::$strings["Install new repo"] = "Instalar un nuevo repositorio";
App::$strings["Install"] = "Instalar";
App::$strings["Cancel"] = "Cancelar";
-App::$strings["Add Plugin Repo"] = "Añadir un repositorio";
+App::$strings["Manage Repos"] = "Gestionar los repositorios";
+App::$strings["Installed Plugin Repositories"] = "Repositorios de los plugins instalados";
+App::$strings["Install a New Plugin Repository"] = "Instalar un nuevo repositorio de plugins";
App::$strings["Update"] = "Actualizar";
App::$strings["Switch branch"] = "Cambiar la rama";
App::$strings["Remove"] = "Eliminar";
@@ -1034,6 +1036,7 @@ App::$strings["The listed hubs allow public registration for the \$Projectname n
App::$strings["Hub URL"] = "Dirección del hub";
App::$strings["Access Type"] = "Tipo de acceso";
App::$strings["Registration Policy"] = "Normas de registro";
+App::$strings["Software"] = "Software";
App::$strings["Ratings"] = "Valoraciones";
App::$strings["Rate"] = "Valorar";
App::$strings["Website:"] = "Sitio web:";
@@ -1188,11 +1191,14 @@ App::$strings["Allow others to tag your posts"] = "Permitir a otros etiquetar su
App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "A menudo usado por la comunidad para marcar contenido inapropiado de forma retroactiva.";
App::$strings["Advanced Privacy Settings"] = "Configuración de privacidad avanzada";
App::$strings["Expire other channel content after this many days"] = "Caducar contenido de otros canales después de este número de días";
-App::$strings["0 or blank to use the website limit. The website expires after %d days."] = "0 o en blanco para usar el límite del sitio. El sitio web caduca después de %d días.";
+App::$strings["0 or blank to use the website limit."] = "0 o en blanco para usar el límite del sitio web.";
+App::$strings["This website expires after %d days."] = "Este sitio web caduca después de %d días.";
+App::$strings["This website does not expire imported content."] = "Este sitio web no caduca el contenido importado.";
+App::$strings["The website limit takes precedence if lower than your limit."] = "El límite del sitio web tiene prioridad si es inferior a su propio límite.";
App::$strings["Maximum Friend Requests/Day:"] = "Máximo de solicitudes de amistad por día:";
App::$strings["May reduce spam activity"] = "Podría reducir la actividad de spam";
-App::$strings["Default Post Permissions"] = "Permisos de publicación predeterminados";
-App::$strings["Use my default audience setting for the type of post"] = "Usar los ajustes de mi audiencia predeterminada para el tipo de publicación";
+App::$strings["Default Post and Publish Permissions"] = "Permisos predeterminados de entradas y publicaciones";
+App::$strings["Use my default audience setting for the type of object published"] = "Usar los ajustes de mi audiencia predeterminada para el tipo de publicación";
App::$strings["Channel permissions category:"] = "Categoría de permisos del canal:";
App::$strings["Maximum private messages per day from unknown people:"] = "Máximo de mensajes privados por día de gente desconocida:";
App::$strings["Useful to reduce spamming"] = "Útil para reducir el envío de correo no deseado";
@@ -1406,62 +1412,11 @@ App::$strings["Lookup xchan beginning with (or webbie): "] = "Buscar un canal (o
App::$strings["No username found in import file."] = "No se ha encontrado el nombre de usuario en el fichero importado.";
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.";
App::$strings["Cannot locate DNS info for database server '%s'"] = "No se ha podido localizar información de DNS para el servidor de base de datos “%s”";
-App::$strings["Unable to obtain identity information from database"] = "No ha sido posible obtener información sobre la identidad desde la base de datos";
-App::$strings["Empty name"] = "Nombre vacío";
-App::$strings["Name too long"] = "Nombre demasiado largo";
-App::$strings["No account identifier"] = "Ningún identificador de la cuenta";
-App::$strings["Nickname is required."] = "Se requiere un sobrenombre (alias).";
-App::$strings["Reserved nickname. Please choose another."] = "Sobrenombre en uso. Por favor, elija otro.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio.";
-App::$strings["Unable to retrieve created identity"] = "No ha sido posible recuperar la identidad creada";
-App::$strings["Default Profile"] = "Perfil principal";
-App::$strings["Requested channel is not available."] = "El canal solicitado no está disponible.";
-App::$strings["Create New Profile"] = "Crear un nuevo perfil";
-App::$strings["Edit Profile"] = "Editar el perfil";
-App::$strings["Visible to everybody"] = "Visible para todos";
-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["F d"] = "d F";
-App::$strings["Birthday Reminders"] = "Recordatorios de cumpleaños";
-App::$strings["Birthdays this week:"] = "Cumpleaños de esta semana:";
-App::$strings["[No description]"] = "[Sin descripción]";
-App::$strings["Event Reminders"] = "Recordatorios de eventos";
-App::$strings["Events this week:"] = "Eventos de esta semana:";
-App::$strings["Like this channel"] = "Me gusta este canal";
-App::$strings["j F, Y"] = "j F Y";
-App::$strings["j F"] = "j F";
-App::$strings["Birthday:"] = "Cumpleaños:";
-App::$strings["for %1\$d %2\$s"] = "por %1\$d %2\$s";
-App::$strings["Sexual Preference:"] = "Orientación sexual:";
-App::$strings["Tags:"] = "Etiquetas:";
-App::$strings["Political Views:"] = "Posición política:";
-App::$strings["Religion:"] = "Religión:";
-App::$strings["Hobbies/Interests:"] = "Aficciones o intereses:";
-App::$strings["Likes:"] = "Me gusta:";
-App::$strings["Dislikes:"] = "No me gusta:";
-App::$strings["Contact information and Social Networks:"] = "Información de contacto y redes sociales:";
-App::$strings["My other channels:"] = "Mis otros canales:";
-App::$strings["Musical interests:"] = "Preferencias musicales:";
-App::$strings["Books, literature:"] = "Libros, literatura:";
-App::$strings["Television:"] = "Televisión:";
-App::$strings["Film/dance/culture/entertainment:"] = "Cine, danza, cultura, entretenimiento:";
-App::$strings["Love/Romance:"] = "Vida sentimental o amorosa:";
-App::$strings["Work/employment:"] = "Trabajo:";
-App::$strings["School/education:"] = "Estudios:";
-App::$strings["Like this thing"] = "Me gusta esto";
+App::$strings["Public Timeline"] = "Cronología pública";
App::$strings["created a new post"] = "ha creado una nueva entrada";
App::$strings["commented on %s's post"] = "ha comentado la entrada de %s";
App::$strings["Embedded content"] = "Contenido incorporado";
App::$strings["Embedding disabled"] = "Incrustación deshabilitada";
-App::$strings["Visible to your default audience"] = "Visible para su público predeterminado.";
-App::$strings["Limit access:"] = "Acceso limitado: ";
-App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\".";
-App::$strings["Show"] = "Mostrar";
-App::$strings["Don't show"] = "No mostrar";
-App::$strings["Other networks and post services"] = "Otras redes y servicios de publicación";
-App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje.";
App::$strings["Currently Male"] = "Actualmente hombre";
App::$strings["Currently Female"] = "Actualmente mujer";
App::$strings["Mostly Male"] = "Generalmente hombre";
@@ -1517,11 +1472,13 @@ App::$strings["Uncertain"] = "Indeterminado";
App::$strings["It's complicated"] = "Es complicado";
App::$strings["Don't care"] = "No me importa";
App::$strings["Ask me"] = "Pregúnteme";
-App::$strings[" and "] = " y ";
-App::$strings["public profile"] = "el perfil público";
-App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s ha cambiado %2\$s a &ldquo;%3\$s&rdquo;";
-App::$strings["Visit %1\$s's %2\$s"] = "Visitar %2\$s de %1\$s";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s ha actualizado %2\$s, cambiando %3\$s.";
+App::$strings["New window"] = "Nueva ventana";
+App::$strings["Open the selected location in a different window or browser tab"] = "Abrir la dirección seleccionada en una ventana o pestaña aparte";
+App::$strings["User '%s' deleted"] = "El usuario '%s' ha sido eliminado";
+App::$strings["Invalid data packet"] = "Paquete de datos no válido";
+App::$strings["Unable to verify channel signature"] = "No ha sido posible de verificar la firma del canal";
+App::$strings["Unable to verify site signature for %s"] = "No ha sido posible de verificar la firma del sitio para %s";
+App::$strings["invalid target signature"] = "La firma recibida no es válida";
App::$strings["%d invitation available"] = array(
0 => "%d invitación pendiente",
1 => "%d invitaciones disponibles",
@@ -1550,19 +1507,6 @@ App::$strings["Needs Action"] = "Necesita de una intervención";
App::$strings["Completed"] = "Completado/a";
App::$strings["In Process"] = "En proceso";
App::$strings["Cancelled"] = "Cancelado/a";
-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["Photo storage failed."] = "La foto no ha podido ser guardada.";
-App::$strings["a new photo"] = "una nueva foto";
-App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s ha publicado %2\$s en %3\$s";
-App::$strings["Photo Albums"] = "Álbumes de fotos";
-App::$strings["Upload New Photos"] = "Subir nuevas fotos";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado.";
-App::$strings["Channel clone failed. Import failed."] = "La clonación del canal no ha salido bien. La importación ha fallado.";
-App::$strings["Invalid data packet"] = "Paquete de datos no válido";
-App::$strings["Unable to verify channel signature"] = "No ha sido posible de verificar la firma del canal";
-App::$strings["Unable to verify site signature for %s"] = "No ha sido posible de verificar la firma del sitio para %s";
-App::$strings["invalid target signature"] = "La firma recibida no es válida";
App::$strings["System"] = "Sistema";
App::$strings["New App"] = "Nueva aplicación (app)";
App::$strings["Suggestions"] = "Sugerencias";
@@ -1633,25 +1577,59 @@ App::$strings["Duplicate room name"] = "Nombre de sala duplicado.";
App::$strings["Invalid room specifier."] = "Especificador de sala no válido.";
App::$strings["Room not found."] = "Sala no encontrada.";
App::$strings["Room is full"] = "La sala está llena.";
-App::$strings["New window"] = "Nueva ventana";
-App::$strings["Open the selected location in a different window or browser tab"] = "Abrir la dirección seleccionada en una ventana o pestaña aparte";
-App::$strings["User '%s' deleted"] = "El usuario '%s' ha sido eliminado";
-App::$strings["Logged out."] = "Desconectado/a.";
-App::$strings["Failed authentication"] = "Autenticación fallida.";
+App::$strings["Unable to obtain identity information from database"] = "No ha sido posible obtener información sobre la identidad desde la base de datos";
+App::$strings["Empty name"] = "Nombre vacío";
+App::$strings["Name too long"] = "Nombre demasiado largo";
+App::$strings["No account identifier"] = "Ningún identificador de la cuenta";
+App::$strings["Nickname is required."] = "Se requiere un sobrenombre (alias).";
+App::$strings["Reserved nickname. Please choose another."] = "Sobrenombre en uso. Por favor, elija otro.";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio.";
+App::$strings["Unable to retrieve created identity"] = "No ha sido posible recuperar la identidad creada";
+App::$strings["Default Profile"] = "Perfil principal";
+App::$strings["Requested channel is not available."] = "El canal solicitado no está disponible.";
+App::$strings["Create New Profile"] = "Crear un nuevo perfil";
+App::$strings["Edit Profile"] = "Editar el perfil";
+App::$strings["Visible to everybody"] = "Visible para todos";
+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["F d"] = "d F";
+App::$strings["Birthday Reminders"] = "Recordatorios de cumpleaños";
+App::$strings["Birthdays this week:"] = "Cumpleaños de esta semana:";
+App::$strings["[No description]"] = "[Sin descripción]";
+App::$strings["Event Reminders"] = "Recordatorios de eventos";
+App::$strings["Events this week:"] = "Eventos de esta semana:";
+App::$strings["Like this channel"] = "Me gusta este canal";
+App::$strings["j F, Y"] = "j F Y";
+App::$strings["j F"] = "j F";
+App::$strings["Birthday:"] = "Cumpleaños:";
+App::$strings["for %1\$d %2\$s"] = "por %1\$d %2\$s";
+App::$strings["Sexual Preference:"] = "Orientación sexual:";
+App::$strings["Tags:"] = "Etiquetas:";
+App::$strings["Political Views:"] = "Posición política:";
+App::$strings["Religion:"] = "Religión:";
+App::$strings["Hobbies/Interests:"] = "Aficciones o intereses:";
+App::$strings["Likes:"] = "Me gusta:";
+App::$strings["Dislikes:"] = "No me gusta:";
+App::$strings["Contact information and Social Networks:"] = "Información de contacto y redes sociales:";
+App::$strings["My other channels:"] = "Mis otros canales:";
+App::$strings["Musical interests:"] = "Preferencias musicales:";
+App::$strings["Books, literature:"] = "Libros, literatura:";
+App::$strings["Television:"] = "Televisión:";
+App::$strings["Film/dance/culture/entertainment:"] = "Cine, danza, cultura, entretenimiento:";
+App::$strings["Love/Romance:"] = "Vida sentimental o amorosa:";
+App::$strings["Work/employment:"] = "Trabajo:";
+App::$strings["School/education:"] = "Estudios:";
+App::$strings["Like this thing"] = "Me gusta esto";
App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado";
-App::$strings["(Unknown)"] = "(Desconocido)";
-App::$strings["Visible to anybody on the internet."] = "Visible para cualquiera en internet.";
-App::$strings["Visible to you only."] = "Visible sólo para usted.";
-App::$strings["Visible to anybody in this network."] = "Visible para cualquiera en esta red.";
-App::$strings["Visible to anybody authenticated."] = "Visible para cualquiera que haya sido autenticado.";
-App::$strings["Visible to anybody on %s."] = "Visible para cualquiera en %s.";
-App::$strings["Visible to all connections."] = "Visible para todas las conexiones.";
-App::$strings["Visible to approved connections."] = "Visible para las conexiones permitidas.";
-App::$strings["Visible to specific connections."] = "Visible para conexiones específicas.";
-App::$strings["Privacy group is empty."] = "El grupo de canales está vacío.";
-App::$strings["Privacy group: %s"] = "Grupo de canales: %s";
-App::$strings["Connection not found."] = "Conexión no encontrada";
-App::$strings["profile photo"] = "foto del perfil";
+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["Photo storage failed."] = "La foto no ha podido ser guardada.";
+App::$strings["a new photo"] = "una nueva foto";
+App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s ha publicado %2\$s en %3\$s";
+App::$strings["Photo Albums"] = "Álbumes de fotos";
+App::$strings["Upload New Photos"] = "Subir nuevas fotos";
App::$strings["Logout"] = "Finalizar sesión";
App::$strings["End this session"] = "Finalizar esta sesión";
App::$strings["Home"] = "Inicio";
@@ -1701,13 +1679,6 @@ App::$strings["Site Setup and Configuration"] = "Ajustes y configuración del si
App::$strings["Loading..."] = "Cargando...";
App::$strings["@name, #tag, ?doc, content"] = "@nombre, #etiqueta, ?ayuda, contenido";
App::$strings["Please wait..."] = "Espere por favor…";
-App::$strings["view full size"] = "Ver en el tamaño original";
-App::$strings["\$Projectname Notification"] = "Notificación de \$Projectname";
-App::$strings["\$projectname"] = "\$projectname";
-App::$strings["Thank You,"] = "Gracias,";
-App::$strings["%s Administrator"] = "%s Administrador";
-App::$strings["Administrator"] = "Administrador";
-App::$strings["No Subject"] = "Sin asunto";
App::$strings["Frequently"] = "Frecuentemente";
App::$strings["Hourly"] = "Cada hora";
App::$strings["Twice daily"] = "Dos veces al día";
@@ -1724,6 +1695,8 @@ App::$strings["Zot"] = "Zot";
App::$strings["LinkedIn"] = "LinkedIn";
App::$strings["XMPP/IM"] = "XMPP/IM";
App::$strings["MySpace"] = "MySpace";
+App::$strings["Logged out."] = "Desconectado/a.";
+App::$strings["Failed authentication"] = "Autenticación fallida.";
App::$strings["Item was not found."] = "Elemento no encontrado.";
App::$strings["No source file."] = "Ningún fichero de origen";
App::$strings["Cannot locate file to replace"] = "No se puede localizar el fichero que va a ser sustituido.";
@@ -1779,6 +1752,10 @@ App::$strings["Directory Options"] = "Opciones del directorio";
App::$strings["Safe Mode"] = "Modo seguro";
App::$strings["Public Forums Only"] = "Solo foros públicos";
App::$strings["This Website Only"] = "Solo este sitio web";
+App::$strings["\$Projectname Notification"] = "Notificación de \$Projectname";
+App::$strings["\$projectname"] = "\$projectname";
+App::$strings["Thank You,"] = "Gracias,";
+App::$strings["%s Administrator"] = "%s Administrador";
App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Aviso] Nuevo mensaje en %s";
App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s le ha enviado un nuevo mensaje privado en %3\$s.";
@@ -1860,6 +1837,18 @@ App::$strings["Code"] = "Código";
App::$strings["Image"] = "Imagen";
App::$strings["Insert Link"] = "Insertar enlace";
App::$strings["Video"] = "Vídeo";
+App::$strings[" and "] = " y ";
+App::$strings["public profile"] = "el perfil público";
+App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s ha cambiado %2\$s a &ldquo;%3\$s&rdquo;";
+App::$strings["Visit %1\$s's %2\$s"] = "Visitar %2\$s de %1\$s";
+App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s ha actualizado %2\$s, cambiando %3\$s.";
+App::$strings["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.";
+App::$strings["Channel was deleted and no longer exists."] = "El canal ha sido eliminado y ya no existe.";
+App::$strings["Protocol disabled."] = "Protocolo deshabilitado.";
+App::$strings["Channel discovery failed."] = "El intento de acceder al canal ha fallado.";
+App::$strings["Cannot connect to yourself."] = "No puede conectarse consigo mismo.";
App::$strings["General Features"] = "Funcionalidades básicas";
App::$strings["Content Expiration"] = "Caducidad del contenido";
App::$strings["Remove posts/comments and/or private messages at a future time"] = "Eliminar publicaciones/comentarios y/o mensajes privados más adelante";
@@ -1927,13 +1916,13 @@ App::$strings["Star Posts"] = "Entradas destacadas";
App::$strings["Ability to mark special posts with a star indicator"] = "Capacidad de marcar entradas destacadas con un indicador de estrella";
App::$strings["Tag Cloud"] = "Nube de etiquetas";
App::$strings["Provide a personal tag cloud on your channel page"] = "Proveer nube de etiquetas personal en su página de canal";
-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.";
-App::$strings["Channel was deleted and no longer exists."] = "El canal ha sido eliminado y ya no existe.";
-App::$strings["Protocol disabled."] = "Protocolo deshabilitado.";
-App::$strings["Channel discovery failed."] = "El intento de acceder al canal ha fallado.";
-App::$strings["Cannot connect to yourself."] = "No puede conectarse consigo mismo.";
+App::$strings["No recipient provided."] = "No se ha especificado ningún destinatario.";
+App::$strings["[no subject]"] = "[sin asunto]";
+App::$strings["Unable to determine sender."] = "No ha sido posible determinar el remitente. ";
+App::$strings["Stored post could not be verified."] = "No se han podido verificar las publicaciones guardadas.";
+App::$strings["view full size"] = "Ver en el tamaño original";
+App::$strings["Administrator"] = "Administrador";
+App::$strings["No Subject"] = "Sin asunto";
App::$strings["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."] = "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente.";
App::$strings["Add new connections to this privacy group"] = "Añadir conexiones nuevas a este grupo de canales";
App::$strings["edit"] = "editar";
@@ -2129,12 +2118,13 @@ App::$strings["want"] = "quiero";
App::$strings["wants"] = "quiere";
App::$strings["likes"] = "gusta de";
App::$strings["dislikes"] = "no gusta de";
+App::$strings["Visible to your default audience"] = "Visible para su público predeterminado.";
App::$strings["Only me"] = "Sólo yo";
App::$strings["Public"] = "Público";
App::$strings["Anybody in the \$Projectname network"] = "Cualquiera en la red \$Projectname";
App::$strings["Any account on %s"] = "Cualquier cuenta en %s";
App::$strings["Any of my connections"] = "Cualquiera de mis conexiones";
-App::$strings["Only me (only specified contacts and me)"] = "Sólo yo (sólo los contactos especificados y yo)";
+App::$strings["Only connections I specifically allow"] = "Sólo las conexiones que yo permita de forma explícita";
App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Cualquiera que se haya autenticado (podría incluir a los visitantes de otras redes)";
App::$strings["Any connections including those who haven't yet been approved"] = "Cualquier conexión incluyendo aquellas que aún no han sido aprobadas";
App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Esta es la configuración predeterminada para su flujo (stream) habitual de publicaciones.";
@@ -2200,11 +2190,21 @@ App::$strings["__ctx:calendar__ month"] = "mes";
App::$strings["__ctx:calendar__ week"] = "semana";
App::$strings["__ctx:calendar__ day"] = "día";
App::$strings["__ctx:calendar__ All day"] = "Todos los días";
-App::$strings["No recipient provided."] = "No se ha especificado ningún destinatario.";
-App::$strings["[no subject]"] = "[sin asunto]";
-App::$strings["Unable to determine sender."] = "No ha sido posible determinar el remitente. ";
-App::$strings["Stored post could not be verified."] = "No se han podido verificar las publicaciones guardadas.";
-App::$strings["Public Timeline"] = "Cronología pública";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado.";
+App::$strings["Channel clone failed. Import failed."] = "La clonación del canal no ha salido bien. La importación ha fallado.";
+App::$strings["(Unknown)"] = "(Desconocido)";
+App::$strings["Visible to anybody on the internet."] = "Visible para cualquiera en internet.";
+App::$strings["Visible to you only."] = "Visible sólo para usted.";
+App::$strings["Visible to anybody in this network."] = "Visible para cualquiera en esta red.";
+App::$strings["Visible to anybody authenticated."] = "Visible para cualquiera que haya sido autenticado.";
+App::$strings["Visible to anybody on %s."] = "Visible para cualquiera en %s.";
+App::$strings["Visible to all connections."] = "Visible para todas las conexiones.";
+App::$strings["Visible to approved connections."] = "Visible para las conexiones permitidas.";
+App::$strings["Visible to specific connections."] = "Visible para conexiones específicas.";
+App::$strings["Privacy group is empty."] = "El grupo de canales está vacío.";
+App::$strings["Privacy group: %s"] = "Grupo de canales: %s";
+App::$strings["Connection not found."] = "Conexión no encontrada";
+App::$strings["profile photo"] = "foto del perfil";
App::$strings["New Page"] = "Nueva página";
App::$strings["Title"] = "Título";
App::$strings["Can view my normal stream and posts"] = "Pueden verse mi actividad y publicaciones normales";
@@ -2256,6 +2256,14 @@ App::$strings["Post"] = "Publicación";
App::$strings["Purchase"] = "Comprar";
App::$strings["Attachments:"] = "Ficheros adjuntos:";
App::$strings["\$Projectname event notification:"] = "Notificación de eventos de \$Projectname:";
+App::$strings["Add others"] = "Añadir otros";
+App::$strings["Who can see this?"] = "¿Quién puede ver esto?";
+App::$strings["Custom selection"] = "Selección personalizada";
+App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\".";
+App::$strings["Show"] = "Mostrar";
+App::$strings["Don't show"] = "No mostrar";
+App::$strings["Other networks and post services"] = "Otras redes y servicios de publicación";
+App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje.";
App::$strings["Focus (Hubzilla default)"] = "Focus (predefinido)";
App::$strings["Theme settings"] = "Ajustes del tema";
App::$strings["Select scheme"] = "Elegir un esquema";
diff --git a/view/fr/htconfig.tpl b/view/fr/htconfig.tpl
index 029c472f7..d49448ac2 100644
--- a/view/fr/htconfig.tpl
+++ b/view/fr/htconfig.tpl
@@ -29,7 +29,7 @@ define( 'UNO', {{$uno}} );
// Choisissez votre emplacement gographique. Si vous n'tes pas certain, utilisez "America/Los_Angeles".
// Vous pourrez le changer plus tard et ce rglage n'affecte que les visiteurs anonymes.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// Quel sera le nom de votre site?
diff --git a/view/it/htconfig.tpl b/view/it/htconfig.tpl
index d0a799cf6..802b31b49 100644
--- a/view/it/htconfig.tpl
+++ b/view/it/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/js/acl.js b/view/js/acl.js
index 92a80e3d1..79699c589 100644
--- a/view/js/acl.js
+++ b/view/js/acl.js
@@ -20,7 +20,6 @@ function ACL(backend_url, preset) {
that.onlyme = $("#acl-onlyme");
that.showlimited = $("#acl-showlimited");
that.acl_select = $("#acl-select");
- that.showacl = $("#show-acl");
that.preset = preset;
that.self = [];
@@ -250,7 +249,6 @@ ACL.prototype.update_view = function(value) {
if (that.allow_gid.length === 0 && that.allow_cid.length === 0 && that.deny_gid.length === 0 && that.deny_cid.length === 0) {
that.list.hide(); //hide acl-list
- that.showacl.hide(); //hide showacl button
that.info.show(); //show acl-info
that.update_select('public');
@@ -263,7 +261,6 @@ ACL.prototype.update_view = function(value) {
// if value != 'onlyme' we should fall through this one
else if (that.allow_gid.length === 0 && that.allow_cid.length === 1 && that.allow_cid[0] === that.self[0] && that.deny_gid.length === 0 && that.deny_cid.length === 0 && value === 'onlyme') {
that.list.hide(); //hide acl-list if
- that.showacl.show(); //show showacl button
that.info.hide(); //show acl-info
that.update_select('onlyme');
@@ -274,7 +271,6 @@ ACL.prototype.update_view = function(value) {
else {
that.list.show(); //show acl-list
- that.showacl.hide(); //hide showacl button
that.info.hide(); //hide acl-info
that.update_select('limited');
diff --git a/view/nb-no/htconfig.tpl b/view/nb-no/htconfig.tpl
index d0a799cf6..802b31b49 100644
--- a/view/nb-no/htconfig.tpl
+++ b/view/nb-no/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/nl/hmessages.po b/view/nl/hmessages.po
index f08f18f5d..81a670943 100644
--- a/view/nl/hmessages.po
+++ b/view/nl/hmessages.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Redmatrix\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-05-13 00:02-0700\n"
-"PO-Revision-Date: 2016-05-16 12:37+0000\n"
+"POT-Creation-Date: 2016-05-20 00:02-0700\n"
+"PO-Revision-Date: 2016-05-22 21:10+0000\n"
"Last-Translator: jeroenpraat <jeroenpraat@xs4all.nl>\n"
"Language-Team: Dutch (http://www.transifex.com/Friendica/red-matrix/language/nl/)\n"
"MIME-Version: 1.0\n"
@@ -67,14 +67,14 @@ msgstr "Totaal"
msgid "Shared"
msgstr "Gedeeld"
-#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:303
+#: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:305
#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:182
#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/New_channel.php:142
#: ../../Zotlabs/Module/Webpages.php:186
msgid "Create"
msgstr "Aanmaken"
-#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:305
+#: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:307
#: ../../Zotlabs/Module/Cover_photo.php:357
#: ../../Zotlabs/Module/Photos.php:825 ../../Zotlabs/Module/Photos.php:1367
#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1519
@@ -102,7 +102,7 @@ msgstr "Grootte"
msgid "Last Modified"
msgstr "Laatst gewijzigd"
-#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Admin.php:2075
+#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Admin.php:2089
#: ../../Zotlabs/Module/Blocks.php:157
#: ../../Zotlabs/Module/Connections.php:290
#: ../../Zotlabs/Module/Connections.php:310
@@ -120,7 +120,7 @@ msgid "Edit"
msgstr "Bewerken"
#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Admin.php:1043
-#: ../../Zotlabs/Module/Admin.php:1202 ../../Zotlabs/Module/Admin.php:2076
+#: ../../Zotlabs/Module/Admin.php:1202 ../../Zotlabs/Module/Admin.php:2090
#: ../../Zotlabs/Module/Blocks.php:159
#: ../../Zotlabs/Module/Connections.php:263
#: ../../Zotlabs/Module/Connedit.php:573
@@ -134,25 +134,25 @@ msgstr "Bewerken"
msgid "Delete"
msgstr "Verwijderen"
-#: ../../Zotlabs/Storage/Browser.php:282
+#: ../../Zotlabs/Storage/Browser.php:284
#, php-format
msgid "You are using %1$s of your available file storage."
msgstr "Je gebruikt %1$s van de beschikbare bestandsopslag."
-#: ../../Zotlabs/Storage/Browser.php:287
+#: ../../Zotlabs/Storage/Browser.php:289
#, php-format
msgid "You are using %1$s of %2$s available file storage. (%3$s&#37;)"
msgstr "Je gebruikt %1$s van totaal %2$s beschikbare bestandsopslag. (%3$s&#37;)"
-#: ../../Zotlabs/Storage/Browser.php:299
+#: ../../Zotlabs/Storage/Browser.php:301
msgid "WARNING:"
msgstr "WAARSCHUWING:"
-#: ../../Zotlabs/Storage/Browser.php:302
+#: ../../Zotlabs/Storage/Browser.php:304
msgid "Create new folder"
msgstr "Nieuwe map aanmaken"
-#: ../../Zotlabs/Storage/Browser.php:304
+#: ../../Zotlabs/Storage/Browser.php:306
msgid "Upload file"
msgstr "Bestand uploaden"
@@ -198,7 +198,7 @@ msgstr "Bestand uploaden"
#: ../../Zotlabs/Module/Profile_photo.php:256
#: ../../Zotlabs/Module/Profile_photo.php:269
#: ../../Zotlabs/Module/Profiles.php:202 ../../Zotlabs/Module/Profiles.php:600
-#: ../../Zotlabs/Module/Rate.php:115 ../../Zotlabs/Module/Register.php:77
+#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Register.php:77
#: ../../Zotlabs/Module/Regmod.php:21
#: ../../Zotlabs/Module/Service_limits.php:11
#: ../../Zotlabs/Module/Settings.php:572 ../../Zotlabs/Module/Setup.php:238
@@ -209,14 +209,14 @@ msgstr "Bestand uploaden"
#: ../../Zotlabs/Module/Viewconnections.php:26
#: ../../Zotlabs/Module/Viewconnections.php:31
#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:74
-#: ../../include/photos.php:29 ../../include/chat.php:133
-#: ../../include/items.php:3439 ../../include/attach.php:141
-#: ../../include/attach.php:189 ../../include/attach.php:252
-#: ../../include/attach.php:266 ../../include/attach.php:273
-#: ../../include/attach.php:338 ../../include/attach.php:352
-#: ../../include/attach.php:359 ../../include/attach.php:437
-#: ../../include/attach.php:895 ../../include/attach.php:966
-#: ../../include/attach.php:1118 ../../index.php:174
+#: ../../include/chat.php:133 ../../include/photos.php:29
+#: ../../include/attach.php:141 ../../include/attach.php:189
+#: ../../include/attach.php:252 ../../include/attach.php:266
+#: ../../include/attach.php:273 ../../include/attach.php:338
+#: ../../include/attach.php:352 ../../include/attach.php:359
+#: ../../include/attach.php:437 ../../include/attach.php:895
+#: ../../include/attach.php:966 ../../include/attach.php:1118
+#: ../../include/items.php:3439 ../../index.php:175
msgid "Permission denied."
msgstr "Toegang geweigerd."
@@ -269,7 +269,7 @@ msgid "Theme settings updated."
msgstr "Thema-instellingen bijgewerkt."
#: ../../Zotlabs/Module/Admin.php:164 ../../Zotlabs/Module/Admin.php:1239
-#: ../../Zotlabs/Module/Admin.php:1541 ../../Zotlabs/Module/Display.php:44
+#: ../../Zotlabs/Module/Admin.php:1543 ../../Zotlabs/Module/Display.php:44
#: ../../Zotlabs/Module/Filestorage.php:33 ../../Zotlabs/Module/Thing.php:89
#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3360
msgid "Item not found."
@@ -315,8 +315,8 @@ msgstr "Jouw software moet worden bijgewerkt "
#: ../../Zotlabs/Module/Admin.php:711 ../../Zotlabs/Module/Admin.php:755
#: ../../Zotlabs/Module/Admin.php:1034 ../../Zotlabs/Module/Admin.php:1198
#: ../../Zotlabs/Module/Admin.php:1313 ../../Zotlabs/Module/Admin.php:1403
-#: ../../Zotlabs/Module/Admin.php:1592 ../../Zotlabs/Module/Admin.php:1626
-#: ../../Zotlabs/Module/Admin.php:1711
+#: ../../Zotlabs/Module/Admin.php:1594 ../../Zotlabs/Module/Admin.php:1628
+#: ../../Zotlabs/Module/Admin.php:1713
msgid "Administration"
msgstr "Beheer"
@@ -385,7 +385,7 @@ msgstr "Niet ondersteund"
#: ../../Zotlabs/Module/Settings.php:581 ../../include/dir_fns.php:141
#: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143
#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1619
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1633
msgid "No"
msgstr "Nee"
@@ -405,7 +405,7 @@ msgstr "Ja - met goedkeuring"
#: ../../Zotlabs/Module/Settings.php:581 ../../include/dir_fns.php:141
#: ../../include/dir_fns.php:142 ../../include/dir_fns.php:143
#: ../../view/theme/redbasic/php/config.php:105
-#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1619
+#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1633
msgid "Yes"
msgstr "Ja"
@@ -432,10 +432,10 @@ msgstr "Hub-instellingen"
#: ../../Zotlabs/Module/Admin.php:492 ../../Zotlabs/Module/Admin.php:688
#: ../../Zotlabs/Module/Admin.php:771 ../../Zotlabs/Module/Admin.php:1036
#: ../../Zotlabs/Module/Admin.php:1200 ../../Zotlabs/Module/Admin.php:1405
-#: ../../Zotlabs/Module/Admin.php:1628 ../../Zotlabs/Module/Admin.php:1713
-#: ../../Zotlabs/Module/Admin.php:2078 ../../Zotlabs/Module/Appman.php:125
+#: ../../Zotlabs/Module/Admin.php:1630 ../../Zotlabs/Module/Admin.php:1715
+#: ../../Zotlabs/Module/Admin.php:2092 ../../Zotlabs/Module/Appman.php:125
#: ../../Zotlabs/Module/Cal.php:341 ../../Zotlabs/Module/Chat.php:194
-#: ../../Zotlabs/Module/Chat.php:236 ../../Zotlabs/Module/Connect.php:97
+#: ../../Zotlabs/Module/Chat.php:236 ../../Zotlabs/Module/Connect.php:98
#: ../../Zotlabs/Module/Connedit.php:734 ../../Zotlabs/Module/Events.php:475
#: ../../Zotlabs/Module/Events.php:672
#: ../../Zotlabs/Module/Filestorage.php:162
@@ -448,7 +448,7 @@ msgstr "Hub-instellingen"
#: ../../Zotlabs/Module/Pdledit.php:66 ../../Zotlabs/Module/Photos.php:677
#: ../../Zotlabs/Module/Photos.php:1052 ../../Zotlabs/Module/Photos.php:1092
#: ../../Zotlabs/Module/Photos.php:1210 ../../Zotlabs/Module/Poke.php:186
-#: ../../Zotlabs/Module/Profiles.php:691 ../../Zotlabs/Module/Rate.php:172
+#: ../../Zotlabs/Module/Profiles.php:691 ../../Zotlabs/Module/Rate.php:170
#: ../../Zotlabs/Module/Settings.php:590 ../../Zotlabs/Module/Settings.php:703
#: ../../Zotlabs/Module/Settings.php:731 ../../Zotlabs/Module/Settings.php:754
#: ../../Zotlabs/Module/Settings.php:842
@@ -997,7 +997,7 @@ msgstr "Tijd/datum verzoek"
#: ../../Zotlabs/Module/Admin.php:1039 ../../Zotlabs/Module/Admin.php:1048
#: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18
-#: ../../include/contact_selectors.php:81 ../../boot.php:1617
+#: ../../include/contact_selectors.php:81 ../../boot.php:1631
msgid "Email"
msgstr "E-mail"
@@ -1159,11 +1159,11 @@ msgstr "Plugin %s uitgeschakeld."
msgid "Plugin %s enabled."
msgstr "Plugin %s ingeschakeld"
-#: ../../Zotlabs/Module/Admin.php:1282 ../../Zotlabs/Module/Admin.php:1565
+#: ../../Zotlabs/Module/Admin.php:1282 ../../Zotlabs/Module/Admin.php:1567
msgid "Disable"
msgstr "Uitschakelen"
-#: ../../Zotlabs/Module/Admin.php:1285 ../../Zotlabs/Module/Admin.php:1567
+#: ../../Zotlabs/Module/Admin.php:1285 ../../Zotlabs/Module/Admin.php:1569
msgid "Enable"
msgstr "Inschakelen"
@@ -1172,21 +1172,21 @@ msgstr "Inschakelen"
msgid "Plugins"
msgstr "Plugins"
-#: ../../Zotlabs/Module/Admin.php:1315 ../../Zotlabs/Module/Admin.php:1594
+#: ../../Zotlabs/Module/Admin.php:1315 ../../Zotlabs/Module/Admin.php:1596
msgid "Toggle"
msgstr "Omschakelen"
-#: ../../Zotlabs/Module/Admin.php:1316 ../../Zotlabs/Module/Admin.php:1595
+#: ../../Zotlabs/Module/Admin.php:1316 ../../Zotlabs/Module/Admin.php:1597
#: ../../include/widgets.php:638 ../../include/nav.php:208
#: ../../include/apps.php:166
msgid "Settings"
msgstr "Instellingen"
-#: ../../Zotlabs/Module/Admin.php:1323 ../../Zotlabs/Module/Admin.php:1604
+#: ../../Zotlabs/Module/Admin.php:1323 ../../Zotlabs/Module/Admin.php:1606
msgid "Author: "
msgstr "Auteur: "
-#: ../../Zotlabs/Module/Admin.php:1324 ../../Zotlabs/Module/Admin.php:1605
+#: ../../Zotlabs/Module/Admin.php:1324 ../../Zotlabs/Module/Admin.php:1607
msgid "Maintainer: "
msgstr "Beheerder: "
@@ -1246,146 +1246,154 @@ msgid "Cancel"
msgstr "Annuleren"
#: ../../Zotlabs/Module/Admin.php:1411
-msgid "Add Plugin Repo"
-msgstr "Plugin-repository toevoegen"
+msgid "Manage Repos"
+msgstr "Repositories beheren"
+
+#: ../../Zotlabs/Module/Admin.php:1412
+msgid "Installed Plugin Repositories"
+msgstr "Toegevoegde plugin-repositories"
+
+#: ../../Zotlabs/Module/Admin.php:1413
+msgid "Install a New Plugin Repository"
+msgstr "Nieuwe plugin-repository toevoegen"
-#: ../../Zotlabs/Module/Admin.php:1417 ../../Zotlabs/Module/Settings.php:77
+#: ../../Zotlabs/Module/Admin.php:1419 ../../Zotlabs/Module/Settings.php:77
#: ../../Zotlabs/Module/Settings.php:616 ../../include/apps.php:284
msgid "Update"
msgstr "Bijwerken"
-#: ../../Zotlabs/Module/Admin.php:1418
+#: ../../Zotlabs/Module/Admin.php:1420
msgid "Switch branch"
msgstr "Branch veranderen"
-#: ../../Zotlabs/Module/Admin.php:1419 ../../Zotlabs/Module/Photos.php:998
+#: ../../Zotlabs/Module/Admin.php:1421 ../../Zotlabs/Module/Photos.php:998
#: ../../Zotlabs/Module/Tagrm.php:137
msgid "Remove"
msgstr "Verwijderen"
-#: ../../Zotlabs/Module/Admin.php:1530
+#: ../../Zotlabs/Module/Admin.php:1532
msgid "No themes found."
msgstr "Geen thema's gevonden"
-#: ../../Zotlabs/Module/Admin.php:1586
+#: ../../Zotlabs/Module/Admin.php:1588
msgid "Screenshot"
msgstr "Schermafdruk"
-#: ../../Zotlabs/Module/Admin.php:1593 ../../Zotlabs/Module/Admin.php:1627
+#: ../../Zotlabs/Module/Admin.php:1595 ../../Zotlabs/Module/Admin.php:1629
#: ../../include/widgets.php:1389
msgid "Themes"
msgstr "Thema's"
-#: ../../Zotlabs/Module/Admin.php:1632
+#: ../../Zotlabs/Module/Admin.php:1634
msgid "[Experimental]"
msgstr "[Experimenteel]"
-#: ../../Zotlabs/Module/Admin.php:1633
+#: ../../Zotlabs/Module/Admin.php:1635
msgid "[Unsupported]"
msgstr "[Niet ondersteund]"
-#: ../../Zotlabs/Module/Admin.php:1657
+#: ../../Zotlabs/Module/Admin.php:1659
msgid "Log settings updated."
msgstr "Logboek-instellingen bijgewerkt."
-#: ../../Zotlabs/Module/Admin.php:1712 ../../include/widgets.php:1410
+#: ../../Zotlabs/Module/Admin.php:1714 ../../include/widgets.php:1410
#: ../../include/widgets.php:1420
msgid "Logs"
msgstr "Logboeken"
-#: ../../Zotlabs/Module/Admin.php:1714
+#: ../../Zotlabs/Module/Admin.php:1716
msgid "Clear"
msgstr "Leegmaken"
-#: ../../Zotlabs/Module/Admin.php:1720
+#: ../../Zotlabs/Module/Admin.php:1722
msgid "Debugging"
msgstr "Debuggen"
-#: ../../Zotlabs/Module/Admin.php:1721
+#: ../../Zotlabs/Module/Admin.php:1723
msgid "Log file"
msgstr "Logbestand"
-#: ../../Zotlabs/Module/Admin.php:1721
+#: ../../Zotlabs/Module/Admin.php:1723
msgid ""
"Must be writable by web server. Relative to your Red top-level directory."
msgstr "Moet door de webserver beschrijfbaar zijn. Relatief ten opzichte van de bovenste map van je $Projectname-installatie."
-#: ../../Zotlabs/Module/Admin.php:1722
+#: ../../Zotlabs/Module/Admin.php:1724
msgid "Log level"
msgstr "Logniveau"
-#: ../../Zotlabs/Module/Admin.php:1990
+#: ../../Zotlabs/Module/Admin.php:2004
msgid "New Profile Field"
msgstr "Nieuw profielveld"
-#: ../../Zotlabs/Module/Admin.php:1991 ../../Zotlabs/Module/Admin.php:2011
+#: ../../Zotlabs/Module/Admin.php:2005 ../../Zotlabs/Module/Admin.php:2025
msgid "Field nickname"
msgstr "Bijnaam voor veld"
-#: ../../Zotlabs/Module/Admin.php:1991 ../../Zotlabs/Module/Admin.php:2011
+#: ../../Zotlabs/Module/Admin.php:2005 ../../Zotlabs/Module/Admin.php:2025
msgid "System name of field"
msgstr "Systeemnaam voor veld"
-#: ../../Zotlabs/Module/Admin.php:1992 ../../Zotlabs/Module/Admin.php:2012
+#: ../../Zotlabs/Module/Admin.php:2006 ../../Zotlabs/Module/Admin.php:2026
msgid "Input type"
msgstr "Invoertype"
-#: ../../Zotlabs/Module/Admin.php:1993 ../../Zotlabs/Module/Admin.php:2013
+#: ../../Zotlabs/Module/Admin.php:2007 ../../Zotlabs/Module/Admin.php:2027
msgid "Field Name"
msgstr "Veldnaam"
-#: ../../Zotlabs/Module/Admin.php:1993 ../../Zotlabs/Module/Admin.php:2013
+#: ../../Zotlabs/Module/Admin.php:2007 ../../Zotlabs/Module/Admin.php:2027
msgid "Label on profile pages"
msgstr "Tekstlabel voor op profielpagina's"
-#: ../../Zotlabs/Module/Admin.php:1994 ../../Zotlabs/Module/Admin.php:2014
+#: ../../Zotlabs/Module/Admin.php:2008 ../../Zotlabs/Module/Admin.php:2028
msgid "Help text"
msgstr "Helptekst"
-#: ../../Zotlabs/Module/Admin.php:1994 ../../Zotlabs/Module/Admin.php:2014
+#: ../../Zotlabs/Module/Admin.php:2008 ../../Zotlabs/Module/Admin.php:2028
msgid "Additional info (optional)"
msgstr "Extra informatie (optioneel)"
-#: ../../Zotlabs/Module/Admin.php:1995 ../../Zotlabs/Module/Admin.php:2015
+#: ../../Zotlabs/Module/Admin.php:2009 ../../Zotlabs/Module/Admin.php:2029
#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Rbmark.php:32
#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/widgets.php:201
#: ../../include/text.php:934 ../../include/text.php:946
msgid "Save"
msgstr "Opslaan"
-#: ../../Zotlabs/Module/Admin.php:2004
+#: ../../Zotlabs/Module/Admin.php:2018
msgid "Field definition not found"
msgstr "Velddefinitie niet gevonden"
-#: ../../Zotlabs/Module/Admin.php:2010
+#: ../../Zotlabs/Module/Admin.php:2024
msgid "Edit Profile Field"
msgstr "Profielveld bewerken"
-#: ../../Zotlabs/Module/Admin.php:2068 ../../include/widgets.php:1391
+#: ../../Zotlabs/Module/Admin.php:2082 ../../include/widgets.php:1391
msgid "Profile Fields"
msgstr "Profielvelden"
-#: ../../Zotlabs/Module/Admin.php:2069
+#: ../../Zotlabs/Module/Admin.php:2083
msgid "Basic Profile Fields"
msgstr "Standaard profielvelden"
-#: ../../Zotlabs/Module/Admin.php:2070
+#: ../../Zotlabs/Module/Admin.php:2084
msgid "Advanced Profile Fields"
msgstr "Geavanceerde profielvelden"
-#: ../../Zotlabs/Module/Admin.php:2070
+#: ../../Zotlabs/Module/Admin.php:2084
msgid "(In addition to basic fields)"
msgstr "(als toevoeging op de standaard velden)"
-#: ../../Zotlabs/Module/Admin.php:2072
+#: ../../Zotlabs/Module/Admin.php:2086
msgid "All available fields"
msgstr "Alle beschikbare velden"
-#: ../../Zotlabs/Module/Admin.php:2073
+#: ../../Zotlabs/Module/Admin.php:2087
msgid "Custom Fields"
msgstr "Extra (handmatig toegevoegde) velden"
-#: ../../Zotlabs/Module/Admin.php:2077
+#: ../../Zotlabs/Module/Admin.php:2091
msgid "Create Custom Field"
msgstr "Extra velden aanmaken"
@@ -1661,7 +1669,7 @@ msgstr "Aantal minuten voordat chatberichten worden verwijderd"
#: ../../Zotlabs/Module/Chat.php:233 ../../Zotlabs/Module/Filestorage.php:153
#: ../../Zotlabs/Module/Photos.php:671 ../../Zotlabs/Module/Photos.php:1045
#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:359
-#: ../../include/acl_selectors.php:285
+#: ../../include/acl_selectors.php:288
msgid "Permissions"
msgstr "Permissies"
@@ -1707,46 +1715,46 @@ msgstr "Veel voorkomende connecties"
msgid "No connections in common."
msgstr "Geen gemeenschappelijke connecties."
-#: ../../Zotlabs/Module/Connect.php:60 ../../Zotlabs/Module/Connect.php:108
+#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109
msgid "Continue"
msgstr "Ga verder"
-#: ../../Zotlabs/Module/Connect.php:89
+#: ../../Zotlabs/Module/Connect.php:90
msgid "Premium Channel Setup"
msgstr "Instellen premiumkanaal "
-#: ../../Zotlabs/Module/Connect.php:91
+#: ../../Zotlabs/Module/Connect.php:92
msgid "Enable premium channel connection restrictions"
msgstr "Restricties voor connecties van premiumkanaal toestaan"
-#: ../../Zotlabs/Module/Connect.php:92
+#: ../../Zotlabs/Module/Connect.php:93
msgid ""
"Please enter your restrictions or conditions, such as paypal receipt, usage "
"guidelines, etc."
msgstr "Vul je restricties of voorwaarden in, zoals een paypal-afschrift, voorschriften voor leden, enz."
-#: ../../Zotlabs/Module/Connect.php:94 ../../Zotlabs/Module/Connect.php:114
+#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115
msgid ""
"This channel may require additional steps or acknowledgement of the "
"following conditions prior to connecting:"
msgstr "Dit kanaal kan extra stappen of het accepteren van de volgende voorwaarden vereisen, voordat de connectie wordt geaccepteerd:"
-#: ../../Zotlabs/Module/Connect.php:95
+#: ../../Zotlabs/Module/Connect.php:96
msgid ""
"Potential connections will then see the following text before proceeding:"
msgstr "Mogelijke connecties zullen dan de volgende tekst zien voordat ze verder kunnen:"
-#: ../../Zotlabs/Module/Connect.php:96 ../../Zotlabs/Module/Connect.php:117
+#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118
msgid ""
"By continuing, I certify that I have complied with any instructions provided"
" on this page."
msgstr "Door verder te gaan ga ik automatisch akkoord met alle voorwaarden en aanwijzingen op deze pagina."
-#: ../../Zotlabs/Module/Connect.php:105
+#: ../../Zotlabs/Module/Connect.php:106
msgid "(No specific instructions have been provided by the channel owner.)"
msgstr "(Er zijn geen speciale voorwaarden en aanwijzingen door de kanaal-eigenaar verstrekt) "
-#: ../../Zotlabs/Module/Connect.php:113
+#: ../../Zotlabs/Module/Connect.php:114
msgid "Restricted or Premium Channel"
msgstr "Beperkt of premiumkanaal"
@@ -1872,9 +1880,9 @@ msgid "Connections"
msgstr "Connecties"
#: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44
-#: ../../include/acl_selectors.php:278 ../../include/nav.php:165
-#: ../../include/text.php:933 ../../include/text.php:945
-#: ../../include/apps.php:179
+#: ../../include/nav.php:165 ../../include/text.php:933
+#: ../../include/text.php:945 ../../include/apps.php:179
+#: ../../include/acl_selectors.php:281
msgid "Search"
msgstr "Zoeken"
@@ -2024,9 +2032,9 @@ msgstr "Familie"
#: ../../Zotlabs/Module/Connedit.php:595 ../../Zotlabs/Module/Settings.php:342
#: ../../Zotlabs/Module/Settings.php:346 ../../Zotlabs/Module/Settings.php:347
#: ../../Zotlabs/Module/Settings.php:350 ../../Zotlabs/Module/Settings.php:361
+#: ../../include/profile_selectors.php:80 ../../include/widgets.php:495
#: ../../include/identity.php:389 ../../include/identity.php:390
-#: ../../include/identity.php:397 ../../include/profile_selectors.php:80
-#: ../../include/widgets.php:495
+#: ../../include/identity.php:397
msgid "Friends"
msgstr "Vrienden"
@@ -2097,7 +2105,7 @@ msgstr "Hulpmiddelen"
msgid "Slide to adjust your degree of friendship"
msgstr "Schuif om te bepalen hoe goed je iemand kent en/of mag"
-#: ../../Zotlabs/Module/Connedit.php:717 ../../Zotlabs/Module/Rate.php:161
+#: ../../Zotlabs/Module/Connedit.php:717 ../../Zotlabs/Module/Rate.php:159
#: ../../include/js_strings.php:20
msgid "Rating"
msgstr "Beoordeling"
@@ -2318,8 +2326,8 @@ msgstr "Homepage: "
msgid "Age:"
msgstr "Leeftijd:"
-#: ../../Zotlabs/Module/Directory.php:311 ../../include/identity.php:1029
-#: ../../include/event.php:52 ../../include/text.php:1481
+#: ../../Zotlabs/Module/Directory.php:311 ../../include/event.php:52
+#: ../../include/identity.php:1029 ../../include/text.php:1481
#: ../../include/bb2diaspora.php:509
msgid "Location:"
msgstr "Plaats:"
@@ -2337,9 +2345,9 @@ msgid "About:"
msgstr "Over:"
#: ../../Zotlabs/Module/Directory.php:325 ../../Zotlabs/Module/Match.php:68
-#: ../../Zotlabs/Module/Suggest.php:56 ../../include/identity.php:1014
+#: ../../Zotlabs/Module/Suggest.php:56 ../../include/Contact.php:101
#: ../../include/widgets.php:147 ../../include/widgets.php:184
-#: ../../include/Contact.php:101 ../../include/conversation.php:961
+#: ../../include/identity.php:1014 ../../include/conversation.php:961
msgid "Connect"
msgstr "Verbinden"
@@ -2420,7 +2428,7 @@ msgstr "Deze kanalengidshub (directoryserver) heeft een toegangs-token nodig"
#: ../../Zotlabs/Module/Group.php:72 ../../Zotlabs/Module/Import_items.php:112
#: ../../Zotlabs/Module/Like.php:284 ../../Zotlabs/Module/Profperm.php:28
#: ../../Zotlabs/Module/Subthread.php:62 ../../include/items.php:383
-#: ../../index.php:173
+#: ../../index.php:174
msgid "Permission denied"
msgstr "Toegang geweigerd"
@@ -3347,7 +3355,7 @@ msgid ""
"Password reset failed."
msgstr "Het verzoek kon niet worden geverifieerd. (Mogelijk heb je al eerder een verzoek ingediend.) Opnieuw instellen van wachtwoord is mislukt."
-#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1623
+#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1637
msgid "Password Reset"
msgstr "Wachtwoord vergeten?"
@@ -4218,8 +4226,8 @@ msgctxt "noun"
msgid "Dislikes"
msgstr "vinden dit niet leuk"
-#: ../../Zotlabs/Module/Photos.php:1263 ../../include/acl_selectors.php:287
-#: ../../include/ItemObject.php:384
+#: ../../Zotlabs/Module/Photos.php:1263 ../../include/ItemObject.php:384
+#: ../../include/acl_selectors.php:290
msgid "Close"
msgstr "Sluiten"
@@ -4611,6 +4619,10 @@ msgstr "Toegangs-<br/>&nbsp;type"
msgid "Registration Policy"
msgstr "Registratie-<br/>&nbsp;beleid"
+#: ../../Zotlabs/Module/Pubsites.php:31
+msgid "Software"
+msgstr "Software"
+
#: ../../Zotlabs/Module/Pubsites.php:31 ../../Zotlabs/Module/Ratings.php:103
#: ../../include/conversation.php:964
msgid "Ratings"
@@ -4620,20 +4632,20 @@ msgstr "Beoordelingen"
msgid "Rate"
msgstr "Beoordeel"
-#: ../../Zotlabs/Module/Rate.php:162
+#: ../../Zotlabs/Module/Rate.php:160
msgid "Website:"
msgstr "Website:"
-#: ../../Zotlabs/Module/Rate.php:165
+#: ../../Zotlabs/Module/Rate.php:163
#, php-format
msgid "Remote Channel [%s] (not yet known on this site)"
msgstr "Kanaal op afstand [%s] (nog niet op deze hub bekend)"
-#: ../../Zotlabs/Module/Rate.php:166
+#: ../../Zotlabs/Module/Rate.php:164
msgid "Rating (this information is public)"
msgstr "Beoordeling (deze informatie is openbaar)"
-#: ../../Zotlabs/Module/Rate.php:167
+#: ../../Zotlabs/Module/Rate.php:165
msgid "Optionally explain your rating (this information is public)"
msgstr "Verklaar jouw beoordeling (niet verplicht, deze informatie is openbaar)"
@@ -4757,7 +4769,7 @@ msgid "Membership on this site is by invitation only."
msgstr "Registreren op deze $Projectname-hub kan alleen op uitnodiging."
#: ../../Zotlabs/Module/Register.php:262 ../../include/nav.php:147
-#: ../../boot.php:1597
+#: ../../boot.php:1611
msgid "Register"
msgstr "Registreren"
@@ -5272,10 +5284,21 @@ msgid "Expire other channel content after this many days"
msgstr "Inhoud van andere kanalen na zoveel aantal dagen laten verlopen:"
#: ../../Zotlabs/Module/Settings.php:1065
+msgid "0 or blank to use the website limit."
+msgstr "0 of leeg om het standaard aantal dagen van deze hub te gebruiken."
+
+#: ../../Zotlabs/Module/Settings.php:1065
#, php-format
-msgid ""
-"0 or blank to use the website limit. The website expires after %d days."
-msgstr "0 of leeg om het standaard aantal dagen van deze hub te gebruiken. Deze hub laat de inhoud van andere kanalen na %d dagen verlopen."
+msgid "This website expires after %d days."
+msgstr "Deze hub laat de inhoud van andere kanalen na %d dagen verlopen."
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "This website does not expire imported content."
+msgstr "Deze hub laat de inhoud van andere kanalen niet verlopen."
+
+#: ../../Zotlabs/Module/Settings.php:1065
+msgid "The website limit takes precedence if lower than your limit."
+msgstr "Wanneer de standaard aantal dagen van deze hub lager ligt dan jouw aantal, dan heeft de limiet van deze hub voorrang."
#: ../../Zotlabs/Module/Settings.php:1066
msgid "Maximum Friend Requests/Day:"
@@ -5286,12 +5309,12 @@ msgid "May reduce spam activity"
msgstr "Kan eventuele spam verminderen"
#: ../../Zotlabs/Module/Settings.php:1067
-msgid "Default Post Permissions"
-msgstr "Standaard permissies voor nieuwe berichten"
+msgid "Default Post and Publish Permissions"
+msgstr "Standaard permissies voor nieuwe berichten en publicaties"
#: ../../Zotlabs/Module/Settings.php:1069
-msgid "Use my default audience setting for the type of post"
-msgstr "Gebruik van mijn standaard privacy-instelling voor berichten"
+msgid "Use my default audience setting for the type of object published"
+msgstr "Gebruik mijn standaard privacy-instelling voor dit type publicatie"
#: ../../Zotlabs/Module/Settings.php:1072
msgid "Channel permissions category:"
@@ -6266,192 +6289,14 @@ msgstr "Geen gebruikersnaam in het importbestand gevonden."
msgid "Unable to create a unique channel address. Import failed."
msgstr "Niet in staat om een uniek kanaaladres aan te maken. Importeren is mislukt."
-#: ../../include/dba/dba_driver.php:142
+#: ../../include/dba/dba_driver.php:159
#, php-format
msgid "Cannot locate DNS info for database server '%s'"
msgstr "Kan DNS-informatie voor databaseserver '%s' niet vinden"
-#: ../../include/identity.php:32
-msgid "Unable to obtain identity information from database"
-msgstr "Niet in staat om identiteitsinformatie uit de database te verkrijgen"
-
-#: ../../include/identity.php:66
-msgid "Empty name"
-msgstr "Ontbrekende naam"
-
-#: ../../include/identity.php:69
-msgid "Name too long"
-msgstr "Naam te lang"
-
-#: ../../include/identity.php:180
-msgid "No account identifier"
-msgstr "Geen account-identificator"
-
-#: ../../include/identity.php:192
-msgid "Nickname is required."
-msgstr "Bijnaam is verplicht"
-
-#: ../../include/identity.php:206
-msgid "Reserved nickname. Please choose another."
-msgstr "Deze naam is gereserveerd. Kies een andere."
-
-#: ../../include/identity.php:211
-msgid ""
-"Nickname has unsupported characters or is already being used on this site."
-msgstr "Deze naam heeft niet ondersteunde karakters of is al op deze hub in gebruik."
-
-#: ../../include/identity.php:287
-msgid "Unable to retrieve created identity"
-msgstr "Niet in staat om aangemaakte identiteit te vinden"
-
-#: ../../include/identity.php:345
-msgid "Default Profile"
-msgstr "Standaardprofiel"
-
-#: ../../include/identity.php:791
-msgid "Requested channel is not available."
-msgstr "Opgevraagd kanaal is niet beschikbaar."
-
-#: ../../include/identity.php:938
-msgid "Create New Profile"
-msgstr "Nieuw profiel aanmaken"
-
-#: ../../include/identity.php:941 ../../include/nav.php:90
-msgid "Edit Profile"
-msgstr "Profiel bewerken"
-
-#: ../../include/identity.php:958
-msgid "Visible to everybody"
-msgstr "Voor iedereen zichtbaar"
-
-#: ../../include/identity.php:1033 ../../include/identity.php:1288
-msgid "Gender:"
-msgstr "Geslacht:"
-
-#: ../../include/identity.php:1034 ../../include/identity.php:1332
-msgid "Status:"
-msgstr "Status:"
-
-#: ../../include/identity.php:1035 ../../include/identity.php:1343
-msgid "Homepage:"
-msgstr "Homepagina:"
-
-#: ../../include/identity.php:1036
-msgid "Online Now"
-msgstr "Nu online"
-
-#: ../../include/identity.php:1124 ../../include/identity.php:1200
-msgid "F d"
-msgstr "d F"
-
-#: ../../include/identity.php:1180
-msgid "Birthday Reminders"
-msgstr "Verjaardagsherinneringen"
-
-#: ../../include/identity.php:1181
-msgid "Birthdays this week:"
-msgstr "Verjaardagen deze week:"
-
-#: ../../include/identity.php:1232
-msgid "[No description]"
-msgstr "[Geen omschrijving]"
-
-#: ../../include/identity.php:1250
-msgid "Event Reminders"
-msgstr "Herinneringen"
-
-#: ../../include/identity.php:1251
-msgid "Events this week:"
-msgstr "Gebeurtenissen deze week:"
-
-#: ../../include/identity.php:1293
-msgid "Like this channel"
-msgstr "Vind dit kanaal leuk"
-
-#: ../../include/identity.php:1317
-msgid "j F, Y"
-msgstr "F j Y"
-
-#: ../../include/identity.php:1318
-msgid "j F"
-msgstr "F j"
-
-#: ../../include/identity.php:1325
-msgid "Birthday:"
-msgstr "Geboortedatum:"
-
-#: ../../include/identity.php:1338
-#, php-format
-msgid "for %1$d %2$s"
-msgstr "voor %1$d %2$s"
-
-#: ../../include/identity.php:1341
-msgid "Sexual Preference:"
-msgstr "Seksuele voorkeur:"
-
-#: ../../include/identity.php:1347
-msgid "Tags:"
-msgstr "Tags:"
-
-#: ../../include/identity.php:1349
-msgid "Political Views:"
-msgstr "Politieke overtuigingen:"
-
-#: ../../include/identity.php:1351
-msgid "Religion:"
-msgstr "Religie:"
-
-#: ../../include/identity.php:1355
-msgid "Hobbies/Interests:"
-msgstr "Hobby's/interesses:"
-
-#: ../../include/identity.php:1357
-msgid "Likes:"
-msgstr "Houdt van:"
-
-#: ../../include/identity.php:1359
-msgid "Dislikes:"
-msgstr "Houdt niet van:"
-
-#: ../../include/identity.php:1361
-msgid "Contact information and Social Networks:"
-msgstr "Contactinformatie en sociale netwerken:"
-
-#: ../../include/identity.php:1363
-msgid "My other channels:"
-msgstr "Mijn andere kanalen"
-
-#: ../../include/identity.php:1365
-msgid "Musical interests:"
-msgstr "Muzikale interesses:"
-
-#: ../../include/identity.php:1367
-msgid "Books, literature:"
-msgstr "Boeken, literatuur:"
-
-#: ../../include/identity.php:1369
-msgid "Television:"
-msgstr "Televisie:"
-
-#: ../../include/identity.php:1371
-msgid "Film/dance/culture/entertainment:"
-msgstr "Films/dansen/cultuur/vermaak:"
-
-#: ../../include/identity.php:1373
-msgid "Love/Romance:"
-msgstr "Liefde/romantiek:"
-
-#: ../../include/identity.php:1375
-msgid "Work/employment:"
-msgstr "Werk/beroep:"
-
-#: ../../include/identity.php:1377
-msgid "School/education:"
-msgstr "School/opleiding:"
-
-#: ../../include/identity.php:1397
-msgid "Like this thing"
-msgstr "Vind dit ding leuk"
+#: ../../include/api.php:1338
+msgid "Public Timeline"
+msgstr "Openbare tijdlijn"
#: ../../include/notify.php:20
msgid "created a new post"
@@ -6470,40 +6315,6 @@ msgstr "Ingesloten (embedded) inhoud"
msgid "Embedding disabled"
msgstr "Insluiten (embedding) uitgeschakeld"
-#: ../../include/acl_selectors.php:236
-#: ../../include/PermissionDescription.php:31
-msgid "Visible to your default audience"
-msgstr "Voor iedereen zichtbaar, mits niet anders ingesteld"
-
-#: ../../include/acl_selectors.php:274
-msgid "Limit access:"
-msgstr "Toegang beperken:"
-
-#: ../../include/acl_selectors.php:275
-msgid ""
-"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
-" the scope of \"Show\"."
-msgstr "Kies \"Tonen\" om weergave toe te staan. Met \"Niet tonen\" kan je uitzonderingen maken op \"Tonen\"."
-
-#: ../../include/acl_selectors.php:276
-msgid "Show"
-msgstr "Tonen"
-
-#: ../../include/acl_selectors.php:277
-msgid "Don't show"
-msgstr "Niet tonen"
-
-#: ../../include/acl_selectors.php:283
-msgid "Other networks and post services"
-msgstr "Andere netwerken en diensten"
-
-#: ../../include/acl_selectors.php:313
-#, php-format
-msgid ""
-"Post permissions %s cannot be changed %s after a post is shared.</br />These"
-" permissions set who is allowed to view the post."
-msgstr "Permissies van berichten %s zijn niet meer te veranderen %s nadat een bericht is gedeeld.</br />Met deze permissies bepaal je wie het bericht kan zien."
-
#: ../../include/profile_selectors.php:6
msgid "Currently Male"
msgstr "Momenteel man"
@@ -6737,28 +6548,35 @@ msgstr "Maakt mij niks uit"
msgid "Ask me"
msgstr "Vraag het me"
-#: ../../include/activities.php:42
-msgid " and "
-msgstr " en "
+#: ../../include/Contact.php:118
+msgid "New window"
+msgstr "Nieuw venster"
-#: ../../include/activities.php:50
-msgid "public profile"
-msgstr "openbaar profiel"
+#: ../../include/Contact.php:119
+msgid "Open the selected location in a different window or browser tab"
+msgstr "Open de geselecteerde locatie in een ander venster of tab"
-#: ../../include/activities.php:59
+#: ../../include/Contact.php:237
#, php-format
-msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
-msgstr "%1$s veranderde %2$s naar &ldquo;%3$s&rdquo;"
+msgid "User '%s' deleted"
+msgstr "Account '%s' verwijderd"
-#: ../../include/activities.php:60
-#, php-format
-msgid "Visit %1$s's %2$s"
-msgstr "Bezoek het %2$s van %1$s"
+#: ../../include/zot.php:680
+msgid "Invalid data packet"
+msgstr "Datapakket ongeldig"
-#: ../../include/activities.php:63
+#: ../../include/zot.php:696
+msgid "Unable to verify channel signature"
+msgstr "Kanaalkenmerk kon niet worden geverifieerd. "
+
+#: ../../include/zot.php:2342
#, php-format
-msgid "%1$s has an updated %2$s, changing %3$s."
-msgstr "%1$s heeft een aangepaste %2$s, %3$s veranderd."
+msgid "Unable to verify site signature for %s"
+msgstr "Hubkenmerk voor %s kon niet worden geverifieerd"
+
+#: ../../include/zot.php:3680
+msgid "invalid target signature"
+msgstr "ongeldig doelkenmerk"
#: ../../include/contact_widgets.php:14
#, php-format
@@ -6861,63 +6679,6 @@ msgstr "In behandeling"
msgid "Cancelled"
msgstr "Geannuleerd"
-#: ../../include/photos.php:112
-#, php-format
-msgid "Image exceeds website size limit of %lu bytes"
-msgstr "Afbeelding is groter dan op deze hub toegestane limiet van %lu bytes"
-
-#: ../../include/photos.php:119
-msgid "Image file is empty."
-msgstr "Afbeeldingsbestand is leeg"
-
-#: ../../include/photos.php:257
-msgid "Photo storage failed."
-msgstr "Foto kan niet worden opgeslagen"
-
-#: ../../include/photos.php:297
-msgid "a new photo"
-msgstr "een nieuwe foto"
-
-#: ../../include/photos.php:301
-#, php-format
-msgctxt "photo_upload"
-msgid "%1$s posted %2$s to %3$s"
-msgstr "%1$s plaatste %2$s op %3$s"
-
-#: ../../include/photos.php:506 ../../include/conversation.php:1641
-msgid "Photo Albums"
-msgstr "Fotoalbums"
-
-#: ../../include/photos.php:510
-msgid "Upload New Photos"
-msgstr "Nieuwe foto's uploaden"
-
-#: ../../include/import.php:27
-msgid ""
-"Cannot create a duplicate channel identifier on this system. Import failed."
-msgstr "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt."
-
-#: ../../include/import.php:74
-msgid "Channel clone failed. Import failed."
-msgstr "Het klonen van het kanaal is mislukt. Importeren mislukt."
-
-#: ../../include/zot.php:680
-msgid "Invalid data packet"
-msgstr "Datapakket ongeldig"
-
-#: ../../include/zot.php:696
-msgid "Unable to verify channel signature"
-msgstr "Kanaalkenmerk kon niet worden geverifieerd. "
-
-#: ../../include/zot.php:2342
-#, php-format
-msgid "Unable to verify site signature for %s"
-msgstr "Hubkenmerk voor %s kon niet worden geverifieerd"
-
-#: ../../include/zot.php:3680
-msgid "invalid target signature"
-msgstr "ongeldig doelkenmerk"
-
#: ../../include/widgets.php:103
msgid "System"
msgstr "Systeem"
@@ -7201,88 +6962,226 @@ msgstr "Chatkanaal niet gevonden"
msgid "Room is full"
msgstr "Chatkanaal is vol"
-#: ../../include/Contact.php:118
-msgid "New window"
-msgstr "Nieuw venster"
+#: ../../include/identity.php:32
+msgid "Unable to obtain identity information from database"
+msgstr "Niet in staat om identiteitsinformatie uit de database te verkrijgen"
-#: ../../include/Contact.php:119
-msgid "Open the selected location in a different window or browser tab"
-msgstr "Open de geselecteerde locatie in een ander venster of tab"
+#: ../../include/identity.php:66
+msgid "Empty name"
+msgstr "Ontbrekende naam"
-#: ../../include/Contact.php:237
-#, php-format
-msgid "User '%s' deleted"
-msgstr "Account '%s' verwijderd"
+#: ../../include/identity.php:69
+msgid "Name too long"
+msgstr "Naam te lang"
-#: ../../include/auth.php:105
-msgid "Logged out."
-msgstr "Uitgelogd."
+#: ../../include/identity.php:180
+msgid "No account identifier"
+msgstr "Geen account-identificator"
-#: ../../include/auth.php:212
-msgid "Failed authentication"
-msgstr "Mislukte authenticatie"
+#: ../../include/identity.php:192
+msgid "Nickname is required."
+msgstr "Bijnaam is verplicht"
-#: ../../include/security.php:383
+#: ../../include/identity.php:206
+msgid "Reserved nickname. Please choose another."
+msgstr "Deze naam is gereserveerd. Kies een andere."
+
+#: ../../include/identity.php:211
msgid ""
-"The form security token was not correct. This probably happened because the "
-"form has been opened for too long (>3 hours) before submitting it."
-msgstr "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. "
+"Nickname has unsupported characters or is already being used on this site."
+msgstr "Deze naam heeft niet ondersteunde karakters of is al op deze hub in gebruik."
-#: ../../include/items.php:890 ../../include/items.php:935
-msgid "(Unknown)"
-msgstr "(Onbekend)"
+#: ../../include/identity.php:287
+msgid "Unable to retrieve created identity"
+msgstr "Niet in staat om aangemaakte identiteit te vinden"
-#: ../../include/items.php:1134
-msgid "Visible to anybody on the internet."
-msgstr "Voor iedereen op het internet zichtbaar."
+#: ../../include/identity.php:345
+msgid "Default Profile"
+msgstr "Standaardprofiel"
-#: ../../include/items.php:1136
-msgid "Visible to you only."
-msgstr "Alleen voor jou zichtbaar."
+#: ../../include/identity.php:791
+msgid "Requested channel is not available."
+msgstr "Opgevraagd kanaal is niet beschikbaar."
-#: ../../include/items.php:1138
-msgid "Visible to anybody in this network."
-msgstr "Voor iedereen in dit netwerk zichtbaar."
+#: ../../include/identity.php:938
+msgid "Create New Profile"
+msgstr "Nieuw profiel aanmaken"
-#: ../../include/items.php:1140
-msgid "Visible to anybody authenticated."
-msgstr "Voor iedereen die geauthenticeerd is zichtbaar."
+#: ../../include/identity.php:941 ../../include/nav.php:90
+msgid "Edit Profile"
+msgstr "Profiel bewerken"
-#: ../../include/items.php:1142
+#: ../../include/identity.php:958
+msgid "Visible to everybody"
+msgstr "Voor iedereen zichtbaar"
+
+#: ../../include/identity.php:1033 ../../include/identity.php:1288
+msgid "Gender:"
+msgstr "Geslacht:"
+
+#: ../../include/identity.php:1034 ../../include/identity.php:1332
+msgid "Status:"
+msgstr "Status:"
+
+#: ../../include/identity.php:1035 ../../include/identity.php:1343
+msgid "Homepage:"
+msgstr "Homepagina:"
+
+#: ../../include/identity.php:1036
+msgid "Online Now"
+msgstr "Nu online"
+
+#: ../../include/identity.php:1124 ../../include/identity.php:1200
+msgid "F d"
+msgstr "d F"
+
+#: ../../include/identity.php:1180
+msgid "Birthday Reminders"
+msgstr "Verjaardagsherinneringen"
+
+#: ../../include/identity.php:1181
+msgid "Birthdays this week:"
+msgstr "Verjaardagen deze week:"
+
+#: ../../include/identity.php:1232
+msgid "[No description]"
+msgstr "[Geen omschrijving]"
+
+#: ../../include/identity.php:1250
+msgid "Event Reminders"
+msgstr "Herinneringen"
+
+#: ../../include/identity.php:1251
+msgid "Events this week:"
+msgstr "Gebeurtenissen deze week:"
+
+#: ../../include/identity.php:1293
+msgid "Like this channel"
+msgstr "Vind dit kanaal leuk"
+
+#: ../../include/identity.php:1317
+msgid "j F, Y"
+msgstr "F j Y"
+
+#: ../../include/identity.php:1318
+msgid "j F"
+msgstr "F j"
+
+#: ../../include/identity.php:1325
+msgid "Birthday:"
+msgstr "Geboortedatum:"
+
+#: ../../include/identity.php:1338
#, php-format
-msgid "Visible to anybody on %s."
-msgstr "Voor iedereen op %s zichtbaar."
+msgid "for %1$d %2$s"
+msgstr "voor %1$d %2$s"
-#: ../../include/items.php:1144
-msgid "Visible to all connections."
-msgstr "Voor alle connecties zichtbaar."
+#: ../../include/identity.php:1341
+msgid "Sexual Preference:"
+msgstr "Seksuele voorkeur:"
-#: ../../include/items.php:1146
-msgid "Visible to approved connections."
-msgstr "Voor alle geaccepteerde connecties zichtbaar."
+#: ../../include/identity.php:1347
+msgid "Tags:"
+msgstr "Tags:"
-#: ../../include/items.php:1148
-msgid "Visible to specific connections."
-msgstr "Voor specifieke connecties zichtbaar."
+#: ../../include/identity.php:1349
+msgid "Political Views:"
+msgstr "Politieke overtuigingen:"
-#: ../../include/items.php:3910
-msgid "Privacy group is empty."
-msgstr "Privacygroep is leeg"
+#: ../../include/identity.php:1351
+msgid "Religion:"
+msgstr "Religie:"
-#: ../../include/items.php:3917
+#: ../../include/identity.php:1355
+msgid "Hobbies/Interests:"
+msgstr "Hobby's/interesses:"
+
+#: ../../include/identity.php:1357
+msgid "Likes:"
+msgstr "Houdt van:"
+
+#: ../../include/identity.php:1359
+msgid "Dislikes:"
+msgstr "Houdt niet van:"
+
+#: ../../include/identity.php:1361
+msgid "Contact information and Social Networks:"
+msgstr "Contactinformatie en sociale netwerken:"
+
+#: ../../include/identity.php:1363
+msgid "My other channels:"
+msgstr "Mijn andere kanalen"
+
+#: ../../include/identity.php:1365
+msgid "Musical interests:"
+msgstr "Muzikale interesses:"
+
+#: ../../include/identity.php:1367
+msgid "Books, literature:"
+msgstr "Boeken, literatuur:"
+
+#: ../../include/identity.php:1369
+msgid "Television:"
+msgstr "Televisie:"
+
+#: ../../include/identity.php:1371
+msgid "Film/dance/culture/entertainment:"
+msgstr "Films/dansen/cultuur/vermaak:"
+
+#: ../../include/identity.php:1373
+msgid "Love/Romance:"
+msgstr "Liefde/romantiek:"
+
+#: ../../include/identity.php:1375
+msgid "Work/employment:"
+msgstr "Werk/beroep:"
+
+#: ../../include/identity.php:1377
+msgid "School/education:"
+msgstr "School/opleiding:"
+
+#: ../../include/identity.php:1397
+msgid "Like this thing"
+msgstr "Vind dit ding leuk"
+
+#: ../../include/security.php:383
+msgid ""
+"The form security token was not correct. This probably happened because the "
+"form has been opened for too long (>3 hours) before submitting it."
+msgstr "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. "
+
+#: ../../include/photos.php:112
#, php-format
-msgid "Privacy group: %s"
-msgstr "Privacygroep: %s"
+msgid "Image exceeds website size limit of %lu bytes"
+msgstr "Afbeelding is groter dan op deze hub toegestane limiet van %lu bytes"
-#: ../../include/items.php:3929
-msgid "Connection not found."
-msgstr "Connectie niet gevonden."
+#: ../../include/photos.php:119
+msgid "Image file is empty."
+msgstr "Afbeeldingsbestand is leeg"
-#: ../../include/items.php:4278
-msgid "profile photo"
-msgstr "profielfoto"
+#: ../../include/photos.php:257
+msgid "Photo storage failed."
+msgstr "Foto kan niet worden opgeslagen"
-#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1614
+#: ../../include/photos.php:297
+msgid "a new photo"
+msgstr "een nieuwe foto"
+
+#: ../../include/photos.php:301
+#, php-format
+msgctxt "photo_upload"
+msgid "%1$s posted %2$s to %3$s"
+msgstr "%1$s plaatste %2$s op %3$s"
+
+#: ../../include/photos.php:506 ../../include/conversation.php:1641
+msgid "Photo Albums"
+msgstr "Fotoalbums"
+
+#: ../../include/photos.php:510
+msgid "Upload New Photos"
+msgstr "Nieuwe foto's uploaden"
+
+#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1628
msgid "Logout"
msgstr "Uitloggen"
@@ -7338,7 +7237,7 @@ msgstr "Jouw bladwijzers"
msgid "Your webpages"
msgstr "Jouw webpagina's"
-#: ../../include/nav.php:110 ../../include/apps.php:163 ../../boot.php:1615
+#: ../../include/nav.php:110 ../../include/apps.php:163 ../../boot.php:1629
msgid "Login"
msgstr "Inloggen"
@@ -7480,36 +7379,6 @@ msgstr "@kanaal, #tag, inhoud, ?hulp"
msgid "Please wait..."
msgstr "Wachten aub..."
-#: ../../include/network.php:659
-msgid "view full size"
-msgstr "volledige grootte tonen"
-
-#: ../../include/network.php:1827 ../../include/enotify.php:57
-msgid "$Projectname Notification"
-msgstr "$Projectname-notificatie"
-
-#: ../../include/network.php:1828 ../../include/enotify.php:58
-msgid "$projectname"
-msgstr "$projectname"
-
-#: ../../include/network.php:1830 ../../include/enotify.php:60
-msgid "Thank You,"
-msgstr "Bedankt,"
-
-#: ../../include/network.php:1832 ../../include/enotify.php:62
-#, php-format
-msgid "%s Administrator"
-msgstr "Beheerder %s"
-
-#: ../../include/network.php:1875 ../../include/account.php:317
-#: ../../include/account.php:344 ../../include/account.php:404
-msgid "Administrator"
-msgstr "Beheerder"
-
-#: ../../include/network.php:1889
-msgid "No Subject"
-msgstr "Geen onderwerp"
-
#: ../../include/contact_selectors.php:56
msgid "Frequently"
msgstr "Regelmatig"
@@ -7575,6 +7444,14 @@ msgstr "XMPP/IM"
msgid "MySpace"
msgstr "MySpace"
+#: ../../include/auth.php:105
+msgid "Logged out."
+msgstr "Uitgelogd."
+
+#: ../../include/auth.php:212
+msgid "Failed authentication"
+msgstr "Mislukte authenticatie"
+
#: ../../include/attach.php:247 ../../include/attach.php:333
msgid "Item was not found."
msgstr "Item niet gevonden"
@@ -7649,7 +7526,7 @@ msgstr "Leeftijd:"
msgid "YYYY-MM-DD or MM-DD"
msgstr "JJJJ-MM-DD of MM-DD"
-#: ../../include/datetime.php:273 ../../boot.php:2463
+#: ../../include/datetime.php:273 ../../boot.php:2399
msgid "never"
msgstr "nooit"
@@ -7738,6 +7615,23 @@ msgstr "Alleen openbare forums"
msgid "This Website Only"
msgstr "Alleen deze hub"
+#: ../../include/enotify.php:57 ../../include/network.php:1831
+msgid "$Projectname Notification"
+msgstr "$Projectname-notificatie"
+
+#: ../../include/enotify.php:58 ../../include/network.php:1832
+msgid "$projectname"
+msgstr "$projectname"
+
+#: ../../include/enotify.php:60 ../../include/network.php:1834
+msgid "Thank You,"
+msgstr "Bedankt,"
+
+#: ../../include/enotify.php:62 ../../include/network.php:1836
+#, php-format
+msgid "%s Administrator"
+msgstr "Beheerder %s"
+
#: ../../include/enotify.php:96
#, php-format
msgid "%s <!item_type!>"
@@ -8092,6 +7986,57 @@ msgstr "Link invoegen"
msgid "Video"
msgstr "Video"
+#: ../../include/activities.php:42
+msgid " and "
+msgstr " en "
+
+#: ../../include/activities.php:50
+msgid "public profile"
+msgstr "openbaar profiel"
+
+#: ../../include/activities.php:59
+#, php-format
+msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
+msgstr "%1$s veranderde %2$s naar &ldquo;%3$s&rdquo;"
+
+#: ../../include/activities.php:60
+#, php-format
+msgid "Visit %1$s's %2$s"
+msgstr "Bezoek het %2$s van %1$s"
+
+#: ../../include/activities.php:63
+#, php-format
+msgid "%1$s has an updated %2$s, changing %3$s."
+msgstr "%1$s heeft een aangepaste %2$s, %3$s veranderd."
+
+#: ../../include/follow.php:28
+msgid "Channel is blocked on this site."
+msgstr "Kanaal is op deze hub geblokkeerd."
+
+#: ../../include/follow.php:33
+msgid "Channel location missing."
+msgstr "Ontbrekende kanaallocatie."
+
+#: ../../include/follow.php:82
+msgid "Response from remote channel was incomplete."
+msgstr "Antwoord van het kanaal op afstand was niet volledig."
+
+#: ../../include/follow.php:99
+msgid "Channel was deleted and no longer exists."
+msgstr "Kanaal is verwijderd en bestaat niet meer."
+
+#: ../../include/follow.php:155 ../../include/follow.php:191
+msgid "Protocol disabled."
+msgstr "Protocol uitgeschakeld."
+
+#: ../../include/follow.php:179
+msgid "Channel discovery failed."
+msgstr "Kanaal ontdekken mislukt."
+
+#: ../../include/follow.php:217
+msgid "Cannot connect to yourself."
+msgstr "Kan niet met jezelf verbinden"
+
#: ../../include/features.php:48
msgid "General Features"
msgstr "Algemene functies"
@@ -8371,33 +8316,34 @@ msgstr "Tagwolk"
msgid "Provide a personal tag cloud on your channel page"
msgstr "Zorgt voor een persoonlijke wolk met tags op jouw kanaalpagina"
-#: ../../include/follow.php:28
-msgid "Channel is blocked on this site."
-msgstr "Kanaal is op deze hub geblokkeerd."
+#: ../../include/message.php:20
+msgid "No recipient provided."
+msgstr "Geen ontvanger opgegeven."
-#: ../../include/follow.php:33
-msgid "Channel location missing."
-msgstr "Ontbrekende kanaallocatie."
+#: ../../include/message.php:25
+msgid "[no subject]"
+msgstr "[geen onderwerp]"
-#: ../../include/follow.php:82
-msgid "Response from remote channel was incomplete."
-msgstr "Antwoord van het kanaal op afstand was niet volledig."
+#: ../../include/message.php:45
+msgid "Unable to determine sender."
+msgstr "Afzender kan niet bepaald worden."
-#: ../../include/follow.php:99
-msgid "Channel was deleted and no longer exists."
-msgstr "Kanaal is verwijderd en bestaat niet meer."
+#: ../../include/message.php:222
+msgid "Stored post could not be verified."
+msgstr "Opgeslagen bericht kon niet worden geverifieerd."
-#: ../../include/follow.php:155 ../../include/follow.php:191
-msgid "Protocol disabled."
-msgstr "Protocol uitgeschakeld."
+#: ../../include/network.php:659
+msgid "view full size"
+msgstr "volledige grootte tonen"
-#: ../../include/follow.php:179
-msgid "Channel discovery failed."
-msgstr "Kanaal ontdekken mislukt."
+#: ../../include/network.php:1879 ../../include/account.php:317
+#: ../../include/account.php:344 ../../include/account.php:404
+msgid "Administrator"
+msgstr "Beheerder"
-#: ../../include/follow.php:217
-msgid "Cannot connect to yourself."
-msgstr "Kan niet met jezelf verbinden"
+#: ../../include/network.php:1893
+msgid "No Subject"
+msgstr "Geen onderwerp"
#: ../../include/group.php:26
msgid ""
@@ -9125,7 +9071,13 @@ msgstr "vindt dit leuk"
msgid "dislikes"
msgstr "vindt dit niet leuk"
+#: ../../include/PermissionDescription.php:31
+#: ../../include/acl_selectors.php:236
+msgid "Visible to your default audience"
+msgstr "Voor iedereen zichtbaar, mits niet anders ingesteld"
+
#: ../../include/PermissionDescription.php:115
+#: ../../include/acl_selectors.php:272
msgid "Only me"
msgstr "Alleen ik"
@@ -9146,39 +9098,39 @@ msgstr "Iedereen op %s"
msgid "Any of my connections"
msgstr "Al mijn geaccepteerde connecties"
-#: ../../include/PermissionDescription.php:124
-msgid "Only me (only specified contacts and me)"
-msgstr "Alleen ik en specifieke connecties"
+#: ../../include/PermissionDescription.php:120
+msgid "Only connections I specifically allow"
+msgstr "Alleen connecties die uitdrukkelijk door jou zijn toegestaan"
-#: ../../include/PermissionDescription.php:125
+#: ../../include/PermissionDescription.php:121
msgid "Anybody authenticated (could include visitors from other networks)"
msgstr "Geauthenticeerde leden (kan bezoekers van andere netwerken bevatten)"
-#: ../../include/PermissionDescription.php:126
+#: ../../include/PermissionDescription.php:122
msgid "Any connections including those who haven't yet been approved"
msgstr "Al mijn geaccepteerde en nog niet geaccepteerde connecties"
-#: ../../include/PermissionDescription.php:169
+#: ../../include/PermissionDescription.php:161
msgid ""
"This is your default setting for the audience of your normal stream, and "
"posts."
msgstr "Dit is de standaard privacy-instelling voor wie jouw berichten kan bekijken"
-#: ../../include/PermissionDescription.php:170
+#: ../../include/PermissionDescription.php:162
msgid ""
"This is your default setting for who can view your default channel profile"
msgstr "Dit is de standaard privacy-instelling voor wie jouw standaardprofiel kan bekijken"
-#: ../../include/PermissionDescription.php:171
+#: ../../include/PermissionDescription.php:163
msgid "This is your default setting for who can view your connections"
msgstr "Dit is de standaard privacy-instelling voor wie een lijst met jouw connecties kan bekijken"
-#: ../../include/PermissionDescription.php:172
+#: ../../include/PermissionDescription.php:164
msgid ""
"This is your default setting for who can view your file storage and photos"
msgstr "Dit is de standaard privacy-instelling voor wie jouw bestanden en foto's kan bekijken"
-#: ../../include/PermissionDescription.php:173
+#: ../../include/PermissionDescription.php:165
msgid "This is your default setting for the audience of your webpages"
msgstr "Dit is de standaard privacy-instelling voor wie jouw webpagina's kan bekijken"
@@ -9426,25 +9378,68 @@ msgctxt "calendar"
msgid "All day"
msgstr "hele dag"
-#: ../../include/message.php:20
-msgid "No recipient provided."
-msgstr "Geen ontvanger opgegeven."
+#: ../../include/import.php:27
+msgid ""
+"Cannot create a duplicate channel identifier on this system. Import failed."
+msgstr "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt."
-#: ../../include/message.php:25
-msgid "[no subject]"
-msgstr "[geen onderwerp]"
+#: ../../include/import.php:74
+msgid "Channel clone failed. Import failed."
+msgstr "Het klonen van het kanaal is mislukt. Importeren mislukt."
-#: ../../include/message.php:45
-msgid "Unable to determine sender."
-msgstr "Afzender kan niet bepaald worden."
+#: ../../include/items.php:890 ../../include/items.php:935
+msgid "(Unknown)"
+msgstr "(Onbekend)"
-#: ../../include/message.php:222
-msgid "Stored post could not be verified."
-msgstr "Opgeslagen bericht kon niet worden geverifieerd."
+#: ../../include/items.php:1134
+msgid "Visible to anybody on the internet."
+msgstr "Voor iedereen op het internet zichtbaar."
-#: ../../include/api.php:1338
-msgid "Public Timeline"
-msgstr "Openbare tijdlijn"
+#: ../../include/items.php:1136
+msgid "Visible to you only."
+msgstr "Alleen voor jou zichtbaar."
+
+#: ../../include/items.php:1138
+msgid "Visible to anybody in this network."
+msgstr "Voor iedereen in dit netwerk zichtbaar."
+
+#: ../../include/items.php:1140
+msgid "Visible to anybody authenticated."
+msgstr "Voor iedereen die geauthenticeerd is zichtbaar."
+
+#: ../../include/items.php:1142
+#, php-format
+msgid "Visible to anybody on %s."
+msgstr "Voor iedereen op %s zichtbaar."
+
+#: ../../include/items.php:1144
+msgid "Visible to all connections."
+msgstr "Voor alle connecties zichtbaar."
+
+#: ../../include/items.php:1146
+msgid "Visible to approved connections."
+msgstr "Voor alle geaccepteerde connecties zichtbaar."
+
+#: ../../include/items.php:1148
+msgid "Visible to specific connections."
+msgstr "Voor specifieke connecties zichtbaar."
+
+#: ../../include/items.php:3910
+msgid "Privacy group is empty."
+msgstr "Privacygroep is leeg"
+
+#: ../../include/items.php:3917
+#, php-format
+msgid "Privacy group: %s"
+msgstr "Privacygroep: %s"
+
+#: ../../include/items.php:3929
+msgid "Connection not found."
+msgstr "Connectie niet gevonden."
+
+#: ../../include/items.php:4278
+msgid "profile photo"
+msgstr "profielfoto"
#: ../../include/page_widgets.php:6
msgid "New Page"
@@ -9651,6 +9646,43 @@ msgstr "Bijlagen:"
msgid "$Projectname event notification:"
msgstr "Notificatie $Projectname-gebeurtenis:"
+#: ../../include/acl_selectors.php:273
+msgid "Add others"
+msgstr "Meer toevoegen"
+
+#: ../../include/acl_selectors.php:276
+msgid "Who can see this?"
+msgstr "Wie kan dit zien?"
+
+#: ../../include/acl_selectors.php:277
+msgid "Custom selection"
+msgstr "Handmatige selectie"
+
+#: ../../include/acl_selectors.php:278
+msgid ""
+"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit"
+" the scope of \"Show\"."
+msgstr "Kies \"Tonen\" om weergave toe te staan. Met \"Niet tonen\" kan je uitzonderingen maken op \"Tonen\"."
+
+#: ../../include/acl_selectors.php:279
+msgid "Show"
+msgstr "Tonen"
+
+#: ../../include/acl_selectors.php:280
+msgid "Don't show"
+msgstr "Niet tonen"
+
+#: ../../include/acl_selectors.php:286
+msgid "Other networks and post services"
+msgstr "Andere netwerken en diensten"
+
+#: ../../include/acl_selectors.php:316
+#, php-format
+msgid ""
+"Post permissions %s cannot be changed %s after a post is shared.</br />These"
+" permissions set who is allowed to view the post."
+msgstr "Permissies van berichten %s zijn niet meer te veranderen %s nadat een bericht is gedeeld.</br />Met deze permissies bepaal je wie het bericht kan zien."
+
#: ../../view/theme/redbasic/php/config.php:82
msgid "Focus (Hubzilla default)"
msgstr "Focus (Hubzilla-standaard)"
@@ -9787,62 +9819,62 @@ msgstr "Grootte profielfoto's van berichten instellen"
msgid "Set size of followup author photos"
msgstr "Grootte profielfoto's van reacties instellen"
-#: ../../boot.php:1075
+#: ../../boot.php:1089
#, php-format
msgctxt "opensearch"
msgid "Search %1$s (%2$s)"
msgstr "Zoek %1$s (%2$s)"
-#: ../../boot.php:1075
+#: ../../boot.php:1089
msgctxt "opensearch"
msgid "$Projectname"
msgstr "$Projectname"
-#: ../../boot.php:1392
+#: ../../boot.php:1406
#, php-format
msgid "Update %s failed. See error logs."
msgstr "Update %s mislukt. Zie foutenlogboek."
-#: ../../boot.php:1395
+#: ../../boot.php:1409
#, php-format
msgid "Update Error at %s"
msgstr "Update-fout op %s"
-#: ../../boot.php:1596
+#: ../../boot.php:1610
msgid ""
"Create an account to access services and applications within the Hubzilla"
msgstr "Maak een account aan om toegang te krijgen tot diensten en toepassingen van Hubzilla"
-#: ../../boot.php:1618
+#: ../../boot.php:1632
msgid "Password"
msgstr "Wachtwoord"
-#: ../../boot.php:1619
+#: ../../boot.php:1633
msgid "Remember me"
msgstr "Aangemeld blijven"
-#: ../../boot.php:1622
+#: ../../boot.php:1636
msgid "Forgot your password?"
msgstr "Wachtwoord vergeten?"
-#: ../../boot.php:2269
+#: ../../boot.php:2205
msgid "toggle mobile"
msgstr "mobiele weergave omschakelen"
-#: ../../boot.php:2422
+#: ../../boot.php:2358
msgid "Website SSL certificate is not valid. Please correct."
msgstr "Het SSL-certificaat van deze website is ongeldig. Corrigeer dit a.u.b."
-#: ../../boot.php:2425
+#: ../../boot.php:2361
#, php-format
msgid "[hubzilla] Website SSL error for %s"
msgstr "[hubzilla] Probleem met SSL-certificaat voor %s"
-#: ../../boot.php:2462
+#: ../../boot.php:2398
msgid "Cron/Scheduled tasks not running."
msgstr "Cron is niet actief"
-#: ../../boot.php:2466
+#: ../../boot.php:2402
#, php-format
msgid "[hubzilla] Cron tasks not running on %s"
msgstr "[hubzilla] Cron-taken zijn niet actief op %s"
diff --git a/view/nl/hstrings.php b/view/nl/hstrings.php
index 0560870a1..4836574eb 100644
--- a/view/nl/hstrings.php
+++ b/view/nl/hstrings.php
@@ -257,7 +257,9 @@ App::$strings["Download Plugin Repo"] = "Plugin-repository downloaden";
App::$strings["Install new repo"] = "Nieuwe repository installeren";
App::$strings["Install"] = "Installeren";
App::$strings["Cancel"] = "Annuleren";
-App::$strings["Add Plugin Repo"] = "Plugin-repository toevoegen";
+App::$strings["Manage Repos"] = "Repositories beheren";
+App::$strings["Installed Plugin Repositories"] = "Toegevoegde plugin-repositories";
+App::$strings["Install a New Plugin Repository"] = "Nieuwe plugin-repository toevoegen";
App::$strings["Update"] = "Bijwerken";
App::$strings["Switch branch"] = "Branch veranderen";
App::$strings["Remove"] = "Verwijderen";
@@ -1034,6 +1036,7 @@ App::$strings["The listed hubs allow public registration for the \$Projectname n
App::$strings["Hub URL"] = "Hub-URL";
App::$strings["Access Type"] = "Toegangs-<br/>&nbsp;type";
App::$strings["Registration Policy"] = "Registratie-<br/>&nbsp;beleid";
+App::$strings["Software"] = "Software";
App::$strings["Ratings"] = "Beoordelingen";
App::$strings["Rate"] = "Beoordeel";
App::$strings["Website:"] = "Website:";
@@ -1188,11 +1191,14 @@ App::$strings["Allow others to tag your posts"] = "Anderen toestaan om je berich
App::$strings["Often used by the community to retro-actively flag inappropriate content"] = "Vaak in groepen/forums gebruikt om met terugwerkende kracht ongepast materiaal te markeren";
App::$strings["Advanced Privacy Settings"] = "Geavanceerde privacy-instellingen";
App::$strings["Expire other channel content after this many days"] = "Inhoud van andere kanalen na zoveel aantal dagen laten verlopen:";
-App::$strings["0 or blank to use the website limit. The website expires after %d days."] = "0 of leeg om het standaard aantal dagen van deze hub te gebruiken. Deze hub laat de inhoud van andere kanalen na %d dagen verlopen.";
+App::$strings["0 or blank to use the website limit."] = "0 of leeg om het standaard aantal dagen van deze hub te gebruiken.";
+App::$strings["This website expires after %d days."] = "Deze hub laat de inhoud van andere kanalen na %d dagen verlopen.";
+App::$strings["This website does not expire imported content."] = "Deze hub laat de inhoud van andere kanalen niet verlopen.";
+App::$strings["The website limit takes precedence if lower than your limit."] = "Wanneer de standaard aantal dagen van deze hub lager ligt dan jouw aantal, dan heeft de limiet van deze hub voorrang.";
App::$strings["Maximum Friend Requests/Day:"] = "Maximum aantal connectieverzoeken per dag:";
App::$strings["May reduce spam activity"] = "Kan eventuele spam verminderen";
-App::$strings["Default Post Permissions"] = "Standaard permissies voor nieuwe berichten";
-App::$strings["Use my default audience setting for the type of post"] = "Gebruik van mijn standaard privacy-instelling voor berichten";
+App::$strings["Default Post and Publish Permissions"] = "Standaard permissies voor nieuwe berichten en publicaties";
+App::$strings["Use my default audience setting for the type of object published"] = "Gebruik mijn standaard privacy-instelling voor dit type publicatie";
App::$strings["Channel permissions category:"] = "Kanaaltype en -permissies:";
App::$strings["Maximum private messages per day from unknown people:"] = "Maximum aantal privé-berichten per dag van onbekende personen:";
App::$strings["Useful to reduce spamming"] = "Kan eventuele spam verminderen";
@@ -1406,62 +1412,11 @@ App::$strings["Lookup xchan beginning with (or webbie): "] = "Zoek een xchan (of
App::$strings["No username found in import file."] = "Geen gebruikersnaam in het importbestand gevonden.";
App::$strings["Unable to create a unique channel address. Import failed."] = "Niet in staat om een uniek kanaaladres aan te maken. Importeren is mislukt.";
App::$strings["Cannot locate DNS info for database server '%s'"] = "Kan DNS-informatie voor databaseserver '%s' niet vinden";
-App::$strings["Unable to obtain identity information from database"] = "Niet in staat om identiteitsinformatie uit de database te verkrijgen";
-App::$strings["Empty name"] = "Ontbrekende naam";
-App::$strings["Name too long"] = "Naam te lang";
-App::$strings["No account identifier"] = "Geen account-identificator";
-App::$strings["Nickname is required."] = "Bijnaam is verplicht";
-App::$strings["Reserved nickname. Please choose another."] = "Deze naam is gereserveerd. Kies een andere.";
-App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Deze naam heeft niet ondersteunde karakters of is al op deze hub in gebruik.";
-App::$strings["Unable to retrieve created identity"] = "Niet in staat om aangemaakte identiteit te vinden";
-App::$strings["Default Profile"] = "Standaardprofiel";
-App::$strings["Requested channel is not available."] = "Opgevraagd kanaal is niet beschikbaar.";
-App::$strings["Create New Profile"] = "Nieuw profiel aanmaken";
-App::$strings["Edit Profile"] = "Profiel bewerken";
-App::$strings["Visible to everybody"] = "Voor iedereen zichtbaar";
-App::$strings["Gender:"] = "Geslacht:";
-App::$strings["Status:"] = "Status:";
-App::$strings["Homepage:"] = "Homepagina:";
-App::$strings["Online Now"] = "Nu online";
-App::$strings["F d"] = "d F";
-App::$strings["Birthday Reminders"] = "Verjaardagsherinneringen";
-App::$strings["Birthdays this week:"] = "Verjaardagen deze week:";
-App::$strings["[No description]"] = "[Geen omschrijving]";
-App::$strings["Event Reminders"] = "Herinneringen";
-App::$strings["Events this week:"] = "Gebeurtenissen deze week:";
-App::$strings["Like this channel"] = "Vind dit kanaal leuk";
-App::$strings["j F, Y"] = "F j Y";
-App::$strings["j F"] = "F j";
-App::$strings["Birthday:"] = "Geboortedatum:";
-App::$strings["for %1\$d %2\$s"] = "voor %1\$d %2\$s";
-App::$strings["Sexual Preference:"] = "Seksuele voorkeur:";
-App::$strings["Tags:"] = "Tags:";
-App::$strings["Political Views:"] = "Politieke overtuigingen:";
-App::$strings["Religion:"] = "Religie:";
-App::$strings["Hobbies/Interests:"] = "Hobby's/interesses:";
-App::$strings["Likes:"] = "Houdt van:";
-App::$strings["Dislikes:"] = "Houdt niet van:";
-App::$strings["Contact information and Social Networks:"] = "Contactinformatie en sociale netwerken:";
-App::$strings["My other channels:"] = "Mijn andere kanalen";
-App::$strings["Musical interests:"] = "Muzikale interesses:";
-App::$strings["Books, literature:"] = "Boeken, literatuur:";
-App::$strings["Television:"] = "Televisie:";
-App::$strings["Film/dance/culture/entertainment:"] = "Films/dansen/cultuur/vermaak:";
-App::$strings["Love/Romance:"] = "Liefde/romantiek:";
-App::$strings["Work/employment:"] = "Werk/beroep:";
-App::$strings["School/education:"] = "School/opleiding:";
-App::$strings["Like this thing"] = "Vind dit ding leuk";
+App::$strings["Public Timeline"] = "Openbare tijdlijn";
App::$strings["created a new post"] = "maakte een nieuw bericht aan";
App::$strings["commented on %s's post"] = "gaf een reactie op een bericht van %s";
App::$strings["Embedded content"] = "Ingesloten (embedded) inhoud";
App::$strings["Embedding disabled"] = "Insluiten (embedding) uitgeschakeld";
-App::$strings["Visible to your default audience"] = "Voor iedereen zichtbaar, mits niet anders ingesteld";
-App::$strings["Limit access:"] = "Toegang beperken:";
-App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Kies \"Tonen\" om weergave toe te staan. Met \"Niet tonen\" kan je uitzonderingen maken op \"Tonen\".";
-App::$strings["Show"] = "Tonen";
-App::$strings["Don't show"] = "Niet tonen";
-App::$strings["Other networks and post services"] = "Andere netwerken en diensten";
-App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Permissies van berichten %s zijn niet meer te veranderen %s nadat een bericht is gedeeld.</br />Met deze permissies bepaal je wie het bericht kan zien.";
App::$strings["Currently Male"] = "Momenteel man";
App::$strings["Currently Female"] = "Momenteel vrouw";
App::$strings["Mostly Male"] = "Voornamelijk man";
@@ -1517,11 +1472,13 @@ App::$strings["Uncertain"] = "Onzeker";
App::$strings["It's complicated"] = "Het is ingewikkeld";
App::$strings["Don't care"] = "Maakt mij niks uit";
App::$strings["Ask me"] = "Vraag het me";
-App::$strings[" and "] = " en ";
-App::$strings["public profile"] = "openbaar profiel";
-App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s veranderde %2\$s naar &ldquo;%3\$s&rdquo;";
-App::$strings["Visit %1\$s's %2\$s"] = "Bezoek het %2\$s van %1\$s";
-App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s heeft een aangepaste %2\$s, %3\$s veranderd.";
+App::$strings["New window"] = "Nieuw venster";
+App::$strings["Open the selected location in a different window or browser tab"] = "Open de geselecteerde locatie in een ander venster of tab";
+App::$strings["User '%s' deleted"] = "Account '%s' verwijderd";
+App::$strings["Invalid data packet"] = "Datapakket ongeldig";
+App::$strings["Unable to verify channel signature"] = "Kanaalkenmerk kon niet worden geverifieerd. ";
+App::$strings["Unable to verify site signature for %s"] = "Hubkenmerk voor %s kon niet worden geverifieerd";
+App::$strings["invalid target signature"] = "ongeldig doelkenmerk";
App::$strings["%d invitation available"] = array(
0 => "%d uitnodiging beschikbaar",
1 => "%d uitnodigingen beschikbaar",
@@ -1550,19 +1507,6 @@ App::$strings["Needs Action"] = "Actie vereist";
App::$strings["Completed"] = "Voltooid";
App::$strings["In Process"] = "In behandeling";
App::$strings["Cancelled"] = "Geannuleerd";
-App::$strings["Image exceeds website size limit of %lu bytes"] = "Afbeelding is groter dan op deze hub toegestane limiet van %lu bytes";
-App::$strings["Image file is empty."] = "Afbeeldingsbestand is leeg";
-App::$strings["Photo storage failed."] = "Foto kan niet worden opgeslagen";
-App::$strings["a new photo"] = "een nieuwe foto";
-App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s plaatste %2\$s op %3\$s";
-App::$strings["Photo Albums"] = "Fotoalbums";
-App::$strings["Upload New Photos"] = "Nieuwe foto's uploaden";
-App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt.";
-App::$strings["Channel clone failed. Import failed."] = "Het klonen van het kanaal is mislukt. Importeren mislukt.";
-App::$strings["Invalid data packet"] = "Datapakket ongeldig";
-App::$strings["Unable to verify channel signature"] = "Kanaalkenmerk kon niet worden geverifieerd. ";
-App::$strings["Unable to verify site signature for %s"] = "Hubkenmerk voor %s kon niet worden geverifieerd";
-App::$strings["invalid target signature"] = "ongeldig doelkenmerk";
App::$strings["System"] = "Systeem";
App::$strings["New App"] = "Nieuwe app";
App::$strings["Suggestions"] = "Voorgestelde kanalen";
@@ -1633,25 +1577,59 @@ App::$strings["Duplicate room name"] = "Naam chatkanaal bestaat al";
App::$strings["Invalid room specifier."] = "Ongeldige omschrijving chatkanaal";
App::$strings["Room not found."] = "Chatkanaal niet gevonden";
App::$strings["Room is full"] = "Chatkanaal is vol";
-App::$strings["New window"] = "Nieuw venster";
-App::$strings["Open the selected location in a different window or browser tab"] = "Open de geselecteerde locatie in een ander venster of tab";
-App::$strings["User '%s' deleted"] = "Account '%s' verwijderd";
-App::$strings["Logged out."] = "Uitgelogd.";
-App::$strings["Failed authentication"] = "Mislukte authenticatie";
+App::$strings["Unable to obtain identity information from database"] = "Niet in staat om identiteitsinformatie uit de database te verkrijgen";
+App::$strings["Empty name"] = "Ontbrekende naam";
+App::$strings["Name too long"] = "Naam te lang";
+App::$strings["No account identifier"] = "Geen account-identificator";
+App::$strings["Nickname is required."] = "Bijnaam is verplicht";
+App::$strings["Reserved nickname. Please choose another."] = "Deze naam is gereserveerd. Kies een andere.";
+App::$strings["Nickname has unsupported characters or is already being used on this site."] = "Deze naam heeft niet ondersteunde karakters of is al op deze hub in gebruik.";
+App::$strings["Unable to retrieve created identity"] = "Niet in staat om aangemaakte identiteit te vinden";
+App::$strings["Default Profile"] = "Standaardprofiel";
+App::$strings["Requested channel is not available."] = "Opgevraagd kanaal is niet beschikbaar.";
+App::$strings["Create New Profile"] = "Nieuw profiel aanmaken";
+App::$strings["Edit Profile"] = "Profiel bewerken";
+App::$strings["Visible to everybody"] = "Voor iedereen zichtbaar";
+App::$strings["Gender:"] = "Geslacht:";
+App::$strings["Status:"] = "Status:";
+App::$strings["Homepage:"] = "Homepagina:";
+App::$strings["Online Now"] = "Nu online";
+App::$strings["F d"] = "d F";
+App::$strings["Birthday Reminders"] = "Verjaardagsherinneringen";
+App::$strings["Birthdays this week:"] = "Verjaardagen deze week:";
+App::$strings["[No description]"] = "[Geen omschrijving]";
+App::$strings["Event Reminders"] = "Herinneringen";
+App::$strings["Events this week:"] = "Gebeurtenissen deze week:";
+App::$strings["Like this channel"] = "Vind dit kanaal leuk";
+App::$strings["j F, Y"] = "F j Y";
+App::$strings["j F"] = "F j";
+App::$strings["Birthday:"] = "Geboortedatum:";
+App::$strings["for %1\$d %2\$s"] = "voor %1\$d %2\$s";
+App::$strings["Sexual Preference:"] = "Seksuele voorkeur:";
+App::$strings["Tags:"] = "Tags:";
+App::$strings["Political Views:"] = "Politieke overtuigingen:";
+App::$strings["Religion:"] = "Religie:";
+App::$strings["Hobbies/Interests:"] = "Hobby's/interesses:";
+App::$strings["Likes:"] = "Houdt van:";
+App::$strings["Dislikes:"] = "Houdt niet van:";
+App::$strings["Contact information and Social Networks:"] = "Contactinformatie en sociale netwerken:";
+App::$strings["My other channels:"] = "Mijn andere kanalen";
+App::$strings["Musical interests:"] = "Muzikale interesses:";
+App::$strings["Books, literature:"] = "Boeken, literatuur:";
+App::$strings["Television:"] = "Televisie:";
+App::$strings["Film/dance/culture/entertainment:"] = "Films/dansen/cultuur/vermaak:";
+App::$strings["Love/Romance:"] = "Liefde/romantiek:";
+App::$strings["Work/employment:"] = "Werk/beroep:";
+App::$strings["School/education:"] = "School/opleiding:";
+App::$strings["Like this thing"] = "Vind dit ding leuk";
App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "De beveiligings-token van het tekstvak was ongeldig. Dit is mogelijk het gevolg van dat er te lang (meer dan 3 uur) gewacht is om de tekst op te slaan. ";
-App::$strings["(Unknown)"] = "(Onbekend)";
-App::$strings["Visible to anybody on the internet."] = "Voor iedereen op het internet zichtbaar.";
-App::$strings["Visible to you only."] = "Alleen voor jou zichtbaar.";
-App::$strings["Visible to anybody in this network."] = "Voor iedereen in dit netwerk zichtbaar.";
-App::$strings["Visible to anybody authenticated."] = "Voor iedereen die geauthenticeerd is zichtbaar.";
-App::$strings["Visible to anybody on %s."] = "Voor iedereen op %s zichtbaar.";
-App::$strings["Visible to all connections."] = "Voor alle connecties zichtbaar.";
-App::$strings["Visible to approved connections."] = "Voor alle geaccepteerde connecties zichtbaar.";
-App::$strings["Visible to specific connections."] = "Voor specifieke connecties zichtbaar.";
-App::$strings["Privacy group is empty."] = "Privacygroep is leeg";
-App::$strings["Privacy group: %s"] = "Privacygroep: %s";
-App::$strings["Connection not found."] = "Connectie niet gevonden.";
-App::$strings["profile photo"] = "profielfoto";
+App::$strings["Image exceeds website size limit of %lu bytes"] = "Afbeelding is groter dan op deze hub toegestane limiet van %lu bytes";
+App::$strings["Image file is empty."] = "Afbeeldingsbestand is leeg";
+App::$strings["Photo storage failed."] = "Foto kan niet worden opgeslagen";
+App::$strings["a new photo"] = "een nieuwe foto";
+App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s plaatste %2\$s op %3\$s";
+App::$strings["Photo Albums"] = "Fotoalbums";
+App::$strings["Upload New Photos"] = "Nieuwe foto's uploaden";
App::$strings["Logout"] = "Uitloggen";
App::$strings["End this session"] = "Beëindig deze sessie";
App::$strings["Home"] = "Home";
@@ -1701,13 +1679,6 @@ App::$strings["Site Setup and Configuration"] = "Hub instellen en beheren";
App::$strings["Loading..."] = "Aan het laden...";
App::$strings["@name, #tag, ?doc, content"] = "@kanaal, #tag, inhoud, ?hulp";
App::$strings["Please wait..."] = "Wachten aub...";
-App::$strings["view full size"] = "volledige grootte tonen";
-App::$strings["\$Projectname Notification"] = "\$Projectname-notificatie";
-App::$strings["\$projectname"] = "\$projectname";
-App::$strings["Thank You,"] = "Bedankt,";
-App::$strings["%s Administrator"] = "Beheerder %s";
-App::$strings["Administrator"] = "Beheerder";
-App::$strings["No Subject"] = "Geen onderwerp";
App::$strings["Frequently"] = "Regelmatig";
App::$strings["Hourly"] = "Elk uur";
App::$strings["Twice daily"] = "Twee keer per dag";
@@ -1724,6 +1695,8 @@ App::$strings["Zot"] = "Zot";
App::$strings["LinkedIn"] = "LinkedIn";
App::$strings["XMPP/IM"] = "XMPP/IM";
App::$strings["MySpace"] = "MySpace";
+App::$strings["Logged out."] = "Uitgelogd.";
+App::$strings["Failed authentication"] = "Mislukte authenticatie";
App::$strings["Item was not found."] = "Item niet gevonden";
App::$strings["No source file."] = "Geen bronbestand.";
App::$strings["Cannot locate file to replace"] = "Kan het te vervangen bestand niet vinden";
@@ -1779,6 +1752,10 @@ App::$strings["Directory Options"] = "Opties kanalengids";
App::$strings["Safe Mode"] = "Veilig zoeken";
App::$strings["Public Forums Only"] = "Alleen openbare forums";
App::$strings["This Website Only"] = "Alleen deze hub";
+App::$strings["\$Projectname Notification"] = "\$Projectname-notificatie";
+App::$strings["\$projectname"] = "\$projectname";
+App::$strings["Thank You,"] = "Bedankt,";
+App::$strings["%s Administrator"] = "Beheerder %s";
App::$strings["%s <!item_type!>"] = "%s <!item_type!>";
App::$strings["[Hubzilla:Notify] New mail received at %s"] = "[Hubzilla:Notificatie] Nieuw privébericht ontvangen op %s";
App::$strings["%1\$s, %2\$s sent you a new private message at %3\$s."] = "%1\$s, %2\$s zond jou een nieuw privébericht om %3\$s.";
@@ -1860,6 +1837,18 @@ App::$strings["Code"] = "Broncode";
App::$strings["Image"] = "Afbeelding";
App::$strings["Insert Link"] = "Link invoegen";
App::$strings["Video"] = "Video";
+App::$strings[" and "] = " en ";
+App::$strings["public profile"] = "openbaar profiel";
+App::$strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s veranderde %2\$s naar &ldquo;%3\$s&rdquo;";
+App::$strings["Visit %1\$s's %2\$s"] = "Bezoek het %2\$s van %1\$s";
+App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s heeft een aangepaste %2\$s, %3\$s veranderd.";
+App::$strings["Channel is blocked on this site."] = "Kanaal is op deze hub geblokkeerd.";
+App::$strings["Channel location missing."] = "Ontbrekende kanaallocatie.";
+App::$strings["Response from remote channel was incomplete."] = "Antwoord van het kanaal op afstand was niet volledig.";
+App::$strings["Channel was deleted and no longer exists."] = "Kanaal is verwijderd en bestaat niet meer.";
+App::$strings["Protocol disabled."] = "Protocol uitgeschakeld.";
+App::$strings["Channel discovery failed."] = "Kanaal ontdekken mislukt.";
+App::$strings["Cannot connect to yourself."] = "Kan niet met jezelf verbinden";
App::$strings["General Features"] = "Algemene functies";
App::$strings["Content Expiration"] = "Inhoud laten verlopen";
App::$strings["Remove posts/comments and/or private messages at a future time"] = "Berichten, reacties en/of privéberichten na een bepaalde tijd verwijderen";
@@ -1927,13 +1916,13 @@ App::$strings["Star Posts"] = "Geef berichten een ster";
App::$strings["Ability to mark special posts with a star indicator"] = "Mogelijkheid om speciale berichten met een ster te markeren";
App::$strings["Tag Cloud"] = "Tagwolk";
App::$strings["Provide a personal tag cloud on your channel page"] = "Zorgt voor een persoonlijke wolk met tags op jouw kanaalpagina";
-App::$strings["Channel is blocked on this site."] = "Kanaal is op deze hub geblokkeerd.";
-App::$strings["Channel location missing."] = "Ontbrekende kanaallocatie.";
-App::$strings["Response from remote channel was incomplete."] = "Antwoord van het kanaal op afstand was niet volledig.";
-App::$strings["Channel was deleted and no longer exists."] = "Kanaal is verwijderd en bestaat niet meer.";
-App::$strings["Protocol disabled."] = "Protocol uitgeschakeld.";
-App::$strings["Channel discovery failed."] = "Kanaal ontdekken mislukt.";
-App::$strings["Cannot connect to yourself."] = "Kan niet met jezelf verbinden";
+App::$strings["No recipient provided."] = "Geen ontvanger opgegeven.";
+App::$strings["[no subject]"] = "[geen onderwerp]";
+App::$strings["Unable to determine sender."] = "Afzender kan niet bepaald worden.";
+App::$strings["Stored post could not be verified."] = "Opgeslagen bericht kon niet worden geverifieerd.";
+App::$strings["view full size"] = "volledige grootte tonen";
+App::$strings["Administrator"] = "Beheerder";
+App::$strings["No Subject"] = "Geen onderwerp";
App::$strings["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."] = "Een verwijderde collectie met deze naam is gereactiveerd. Bestaande itemrechten <strong>kunnen</strong> van toepassing zijn op deze collectie en toekomstige leden. Wanneer je dit niet zo bedoeld hebt, moet je een nieuwe collectie met een andere naam aanmaken.";
App::$strings["Add new connections to this privacy group"] = "Voeg nieuwe connecties aan deze privacygroep toe";
App::$strings["edit"] = "bewerken";
@@ -2129,12 +2118,13 @@ App::$strings["want"] = "wil";
App::$strings["wants"] = "wil";
App::$strings["likes"] = "vindt dit leuk";
App::$strings["dislikes"] = "vindt dit niet leuk";
+App::$strings["Visible to your default audience"] = "Voor iedereen zichtbaar, mits niet anders ingesteld";
App::$strings["Only me"] = "Alleen ik";
App::$strings["Public"] = "Openbaar";
App::$strings["Anybody in the \$Projectname network"] = "Iedereen in het \$Projectname-netwerk";
App::$strings["Any account on %s"] = "Iedereen op %s";
App::$strings["Any of my connections"] = "Al mijn geaccepteerde connecties";
-App::$strings["Only me (only specified contacts and me)"] = "Alleen ik en specifieke connecties";
+App::$strings["Only connections I specifically allow"] = "Alleen connecties die uitdrukkelijk door jou zijn toegestaan";
App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Geauthenticeerde leden (kan bezoekers van andere netwerken bevatten)";
App::$strings["Any connections including those who haven't yet been approved"] = "Al mijn geaccepteerde en nog niet geaccepteerde connecties";
App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Dit is de standaard privacy-instelling voor wie jouw berichten kan bekijken";
@@ -2200,11 +2190,21 @@ App::$strings["__ctx:calendar__ month"] = "maand";
App::$strings["__ctx:calendar__ week"] = "week";
App::$strings["__ctx:calendar__ day"] = "dag";
App::$strings["__ctx:calendar__ All day"] = "hele dag";
-App::$strings["No recipient provided."] = "Geen ontvanger opgegeven.";
-App::$strings["[no subject]"] = "[geen onderwerp]";
-App::$strings["Unable to determine sender."] = "Afzender kan niet bepaald worden.";
-App::$strings["Stored post could not be verified."] = "Opgeslagen bericht kon niet worden geverifieerd.";
-App::$strings["Public Timeline"] = "Openbare tijdlijn";
+App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "Kan geen dubbele kanaal-identificator op deze hub aanmaken. Importeren mislukt.";
+App::$strings["Channel clone failed. Import failed."] = "Het klonen van het kanaal is mislukt. Importeren mislukt.";
+App::$strings["(Unknown)"] = "(Onbekend)";
+App::$strings["Visible to anybody on the internet."] = "Voor iedereen op het internet zichtbaar.";
+App::$strings["Visible to you only."] = "Alleen voor jou zichtbaar.";
+App::$strings["Visible to anybody in this network."] = "Voor iedereen in dit netwerk zichtbaar.";
+App::$strings["Visible to anybody authenticated."] = "Voor iedereen die geauthenticeerd is zichtbaar.";
+App::$strings["Visible to anybody on %s."] = "Voor iedereen op %s zichtbaar.";
+App::$strings["Visible to all connections."] = "Voor alle connecties zichtbaar.";
+App::$strings["Visible to approved connections."] = "Voor alle geaccepteerde connecties zichtbaar.";
+App::$strings["Visible to specific connections."] = "Voor specifieke connecties zichtbaar.";
+App::$strings["Privacy group is empty."] = "Privacygroep is leeg";
+App::$strings["Privacy group: %s"] = "Privacygroep: %s";
+App::$strings["Connection not found."] = "Connectie niet gevonden.";
+App::$strings["profile photo"] = "profielfoto";
App::$strings["New Page"] = "Nieuwe pagina";
App::$strings["Title"] = "Titel";
App::$strings["Can view my normal stream and posts"] = "Kan mijn normale kanaalstream en berichten bekijken";
@@ -2256,6 +2256,14 @@ App::$strings["Post"] = "Bericht";
App::$strings["Purchase"] = "Aanschaffen";
App::$strings["Attachments:"] = "Bijlagen:";
App::$strings["\$Projectname event notification:"] = "Notificatie \$Projectname-gebeurtenis:";
+App::$strings["Add others"] = "Meer toevoegen";
+App::$strings["Who can see this?"] = "Wie kan dit zien?";
+App::$strings["Custom selection"] = "Handmatige selectie";
+App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Kies \"Tonen\" om weergave toe te staan. Met \"Niet tonen\" kan je uitzonderingen maken op \"Tonen\".";
+App::$strings["Show"] = "Tonen";
+App::$strings["Don't show"] = "Niet tonen";
+App::$strings["Other networks and post services"] = "Andere netwerken en diensten";
+App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Permissies van berichten %s zijn niet meer te veranderen %s nadat een bericht is gedeeld.</br />Met deze permissies bepaal je wie het bericht kan zien.";
App::$strings["Focus (Hubzilla default)"] = "Focus (Hubzilla-standaard)";
App::$strings["Theme settings"] = "Thema-instellingen";
App::$strings["Select scheme"] = "Kies schema van thema";
diff --git a/view/php/theme_init.php b/view/php/theme_init.php
index 7c020a51f..648b144b3 100644
--- a/view/php/theme_init.php
+++ b/view/php/theme_init.php
@@ -21,7 +21,7 @@ head_add_js('spin.js');
head_add_js('jquery.spin.js');
head_add_js('jquery.textinputs.js');
head_add_js('autocomplete.js');
-head_add_js('library/jquery-textcomplete/jquery.textcomplete.min.js');
+head_add_js('library/jquery-textcomplete/jquery.textcomplete.js');
//head_add_js('library/colorbox/jquery.colorbox.js');
head_add_js('library/jquery.timeago.js');
head_add_js('library/readmore.js/readmore.js');
diff --git a/view/pt-br/htconfig.tpl b/view/pt-br/htconfig.tpl
index d0a799cf6..802b31b49 100644
--- a/view/pt-br/htconfig.tpl
+++ b/view/pt-br/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/ru/htconfig.tpl b/view/ru/htconfig.tpl
index 97155ea42..5456d12c1 100644
--- a/view/ru/htconfig.tpl
+++ b/view/ru/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/sv/htconfig.tpl b/view/sv/htconfig.tpl
index 97155ea42..5456d12c1 100644
--- a/view/sv/htconfig.tpl
+++ b/view/sv/htconfig.tpl
@@ -28,7 +28,7 @@ define( 'UNO', {{$uno}} );
// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles".
// It can be changed later and only applies to timestamps for anonymous viewers.
-$default_timezone = '{{$timezone}}';
+App::$config['system']['timezone'] = '{{$timezone}}';
// What is your site name?
diff --git a/view/tpl/acl_selector.tpl b/view/tpl/acl_selector.tpl
index 1711cee8a..60fae0a29 100755
--- a/view/tpl/acl_selector.tpl
+++ b/view/tpl/acl_selector.tpl
@@ -19,10 +19,6 @@
<option id="acl-showlimited" value="limited">{{$showlimited}}</option>
</select>
- <div id="show-acl" class="form-group">
- <button type="button" class="btn btn-success form-group" onclick="openClose('acl-list'); closeOpen('show-acl');"><i class="fa fa-user-plus"></i>&nbsp;{{$add_others}}</button>
- </div>
-
{{if $showallOrigin}}
<div id="acl-info" class="form-group">
<i class="fa fa-info-circle"></i>&nbsp;{{$showallOrigin}}
diff --git a/view/tpl/app.tpl b/view/tpl/app.tpl
index 20a1337c7..3e6b71b29 100644
--- a/view/tpl/app.tpl
+++ b/view/tpl/app.tpl
@@ -14,7 +14,7 @@
<div class="app-tools">
<form action="{{$hosturl}}appman" method="post">
<input type="hidden" name="papp" value="{{$app.papp}}" />
- {{if $install}}<button type="submit" name="install" value="{{$install}}" class="btn btn-default" title="{{$install}}" ><i class="fa fa-arrow-circle-o-down-alt" ></i></button>{{/if}}
+ {{if $install}}<button type="submit" name="install" value="{{$install}}" class="btn btn-default" title="{{$install}}" ><i class="fa fa-arrow-circle-o-down" ></i></button>{{/if}}
{{if $edit}}<input type="hidden" name="appid" value="{{$app.guid}}" /><button type="submit" name="edit" value="{{$edit}}" class="btn btn-default" title="{{$edit}}" ><i class="fa fa-pencil" ></i></button>{{/if}}
{{if $delete}}<button type="submit" name="delete" value="{{$delete}}" class="btn btn-default" title="{{$delete}}" ><i class="fa fa-trash-o drop-icons"></i></button>{{/if}}
</form>
diff --git a/view/tpl/atom_feed.tpl b/view/tpl/atom_feed.tpl
index 9e5b5a5be..37eaf954a 100755
--- a/view/tpl/atom_feed.tpl
+++ b/view/tpl/atom_feed.tpl
@@ -13,7 +13,7 @@
<id>{{$feed_id}}</id>
<title>{{$feed_title}}</title>
- <generator uri="http://getzot.com" version="{{$version}}">{{$red}}</generator>
+ <generator uri="http://hubzilla.org" version="{{$version}}">{{$red}}</generator>
<link rel="license" href="http://creativecommons.org/licenses/by/3.0/" />
<link rel="alternate" type="text/html" href="{{$profile_page}}" />
{{if $hub}}