aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs
diff options
context:
space:
mode:
authorMario <mario@mariovavti.com>2024-07-06 11:05:22 +0000
committerMario <mario@mariovavti.com>2024-07-06 11:05:22 +0000
commit45275910e606a02b12393714ea3b0409da440d61 (patch)
tree10b2d173d58cb930f8df28fe75af73dd4974c08c /Zotlabs
parent0c1d0f7498661fb34dcca6f3c6566e757af310a7 (diff)
parentc04e781926a78e514cdf211fa24930a331149072 (diff)
downloadvolse-hubzilla-master.tar.gz
volse-hubzilla-master.tar.bz2
volse-hubzilla-master.zip
Merge branch '9.2RC'master
Diffstat (limited to 'Zotlabs')
-rw-r--r--Zotlabs/Access/PermissionRoles.php4
-rw-r--r--Zotlabs/Daemon/Cache_query.php7
-rw-r--r--Zotlabs/Daemon/Checksites.php4
-rw-r--r--Zotlabs/Daemon/Cron.php21
-rw-r--r--Zotlabs/Daemon/Cron_daily.php7
-rw-r--r--Zotlabs/Daemon/Cron_weekly.php4
-rw-r--r--Zotlabs/Daemon/Directory.php3
-rw-r--r--Zotlabs/Daemon/Expire.php16
-rw-r--r--Zotlabs/Daemon/Master.php2
-rw-r--r--Zotlabs/Daemon/Notifier.php7
-rw-r--r--Zotlabs/Daemon/Onepoll.php5
-rw-r--r--Zotlabs/Daemon/Poller.php16
-rw-r--r--Zotlabs/Daemon/Thumbnail.php7
-rw-r--r--Zotlabs/Daemon/Xchan_photo.php9
-rw-r--r--Zotlabs/Extend/Route.php5
-rw-r--r--Zotlabs/Extend/Widget.php5
-rw-r--r--Zotlabs/Identity/OAuth2Server.php6
-rw-r--r--Zotlabs/Lib/Activity.php6
-rw-r--r--Zotlabs/Lib/Apps.php9
-rw-r--r--Zotlabs/Lib/Cache.php9
-rw-r--r--Zotlabs/Lib/Config.php2
-rw-r--r--Zotlabs/Lib/Connect.php5
-rw-r--r--Zotlabs/Lib/Crypto.php3
-rw-r--r--Zotlabs/Lib/DB_Upgrade.php29
-rw-r--r--Zotlabs/Lib/DReport.php4
-rw-r--r--Zotlabs/Lib/Enotify.php9
-rw-r--r--Zotlabs/Lib/Libsync.php7
-rw-r--r--Zotlabs/Lib/Libzot.php52
-rw-r--r--Zotlabs/Lib/Libzotdir.php27
-rw-r--r--Zotlabs/Lib/QueueWorker.php61
-rw-r--r--Zotlabs/Lib/ThreadItem.php24
-rw-r--r--Zotlabs/Lib/Traits/HelpHelperTrait.php68
-rw-r--r--Zotlabs/Lib/Zotfinger.php3
-rw-r--r--Zotlabs/Module/Acl.php7
-rw-r--r--Zotlabs/Module/Admin.php4
-rw-r--r--Zotlabs/Module/Admin/Accounts.php6
-rw-r--r--Zotlabs/Module/Admin/Addons.php7
-rw-r--r--Zotlabs/Module/Admin/Channels.php52
-rw-r--r--Zotlabs/Module/Admin/Dbsync.php14
-rw-r--r--Zotlabs/Module/Admin/Features.php44
-rw-r--r--Zotlabs/Module/Admin/Logs.php49
-rw-r--r--Zotlabs/Module/Admin/Profs.php57
-rw-r--r--Zotlabs/Module/Admin/Queueworker.php17
-rw-r--r--Zotlabs/Module/Admin/Security.php73
-rw-r--r--Zotlabs/Module/Admin/Site.php257
-rw-r--r--Zotlabs/Module/Admin/Themes.php5
-rw-r--r--Zotlabs/Module/Api.php4
-rw-r--r--Zotlabs/Module/Apps.php4
-rw-r--r--Zotlabs/Module/Channel.php3
-rw-r--r--Zotlabs/Module/Cover_photo.php7
-rw-r--r--Zotlabs/Module/Dircensor.php6
-rw-r--r--Zotlabs/Module/Directory.php16
-rw-r--r--Zotlabs/Module/Dirsearch.php7
-rw-r--r--Zotlabs/Module/Display.php3
-rw-r--r--Zotlabs/Module/Editpost.php2
-rw-r--r--Zotlabs/Module/Email_validation.php9
-rw-r--r--Zotlabs/Module/Fhublocs.php3
-rw-r--r--Zotlabs/Module/Go.php9
-rw-r--r--Zotlabs/Module/Group.php7
-rw-r--r--Zotlabs/Module/Help.php192
-rw-r--r--Zotlabs/Module/Home.php13
-rw-r--r--Zotlabs/Module/Hq.php20
-rw-r--r--Zotlabs/Module/Import.php37
-rw-r--r--Zotlabs/Module/Import_progress.php39
-rw-r--r--Zotlabs/Module/Invite.php23
-rw-r--r--Zotlabs/Module/Item.php7
-rw-r--r--Zotlabs/Module/Linkinfo.php3
-rw-r--r--Zotlabs/Module/Lockview.php2
-rw-r--r--Zotlabs/Module/Lostpass.php10
-rw-r--r--Zotlabs/Module/New_channel.php11
-rw-r--r--Zotlabs/Module/Profile_photo.php3
-rw-r--r--Zotlabs/Module/Profiles.php16
-rw-r--r--Zotlabs/Module/Profperm.php87
-rw-r--r--Zotlabs/Module/Pubsites.php5
-rw-r--r--Zotlabs/Module/Pubstream.php26
-rw-r--r--Zotlabs/Module/Rbmark.php80
-rw-r--r--Zotlabs/Module/Regate.php11
-rw-r--r--Zotlabs/Module/Regdir.php31
-rw-r--r--Zotlabs/Module/Register.php59
-rw-r--r--Zotlabs/Module/Rpost.php248
-rw-r--r--Zotlabs/Module/Search.php7
-rw-r--r--Zotlabs/Module/Service_limits.php14
-rw-r--r--Zotlabs/Module/Settings/Account.php4
-rw-r--r--Zotlabs/Module/Settings/Channel.php7
-rw-r--r--Zotlabs/Module/Settings/Display.php7
-rw-r--r--Zotlabs/Module/Settings/Privacy.php3
-rw-r--r--Zotlabs/Module/Setup.php31
-rw-r--r--Zotlabs/Module/Siteinfo.php11
-rw-r--r--Zotlabs/Module/Sources.php10
-rw-r--r--Zotlabs/Module/Sse.php5
-rw-r--r--Zotlabs/Module/Sse_bs.php13
-rw-r--r--Zotlabs/Module/Toggle_mobile.php23
-rw-r--r--Zotlabs/Module/Toggle_safesearch.php31
-rw-r--r--Zotlabs/Module/Wall_attach.php14
-rw-r--r--Zotlabs/Module/Well_known.php3
-rw-r--r--Zotlabs/Module/Wfinger.php3
-rw-r--r--Zotlabs/Photo/PhotoDriver.php5
-rw-r--r--Zotlabs/Photo/PhotoGd.php8
-rw-r--r--Zotlabs/Photo/PhotoImagick.php8
-rw-r--r--Zotlabs/Render/Comanche.php28
-rw-r--r--Zotlabs/Render/SmartyInterface.php2
-rw-r--r--Zotlabs/Render/SmartyTemplate.php2
-rw-r--r--Zotlabs/Render/Theme.php6
-rw-r--r--Zotlabs/Storage/Browser.php7
-rw-r--r--Zotlabs/Storage/Directory.php9
-rw-r--r--Zotlabs/Storage/File.php3
-rw-r--r--Zotlabs/Thumbs/Pdf.php3
-rw-r--r--Zotlabs/Thumbs/Video.php3
-rw-r--r--Zotlabs/Update/_1103.php6
-rw-r--r--Zotlabs/Update/_1226.php7
-rw-r--r--Zotlabs/Update/_1236.php11
-rw-r--r--Zotlabs/Update/_1242.php6
-rw-r--r--Zotlabs/Update/_1243.php12
-rw-r--r--Zotlabs/Web/Controller.php56
-rw-r--r--Zotlabs/Web/HTTPSig.php5
-rw-r--r--Zotlabs/Web/Router.php38
-rw-r--r--Zotlabs/Web/Session.php13
-rw-r--r--Zotlabs/Web/WebServer.php12
-rw-r--r--Zotlabs/Widget/Helpindex.php63
-rw-r--r--Zotlabs/Widget/Newmember.php6
-rw-r--r--Zotlabs/Widget/Pinned.php4
-rw-r--r--Zotlabs/Widget/Pubtagcloud.php8
-rw-r--r--Zotlabs/Widget/Rating.php4
123 files changed, 1463 insertions, 1099 deletions
diff --git a/Zotlabs/Access/PermissionRoles.php b/Zotlabs/Access/PermissionRoles.php
index 2078b52a8..5dfedfcd7 100644
--- a/Zotlabs/Access/PermissionRoles.php
+++ b/Zotlabs/Access/PermissionRoles.php
@@ -2,6 +2,8 @@
namespace Zotlabs\Access;
+use Zotlabs\Lib\Config;
+
/**
* @brief PermissionRoles class.
*
@@ -247,7 +249,7 @@ class PermissionRoles {
break;
}
- $x = get_config('system','role_perms');
+ $x = Config::Get('system','role_perms');
// let system settings over-ride any or all
if($x && is_array($x) && array_key_exists($role,$x))
diff --git a/Zotlabs/Daemon/Cache_query.php b/Zotlabs/Daemon/Cache_query.php
index d6f66f1f0..d5788795f 100644
--- a/Zotlabs/Daemon/Cache_query.php
+++ b/Zotlabs/Daemon/Cache_query.php
@@ -3,6 +3,7 @@
namespace Zotlabs\Daemon;
use Zotlabs\Lib\Cache;
+use Zotlabs\Lib\Config;
class Cache_query {
@@ -14,14 +15,14 @@ class Cache_query {
$r = null;
$key = $argv[1];
- $pid = get_config('procid', $key, false);
+ $pid = Config::Get('procid', $key, false);
if ($pid && (function_exists('posix_kill') ? posix_kill($pid, 0) : true)) {
logger($key . ': procedure already run with pid ' . $pid, LOGGER_DEBUG);
return;
}
$pid = getmypid();
- set_config('procid', $key, $pid);
+ Config::Set('procid', $key, $pid);
array_shift($argv);
array_shift($argv);
@@ -34,7 +35,7 @@ class Cache_query {
Cache::set($key, serialize($r));
}
- del_config('procid', $key);
+ Config::Delete('procid', $key);
return;
}
diff --git a/Zotlabs/Daemon/Checksites.php b/Zotlabs/Daemon/Checksites.php
index eacf8c6bc..8f6319edb 100644
--- a/Zotlabs/Daemon/Checksites.php
+++ b/Zotlabs/Daemon/Checksites.php
@@ -2,6 +2,8 @@
namespace Zotlabs\Daemon;
+use Zotlabs\Lib\Config;
+
require_once('include/hubloc.php');
class Checksites {
@@ -19,7 +21,7 @@ class Checksites {
if ($site_id)
$sql_options = " and site_url = '" . dbesc($argv[1]) . "' ";
- $days = intval(get_config('system', 'sitecheckdays'));
+ $days = intval(Config::Get('system', 'sitecheckdays'));
if ($days < 1)
$days = 30;
diff --git a/Zotlabs/Daemon/Cron.php b/Zotlabs/Daemon/Cron.php
index e0fa2d629..d2c863572 100644
--- a/Zotlabs/Daemon/Cron.php
+++ b/Zotlabs/Daemon/Cron.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Daemon;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libsync;
use Zotlabs\Lib\Libzotdir;
@@ -9,7 +10,7 @@ class Cron {
static public function run($argc, $argv) {
- $maxsysload = intval(get_config('system', 'maxloadavg'));
+ $maxsysload = intval(Config::Get('system', 'maxloadavg'));
if ($maxsysload < 1)
$maxsysload = 50;
if (function_exists('sys_getloadavg')) {
@@ -24,7 +25,7 @@ class Cron {
// Check for a lockfile. If it exists, but is over an hour old, it's stale. Ignore it.
$lockfile = 'store/[data]/cron';
if ((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 3600))
- && (!get_config('system', 'override_cron_lockfile'))) {
+ && (!Config::Get('system', 'override_cron_lockfile'))) {
logger("cron: Already running");
return;
}
@@ -41,7 +42,7 @@ class Cron {
// Pull remote changes and push local changes.
// potential issue: how do we keep from creating an endless update loop?
- $dirmode = get_config('system', 'directory_mode');
+ $dirmode = Config::Get('system', 'directory_mode');
if ($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) {
Libzotdir::sync_directories($dirmode);
@@ -64,7 +65,7 @@ class Cron {
require_once('include/account.php');
remove_expired_registrations();
- $interval = get_config('queueworker', 'queue_interval', 500000);
+ $interval = Config::Get('queueworker', 'queue_interval', 500000);
// expire any expired items
@@ -124,13 +125,13 @@ class Cron {
$r = q("SELECT DISTINCT xchan, content FROM photo WHERE photo_usage = %d AND expires < %s - INTERVAL %s",
intval(PHOTO_CACHE),
db_utcnow(),
- db_quoteinterval(get_config('system', 'cache_expire_days', 7) . ' DAY')
+ db_quoteinterval(Config::Get('system', 'cache_expire_days', 7) . ' DAY')
);
if ($r) {
q("DELETE FROM photo WHERE photo_usage = %d AND expires < %s - INTERVAL %s",
intval(PHOTO_CACHE),
db_utcnow(),
- db_quoteinterval(get_config('system', 'cache_expire_days', 7) . ' DAY')
+ db_quoteinterval(Config::Get('system', 'cache_expire_days', 7) . ' DAY')
);
foreach ($r as $rr) {
$file = dbunescbin($rr['content']);
@@ -185,13 +186,13 @@ class Cron {
// FIXME: add birthday updates, both locally and for xprof for use
// by directory servers
- $d1 = intval(get_config('system', 'last_expire_day'));
+ $d1 = intval(Config::Get('system', 'last_expire_day'));
$d2 = intval(datetime_convert('UTC', 'UTC', 'now', 'd'));
// Allow somebody to staggger daily activities if they have more than one site on their server,
// or if it happens at an inconvenient (busy) hour.
- $h1 = intval(get_config('system', 'cron_hour'));
+ $h1 = intval(Config::Get('system', 'cron_hour'));
$h2 = intval(datetime_convert('UTC', 'UTC', 'now', 'G'));
@@ -225,7 +226,7 @@ class Cron {
// pull in some public posts if allowed
- $disable_externals = get_config('system', 'disable_discover_tab') || get_config('system', 'disable_discover_tab') === false || get_config('system', 'site_firehose');
+ $disable_externals = Config::Get('system', 'disable_discover_tab') || Config::Get('system', 'disable_discover_tab') === false || Config::Get('system', 'site_firehose');
if (!$disable_externals)
Master::Summon(['Externals']);
@@ -245,7 +246,7 @@ class Cron {
if (!$restart)
Master::Summon(array('Cronhooks'));
- set_config('system', 'lastcron', datetime_convert());
+ Config::Set('system', 'lastcron', datetime_convert());
//All done - clear the lockfile
//@unlink($lockfile);
diff --git a/Zotlabs/Daemon/Cron_daily.php b/Zotlabs/Daemon/Cron_daily.php
index 98379be1b..3bc267f08 100644
--- a/Zotlabs/Daemon/Cron_daily.php
+++ b/Zotlabs/Daemon/Cron_daily.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Daemon;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libzotdir;
class Cron_daily {
@@ -68,7 +69,7 @@ class Cron_daily {
// Clean up cache
q("DELETE FROM cache WHERE updated < %s - INTERVAL %s",
db_utcnow(),
- db_quoteinterval(get_config('system', 'cache_expire_days', 7) . ' DAY')
+ db_quoteinterval(Config::Get('system', 'cache_expire_days', 7) . ' DAY')
);
//update statistics in config
@@ -82,7 +83,7 @@ class Cron_daily {
// expire old delivery reports
- $keep_reports = intval(get_config('system', 'expire_delivery_reports'));
+ $keep_reports = intval(Config::Get('system', 'expire_delivery_reports'));
if ($keep_reports === 0)
$keep_reports = 10;
@@ -103,7 +104,7 @@ class Cron_daily {
$date = datetime_convert();
call_hooks('cron_daily', $date);
- set_config('system', 'last_expire_day', intval(datetime_convert('UTC', 'UTC', 'now', 'd')));
+ Config::Set('system', 'last_expire_day', intval(datetime_convert('UTC', 'UTC', 'now', 'd')));
/**
* End Cron Daily
diff --git a/Zotlabs/Daemon/Cron_weekly.php b/Zotlabs/Daemon/Cron_weekly.php
index 75fb94700..f9ea5aae7 100644
--- a/Zotlabs/Daemon/Cron_weekly.php
+++ b/Zotlabs/Daemon/Cron_weekly.php
@@ -2,6 +2,8 @@
namespace Zotlabs\Daemon;
+use Zotlabs\Lib\Config;
+
class Cron_weekly {
static public function run($argc, $argv) {
@@ -44,7 +46,7 @@ class Cron_weekly {
db_utcnow(), db_quoteinterval('14 DAY')
);
- $dirmode = intval(get_config('system', 'directory_mode'));
+ $dirmode = intval(Config::Get('system', 'directory_mode'));
if ($dirmode === DIRECTORY_MODE_SECONDARY || $dirmode === DIRECTORY_MODE_PRIMARY) {
logger('regdir: ' . print_r(z_fetch_url(get_directory_primary() . '/regdir?f=&url=' . urlencode(z_root()) . '&realm=' . urlencode(get_directory_realm())), true));
}
diff --git a/Zotlabs/Daemon/Directory.php b/Zotlabs/Daemon/Directory.php
index 19adf8273..1c4c29ac2 100644
--- a/Zotlabs/Daemon/Directory.php
+++ b/Zotlabs/Daemon/Directory.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Daemon;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libzot;
use Zotlabs\Lib\Libzotdir;
use Zotlabs\Lib\Queue;
@@ -25,7 +26,7 @@ class Directory {
logger('directory update', LOGGER_DEBUG);
- $dirmode = get_config('system', 'directory_mode');
+ $dirmode = Config::Get('system', 'directory_mode');
if ($dirmode === false)
$dirmode = DIRECTORY_MODE_NORMAL;
diff --git a/Zotlabs/Daemon/Expire.php b/Zotlabs/Daemon/Expire.php
index 6ab67150f..ad52a6b71 100644
--- a/Zotlabs/Daemon/Expire.php
+++ b/Zotlabs/Daemon/Expire.php
@@ -2,6 +2,8 @@
namespace Zotlabs\Daemon;
+use Zotlabs\Lib\Config;
+
require_once('include/items.php');
class Expire {
@@ -10,14 +12,14 @@ class Expire {
cli_startup();
- $pid = get_config('procid', 'expire', false);
+ $pid = Config::Get('procid', 'expire', false);
if ($pid && (function_exists('posix_kill') ? posix_kill($pid, 0) : true)) {
logger('procedure already run with pid ' . $pid, LOGGER_DEBUG);
return;
}
$pid = getmypid();
- set_config('procid', 'expire', $pid);
+ Config::Set('procid', 'expire', $pid);
// perform final cleanup on previously delete items
@@ -38,13 +40,13 @@ class Expire {
db_quoteinterval('36 DAY')
);
- if (intval(get_config('system', 'optimize_items')))
+ if (intval(Config::Get('system', 'optimize_items')))
q("optimize table item");
logger('expire: start with pid ' . $pid, LOGGER_DEBUG);
- $site_expire = intval(get_config('system', 'default_expire_days', 30));
- $commented_days = intval(get_config('system', 'active_expire_days', 7));
+ $site_expire = intval(Config::Get('system', 'default_expire_days', 30));
+ $commented_days = intval(Config::Get('system', 'active_expire_days', 7));
logger('site_expire: ' . $site_expire);
@@ -84,7 +86,7 @@ class Expire {
// this should probably just fetch the channel_expire_days from the sys channel,
// but there's no convenient way to set it.
- $expire_days = get_config('system', 'sys_expire_days');
+ $expire_days = Config::Get('system', 'sys_expire_days');
if ($expire_days === false)
$expire_days = 30;
@@ -101,7 +103,7 @@ class Expire {
logger('Expire: sys: done', LOGGER_DEBUG);
}
- del_config('procid', 'expire');
+ Config::Delete('procid', 'expire');
return;
}
diff --git a/Zotlabs/Daemon/Master.php b/Zotlabs/Daemon/Master.php
index c9ed91aaa..d28e462dd 100644
--- a/Zotlabs/Daemon/Master.php
+++ b/Zotlabs/Daemon/Master.php
@@ -37,7 +37,7 @@ class Master {
return;
}
- $phpbin = get_config('system', 'phpbin', 'php');
+ $phpbin = Config::Get('system', 'phpbin', 'php');
proc_run($phpbin, 'Zotlabs/Daemon/Master.php', $arr);
*/
}
diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php
index 4e7ca3911..20134b8fe 100644
--- a/Zotlabs/Daemon/Notifier.php
+++ b/Zotlabs/Daemon/Notifier.php
@@ -2,8 +2,9 @@
namespace Zotlabs\Daemon;
-use Zotlabs\Lib\Libzot;
use Zotlabs\Lib\Activity;
+use Zotlabs\Lib\Config;
+use Zotlabs\Lib\Libzot;
use Zotlabs\Lib\Queue;
require_once('include/html2plain.php');
@@ -668,7 +669,7 @@ class Notifier {
);
// only create delivery reports for normal undeleted items
- if (is_array($target_item) && (!$target_item['item_deleted']) && (!get_config('system', 'disable_dreport'))) {
+ if (is_array($target_item) && (!$target_item['item_deleted']) && (!Config::Get('system', 'disable_dreport'))) {
q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_name, dreport_result, dreport_time, dreport_xchan, dreport_queue )
values ( '%s', '%s','%s','%s','%s','%s','%s','%s' ) ",
dbesc($target_item['mid']),
@@ -698,7 +699,7 @@ class Notifier {
do_delivery(self::$deliveries);
}
- if ($dead_hosts && is_array($target_item) && (!$target_item['item_deleted']) && (!get_config('system', 'disable_dreport'))) {
+ if ($dead_hosts && is_array($target_item) && (!$target_item['item_deleted']) && (!Config::Get('system', 'disable_dreport'))) {
foreach ($dead_hosts as $deceased_host) {
$r = q("insert into dreport ( dreport_mid, dreport_site, dreport_recip, dreport_name, dreport_result, dreport_time, dreport_xchan, dreport_queue )
values ( '%s', '%s','%s','%s','%s','%s','%s','%s' ) ",
diff --git a/Zotlabs/Daemon/Onepoll.php b/Zotlabs/Daemon/Onepoll.php
index 973bcf402..e525d138c 100644
--- a/Zotlabs/Daemon/Onepoll.php
+++ b/Zotlabs/Daemon/Onepoll.php
@@ -5,6 +5,7 @@ namespace Zotlabs\Daemon;
use Zotlabs\Lib\Activity;
use Zotlabs\Lib\ActivityStreams;
use Zotlabs\Lib\ASCollection;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libzot;
require_once('include/socgraph.php');
@@ -25,7 +26,7 @@ class Onepoll {
}
$sql_extra = '';
- $allow_feeds = get_config('system', 'feed_contacts');
+ $allow_feeds = Config::Get('system', 'feed_contacts');
if(!$allow_feeds) {
$sql_extra = ' and abook_feed = 0 ';
}
@@ -125,7 +126,7 @@ class Onepoll {
if ($fetch_feed) {
- $max = intval(get_config('system', 'max_imported_posts', 30));
+ $max = intval(Config::Get('system', 'max_imported_posts', 30));
if (intval($max)) {
$cl = Activity::get_actor_collections($contact['abook_xchan']);
diff --git a/Zotlabs/Daemon/Poller.php b/Zotlabs/Daemon/Poller.php
index 77a428ec3..2103310b9 100644
--- a/Zotlabs/Daemon/Poller.php
+++ b/Zotlabs/Daemon/Poller.php
@@ -2,11 +2,13 @@
namespace Zotlabs\Daemon;
+use Zotlabs\Lib\Config;
+
class Poller {
static public function run($argc, $argv) {
- $maxsysload = intval(get_config('system', 'maxloadavg'));
+ $maxsysload = intval(Config::Get('system', 'maxloadavg'));
if ($maxsysload < 1)
$maxsysload = 50;
if (function_exists('sys_getloadavg')) {
@@ -17,7 +19,7 @@ class Poller {
}
}
- $interval = get_config('queueworker', 'queue_interval', 500000);
+ $interval = Config::Get('queueworker', 'queue_interval', 500000);
logger('poller: start');
@@ -43,13 +45,13 @@ class Poller {
reload_plugins();
// Only poll from those with suitable relationships
- $abandon_days = intval(get_config('system', 'account_abandon_days', 0));
+ $abandon_days = intval(Config::Get('system', 'account_abandon_days', 0));
$abandon_sql = (($abandon_days)
? sprintf(" AND account_lastlog > %s - INTERVAL %s ", db_utcnow(), db_quoteinterval(intval($abandon_days) . ' DAY'))
: ''
);
- $allow_feeds = get_config('system', 'feed_contacts');
+ $allow_feeds = Config::Get('system', 'feed_contacts');
if(!$allow_feeds) {
$sql_extra .= ' and abook_feed = 0 ';
}
@@ -81,7 +83,7 @@ class Poller {
if (intval($contact['abook_feed'])) {
$min = service_class_fetch($contact['abook_channel'], 'minimum_feedcheck_minutes');
if (!$min)
- $min = intval(get_config('system', 'minimum_feedcheck_minutes'));
+ $min = intval(Config::Get('system', 'minimum_feedcheck_minutes'));
if (!$min)
$min = 60;
@@ -167,7 +169,7 @@ class Poller {
}
}
- $dirmode = intval(get_config('system', 'directory_mode'));
+ $dirmode = intval(Config::Get('system', 'directory_mode'));
if ($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) {
$r = q("SELECT * FROM updates WHERE ud_update = 1 AND (ud_last = '%s' OR ud_last > %s - INTERVAL %s)",
@@ -195,7 +197,7 @@ class Poller {
}
}
- set_config('system', 'lastpoll', datetime_convert());
+ Config::Set('system', 'lastpoll', datetime_convert());
return;
}
diff --git a/Zotlabs/Daemon/Thumbnail.php b/Zotlabs/Daemon/Thumbnail.php
index fa9570658..85fcb8b72 100644
--- a/Zotlabs/Daemon/Thumbnail.php
+++ b/Zotlabs/Daemon/Thumbnail.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Daemon;
+use Zotlabs\Lib\Config;
class Thumbnail {
@@ -19,9 +20,9 @@ class Thumbnail {
$attach = $c[0];
- $preview_style = intval(get_config('system', 'thumbnail_security', 0));
- $preview_width = intval(get_config('system', 'thumbnail_width', 300));
- $preview_height = intval(get_config('system', 'thumbnail_height', 300));
+ $preview_style = intval(Config::Get('system', 'thumbnail_security', 0));
+ $preview_width = intval(Config::Get('system', 'thumbnail_width', 300));
+ $preview_height = intval(Config::Get('system', 'thumbnail_height', 300));
$p = [
'attach' => $attach,
diff --git a/Zotlabs/Daemon/Xchan_photo.php b/Zotlabs/Daemon/Xchan_photo.php
index f90d1d726..662fc967c 100644
--- a/Zotlabs/Daemon/Xchan_photo.php
+++ b/Zotlabs/Daemon/Xchan_photo.php
@@ -8,14 +8,15 @@ class Xchan_photo {
static public function run($argc, $argv) {
- if ($argc != 3) {
+ if ($argc < 3) {
return;
}
$url = hex2bin($argv[1]);
$xchan = hex2bin($argv[2]);
+ $force = $argv[3];
- $photos = import_xchan_photo($url, $xchan);
+ $photos = import_xchan_photo($url, $xchan, false, $force);
if ($photos) {
$result = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
dbescdate(datetime_convert()),
@@ -27,8 +28,10 @@ class Xchan_photo {
);
if (! $result) {
- logger("xchan update failed for $url");
+ logger("xchan photo update failed for $url");
}
}
+
+ return;
}
}
diff --git a/Zotlabs/Extend/Route.php b/Zotlabs/Extend/Route.php
index f7b90ec6e..95b83e11b 100644
--- a/Zotlabs/Extend/Route.php
+++ b/Zotlabs/Extend/Route.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Extend;
+use Zotlabs\Lib\Config;
class Route {
@@ -38,11 +39,11 @@ class Route {
}
static function get() {
- return get_config('system','routes',[]);
+ return Config::Get('system','routes',[]);
}
static function set($r) {
- return set_config('system','routes',$r);
+ return Config::Set('system','routes',$r);
}
}
diff --git a/Zotlabs/Extend/Widget.php b/Zotlabs/Extend/Widget.php
index dee64c61b..6ab95237d 100644
--- a/Zotlabs/Extend/Widget.php
+++ b/Zotlabs/Extend/Widget.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Extend;
+use Zotlabs\Lib\Config;
class Widget {
@@ -38,10 +39,10 @@ class Widget {
}
static function get() {
- return get_config('system','widgets',[]);
+ return Config::Get('system','widgets',[]);
}
static function set($r) {
- return set_config('system','widgets',$r);
+ return Config::Set('system','widgets',$r);
}
}
diff --git a/Zotlabs/Identity/OAuth2Server.php b/Zotlabs/Identity/OAuth2Server.php
index b747b95db..67326b599 100644
--- a/Zotlabs/Identity/OAuth2Server.php
+++ b/Zotlabs/Identity/OAuth2Server.php
@@ -2,6 +2,8 @@
namespace Zotlabs\Identity;
+use Zotlabs\Lib\Config;
+
class OAuth2Server extends \OAuth2\Server {
public function __construct(OAuth2Storage $storage, $config = null) {
@@ -24,8 +26,8 @@ class OAuth2Server extends \OAuth2\Server {
$keyStorage = new \OAuth2\Storage\Memory( [
'keys' => [
- 'public_key' => get_config('system', 'pubkey'),
- 'private_key' => get_config('system', 'prvkey')
+ 'public_key' => Config::Get('system', 'pubkey'),
+ 'private_key' => Config::Get('system', 'prvkey')
]
]);
diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php
index b628221fb..9178dac39 100644
--- a/Zotlabs/Lib/Activity.php
+++ b/Zotlabs/Lib/Activity.php
@@ -70,7 +70,7 @@ class Activity {
}
if ($items) {
- return self::encode_item(array_shift($items), true);
+ return self::encode_item(array_shift($items));
}
return null;
@@ -1875,7 +1875,7 @@ class Activity {
}
if ($icon) {
- Master::Summon(['Xchan_photo', bin2hex($icon), bin2hex($url)]);
+ Master::Summon(['Xchan_photo', bin2hex($icon), bin2hex($url), $force]);
}
}
@@ -2902,7 +2902,7 @@ class Activity {
if (intval($parent[0]['item_private'])) {
if (!intval($item['item_private'])) {
- $item['item_private'] = intval($parent_item['item_private']);
+ $item['item_private'] = intval($parent[0]['item_private']);
$item['allow_cid'] = '<' . $channel['channel_hash'] . '>';
$item['allow_gid'] = $item['deny_cid'] = $item['deny_gid'] = '';
}
diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php
index 1c05d69b1..0dc405ea9 100644
--- a/Zotlabs/Lib/Apps.php
+++ b/Zotlabs/Lib/Apps.php
@@ -3,6 +3,7 @@
namespace Zotlabs\Lib;
use App;
+use Zotlabs\Lib\Config;
require_once('include/plugin.php');
require_once('include/channel.php');
@@ -65,7 +66,7 @@ class Apps {
}
static public function get_base_apps() {
- $x = get_config('system','base_apps',[
+ $x = Config::Get('system','base_apps',[
'Connections',
'Contact Roles',
'Network',
@@ -301,7 +302,7 @@ class Apps {
break;
default:
if($config)
- $unset = ((get_config('system', $require[0]) == $require[1]) ? false : true);
+ $unset = ((Config::Get('system', $require[0]) == $require[1]) ? false : true);
else
$unset = ((local_channel() && feature_enabled(local_channel(),$require)) ? false : true);
if($unset)
@@ -523,7 +524,7 @@ class Apps {
break;
default:
if($config)
- $unset = ((get_config('system', $require[0]) === $require[1]) ? false : true);
+ $unset = ((Config::Get('system', $require[0]) === $require[1]) ? false : true);
else
$unset = ((local_channel() && feature_enabled(local_channel(),$require)) ? false : true);
if($unset)
@@ -960,7 +961,7 @@ class Apps {
$conf = (($menu === 'nav_featured_app') ? 'app_order' : 'app_pin_order');
- $x = (($uid) ? get_pconfig($uid,'system',$conf) : get_config('system',$conf));
+ $x = (($uid) ? get_pconfig($uid,'system',$conf) : Config::Get('system',$conf));
if(($x) && (! is_array($x))) {
$y = explode(',',$x);
$y = array_map('trim',$y);
diff --git a/Zotlabs/Lib/Cache.php b/Zotlabs/Lib/Cache.php
index f3f520496..4b5beb2aa 100644
--- a/Zotlabs/Lib/Cache.php
+++ b/Zotlabs/Lib/Cache.php
@@ -2,10 +2,11 @@
namespace Zotlabs\Lib;
- /**
- * cache api
- */
+use Zotlabs\Lib\Config;
+/**
+ * cache api
+ */
class Cache {
/**
@@ -23,7 +24,7 @@ class Cache {
$r = q("SELECT v FROM cache WHERE k = '%s' AND updated > %s - INTERVAL %s LIMIT 1",
dbesc($hash),
db_utcnow(),
- db_quoteinterval(($age ? $age : get_config('system','object_cache_days', '30') . ' DAY'))
+ db_quoteinterval(($age ? $age : Config::Get('system','object_cache_days', '30') . ' DAY'))
);
if ($r)
diff --git a/Zotlabs/Lib/Config.php b/Zotlabs/Lib/Config.php
index 95df8ed6f..cd8b08991 100644
--- a/Zotlabs/Lib/Config.php
+++ b/Zotlabs/Lib/Config.php
@@ -115,7 +115,7 @@ class Config {
* The category of the configuration value
* @param string $key
* The configuration key to query
- * @param string $default (optional) default false
+ * @param mixed $default (optional) default false
* @return mixed Return value or false on error or if not set
*/
public static function Get($family, $key, $default = false) {
diff --git a/Zotlabs/Lib/Connect.php b/Zotlabs/Lib/Connect.php
index 4de41526b..b8e7a5c4e 100644
--- a/Zotlabs/Lib/Connect.php
+++ b/Zotlabs/Lib/Connect.php
@@ -5,8 +5,7 @@ namespace Zotlabs\Lib;
use App;
use Zotlabs\Access\Permissions;
use Zotlabs\Daemon\Master;
-
-
+use Zotlabs\Lib\Config;
class Connect {
@@ -96,7 +95,7 @@ class Connect {
$wf = discover_by_webbie($url,$protocol);
if (! $wf) {
- $feeds = get_config('system','feed_contacts');
+ $feeds = Config::Get('system','feed_contacts');
if (($feeds) && (in_array($protocol, [ '', 'feed', 'rss' ]))) {
$d = discover_by_url($url);
diff --git a/Zotlabs/Lib/Crypto.php b/Zotlabs/Lib/Crypto.php
index 188c6bd81..46a25d3b5 100644
--- a/Zotlabs/Lib/Crypto.php
+++ b/Zotlabs/Lib/Crypto.php
@@ -3,6 +3,7 @@
namespace Zotlabs\Lib;
use Exception;
+use Zotlabs\Lib\Config;
class Crypto {
@@ -44,7 +45,7 @@ class Crypto {
'encrypt_key' => false
];
- $conf = get_config('system', 'openssl_conf_file');
+ $conf = Config::Get('system', 'openssl_conf_file');
if ($conf) {
$openssl_options['config'] = $conf;
diff --git a/Zotlabs/Lib/DB_Upgrade.php b/Zotlabs/Lib/DB_Upgrade.php
index b6e3f7b7b..981c354a4 100644
--- a/Zotlabs/Lib/DB_Upgrade.php
+++ b/Zotlabs/Lib/DB_Upgrade.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Lib;
+use Zotlabs\Lib\Config;
class DB_Upgrade {
@@ -13,9 +14,9 @@ class DB_Upgrade {
$this->config_name = 'db_version';
$this->func_prefix = '_';
- $build = get_config('system', 'db_version', 0);
+ $build = Config::Get('system', 'db_version', 0);
if(! intval($build))
- $build = set_config('system', 'db_version', $db_revision);
+ $build = Config::Set('system', 'db_version', $db_revision);
if($build == $db_revision) {
// Nothing to be done.
@@ -27,7 +28,7 @@ class DB_Upgrade {
logger('Critical: check_config unable to determine database schema version');
return;
}
-
+
$current = intval($db_revision);
if($stored < $current) {
@@ -38,7 +39,7 @@ class DB_Upgrade {
for($x = $stored + 1; $x <= $current; $x ++) {
$s = '_' . $x;
$cls = '\\Zotlabs\Update\\' . $s ;
- if(! class_exists($cls)) {
+ if(! class_exists($cls)) {
return;
}
@@ -52,10 +53,10 @@ class DB_Upgrade {
Config::Load('database');
- if(get_config('database', $s))
+ if(Config::Get('database', $s))
break;
- set_config('database',$s, '1');
-
+ Config::Set('database',$s, '1');
+
$c = new $cls();
@@ -65,10 +66,10 @@ class DB_Upgrade {
$source = t('Source code of failed update: ') . "\n\n" . @file_get_contents('Zotlabs/Update/' . $s . '.php');
-
+
// Prevent sending hundreds of thousands of emails by creating
- // a lockfile.
+ // a lockfile.
$lockfile = 'store/[data]/mailsent';
@@ -77,7 +78,7 @@ class DB_Upgrade {
@unlink($lockfile);
//send the administrator an e-mail
file_put_contents($lockfile, $x);
-
+
$r = q("select account_language from account where account_email = '%s' limit 1",
dbesc(\App::$config['system']['admin_email'])
);
@@ -86,7 +87,7 @@ class DB_Upgrade {
[
'toEmail' => \App::$config['system']['admin_email'],
'messageSubject' => sprintf( t('Update Error at %s'), z_root()),
- 'textVersion' => replace_macros(get_intltext_template('update_fail_eml.tpl'),
+ 'textVersion' => replace_macros(get_intltext_template('update_fail_eml.tpl'),
[
'$sitename' => \App::$config['system']['sitename'],
'$siteurl' => z_root(),
@@ -104,11 +105,11 @@ class DB_Upgrade {
pop_lang();
}
else {
- set_config('database',$s, 'success');
+ Config::Set('database',$s, 'success');
}
}
}
- set_config('system', 'db_version', $db_revision);
+ Config::Set('system', 'db_version', $db_revision);
}
}
-} \ No newline at end of file
+}
diff --git a/Zotlabs/Lib/DReport.php b/Zotlabs/Lib/DReport.php
index 71e39a9d7..ac8e0d377 100644
--- a/Zotlabs/Lib/DReport.php
+++ b/Zotlabs/Lib/DReport.php
@@ -1,6 +1,8 @@
<?php
namespace Zotlabs\Lib;
+use Zotlabs\Lib\Config;
+
class DReport {
private $location;
@@ -70,7 +72,7 @@ class DReport {
static function is_storable($dr) {
- if(get_config('system', 'disable_dreport'))
+ if(Config::Get('system', 'disable_dreport'))
return false;
/**
diff --git a/Zotlabs/Lib/Enotify.php b/Zotlabs/Lib/Enotify.php
index 48a255e95..121ad9b09 100644
--- a/Zotlabs/Lib/Enotify.php
+++ b/Zotlabs/Lib/Enotify.php
@@ -6,6 +6,7 @@ namespace Zotlabs\Lib;
* @brief File with functions and a class for generating system and email notifications.
*/
+use Zotlabs\Lib\Config;
class Enotify {
@@ -61,7 +62,7 @@ class Enotify {
$product = t('$projectname'); // PLATFORM_NAME;
$siteurl = z_root();
$thanks = t('Thank You,');
- $sitename = get_config('system','sitename');
+ $sitename = Config::Get('system','sitename');
$site_admin = sprintf( t('%s Administrator'), $sitename);
$opt_out1 = sprintf( t('This email was sent by %1$s at %2$s.'), t('$Projectname'), \App::get_hostname());
$opt_out2 = sprintf( t('To stop receiving these messages, please adjust your Notification Settings at %s'), z_root() . '/settings');
@@ -73,15 +74,15 @@ class Enotify {
// Do not translate 'noreply' as it must be a legal 7-bit email address
- $reply_email = get_config('system', 'reply_address');
+ $reply_email = Config::Get('system', 'reply_address');
if(! $reply_email)
$reply_email = 'noreply' . '@' . $hostname;
- $sender_email = get_config('system', 'from_email');
+ $sender_email = Config::Get('system', 'from_email');
if(! $sender_email)
$sender_email = 'Administrator' . '@' . $hostname;
- $sender_name = get_config('system', 'from_email_name');
+ $sender_name = Config::Get('system', 'from_email_name');
if(! $sender_name)
$sender_name = \Zotlabs\Lib\System::get_site_name();
diff --git a/Zotlabs/Lib/Libsync.php b/Zotlabs/Lib/Libsync.php
index 3130290f7..a7e33ba6b 100644
--- a/Zotlabs/Lib/Libsync.php
+++ b/Zotlabs/Lib/Libsync.php
@@ -5,6 +5,7 @@ namespace Zotlabs\Lib;
use App;
use Zotlabs\Daemon\Master;
+use Zotlabs\Lib\Config;
class Libsync {
@@ -135,7 +136,7 @@ class Libsync {
$info['collection_members'] = $r;
}
- $interval = get_config('queueworker', 'queue_interval', 500000);
+ $interval = Config::Get('queueworker', 'queue_interval', 500000);
logger('Packet: ' . print_r($info, true), LOGGER_DATA, LOG_DEBUG);
@@ -157,7 +158,7 @@ class Libsync {
/*
$x = q("select count(outq_hash) as total from outq where outq_delivered = 0");
- if (intval($x[0]['total']) > intval(get_config('system', 'force_queue_threshold', 3000))) {
+ if (intval($x[0]['total']) > intval(Config::Get('system', 'force_queue_threshold', 3000))) {
logger('immediate delivery deferred.', LOGGER_DEBUG, LOG_INFO);
Queue::update($hash);
continue;
@@ -266,7 +267,7 @@ class Libsync {
}
if ($cat !== 'hz_delpconfig') {
- set_pconfig($channel['channel_id'],$cat,$k,$v,$pconfig_updated[$k]);
+ set_pconfig($channel['channel_id'], $cat, $k, $v, $pconfig_updated[$k]);
}
}
}
diff --git a/Zotlabs/Lib/Libzot.php b/Zotlabs/Lib/Libzot.php
index 3495ede06..bc944c97c 100644
--- a/Zotlabs/Lib/Libzot.php
+++ b/Zotlabs/Lib/Libzot.php
@@ -3,10 +3,11 @@
namespace Zotlabs\Lib;
use App;
-use Zotlabs\Web\HTTPSig;
-use Zotlabs\Access\Permissions;
use Zotlabs\Access\PermissionLimits;
+use Zotlabs\Access\Permissions;
use Zotlabs\Daemon\Master;
+use Zotlabs\Lib\Config;
+use Zotlabs\Web\HTTPSig;
require_once('include/crypto.php');
@@ -101,12 +102,12 @@ class Libzot {
*/
static function build_packet($channel, $type = 'activity', $recipients = null, $msg = [], $encoding = 'activitystreams', $remote_key = null, $methods = '') {
- $sig_method = get_config('system', 'signature_algorithm', 'sha256');
+ $sig_method = Config::Get('system', 'signature_algorithm', 'sha256');
$data = [
'type' => $type,
'encoding' => $encoding,
'sender' => $channel['channel_hash'],
- 'site_id' => self::make_xchan_hash(z_root(), get_config('system', 'pubkey')),
+ 'site_id' => self::make_xchan_hash(z_root(), Config::Get('system', 'pubkey')),
'version' => System::get_zot_revision(),
];
@@ -661,7 +662,7 @@ class Libzot {
*/
call_hooks('import_xchan', $arr);
- $dirmode = intval(get_config('system', 'directory_mode', DIRECTORY_MODE_NORMAL));
+ $dirmode = intval(Config::Get('system', 'directory_mode', DIRECTORY_MODE_NORMAL));
$changed = false;
$what = '';
@@ -710,7 +711,7 @@ class Libzot {
// if we import an entry from a site that's not ours and either or both of us is off the grid - hide the entry.
/** @TODO: check if we're the same directory realm, which would mean we are allowed to see it */
- $dirmode = get_config('system', 'directory_mode');
+ $dirmode = Config::Get('system', 'directory_mode');
if (((isset($arr['site']['directory_mode']) && $arr['site']['directory_mode'] === 'standalone') || ($dirmode & DIRECTORY_MODE_STANDALONE)) && ($arr['site']['url'] != z_root()))
$arr['searchable'] = false;
@@ -1008,7 +1009,7 @@ class Libzot {
logger('Headers: ' . print_r($arr['header'], true), LOGGER_DATA, LOG_DEBUG);
}
- $x = Crypto::unencapsulate($x, get_config('system', 'prvkey'));
+ $x = Crypto::unencapsulate($x, Config::Get('system', 'prvkey'));
if ($x && !is_array($x)) {
$x = json_decode($x, true);
@@ -1416,7 +1417,7 @@ class Libzot {
$include_sys = false;
if ($msg['type'] === 'activity') {
- $disable_discover_tab = get_config('system', 'disable_discover_tab') || get_config('system', 'disable_discover_tab') === false;
+ $disable_discover_tab = Config::Get('system', 'disable_discover_tab') || Config::Get('system', 'disable_discover_tab') === false;
if (!$disable_discover_tab)
$include_sys = true;
@@ -1632,8 +1633,8 @@ class Libzot {
continue;
}
- $incl = get_config('system','pubstream_incl');
- $excl = get_config('system','pubstream_excl');
+ $incl = Config::Get('system','pubstream_incl');
+ $excl = Config::Get('system','pubstream_excl');
if(($incl || $excl) && !MessageFilter::evaluate($arr, $incl, $excl)) {
$local_public = false;
@@ -2568,9 +2569,14 @@ class Libzot {
if (!$observer)
return '';
- $parsed = parse_url($observer['xchan_url']);
+ $url = $observer['xchan_url'];
+ if (preg_match('|^https?://|', $url) === 0) {
+ $url = "https://{$url}";
+ }
+
+ $parsed = parse_url($url);
- return $parsed['scheme'] . '://' . $parsed['host'] . (($parsed['port']) ? ':' . $parsed['port'] : '') . '/rpost?f=';
+ return $parsed['scheme'] . '://' . $parsed['host'] . (isset($parsed['port']) ? ':' . $parsed['port'] : '') . '/rpost?f=';
}
/**
@@ -2924,8 +2930,8 @@ class Libzot {
*/
static function site_info() {
- $signing_key = get_config('system', 'prvkey');
- $sig_method = get_config('system', 'signature_algorithm', 'sha256');
+ $signing_key = Config::Get('system', 'prvkey');
+ $sig_method = Config::Get('system', 'signature_algorithm', 'sha256');
$ret = [];
$ret['site'] = [];
@@ -2934,10 +2940,10 @@ class Libzot {
$ret['site']['post'] = z_root() . '/zot';
$ret['site']['openWebAuth'] = z_root() . '/owa';
$ret['site']['authRedirect'] = z_root() . '/magic';
- $ret['site']['sitekey'] = get_config('system', 'pubkey');
+ $ret['site']['sitekey'] = Config::Get('system', 'pubkey');
$ret['site']['directory_mode'] = 'normal';
- $dirmode = get_config('system', 'directory_mode');
+ $dirmode = Config::Get('system', 'directory_mode');
if ($dirmode == DIRECTORY_MODE_PRIMARY)
$ret['site']['directory_mode'] = 'primary';
@@ -2956,7 +2962,7 @@ class Libzot {
if ($dirmode != DIRECTORY_MODE_STANDALONE) {
- $register_policy = intval(get_config('system', 'register_policy'));
+ $register_policy = intval(Config::Get('system', 'register_policy'));
if ($register_policy == REGISTER_CLOSED)
$ret['site']['register_policy'] = 'closed';
@@ -2966,7 +2972,7 @@ class Libzot {
$ret['site']['register_policy'] = 'open';
- $access_policy = intval(get_config('system', 'access_policy'));
+ $access_policy = intval(Config::Get('system', 'access_policy'));
if ($access_policy == ACCESS_PRIVATE)
$ret['site']['access_policy'] = 'private';
@@ -2982,7 +2988,7 @@ class Libzot {
require_once('include/channel.php');
$ret['site']['channels'] = channel_total();
- $ret['site']['admin'] = get_config('system', 'admin_email');
+ $ret['site']['admin'] = Config::Get('system', 'admin_email');
$visible_plugins = [];
if (is_array(App::$plugins) && count(App::$plugins)) {
@@ -2993,10 +2999,10 @@ class Libzot {
}
$ret['site']['plugins'] = $visible_plugins;
- $ret['site']['sitehash'] = get_config('system', 'location_hash');
- $ret['site']['sitename'] = get_config('system', 'sitename');
- $ret['site']['sellpage'] = get_config('system', 'sellpage');
- $ret['site']['location'] = get_config('system', 'site_location');
+ $ret['site']['sitehash'] = Config::Get('system', 'location_hash');
+ $ret['site']['sitename'] = Config::Get('system', 'sitename');
+ $ret['site']['sellpage'] = Config::Get('system', 'sellpage');
+ $ret['site']['location'] = Config::Get('system', 'site_location');
$ret['site']['realm'] = get_directory_realm();
$ret['site']['project'] = System::get_platform_name();
$ret['site']['version'] = System::get_project_version();
diff --git a/Zotlabs/Lib/Libzotdir.php b/Zotlabs/Lib/Libzotdir.php
index ca3902a9e..25f308fc2 100644
--- a/Zotlabs/Lib/Libzotdir.php
+++ b/Zotlabs/Lib/Libzotdir.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Lib;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libzot;
use Zotlabs\Lib\Zotfinger;
use Zotlabs\Lib\Webfinger;
@@ -20,7 +21,7 @@ class Libzotdir {
static function find_upstream_directory($dirmode) {
- $preferred = get_config('system','directory_server');
+ $preferred = Config::Get('system','directory_server');
// Thwart attempts to use a private directory
@@ -47,17 +48,17 @@ class Libzotdir {
$directory_fallback_servers = get_directory_fallback_servers();
- $dirmode = intval(get_config('system','directory_mode'));
+ $dirmode = intval(Config::Get('system','directory_mode'));
if ($dirmode == DIRECTORY_MODE_NORMAL) {
$toss = mt_rand(0,count($directory_fallback_servers));
$preferred = $directory_fallback_servers[$toss];
if(! $preferred) {
$preferred = DIRECTORY_FALLBACK_MASTER;
}
- set_config('system','directory_server',$preferred);
+ Config::Set('system','directory_server',$preferred);
}
else {
- set_config('system','directory_server',z_root());
+ Config::Set('system','directory_server',z_root());
}
}
if($preferred) {
@@ -77,7 +78,7 @@ class Libzotdir {
static function check_upstream_directory() {
- $directory = get_config('system', 'directory_server');
+ $directory = Config::Get('system', 'directory_server');
// it's possible there is no directory server configured and the local hub is being used.
// If so, default to preserving the absence of a specific server setting.
@@ -94,7 +95,7 @@ class Libzotdir {
}
if (! $isadir)
- set_config('system', 'directory_server', '');
+ Config::Set('system', 'directory_server', '');
}
@@ -106,7 +107,7 @@ class Libzotdir {
$ret = ((array_key_exists($setting,$_SESSION)) ? intval($_SESSION[$setting]) : false);
if($ret === false)
- $ret = get_config('directory', $setting);
+ $ret = Config::Get('directory', $setting);
// 'safemode' is the default if there is no observer or no established preference.
@@ -114,7 +115,7 @@ class Libzotdir {
if($setting === 'safemode' && $ret === false)
$ret = 1;
- if($setting === 'globaldir' && intval(get_config('system','localdir_hide')))
+ if($setting === 'globaldir' && intval(Config::Get('system','localdir_hide')))
$ret = 1;
return $ret;
@@ -133,7 +134,7 @@ class Libzotdir {
$globaldir = self::get_directory_setting($observer, 'globaldir');
$pubforums = self::get_directory_setting($observer, 'pubforums');
- $hide_local = intval(get_config('system','localdir_hide'));
+ $hide_local = intval(Config::Get('system','localdir_hide'));
if($hide_local)
$globaldir = 1;
@@ -141,7 +142,7 @@ class Libzotdir {
// Build urls without order and pubforums so it's easy to tack on the changed value
// Probably there's an easier way to do this
- $directory_sort_order = get_config('system','directory_sort_order');
+ $directory_sort_order = Config::Get('system','directory_sort_order');
if(! $directory_sort_order)
$directory_sort_order = 'date';
@@ -232,7 +233,7 @@ class Libzotdir {
if (! $r)
return;
- $dir_trusted_hosts = array_merge(get_directory_fallback_servers(), get_config('system', 'trusted_directory_servers', []));
+ $dir_trusted_hosts = array_merge(get_directory_fallback_servers(), Config::Get('system', 'trusted_directory_servers', []));
foreach ($r as $rr) {
if (! $rr['site_directory'])
@@ -244,7 +245,7 @@ class Libzotdir {
// It will take about a month for a new directory to obtain the full current repertoire of channels.
/** @FIXME Go back and pick up earlier ratings if this is a new directory server. These do not get refreshed. */
- $token = get_config('system','realm_token');
+ $token = Config::Get('system','realm_token');
$syncdate = (($rr['site_sync'] <= NULL_DATE) ? datetime_convert('UTC','UTC','now - 2 days') : $rr['site_sync']);
$x = z_fetch_url($rr['site_directory'] . '?f=&sync=' . urlencode($syncdate) . (($token) ? '&t=' . $token : ''));
@@ -696,7 +697,7 @@ class Libzotdir {
static function update($hash, $addr, $bump_date = true, $flag = null) {
- $dirmode = intval(get_config('system', 'directory_mode'));
+ $dirmode = intval(Config::Get('system', 'directory_mode'));
if($dirmode == DIRECTORY_MODE_NORMAL) {
return;
diff --git a/Zotlabs/Lib/QueueWorker.php b/Zotlabs/Lib/QueueWorker.php
index 68e747b0f..24114438e 100644
--- a/Zotlabs/Lib/QueueWorker.php
+++ b/Zotlabs/Lib/QueueWorker.php
@@ -4,6 +4,9 @@ namespace Zotlabs\Lib;
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnableToBuildUuidException;
+use Zotlabs\Lib\Config;
+
+require_once 'include/dba/dba_transaction.php';
class QueueWorker {
@@ -28,18 +31,6 @@ class QueueWorker {
'Expire'
];
- private static function qstart() {
- q('START TRANSACTION');
- }
-
- private static function qcommit() {
- q("COMMIT");
- }
-
- private static function qrollback() {
- q("ROLLBACK");
- }
-
public static function Summon($argv) {
if ($argv[0] !== 'Queueworker') {
@@ -65,7 +56,7 @@ class QueueWorker {
logger('queueworker_stats_summon: cmd:' . $argv[0] . ' ' . 'timestamp:' . time());
- self::qstart();
+ $transaction = new \DbaTransaction(\DBA::$dba);
$r = q("INSERT INTO workerq (workerq_priority, workerq_data, workerq_uuid, workerq_cmd) VALUES (%d, '%s', '%s', '%s')",
intval($priority),
$workinfo_json,
@@ -73,18 +64,18 @@ class QueueWorker {
dbesc($argv[0])
);
if (!$r) {
- self::qrollback();
+ // Transaction is autmatically rolled back on return
logger("INSERT FAILED", LOGGER_DEBUG);
return;
}
- self::qcommit();
+ $transaction->commit();
logger('INSERTED: ' . $workinfo_json, LOGGER_DEBUG);
}
$workers = self::GetWorkerCount();
if ($workers < self::$maxworkers) {
logger($workers . '/' . self::$maxworkers . ' workers active', LOGGER_DEBUG);
- $phpbin = get_config('system', 'phpbin', 'php');
+ $phpbin = Config::Get('system', 'phpbin', 'php');
proc_run($phpbin, 'Zotlabs/Daemon/Master.php', ['Queueworker']);
}
}
@@ -111,7 +102,7 @@ class QueueWorker {
return;
}
- self::qstart();
+ $transaction = new \DbaTransaction(\DBA::$dba);
$r = q("INSERT INTO workerq (workerq_priority, workerq_data, workerq_uuid, workerq_cmd) VALUES (%d, '%s', '%s', '%s')",
intval($priority),
$workinfo_json,
@@ -119,11 +110,11 @@ class QueueWorker {
dbesc($argv[0])
);
if (!$r) {
- self::qrollback();
+ // Transaction is automatically rolled back on return
logger("Insert failed: " . $workinfo_json, LOGGER_DEBUG);
return;
}
- self::qcommit();
+ $transaction->commit();
logger('INSERTED: ' . $workinfo_json, LOGGER_DEBUG);
}
@@ -132,18 +123,18 @@ class QueueWorker {
public static function GetWorkerCount() {
if (self::$maxworkers == 0) {
- self::$maxworkers = get_config('queueworker', 'max_queueworkers', 4);
+ self::$maxworkers = Config::Get('queueworker', 'max_queueworkers', 4);
self::$maxworkers = self::$maxworkers > 3 ? self::$maxworkers : 4;
}
if (self::$workermaxage == 0) {
- self::$workermaxage = get_config('queueworker', 'max_queueworker_age');
+ self::$workermaxage = Config::Get('queueworker', 'max_queueworker_age');
self::$workermaxage = self::$workermaxage > 120 ? self::$workermaxage : 300;
}
- self::qstart();
+ $transaction = new \DbaTransaction(\DBA::$dba);
// skip locked is preferred but is not supported by mariadb < 10.6 which is still used a lot - hence make it optional
- $sql_quirks = ((get_config('system', 'db_skip_locked_supported')) ? 'SKIP LOCKED' : 'NOWAIT');
+ $sql_quirks = ((Config::Get('system', 'db_skip_locked_supported')) ? 'SKIP LOCKED' : 'NOWAIT');
$r = q("SELECT workerq_id FROM workerq WHERE workerq_reservationid IS NOT NULL AND workerq_processtimeout < %s FOR UPDATE $sql_quirks",
db_utcnow()
@@ -158,7 +149,7 @@ class QueueWorker {
$u = dbq("update workerq set workerq_reservationid = null where workerq_id in ($ids)");
}
- self::qcommit();
+ $transaction->commit();
//q("update workerq set workerq_reservationid = null where workerq_reservationid is not null and workerq_processtimeout < %s",
//db_utcnow()
@@ -196,15 +187,15 @@ class QueueWorker {
private static function getWorkId() {
self::GetWorkerCount();
- self::qstart();
+ $transaction = new \DbaTransaction(\DBA::$dba);
// skip locked is preferred but is not supported by mariadb < 10.6 which is still used a lot - hence make it optional
- $sql_quirks = ((get_config('system', 'db_skip_locked_supported')) ? 'SKIP LOCKED' : 'NOWAIT');
+ $sql_quirks = ((Config::Get('system', 'db_skip_locked_supported')) ? 'SKIP LOCKED' : 'NOWAIT');
$work = dbq("SELECT workerq_id, workerq_cmd FROM workerq WHERE workerq_reservationid IS NULL ORDER BY workerq_priority DESC, workerq_id ASC LIMIT 1 FOR UPDATE $sql_quirks");
if (!$work) {
- self::qrollback();
+ // Transaction automatically rolled back on return
return false;
}
@@ -224,24 +215,24 @@ class QueueWorker {
);
if (!$work) {
- self::qrollback();
+ // Transaction automatically rolled back on return
logger("Could not update workerq.", LOGGER_DEBUG);
return false;
}
logger("GOTWORK: " . json_encode($work), LOGGER_DEBUG);
- self::qcommit();
+ $transaction->commit();
return $id;
}
public static function Process() {
- $sleep = intval(get_config('queueworker', 'queue_worker_sleep', 100));
- $auto_queue_worker_sleep = get_config('queueworker', 'auto_queue_worker_sleep', 0);
+ $sleep = intval(Config::Get('queueworker', 'queue_worker_sleep', 100));
+ $auto_queue_worker_sleep = Config::Get('queueworker', 'auto_queue_worker_sleep', 0);
if (!self::GetWorkerID()) {
if ($auto_queue_worker_sleep) {
- set_config('queueworker', 'queue_worker_sleep', $sleep + 100);
+ Config::Set('queueworker', 'queue_worker_sleep', $sleep + 100);
}
logger('Unable to get worker ID. Exiting.', LOGGER_DEBUG);
@@ -250,7 +241,7 @@ class QueueWorker {
if ($auto_queue_worker_sleep && $sleep > 100) {
$next_sleep = $sleep - 100;
- set_config('queueworker', 'queue_worker_sleep', (($next_sleep < 100) ? 100 : $next_sleep));
+ Config::Set('queueworker', 'queue_worker_sleep', (($next_sleep < 100) ? 100 : $next_sleep));
}
$jobs = 0;
@@ -259,7 +250,7 @@ class QueueWorker {
self::$workersleep = $sleep;
self::$workersleep = ((intval(self::$workersleep) > 100) ? intval(self::$workersleep) : 100);
- if (function_exists('sys_getloadavg') && get_config('queueworker', 'load_average_sleep')) {
+ if (function_exists('sys_getloadavg') && Config::Get('queueworker', 'load_average_sleep')) {
// very experimental!
$load_average_sleep = true;
}
@@ -287,7 +278,7 @@ class QueueWorker {
if ($workers < self::$maxworkers) {
logger($workers . '/' . self::$maxworkers . ' workers active', LOGGER_DEBUG);
- $phpbin = get_config('system', 'phpbin', 'php');
+ $phpbin = Config::Get('system', 'phpbin', 'php');
proc_run($phpbin, 'Zotlabs/Daemon/Master.php', ['Queueworker']);
}
diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php
index 8f364e945..1082bf642 100644
--- a/Zotlabs/Lib/ThreadItem.php
+++ b/Zotlabs/Lib/ThreadItem.php
@@ -3,8 +3,9 @@
namespace Zotlabs\Lib;
use App;
-use Zotlabs\Lib\Apps;
use Zotlabs\Access\AccessList;
+use Zotlabs\Lib\Apps;
+use Zotlabs\Lib\Config;
require_once('include/text.php');
@@ -41,9 +42,7 @@ class ThreadItem {
$this->data = $data;
$this->toplevel = ($this->get_id() == $this->get_data_value('parent'));
- $this->threaded = get_config('system','thread_allow');
-
- $observer = \App::get_observer();
+ $this->threaded = Config::Get('system','thread_allow');
// Prepare the children
if(isset($data['children'])) {
@@ -70,7 +69,7 @@ class ThreadItem {
// allow a site to configure the order and content of the reaction emoji list
if($this->toplevel) {
- $x = get_config('system','reactions');
+ $x = Config::Get('system','reactions');
if($x && is_array($x) && count($x)) {
$this->reactions = $x;
}
@@ -347,12 +346,12 @@ class ThreadItem {
$dreport = '';
- $keep_reports = intval(get_config('system','expire_delivery_reports'));
+ $keep_reports = intval(Config::Get('system','expire_delivery_reports'));
if($keep_reports === 0)
$keep_reports = 10;
$dreport_link = '';
- if((intval($item['item_type']) == ITEM_TYPE_POST) && (! get_config('system','disable_dreport')) && strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC',"now - $keep_reports days")) > 0) {
+ if((intval($item['item_type']) == ITEM_TYPE_POST) && (! Config::Get('system','disable_dreport')) && strcmp(datetime_convert('UTC','UTC',$item['created']),datetime_convert('UTC','UTC',"now - $keep_reports days")) > 0) {
$dreport = t('Delivery Report');
$dreport_link = '?mid=' . $item['mid'];
}
@@ -363,7 +362,8 @@ class ThreadItem {
localize_item($item);
- $body = prepare_body($item,true);
+ $opts = (($item['resource_type'] === 'event') ? ['is_event_item' => true] : []);
+ $body = prepare_body($item, true, $opts);
// $viewthread (below) is only valid in list mode. If this is a channel page, build the thread viewing link
// since we can't depend on llink or plink pointing to the right local location.
@@ -397,7 +397,7 @@ class ThreadItem {
$json_mids = json_encode($mids);
// Pinned item processing
- $allowed_type = (in_array($item['item_type'], get_config('system', 'pin_types', [ ITEM_TYPE_POST ])) ? true : false);
+ $allowed_type = (in_array($item['item_type'], Config::Get('system', 'pin_types', [ ITEM_TYPE_POST ])) ? true : false);
$pinned_items = ($allowed_type ? get_pconfig($item['uid'], 'pinned', $item['item_type'], []) : []);
$pinned = ((!empty($pinned_items) && in_array($midb64, $pinned_items)) ? true : false);
@@ -549,7 +549,7 @@ class ThreadItem {
$result['children'] = array();
$nb_children = count($children);
- $visible_comments = get_config('system','expanded_comments');
+ $visible_comments = Config::Get('system','expanded_comments');
if($visible_comments === false)
$visible_comments = 3;
@@ -826,7 +826,7 @@ class ThreadItem {
*/
private function get_comment_box() {
- if(!$this->is_toplevel() && !get_config('system','thread_allow')) {
+ if(!$this->is_toplevel() && !Config::Get('system','thread_allow')) {
return '';
}
@@ -874,7 +874,7 @@ class ThreadItem {
'$feature_encrypt' => ((feature_enabled($conv->get_profile_owner(),'content_encrypt')) ? true : false),
'$encrypt' => t('Encrypt text'),
'$cipher' => $conv->get_cipher(),
- '$sourceapp' => \App::$sourcename,
+ '$sourceapp' => App::$sourcename,
'$observer' => get_observer_hash(),
'$anoncomments' => ((in_array($conv->get_mode(), ['channel', 'display', 'cards', 'articles']) && perm_is_allowed($conv->get_profile_owner(),'','post_comments')) ? true : false),
'$anonname' => [ 'anonname', t('Your full name (required)') ],
diff --git a/Zotlabs/Lib/Traits/HelpHelperTrait.php b/Zotlabs/Lib/Traits/HelpHelperTrait.php
new file mode 100644
index 000000000..b7711bbd5
--- /dev/null
+++ b/Zotlabs/Lib/Traits/HelpHelperTrait.php
@@ -0,0 +1,68 @@
+<?php
+
+namespace Zotlabs\Lib\Traits;
+
+use CommerceGuys\Intl\Language\LanguageRepository;
+
+trait HelpHelperTrait {
+
+ // PHP versions before 8.2 does not support trait constants,
+ // Leave this commented out until we drop support for PHP 8.1.
+ //
+ // const VALID_FILE_EXT = ['md', 'bb', 'html'];
+
+ private string $file_name = '';
+ private string $file_type = '';
+
+ /**
+ * Determines help language.
+ *
+ * If the language was specified in the URL, override the language preference
+ * of the browser. Default to English if both of these are absent.
+ *
+ * Updates the `$lang` property of the module.
+ */
+ private function determine_help_language() {
+
+ $language_repository = new LanguageRepository;
+ $languages = $language_repository->getList();
+
+ if(array_key_exists(argv(1), $languages)) {
+ $lang = argv(1);
+ $from_url = true;
+ } else {
+ $lang = \App::$language;
+ if(! isset($lang))
+ $lang = 'en';
+
+ $from_url = false;
+ }
+
+ $this->lang = array('language' => $lang, 'from_url' => $from_url);
+ }
+
+ /**
+ * Find the full path name of the file, given it's base path and
+ * the language of the request.
+ *
+ * @param string $base_path The path of the file to find, relative to the
+ * doc root path, and without the extension.
+ */
+ private function find_help_file(string $base_path, string $lang): void {
+
+ // Use local variable until we can use trait constants.
+ $valid_file_ext = ['md', 'bb', 'html'];
+
+ $base_path = "doc/{$lang}/${base_path}";
+
+ foreach ($valid_file_ext as $ext) {
+ $path = "{$base_path}.{$ext}";
+ if (file_exists($path)) {
+ $this->file_name = $path;
+ $this->file_type = $ext;
+
+ break;
+ }
+ }
+ }
+}
diff --git a/Zotlabs/Lib/Zotfinger.php b/Zotlabs/Lib/Zotfinger.php
index ccf64d6d1..2a16fc8cf 100644
--- a/Zotlabs/Lib/Zotfinger.php
+++ b/Zotlabs/Lib/Zotfinger.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Lib;
+use Zotlabs\Lib\Config;
use Zotlabs\Web\HTTPSig;
class Zotfinger {
@@ -75,7 +76,7 @@ class Zotfinger {
$result['data'] = json_decode($x['body'],true);
if($result['data'] && is_array($result['data']) && array_key_exists('encrypted',$result['data']) && $result['data']['encrypted']) {
- $result['data'] = json_decode(Crypto::unencapsulate($result['data'],get_config('system','prvkey')),true);
+ $result['data'] = json_decode(Crypto::unencapsulate($result['data'],Config::Get('system','prvkey')),true);
}
logger('decrypted: ' . print_r($result,true), LOGGER_DATA);
diff --git a/Zotlabs/Module/Acl.php b/Zotlabs/Module/Acl.php
index b98f5621e..1de7a3d02 100644
--- a/Zotlabs/Module/Acl.php
+++ b/Zotlabs/Module/Acl.php
@@ -2,8 +2,9 @@
namespace Zotlabs\Module;
-use Zotlabs\Lib\Libzotdir;
use Zotlabs\Lib\AccessList;
+use Zotlabs\Lib\Config;
+use Zotlabs\Lib\Libzotdir;
require_once 'include/acl_selectors.php';
@@ -414,7 +415,7 @@ class Acl extends \Zotlabs\Web\Controller {
return;
}
- $dirmode = intval(get_config('system','directory_mode'));
+ $dirmode = intval(Config::Get('system','directory_mode'));
$search = ((x($_REQUEST,'search')) ? htmlentities($_REQUEST['search'],ENT_COMPAT,'UTF-8',false) : '');
if(! $search || mb_strlen($search) < 2)
return array();
@@ -443,7 +444,7 @@ class Acl extends \Zotlabs\Web\Controller {
$url = $directory['url'] . '/dirsearch';
}
- $token = get_config('system','realm_token');
+ $token = Config::Get('system','realm_token');
$count = (x($_REQUEST,'count') ? $_REQUEST['count'] : 100);
if($url) {
diff --git a/Zotlabs/Module/Admin.php b/Zotlabs/Module/Admin.php
index 59a9e22b2..89eaeccfe 100644
--- a/Zotlabs/Module/Admin.php
+++ b/Zotlabs/Module/Admin.php
@@ -8,6 +8,8 @@
namespace Zotlabs\Module;
+use Zotlabs\Lib\Config;
+
require_once('include/account.php');
/**
@@ -149,7 +151,7 @@ class Admin extends \Zotlabs\Web\Controller {
'$vmaster' => array( t('Repository version (master)'), $vmaster),
'$vdev' => array( t('Repository version (dev)'), $vdev),
'$upgrade' => $upgrade,
- '$build' => get_config('system', 'db_version')
+ '$build' => Config::Get('system', 'db_version')
));
}
diff --git a/Zotlabs/Module/Admin/Accounts.php b/Zotlabs/Module/Admin/Accounts.php
index b067b4bf6..6f7cb0311 100644
--- a/Zotlabs/Module/Admin/Accounts.php
+++ b/Zotlabs/Module/Admin/Accounts.php
@@ -2,7 +2,7 @@
namespace Zotlabs\Module\Admin;
-
+use Zotlabs\Lib\Config;
class Accounts {
@@ -76,7 +76,7 @@ class Accounts {
if ( $ac['success'] ) {
$rc .= '✔';
- $auto_create = get_config('system','auto_channel_create',1);
+ $auto_create = Config::Get('system','auto_channel_create',1);
if($auto_create) {
$reonar = json_decode($rs[0]['reg_stuff'], true);
@@ -87,7 +87,7 @@ class Accounts {
if($reonar['chan.did1'])
set_aconfig($ac['account']['account_id'], 'register', 'channel_address', $reonar['chan.did1']);
- $permissions_role = get_config('system','default_permissions_role');
+ $permissions_role = Config::Get('system','default_permissions_role');
if($permissions_role)
set_aconfig($ac['account']['account_id'], 'register', 'permissions_role', $permissions_role);
diff --git a/Zotlabs/Module/Admin/Addons.php b/Zotlabs/Module/Admin/Addons.php
index e088353e3..b7cfb651c 100644
--- a/Zotlabs/Module/Admin/Addons.php
+++ b/Zotlabs/Module/Admin/Addons.php
@@ -3,6 +3,7 @@
namespace Zotlabs\Module\Admin;
use App;
+use \Zotlabs\Lib\Config;
use \Zotlabs\Storage\GitRepo;
use \Michelf\MarkdownExtra;
@@ -276,7 +277,7 @@ class Addons {
if ($idz !== false) {
unset(App::$plugins[$idz]);
uninstall_plugin($plugin);
- set_config("system","addon", implode(", ",App::$plugins));
+ Config::Set("system","addon", implode(", ",App::$plugins));
}
}
$info['disabled'] = 1-intval($x);
@@ -297,7 +298,7 @@ class Addons {
$pinstalled = true;
info( sprintf( t("Plugin %s enabled."), $plugin ) );
}
- set_config("system","addon", implode(", ",App::$plugins));
+ Config::Set("system","addon", implode(", ",App::$plugins));
if($pinstalled) {
@require_once("addon/$plugin/$plugin.php");
@@ -395,7 +396,7 @@ class Addons {
if ($idz !== false) {
unset(App::$plugins[$idz]);
uninstall_plugin($id);
- set_config("system","addon", implode(", ",App::$plugins));
+ Config::Set("system","addon", implode(", ",App::$plugins));
}
}
$info['disabled'] = 1-intval($x);
diff --git a/Zotlabs/Module/Admin/Channels.php b/Zotlabs/Module/Admin/Channels.php
index c6b7ad17a..52b661420 100644
--- a/Zotlabs/Module/Admin/Channels.php
+++ b/Zotlabs/Module/Admin/Channels.php
@@ -14,7 +14,7 @@ class Channels {
*/
function post() {
- $channels = ( x($_POST, 'channel') ? $_POST['channel'] : Array() );
+ $channels = (x($_POST, 'channel') ? $_POST['channel'] : []);
check_form_security_token_redirectOnErr('/admin/channels', 'admin_channels');
@@ -22,11 +22,28 @@ class Channels {
if(x($_POST, 'page_channels_block')) {
foreach($channels as $uid) {
- q("UPDATE channel SET channel_pageflags = ( channel_pageflags $xor %d ) where channel_id = %d",
- intval(PAGE_CENSORED),
- intval( $uid )
+ $channel = channelx_by_n($uid);
+
+ if (!$channel) {
+ notice( t('Channel not found') . EOL);
+ continue;
+ }
+
+ $pflags = $channel['channel_pageflags'] ^ PAGE_CENSORED;
+
+ q("UPDATE channel SET channel_pageflags = %d where channel_id = %d",
+ intval($pflags),
+ intval($uid)
);
+
\Zotlabs\Daemon\Master::Summon(array('Directory', $uid, 'nopush'));
+
+ $censored = (($pflags & PAGE_CENSORED) ? 1 : 0);
+
+ q("UPDATE xchan SET xchan_censored = %d WHERE xchan_hash = '%s'",
+ intval($censored),
+ dbesc($channel['channel_hash'])
+ );
}
notice( sprintf( tt("%s channel censored/uncensored", "%s channels censored/uncensored", count($channels)), count($channels)) );
}
@@ -57,11 +74,9 @@ class Channels {
function get() {
if(argc() > 2) {
$uid = argv(3);
- $channel = q("SELECT * FROM channel WHERE channel_id = %d",
- intval($uid)
- );
+ $channel = channelx_by_n($uid);
- if(! $channel) {
+ if(!$channel) {
notice( t('Channel not found') . EOL);
goaway(z_root() . '/admin/channels' );
}
@@ -72,30 +87,37 @@ class Channels {
// delete channel
channel_remove($uid,true);
- notice( sprintf(t("Channel '%s' deleted"), $channel[0]['channel_name']) . EOL);
+ notice( sprintf(t("Channel '%s' deleted"), $channel['channel_name']) . EOL);
}; break;
case "block":{
check_form_security_token_redirectOnErr('/admin/channels', 'admin_channels', 't');
- $pflags = $channel[0]['channel_pageflags'] ^ PAGE_CENSORED;
+ $pflags = $channel['channel_pageflags'] ^ PAGE_CENSORED;
q("UPDATE channel SET channel_pageflags = %d where channel_id = %d",
intval($pflags),
- intval( $uid )
+ intval($uid)
);
\Zotlabs\Daemon\Master::Summon(array('Directory',$uid,'nopush'));
- notice( sprintf( (($pflags & PAGE_CENSORED) ? t("Channel '%s' censored"): t("Channel '%s' uncensored")) , $channel[0]['channel_name'] . ' (' . $channel[0]['channel_address'] . ')' ) . EOL);
+ $censored = (($pflags & PAGE_CENSORED) ? 1 : 0);
+
+ q("UPDATE xchan SET xchan_censored = %d WHERE xchan_hash = '%s'",
+ intval($censored),
+ dbesc($channel['channel_hash'])
+ );
+
+ notice( sprintf( (($censored) ? t("Channel '%s' censored"): t("Channel '%s' uncensored")) , $channel['channel_name'] . ' (' . $channel['channel_address'] . ')' ) . EOL);
}; break;
case "code":{
check_form_security_token_redirectOnErr('/admin/channels', 'admin_channels', 't');
- $pflags = $channel[0]['channel_pageflags'] ^ PAGE_ALLOWCODE;
+ $pflags = $channel['channel_pageflags'] ^ PAGE_ALLOWCODE;
q("UPDATE channel SET channel_pageflags = %d where channel_id = %d",
intval($pflags),
- intval( $uid )
+ intval($uid)
);
- notice( sprintf( (($pflags & PAGE_ALLOWCODE) ? t("Channel '%s' code allowed"): t("Channel '%s' code disallowed")) , $channel[0]['channel_name'] . ' (' . $channel[0]['channel_address'] . ')' ) . EOL);
+ notice( sprintf( (($pflags & PAGE_ALLOWCODE) ? t("Channel '%s' code allowed"): t("Channel '%s' code disallowed")) , $channel['channel_name'] . ' (' . $channel['channel_address'] . ')' ) . EOL);
}; break;
default:
diff --git a/Zotlabs/Module/Admin/Dbsync.php b/Zotlabs/Module/Admin/Dbsync.php
index b68e7bbc2..9f202993d 100644
--- a/Zotlabs/Module/Admin/Dbsync.php
+++ b/Zotlabs/Module/Admin/Dbsync.php
@@ -2,7 +2,7 @@
namespace Zotlabs\Module\Admin;
-
+use Zotlabs\Lib\Config;
class Dbsync {
@@ -12,10 +12,10 @@ class Dbsync {
if(argc() > 3 && intval(argv(3)) && argv(2) === 'mark') {
// remove the old style config if it exists
- del_config('database', 'update_r' . intval(argv(3)));
- set_config('database', '_' . intval(argv(3)), 'success');
- if(intval(get_config('system','db_version')) < intval(argv(3)))
- set_config('system','db_version',intval(argv(3)));
+ Config::Delete('database', 'update_r' . intval(argv(3)));
+ Config::Set('database', '_' . intval(argv(3)), 'success');
+ if(intval(Config::Get('system','db_version')) < intval(argv(3)))
+ Config::Set('system','db_version',intval(argv(3)));
info( t('Update has been marked successful') . EOL);
goaway(z_root() . '/admin/dbsync');
}
@@ -33,7 +33,7 @@ class Dbsync {
}
elseif($retval === UPDATE_SUCCESS) {
$o .= sprintf( t('Update %s was successfully applied.'), $s);
- set_config('database',$s, 'success');
+ Config::Set('database',$s, 'success');
}
else
$o .= sprintf( t('Verifying update %s did not return a status. Unknown if it succeeded.'), $s);
@@ -60,7 +60,7 @@ class Dbsync {
}
elseif($retval === UPDATE_SUCCESS) {
$o .= sprintf( t('Update %s was successfully applied.'), $s);
- set_config('database',$s, 'success');
+ Config::Set('database',$s, 'success');
}
else
$o .= sprintf( t('Update %s did not return a status. It cannot be determined if it was successful.'), $s);
diff --git a/Zotlabs/Module/Admin/Features.php b/Zotlabs/Module/Admin/Features.php
index 504caae79..e0b3a3fd4 100644
--- a/Zotlabs/Module/Admin/Features.php
+++ b/Zotlabs/Module/Admin/Features.php
@@ -2,53 +2,53 @@
namespace Zotlabs\Module\Admin;
-
+use Zotlabs\Lib\Config;
class Features {
-
+
function post() {
-
+
check_form_security_token_redirectOnErr('/admin/features', 'admin_manage_features');
-
+
logger('postvars: ' . print_r($_POST,true));
-
+
$arr = array();
$features = get_features(false);
-
+
foreach($features as $fname => $fdata) {
foreach(array_slice($fdata,1) as $f) {
$feature = $f[0];
-
+
if(array_key_exists('feature_' . $feature,$_POST))
$val = intval($_POST['feature_' . $feature]);
else
$val = 0;
- set_config('feature',$feature,$val);
-
+ Config::Set('feature',$feature,$val);
+
if(array_key_exists('featurelock_' . $feature,$_POST))
- set_config('feature_lock',$feature,$val);
+ Config::Set('feature_lock',$feature,$val);
else
- del_config('feature_lock',$feature);
+ Config::Delete('feature_lock',$feature);
}
}
-
+
goaway(z_root() . '/admin/features' );
-
+
}
-
+
function get() {
-
+
if((argc() > 1) && (argv(1) === 'features')) {
$arr = array();
$features = get_features(false);
-
+
foreach($features as $fname => $fdata) {
$arr[$fname] = array();
$arr[$fname][0] = $fdata[0];
foreach(array_slice($fdata,1) as $f) {
-
- $set = get_config('feature',$f[0]);
+
+ $set = Config::Get('feature',$f[0]);
if($set === false)
$set = $f[3];
$arr[$fname][1][] = array(
@@ -57,7 +57,7 @@ class Features {
);
}
}
-
+
$tpl = get_markup_template("admin_settings_features.tpl");
$o .= replace_macros($tpl, array(
'$form_security_token' => get_form_security_token("admin_manage_features"),
@@ -65,10 +65,10 @@ class Features {
'$features' => $arr,
'$submit' => t('Submit'),
));
-
+
return $o;
}
}
-
-} \ No newline at end of file
+
+}
diff --git a/Zotlabs/Module/Admin/Logs.php b/Zotlabs/Module/Admin/Logs.php
index c83fc6a9a..73c890e26 100644
--- a/Zotlabs/Module/Admin/Logs.php
+++ b/Zotlabs/Module/Admin/Logs.php
@@ -2,11 +2,12 @@
namespace Zotlabs\Module\Admin;
+use Zotlabs\Lib\Config;
class Logs {
-
+
/**
* @brief POST handler for logs admin page.
*
@@ -15,20 +16,20 @@ class Logs {
function post() {
if (x($_POST, 'page_logs')) {
check_form_security_token_redirectOnErr('/admin/logs', 'admin_logs');
-
+
$logfile = ((x($_POST,'logfile')) ? notags(trim($_POST['logfile'])) : '');
$debugging = ((x($_POST,'debugging')) ? true : false);
$loglevel = ((x($_POST,'loglevel')) ? intval(trim($_POST['loglevel'])) : 0);
-
- set_config('system','logfile', $logfile);
- set_config('system','debugging', $debugging);
- set_config('system','loglevel', $loglevel);
+
+ Config::Set('system','logfile', $logfile);
+ Config::Set('system','debugging', $debugging);
+ Config::Set('system','loglevel', $loglevel);
}
-
+
info( t('Log settings updated.') );
goaway(z_root() . '/admin/logs' );
}
-
+
/**
* @brief Logs admin page.
*
@@ -36,7 +37,7 @@ class Logs {
*/
function get() {
-
+
$log_choices = Array(
LOGGER_NORMAL => 'Normal',
LOGGER_TRACE => 'Trace',
@@ -44,15 +45,15 @@ class Logs {
LOGGER_DATA => 'Data',
LOGGER_ALL => 'All'
);
-
+
$t = get_markup_template('admin_logs.tpl');
-
- $f = get_config('system', 'logfile');
-
+
+ $f = Config::Get('system', 'logfile');
+
$data = '';
-
+
if(!file_exists($f)) {
- $data = t("Error trying to open <strong>$f</strong> log file.\r\n<br/>Check to see if file $f exist and is
+ $data = t("Error trying to open <strong>$f</strong> log file.\r\n<br/>Check to see if file $f exist and is
readable.");
}
else {
@@ -77,7 +78,7 @@ class Logs {
fclose($fp);
}
}
-
+
return replace_macros($t, array(
'$title' => t('Administration'),
'$page' => t('Logs'),
@@ -85,17 +86,17 @@ class Logs {
'$clear' => t('Clear'),
'$data' => $data,
'$baseurl' => z_root(),
- '$logname' => get_config('system','logfile'),
-
+ '$logname' => Config::Get('system','logfile'),
+
// name, label, value, help string, extra data...
- '$debugging' => array('debugging', t("Debugging"),get_config('system','debugging'), ""),
- '$logfile' => array('logfile', t("Log file"), get_config('system','logfile'), t("Must be writable by web server. Relative to your top-level webserver directory.")),
- '$loglevel' => array('loglevel', t("Log level"), get_config('system','loglevel'), "", $log_choices),
-
+ '$debugging' => array('debugging', t("Debugging"),Config::Get('system','debugging'), ""),
+ '$logfile' => array('logfile', t("Log file"), Config::Get('system','logfile'), t("Must be writable by web server. Relative to your top-level webserver directory.")),
+ '$loglevel' => array('loglevel', t("Log level"), Config::Get('system','loglevel'), "", $log_choices),
+
'$form_security_token' => get_form_security_token('admin_logs'),
));
}
-
-} \ No newline at end of file
+
+}
diff --git a/Zotlabs/Module/Admin/Profs.php b/Zotlabs/Module/Admin/Profs.php
index eb2501d43..9965cab19 100644
--- a/Zotlabs/Module/Admin/Profs.php
+++ b/Zotlabs/Module/Admin/Profs.php
@@ -2,11 +2,12 @@
namespace Zotlabs\Module\Admin;
+use Zotlabs\Lib\Config;
class Profs {
function post() {
-
+
if(array_key_exists('basic',$_REQUEST)) {
$arr = explode(',',$_REQUEST['basic']);
array_walk($arr,'array_trim');
@@ -19,9 +20,9 @@ class Profs {
}
}
if(! $narr)
- del_config('system','profile_fields_basic');
+ Config::Delete('system','profile_fields_basic');
else
- set_config('system','profile_fields_basic',$narr);
+ Config::Set('system','profile_fields_basic',$narr);
if(array_key_exists('advanced',$_REQUEST)) {
@@ -36,15 +37,15 @@ class Profs {
}
}
if(! $narr)
- del_config('system','profile_fields_advanced');
+ Config::Delete('system','profile_fields_advanced');
else
- set_config('system','profile_fields_advanced',$narr);
+ Config::Set('system','profile_fields_advanced',$narr);
}
goaway(z_root() . '/admin/profs');
}
-
-
+
+
if(array_key_exists('field_name',$_REQUEST)) {
if($_REQUEST['id']) {
$r = q("update profdef set field_name = '%s', field_type = '%s', field_desc = '%s' field_help = '%s', field_inputs = '%s' where id = %d",
@@ -66,24 +67,24 @@ class Profs {
);
}
}
-
-
+
+
// add to chosen array basic or advanced
-
+
goaway(z_root() . '/admin/profs');
}
-
+
function get() {
-
+
if((argc() > 3) && argv(2) == 'drop' && intval(argv(3))) {
$r = q("delete from profdef where id = %d",
intval(argv(3))
);
// remove from allowed fields
-
- goaway(z_root() . '/admin/profs');
+
+ goaway(z_root() . '/admin/profs');
}
-
+
if((argc() > 2) && argv(2) === 'new') {
return replace_macros(get_markup_template('profdef_edit.tpl'),array(
'$header' => t('New Profile Field'),
@@ -94,7 +95,7 @@ class Profs {
'$submit' => t('Save')
));
}
-
+
if((argc() > 2) && intval(argv(2))) {
$r = q("select * from profdef where id = %d limit 1",
intval(argv(2))
@@ -103,7 +104,7 @@ class Profs {
notice( t('Field definition not found') . EOL);
goaway(z_root() . '/admin/profs');
}
-
+
return replace_macros(get_markup_template('profdef_edit.tpl'),array(
'$id' => intval($r[0]['id']),
'$header' => t('Edit Profile Field'),
@@ -114,7 +115,7 @@ class Profs {
'$submit' => t('Save')
));
}
-
+
$basic = '';
$barr = array();
$fields = get_profile_fields_basic();
@@ -129,7 +130,7 @@ class Profs {
$barr[] = trim($k);
}
}
-
+
$advanced = '';
$fields = get_profile_fields_advanced();
if(! $fields)
@@ -143,7 +144,7 @@ class Profs {
$advanced .= trim($k);
}
}
-
+
$all = '';
$fields = get_profile_fields_advanced(1);
if($fields) {
@@ -153,7 +154,7 @@ class Profs {
$all .= trim($k);
}
}
-
+
$r = q("select * from profdef where true");
if($r) {
foreach($r as $rr) {
@@ -162,8 +163,8 @@ class Profs {
$all .= $rr['field_name'];
}
}
-
-
+
+
$o = replace_macros(get_markup_template('admin_profiles.tpl'),array(
'$title' => t('Profile Fields'),
'$basic' => array('basic',t('Basic Profile Fields'),$basic,''),
@@ -174,17 +175,17 @@ class Profs {
'$cust_fields' => $r,
'$edit' => t('Edit'),
'$drop' => t('Delete'),
- '$new' => t('Create Custom Field'),
+ '$new' => t('Create Custom Field'),
'$submit' => t('Submit')
));
-
+
return $o;
-
-
+
+
}
-} \ No newline at end of file
+}
diff --git a/Zotlabs/Module/Admin/Queueworker.php b/Zotlabs/Module/Admin/Queueworker.php
index a4f38d07c..c98df6ac0 100644
--- a/Zotlabs/Module/Admin/Queueworker.php
+++ b/Zotlabs/Module/Admin/Queueworker.php
@@ -3,6 +3,7 @@
namespace Zotlabs\Module\Admin;
use App;
+use Zotlabs\Lib\Config;
use Zotlabs\Web\Controller;
class Queueworker extends Controller {
@@ -17,18 +18,18 @@ class Queueworker extends Controller {
$maxqueueworkers = intval($_POST['queueworker_maxworkers']);
$maxqueueworkers = ($maxqueueworkers > 3) ? $maxqueueworkers : 4;
- set_config('queueworker', 'max_queueworkers', $maxqueueworkers);
+ Config::Set('queueworker', 'max_queueworkers', $maxqueueworkers);
$maxworkerage = intval($_POST['queueworker_max_age']);
$maxworkerage = ($maxworkerage >= 120) ? $maxworkerage : 300;
- set_config('queueworker', 'queueworker_max_age', $maxworkerage);
+ Config::Set('queueworker', 'queueworker_max_age', $maxworkerage);
$queueworkersleep = intval($_POST['queue_worker_sleep']);
$queueworkersleep = ($queueworkersleep > 100) ? $queueworkersleep : 100;
- set_config('queueworker', 'queue_worker_sleep', $queueworkersleep);
+ Config::Set('queueworker', 'queue_worker_sleep', $queueworkersleep);
$auto_queue_worker_sleep = intval($_POST['auto_queue_worker_sleep']);
- set_config('queueworker', 'auto_queue_worker_sleep', $auto_queue_worker_sleep);
+ Config::Set('queueworker', 'auto_queue_worker_sleep', $auto_queue_worker_sleep);
goaway(z_root() . '/admin/queueworker');
}
@@ -54,7 +55,7 @@ class Queueworker extends Controller {
}
}
- $maxqueueworkers = get_config('queueworker', 'max_queueworkers', 4);
+ $maxqueueworkers = Config::Get('queueworker', 'max_queueworkers', 4);
$maxqueueworkers = ($maxqueueworkers > 3) ? $maxqueueworkers : 4;
$sc = '';
@@ -68,7 +69,7 @@ class Queueworker extends Controller {
]
]);
- $workermaxage = get_config('queueworker', 'queueworker_max_age');
+ $workermaxage = Config::Get('queueworker', 'queueworker_max_age');
$workermaxage = ($workermaxage >= 120) ? $workermaxage : 300;
$sc .= replace_macros(get_markup_template('field_input.tpl'), [
@@ -80,10 +81,10 @@ class Queueworker extends Controller {
]
]);
- $queueworkersleep = get_config('queueworker', 'queue_worker_sleep');
+ $queueworkersleep = Config::Get('queueworker', 'queue_worker_sleep');
$queueworkersleep = ($queueworkersleep > 100) ? $queueworkersleep : 100;
- $auto_queue_worker_sleep = get_config('queueworker', 'auto_queue_worker_sleep', 0);
+ $auto_queue_worker_sleep = Config::Get('queueworker', 'auto_queue_worker_sleep', 0);
$sc .= replace_macros(get_markup_template('field_input.tpl'), [
'$field' => [
diff --git a/Zotlabs/Module/Admin/Security.php b/Zotlabs/Module/Admin/Security.php
index 499572170..559097df2 100644
--- a/Zotlabs/Module/Admin/Security.php
+++ b/Zotlabs/Module/Admin/Security.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Module\Admin;
+use Zotlabs\Lib\Config;
class Security {
@@ -11,53 +12,53 @@ class Security {
$allowed_email = ((x($_POST,'allowed_email')) ? notags(trim($_POST['allowed_email'])) : '');
$not_allowed_email = ((x($_POST,'not_allowed_email')) ? notags(trim($_POST['not_allowed_email'])) : '');
- set_config('system','allowed_email', $allowed_email);
- set_config('system','not_allowed_email', $not_allowed_email);
+ Config::Set('system','allowed_email', $allowed_email);
+ Config::Set('system','not_allowed_email', $not_allowed_email);
$block_public = ((x($_POST,'block_public')) ? True : False);
- set_config('system','block_public',$block_public);
+ Config::Set('system','block_public',$block_public);
$cloud_noroot = ((x($_POST,'cloud_noroot')) ? 1 : 0);
- set_config('system','cloud_disable_siteroot',1 - $cloud_noroot);
+ Config::Set('system','cloud_disable_siteroot',1 - $cloud_noroot);
$cloud_disksize = ((x($_POST,'cloud_disksize')) ? 1 : 0);
- set_config('system','cloud_report_disksize',$cloud_disksize);
+ Config::Set('system','cloud_report_disksize',$cloud_disksize);
$ws = $this->trim_array_elems(explode("\n",$_POST['whitelisted_sites']));
- set_config('system','whitelisted_sites',$ws);
+ Config::Set('system','whitelisted_sites',$ws);
$bs = $this->trim_array_elems(explode("\n",$_POST['blacklisted_sites']));
- set_config('system','blacklisted_sites',$bs);
+ Config::Set('system','blacklisted_sites',$bs);
$wc = $this->trim_array_elems(explode("\n",$_POST['whitelisted_channels']));
- set_config('system','whitelisted_channels',$wc);
+ Config::Set('system','whitelisted_channels',$wc);
$bc = $this->trim_array_elems(explode("\n",$_POST['blacklisted_channels']));
- set_config('system','blacklisted_channels',$bc);
+ Config::Set('system','blacklisted_channels',$bc);
$embed_sslonly = ((x($_POST,'embed_sslonly')) ? True : False);
- set_config('system','embed_sslonly',$embed_sslonly);
+ Config::Set('system','embed_sslonly',$embed_sslonly);
$we = $this->trim_array_elems(explode("\n",$_POST['embed_allow']));
- set_config('system','embed_allow',$we);
+ Config::Set('system','embed_allow',$we);
$be = $this->trim_array_elems(explode("\n",$_POST['embed_deny']));
- set_config('system','embed_deny',$be);
+ Config::Set('system','embed_deny',$be);
$thumbnail_security = ((x($_POST,'thumbnail_security')) ? intval($_POST['thumbnail_security']) : 0);
- set_config('system', 'thumbnail_security' , $thumbnail_security);
+ Config::Set('system', 'thumbnail_security' , $thumbnail_security);
$inline_pdf = ((x($_POST,'inline_pdf')) ? intval($_POST['inline_pdf']) : 0);
- set_config('system', 'inline_pdf' , $inline_pdf);
+ Config::Set('system', 'inline_pdf' , $inline_pdf);
$ts = ((x($_POST,'transport_security')) ? True : False);
- set_config('system','transport_security_header',$ts);
+ Config::Set('system','transport_security_header',$ts);
$cs = ((x($_POST,'content_security')) ? True : False);
- set_config('system','content_security_policy',$cs);
+ Config::Set('system','content_security_policy',$cs);
$trusted_directory_servers = $this->trim_array_elems(explode("\n", $_POST['trusted_directory_servers']));
- set_config('system', 'trusted_directory_servers', $trusted_directory_servers);
+ Config::Set('system', 'trusted_directory_servers', $trusted_directory_servers);
goaway(z_root() . '/admin/security');
}
@@ -66,31 +67,31 @@ class Security {
function get() {
- $whitesites = get_config('system','whitelisted_sites');
+ $whitesites = Config::Get('system','whitelisted_sites');
$whitesites_str = ((is_array($whitesites)) ? implode("\n",$whitesites) : '');
- $blacksites = get_config('system','blacklisted_sites');
+ $blacksites = Config::Get('system','blacklisted_sites');
$blacksites_str = ((is_array($blacksites)) ? implode("\n",$blacksites) : '');
- $whitechannels = get_config('system','whitelisted_channels');
+ $whitechannels = Config::Get('system','whitelisted_channels');
$whitechannels_str = ((is_array($whitechannels)) ? implode("\n",$whitechannels) : '');
- $blackchannels = get_config('system','blacklisted_channels');
+ $blackchannels = Config::Get('system','blacklisted_channels');
$blackchannels_str = ((is_array($blackchannels)) ? implode("\n",$blackchannels) : '');
- $whiteembeds = get_config('system','embed_allow');
+ $whiteembeds = Config::Get('system','embed_allow');
$whiteembeds_str = ((is_array($whiteembeds)) ? implode("\n",$whiteembeds) : '');
- $blackembeds = get_config('system','embed_deny');
+ $blackembeds = Config::Get('system','embed_deny');
$blackembeds_str = ((is_array($blackembeds)) ? implode("\n",$blackembeds) : '');
- $trusted_directory_servers = get_config('system', 'trusted_directory_servers');
+ $trusted_directory_servers = Config::Get('system', 'trusted_directory_servers');
$trusted_directory_servers_str = ((is_array($trusted_directory_servers)) ? implode("\n", $trusted_directory_servers) : '');
- $is_dir = (intval(get_config('system', 'directory_mode', DIRECTORY_MODE_NORMAL)) !== DIRECTORY_MODE_NORMAL);
+ $is_dir = (intval(Config::Get('system', 'directory_mode', DIRECTORY_MODE_NORMAL)) !== DIRECTORY_MODE_NORMAL);
- $embed_coop = intval(get_config('system','embed_coop'));
+ $embed_coop = intval(Config::Get('system','embed_coop'));
if((! $whiteembeds) && (! $blackembeds)) {
$embedhelp1 = t("By default, unfiltered HTML is allowed in embedded media. This is inherently insecure.");
@@ -105,22 +106,22 @@ class Security {
'$title' => t('Administration'),
'$page' => t('Security'),
'$form_security_token' => get_form_security_token('admin_security'),
- '$block_public' => array('block_public', t("Block public"), get_config('system','block_public'), t("Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated.")),
- '$cloud_noroot' => [ 'cloud_noroot', t('Provide a cloud root directory'), 1 - intval(get_config('system','cloud_disable_siteroot')), t('The cloud root directory lists all channel names which provide public files') ],
- '$cloud_disksize' => [ 'cloud_disksize', t('Show total disk space available to cloud uploads'), intval(get_config('system','cloud_report_disksize')), '' ],
- '$transport_security' => array('transport_security', t('Set "Transport Security" HTTP header'),intval(get_config('system','transport_security_header')),''),
- '$content_security' => array('content_security', t('Set "Content Security Policy" HTTP header'),intval(get_config('system','content_security_policy')),''),
- '$allowed_email' => array('allowed_email', t("Allowed email domains"), get_config('system','allowed_email'), t("Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains")),
- '$not_allowed_email' => array('not_allowed_email', t("Not allowed email domains"), get_config('system','not_allowed_email'), t("Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined.")),
+ '$block_public' => array('block_public', t("Block public"), Config::Get('system','block_public'), t("Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated.")),
+ '$cloud_noroot' => [ 'cloud_noroot', t('Provide a cloud root directory'), 1 - intval(Config::Get('system','cloud_disable_siteroot')), t('The cloud root directory lists all channel names which provide public files') ],
+ '$cloud_disksize' => [ 'cloud_disksize', t('Show total disk space available to cloud uploads'), intval(Config::Get('system','cloud_report_disksize')), '' ],
+ '$transport_security' => array('transport_security', t('Set "Transport Security" HTTP header'),intval(Config::Get('system','transport_security_header')),''),
+ '$content_security' => array('content_security', t('Set "Content Security Policy" HTTP header'),intval(Config::Get('system','content_security_policy')),''),
+ '$allowed_email' => array('allowed_email', t("Allowed email domains"), Config::Get('system','allowed_email'), t("Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains")),
+ '$not_allowed_email' => array('not_allowed_email', t("Not allowed email domains"), Config::Get('system','not_allowed_email'), t("Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined.")),
'$whitelisted_sites' => array('whitelisted_sites', t('Allow communications only from these sites'), $whitesites_str, t('One site per line. Leave empty to allow communication from anywhere by default')),
'$blacklisted_sites' => array('blacklisted_sites', t('Block communications from these sites'), $blacksites_str, ''),
'$whitelisted_channels' => array('whitelisted_channels', t('Allow communications only from these channels'), $whitechannels_str, t('One channel (hash) per line. Leave empty to allow from any channel by default')),
'$blacklisted_channels' => array('blacklisted_channels', t('Block communications from these channels'), $blackchannels_str, ''),
- '$embed_sslonly' => array('embed_sslonly',t('Only allow embeds from secure (SSL) websites and links.'), intval(get_config('system','embed_sslonly')),''),
+ '$embed_sslonly' => array('embed_sslonly',t('Only allow embeds from secure (SSL) websites and links.'), intval(Config::Get('system','embed_sslonly')),''),
'$embed_allow' => array('embed_allow', t('Allow unfiltered embedded HTML content only from these domains'), $whiteembeds_str, t('One site per line. By default embedded content is filtered.')),
'$embed_deny' => array('embed_deny', t('Block embedded HTML from these domains'), $blackembeds_str, ''),
- '$thumbnail_security' => [ 'thumbnail_security', t("Allow SVG thumbnails in file browser"), get_config('system','thumbnail_security',0), t("WARNING: SVG images may contain malicious code.") ],
- '$inline_pdf' => [ 'inline_pdf', t("Allow embedded (inline) PDF files"), get_config('system','inline_pdf',0), '' ],
+ '$thumbnail_security' => [ 'thumbnail_security', t("Allow SVG thumbnails in file browser"), Config::Get('system','thumbnail_security',0), t("WARNING: SVG images may contain malicious code.") ],
+ '$inline_pdf' => [ 'inline_pdf', t("Allow embedded (inline) PDF files"), Config::Get('system','inline_pdf',0), '' ],
'$trusted_directory_servers' => (($is_dir) ? ['trusted_directory_servers', t('Additional trusted directory server URLs'), $trusted_directory_servers_str, t('Accept directory flags (spam, nsfw) from those servers. One per line like https://example.tld')] : ''),
diff --git a/Zotlabs/Module/Admin/Site.php b/Zotlabs/Module/Admin/Site.php
index dae5e7c77..abc56d298 100644
--- a/Zotlabs/Module/Admin/Site.php
+++ b/Zotlabs/Module/Admin/Site.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Module\Admin;
+use Zotlabs\Lib\Config;
class Site {
@@ -125,8 +126,8 @@ class Site {
//logger( print_r( $this->msgbg, true) );
//logger( print_r( $this->joo, true) );
if ($this->error === 0) {
- set_config('system', 'register_duty', $this->register_duty);
- set_config('system', 'register_duty_jso', $this->joo);
+ Config::Set('system', 'register_duty', $this->register_duty);
+ Config::Set('system', 'register_duty_jso', $this->joo);
} else {
notice('ZAR0130E,' . t('Errors') . ': ' . $this->error . EOL . $this->msgfg . EOL);
}
@@ -134,87 +135,87 @@ class Site {
}
// <-hilmar]
- set_config('system', 'feed_contacts', $feed_contacts);
- set_config('system', 'delivery_interval', $delivery_interval);
- set_config('system', 'delivery_batch_count', $delivery_batch_count);
- set_config('system', 'poll_interval', $poll_interval);
- set_config('system', 'maxloadavg', $maxloadavg);
- set_config('system', 'frontpage', $frontpage);
- set_config('system', 'sellpage', $site_sellpage);
- set_config('system', 'workflow_channel_next', $first_page);
- set_config('system', 'site_location', $site_location);
- set_config('system', 'mirror_frontpage', $mirror_frontpage);
- set_config('system', 'sitename', $sitename);
- set_config('system', 'login_on_homepage', $login_on_homepage);
- set_config('system', 'enable_context_help', $enable_context_help);
- set_config('system', 'verify_email', $verify_email);
- set_config('system', 'max_daily_registrations', $register_perday);
- set_config('system', 'register_sameip', $register_sameip);
- set_config('system', 'register_delay', $reg_delay);
- set_config('system', 'register_expire', $reg_expire);
- set_config('system', 'default_expire_days', $default_expire_days);
- set_config('system', 'active_expire_days', $active_expire_days);
- set_config('system', 'reply_address', $reply_address);
- set_config('system', 'from_email', $from_email);
- set_config('system', 'from_email_name' , $from_email_name);
- set_config('system', 'imagick_convert_path' , $imagick_path);
- set_config('system', 'default_permissions_role', $permissions_role);
- set_config('system', 'pubstream_incl',$pub_incl);
- set_config('system', 'pubstream_excl',$pub_excl);
+ Config::Set('system', 'feed_contacts', $feed_contacts);
+ Config::Set('system', 'delivery_interval', $delivery_interval);
+ Config::Set('system', 'delivery_batch_count', $delivery_batch_count);
+ Config::Set('system', 'poll_interval', $poll_interval);
+ Config::Set('system', 'maxloadavg', $maxloadavg);
+ Config::Set('system', 'frontpage', $frontpage);
+ Config::Set('system', 'sellpage', $site_sellpage);
+ Config::Set('system', 'workflow_channel_next', $first_page);
+ Config::Set('system', 'site_location', $site_location);
+ Config::Set('system', 'mirror_frontpage', $mirror_frontpage);
+ Config::Set('system', 'sitename', $sitename);
+ Config::Set('system', 'login_on_homepage', $login_on_homepage);
+ Config::Set('system', 'enable_context_help', $enable_context_help);
+ Config::Set('system', 'verify_email', $verify_email);
+ Config::Set('system', 'max_daily_registrations', $register_perday);
+ Config::Set('system', 'register_sameip', $register_sameip);
+ Config::Set('system', 'register_delay', $reg_delay);
+ Config::Set('system', 'register_expire', $reg_expire);
+ Config::Set('system', 'default_expire_days', $default_expire_days);
+ Config::Set('system', 'active_expire_days', $active_expire_days);
+ Config::Set('system', 'reply_address', $reply_address);
+ Config::Set('system', 'from_email', $from_email);
+ Config::Set('system', 'from_email_name' , $from_email_name);
+ Config::Set('system', 'imagick_convert_path' , $imagick_path);
+ Config::Set('system', 'default_permissions_role', $permissions_role);
+ Config::Set('system', 'pubstream_incl',$pub_incl);
+ Config::Set('system', 'pubstream_excl',$pub_excl);
if($directory_server)
- set_config('system','directory_server',$directory_server);
+ Config::Set('system','directory_server',$directory_server);
if ($banner == '') {
- del_config('system', 'banner');
+ Config::Delete('system', 'banner');
} else {
- set_config('system', 'banner', $banner);
+ Config::Set('system', 'banner', $banner);
}
if ($admininfo == ''){
- del_config('system', 'admininfo');
+ Config::Delete('system', 'admininfo');
} else {
require_once('include/text.php');
linkify_tags($admininfo, local_channel());
- set_config('system', 'admininfo', $admininfo);
+ Config::Set('system', 'admininfo', $admininfo);
}
- set_config('system','siteinfo',$siteinfo);
- //set_config('system', 'language', $language);
- set_config('system', 'theme', $theme);
+ Config::Set('system','siteinfo',$siteinfo);
+ //Config::Set('system', 'language', $language);
+ Config::Set('system', 'theme', $theme);
// if ( $theme_mobile === '---' ) {
- // del_config('system', 'mobile_theme');
+ // Config::Delete('system', 'mobile_theme');
// } else {
- // set_config('system', 'mobile_theme', $theme_mobile);
+ // Config::Set('system', 'mobile_theme', $theme_mobile);
// }
- // set_config('system','site_channel', $site_channel);
- set_config('system','maximagesize', $maximagesize);
-
- set_config('system','register_policy', $register_policy);
- set_config('system','register_wo_email', $register_wo_email);
- set_config('system','minimum_age', $minimum_age);
- set_config('system','auto_channel_create', $reg_autochannel);
- set_config('system', 'invitation_only', $invitation_only);
- set_config('system', 'invitation_also', $invitation_also);
- set_config('system','access_policy', $access_policy);
- set_config('system','account_abandon_days', $abandon_days);
- set_config('system','register_text', $register_text);
- set_config('system','allowed_sites', $allowed_sites);
- set_config('system','publish_all', $force_publish);
- set_config('system','disable_discover_tab', $disable_discover_tab);
- set_config('system','site_firehose', $site_firehose);
- set_config('system','open_pubstream', $open_pubstream);
- //set_config('system','force_queue_threshold', $force_queue);
-
- set_config('system','no_community_page', $no_community_page);
- set_config('system','no_utf', $no_utf);
-
- set_config('system','sse_enabled', $sse_enabled);
-
- set_config('system','verifyssl', $verifyssl);
- set_config('system','proxyuser', $proxyuser);
- set_config('system','proxy', $proxy);
- set_config('system','curl_timeout', $timeout);
+ // Config::Set('system','site_channel', $site_channel);
+ Config::Set('system','maximagesize', $maximagesize);
+
+ Config::Set('system','register_policy', $register_policy);
+ Config::Set('system','register_wo_email', $register_wo_email);
+ Config::Set('system','minimum_age', $minimum_age);
+ Config::Set('system','auto_channel_create', $reg_autochannel);
+ Config::Set('system', 'invitation_only', $invitation_only);
+ Config::Set('system', 'invitation_also', $invitation_also);
+ Config::Set('system','access_policy', $access_policy);
+ Config::Set('system','account_abandon_days', $abandon_days);
+ Config::Set('system','register_text', $register_text);
+ Config::Set('system','allowed_sites', $allowed_sites);
+ Config::Set('system','publish_all', $force_publish);
+ Config::Set('system','disable_discover_tab', $disable_discover_tab);
+ Config::Set('system','site_firehose', $site_firehose);
+ Config::Set('system','open_pubstream', $open_pubstream);
+ //Config::Set('system','force_queue_threshold', $force_queue);
+
+ Config::Set('system','no_community_page', $no_community_page);
+ Config::Set('system','no_utf', $no_utf);
+
+ Config::Set('system','sse_enabled', $sse_enabled);
+
+ Config::Set('system','verifyssl', $verifyssl);
+ Config::Set('system','proxyuser', $proxyuser);
+ Config::Set('system','proxy', $proxy);
+ Config::Set('system','curl_timeout', $timeout);
info( t('Site settings updated.') . EOL);
goaway(z_root() . '/admin/site' );
@@ -263,7 +264,7 @@ class Site {
}
$dir_choices = null;
- $dirmode = get_config('system', 'directory_mode', DIRECTORY_MODE_NORMAL);
+ $dirmode = Config::Get('system', 'directory_mode', DIRECTORY_MODE_NORMAL);
$realm = get_directory_realm();
// directory server should not be set or settable unless we are a directory client
@@ -291,14 +292,14 @@ class Site {
/* Banner */
- $banner = get_config('system', 'banner');
+ $banner = Config::Get('system', 'banner');
if($banner === false)
- $banner = get_config('system','sitename');
+ $banner = Config::Get('system','sitename');
$banner = htmlspecialchars($banner);
/* Admin Info */
- $admininfo = get_config('system', 'admininfo');
+ $admininfo = Config::Get('system', 'admininfo');
/* Register policy */
$register_choices = Array(
@@ -306,8 +307,8 @@ class Site {
REGISTER_APPROVE => t("Yes - with approval"),
REGISTER_OPEN => t("Yes")
);
- $this->register_duty = get_config('system', 'register_duty', '-:-');
- $register_perday = get_config('system','max_daily_registrations', 50);
+ $this->register_duty = Config::Get('system', 'register_duty', '-:-');
+ $register_perday = Config::Get('system','max_daily_registrations', 50);
/* Acess policy */
$access_choices = Array(
@@ -317,7 +318,7 @@ class Site {
ACCESS_TIERED => t("My site offers free accounts with optional paid upgrades")
);
- $discover_tab = get_config('system','disable_discover_tab');
+ $discover_tab = Config::Get('system','disable_discover_tab');
// $disable public streams by default
if($discover_tab === false)
@@ -326,7 +327,7 @@ class Site {
$discover_tab = (1 - $discover_tab);
$perm_roles = \Zotlabs\Access\PermissionRoles::channel_roles();
- $default_role = get_config('system', 'default_permissions_role', 'personal');
+ $default_role = Config::Get('system', 'default_permissions_role', 'personal');
if (!in_array($default_role, array_keys($perm_roles))) {
$default_role = 'personal';
@@ -334,8 +335,8 @@ class Site {
$role = array('permissions_role' , t('Default permission role for new accounts'), $default_role, t('This role will be used for the first channel created after registration.'),$perm_roles);
- $homelogin = get_config('system','login_on_homepage');
- $enable_context_help = get_config('system','enable_context_help');
+ $homelogin = Config::Get('system','login_on_homepage');
+ $enable_context_help = Config::Get('system','enable_context_help');
// for reuse reg_delay and reg_expire
$reg_rabots = array(
@@ -347,7 +348,7 @@ class Site {
'y' => t('Year(s)')
);
$regdelay_n = $regdelay_u = false;
- $regdelay = get_config('system','register_delay');
+ $regdelay = Config::Get('system','register_delay');
if ($regdelay)
list($regdelay_n, $regdelay_u) = array(substr($regdelay,0,-1),substr($regdelay,-1));
$reg_delay = replace_macros(get_markup_template('field_duration.qmc.tpl'),
@@ -369,7 +370,7 @@ class Site {
)
);
$regexpire_n = $regexpire_u = false;
- $regexpire = get_config('system','register_expire');
+ $regexpire = Config::Get('system','register_expire');
if ($regexpire)
list($regexpire_n, $regexpire_u) = array(substr($regexpire,0,-1),substr($regexpire,-1));
$reg_expire = replace_macros(get_markup_template('field_duration.qmc.tpl'),
@@ -406,38 +407,38 @@ class Site {
'$baseurl' => z_root(),
// name, label, value, help string, extra data...
- '$sitename' => array('sitename', t("Site name"), htmlspecialchars(get_config('system','sitename'), ENT_QUOTES, 'UTF-8'),''),
+ '$sitename' => array('sitename', t("Site name"), htmlspecialchars(Config::Get('system','sitename'), ENT_QUOTES, 'UTF-8'),''),
'$banner' => array('banner', t("Banner/Logo"), $banner, t('Unfiltered HTML/CSS/JS is allowed')),
'$admininfo' => array('admininfo', t("Administrator Information"), $admininfo, t("Contact information for site administrators. Displayed on siteinfo page. BBCode can be used here")),
- '$siteinfo' => array('siteinfo', t('Site Information'), get_config('system','siteinfo'), t("Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here")),
- '$theme' => array('theme', t("System theme"), get_config('system','theme'), t("Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"), $theme_choices),
- // '$theme_mobile' => array('theme_mobile', t("Mobile system theme"), get_config('system','mobile_theme'), t("Theme for mobile devices"), $theme_choices_mobile),
- // '$site_channel' => array('site_channel', t("Channel to use for this website's static pages"), get_config('system','site_channel'), t("Site Channel")),
- '$feed_contacts' => array('feed_contacts', t('Allow Feeds as Connections'),get_config('system','feed_contacts'),t('(Heavy system resource usage)')),
- '$maximagesize' => array('maximagesize', t("Maximum image size"), intval(get_config('system','maximagesize')), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")),
- '$minimum_age' => array('minimum_age', t("Minimum age"), (x(get_config('system','minimum_age'))?get_config('system','minimum_age'):13), t("Minimum age (in years) for who may register on this site.")),
- '$access_policy' => array('access_policy', t("Which best describes the types of account offered by this hub?"), get_config('system','access_policy'), t("This is displayed on the public server site list."), $access_choices),
+ '$siteinfo' => array('siteinfo', t('Site Information'), Config::Get('system','siteinfo'), t("Publicly visible description of this site. Displayed on siteinfo page. BBCode can be used here")),
+ '$theme' => array('theme', t("System theme"), Config::Get('system','theme'), t("Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"), $theme_choices),
+ // '$theme_mobile' => array('theme_mobile', t("Mobile system theme"), Config::Get('system','mobile_theme'), t("Theme for mobile devices"), $theme_choices_mobile),
+ // '$site_channel' => array('site_channel', t("Channel to use for this website's static pages"), Config::Get('system','site_channel'), t("Site Channel")),
+ '$feed_contacts' => array('feed_contacts', t('Allow Feeds as Connections'),Config::Get('system','feed_contacts'),t('(Heavy system resource usage)')),
+ '$maximagesize' => array('maximagesize', t("Maximum image size"), intval(Config::Get('system','maximagesize')), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")),
+ '$minimum_age' => array('minimum_age', t("Minimum age"), (x(Config::Get('system','minimum_age'))?Config::Get('system','minimum_age'):13), t("Minimum age (in years) for who may register on this site.")),
+ '$access_policy' => array('access_policy', t("Which best describes the types of account offered by this hub?"), Config::Get('system','access_policy'), t("This is displayed on the public server site list."), $access_choices),
// Register
// [hilmar->
'$register_text' => [
'register_text',
t("Register text"),
- htmlspecialchars(get_config('system','register_text'), ENT_QUOTES, 'UTF-8'),
+ htmlspecialchars(Config::Get('system','register_text'), ENT_QUOTES, 'UTF-8'),
t("This text will be displayed prominently at the registration page")
],
'$register_policy' => [
'register_policy',
t("Does this site allow new member registration?"),
- get_config('system','register_policy'),
+ Config::Get('system','register_policy'),
"",
$register_choices,
],
'$register_duty' => [
'register_duty',
t('Configure the registration open days/hours'),
- get_config('system', 'register_duty', '-:-'),
+ Config::Get('system', 'register_duty', '-:-'),
t('Empty or \'-:-\' value will keep registration open 24/7 (default)') . EOL .
t('Weekdays and hours must be separated by colon \':\', From-To ranges with a dash `-` example: 1:800-1200') . EOL .
t('Weekday:Hour pairs must be separated by space \' \' example: 1:900-1700 2:900-1700') . EOL .
@@ -448,13 +449,13 @@ class Site {
'$register_perday' => [
'register_perday',
t('Max account registrations per day'),
- get_config('system', 'max_daily_registrations', 50),
+ Config::Get('system', 'max_daily_registrations', 50),
t('Unlimited if zero or no value - default 50')
],
'$register_sameip' => [
'register_sameip',
t('Max account registrations from same IP'),
- get_config('system', 'register_sameip', 3),
+ Config::Get('system', 'register_sameip', 3),
t('Unlimited if zero or no value - default 3')
],
'$reg_delay' => $reg_delay,
@@ -462,70 +463,70 @@ class Site {
'$reg_autochannel' => [
'auto_channel_create',
t("Auto channel create"),
- get_config('system','auto_channel_create', 1),
+ Config::Get('system','auto_channel_create', 1),
t("If disabled the channel will be created in a separate step during the registration process")
],
'$invitation_only' => [
'invitation_only',
t("Require invite code"),
- get_config('system', 'invitation_only', 0)
+ Config::Get('system', 'invitation_only', 0)
],
'$invitation_also' => [
'invitation_also',
t("Allow invite code"),
- get_config('system', 'invitation_also', 0)
+ Config::Get('system', 'invitation_also', 0)
],
'$verify_email' => [
'verify_email',
t("Require email address"),
- get_config('system','verify_email'),
+ Config::Get('system','verify_email'),
t("The provided email address will be verified (recommended)")
],
'$abandon_days' => [
'abandon_days',
t('Abandon account after x days'),
- get_config('system','account_abandon_days'),
+ Config::Get('system','account_abandon_days'),
t('Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit.')
],
// <-hilmar]
'$role' => $role,
- '$frontpage' => array('frontpage', t("Site homepage to show visitors (default: login box)"), get_config('system','frontpage'), t("example: 'pubstream' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file.")),
- '$mirror_frontpage' => array('mirror_frontpage', t("Preserve site homepage URL"), get_config('system','mirror_frontpage'), t('Present the site homepage in a frame at the original location instead of redirecting')),
- '$allowed_sites' => array('allowed_sites', t("Allowed friend domains"), get_config('system','allowed_sites'), t("Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains")),
- '$force_publish' => array('publish_all', t("Force publish"), get_config('system','publish_all'), t("Check to force all profiles on this site to be listed in the site directory")),
+ '$frontpage' => array('frontpage', t("Site homepage to show visitors (default: login box)"), Config::Get('system','frontpage'), t("example: 'pubstream' to show public stream, 'page/sys/home' to show a system webpage called 'home' or 'include:home.html' to include a file.")),
+ '$mirror_frontpage' => array('mirror_frontpage', t("Preserve site homepage URL"), Config::Get('system','mirror_frontpage'), t('Present the site homepage in a frame at the original location instead of redirecting')),
+ '$allowed_sites' => array('allowed_sites', t("Allowed friend domains"), Config::Get('system','allowed_sites'), t("Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains")),
+ '$force_publish' => array('publish_all', t("Force publish"), Config::Get('system','publish_all'), t("Check to force all profiles on this site to be listed in the site directory")),
'$disable_discover_tab' => array('disable_discover_tab', t('Enable public stream'), $discover_tab, t('Enable the public stream. Warning: this content is unmoderated')),
- '$site_firehose' => array('site_firehose', t('Site only public stream'), get_config('system','site_firehose'), t('Restrict the public stream to content originating at this site')),
- '$open_pubstream' => array('open_pubstream', t('Allow anybody on the internet to access the public streams'), get_config('system','open_pubstream',1), t('Disable to require authentication before viewing')),
- '$incl' => array('pub_incl',t('Only import Public stream posts with this text'), get_config('system','pubstream_incl'),t('words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts')),
- '$excl' => array('pub_excl',t('Do not import Public stream posts with this text'), get_config('system','pubstream_excl'),t('words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts')),
+ '$site_firehose' => array('site_firehose', t('Site only public stream'), Config::Get('system','site_firehose'), t('Restrict the public stream to content originating at this site')),
+ '$open_pubstream' => array('open_pubstream', t('Allow anybody on the internet to access the public streams'), Config::Get('system','open_pubstream',1), t('Disable to require authentication before viewing')),
+ '$incl' => array('pub_incl',t('Only import Public stream posts with this text'), Config::Get('system','pubstream_incl'),t('words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts')),
+ '$excl' => array('pub_excl',t('Do not import Public stream posts with this text'), Config::Get('system','pubstream_excl'),t('words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts')),
'$login_on_homepage' => array('login_on_homepage', t("Login on Homepage"),((intval($homelogin) || $homelogin === false) ? 1 : '') , t("Present a login box to visitors on the home page if no other content has been configured.")),
'$enable_context_help' => array('enable_context_help', t("Enable context help"),((intval($enable_context_help) === 1 || $enable_context_help === false) ? 1 : 0) , t("Display contextual help for the current page when the help button is pressed.")),
- '$reply_address' => [ 'reply_address', t('Reply-to email address for system generated email.'), get_config('system','reply_address','noreply@' . \App::get_hostname()),'' ],
- '$from_email' => [ 'from_email', t('Sender (From) email address for system generated email.'), get_config('system','from_email','Administrator@' . \App::get_hostname()),'' ],
- '$from_email_name' => [ 'from_email_name', t('Name of email sender for system generated email.'), get_config('system','from_email_name',\Zotlabs\Lib\System::get_site_name()),'' ],
-
- '$directory_server' => (($dir_choices) ? array('directory_server', t("Directory Server URL"), get_config('system','directory_server'), t("Default directory server"), $dir_choices) : null),
-
- '$sse_enabled' => array('sse_enabled', t('Enable SSE Notifications'), get_config('system', 'sse_enabled', 0), t('If disabled, traditional polling will be used. Warning: this setting might not be suited for shared hosting')),
-
- '$proxyuser' => array('proxyuser', t("Proxy user"), get_config('system','proxyuser'), ""),
- '$proxy' => array('proxy', t("Proxy URL"), get_config('system','proxy'), ""),
- '$timeout' => array('timeout', t("Network timeout"), (x(get_config('system','curl_timeout'))?get_config('system','curl_timeout'):60), t("Value is in seconds. Set to 0 for unlimited (not recommended).")),
- '$delivery_interval' => array('delivery_interval', t("Delivery interval"), (x(get_config('system','delivery_interval'))?get_config('system','delivery_interval'):2), t("Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers.")),
- '$delivery_batch_count' => array('delivery_batch_count', t('Deliveries per process'),(x(get_config('system','delivery_batch_count'))?get_config('system','delivery_batch_count'):1), t("Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5.")),
- //'$force_queue' => array('force_queue', t("Queue Threshold"), get_config('system','force_queue_threshold',3000), t("Always defer immediate delivery if queue contains more than this number of entries.")),
- '$poll_interval' => array('poll_interval', t("Poll interval"), (x(get_config('system','poll_interval'))?get_config('system','poll_interval'):2), t("Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval.")),
- '$imagick_path' => array('imagick_path', t("Path to ImageMagick convert program"), get_config('system','imagick_convert_path'), t("If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert")),
- '$maxloadavg' => array('maxloadavg', t("Maximum Load Average"), ((intval(get_config('system','maxloadavg')) > 0)?get_config('system','maxloadavg'):50), t("Maximum system load before delivery and poll processes are deferred - default 50.")),
- '$default_expire_days' => array('default_expire_days', t('Expiration period in days for imported (grid/network) content'), intval(get_config('system','default_expire_days', 30)), t('0 for no expiration of imported content')),
- '$active_expire_days' => array('active_expire_days', t('Do not expire any posts which have comments less than this many days ago'), intval(get_config('system','active_expire_days',7)), ''),
- '$sellpage' => array('site_sellpage', t('Public servers: Optional landing (marketing) webpage for new registrants'), get_config('system','sellpage',''), sprintf( t('Create this page first. Default is %s/register'),z_root())),
- '$first_page' => array('first_page', t('Page to display after creating a new channel'), get_config('system','workflow_channel_next','profiles'), t('Default: profiles')),
- '$location' => array('site_location', t('Optional: site location'), get_config('system','site_location',''), t('Region or country')),
+ '$reply_address' => [ 'reply_address', t('Reply-to email address for system generated email.'), Config::Get('system','reply_address','noreply@' . \App::get_hostname()),'' ],
+ '$from_email' => [ 'from_email', t('Sender (From) email address for system generated email.'), Config::Get('system','from_email','Administrator@' . \App::get_hostname()),'' ],
+ '$from_email_name' => [ 'from_email_name', t('Name of email sender for system generated email.'), Config::Get('system','from_email_name',\Zotlabs\Lib\System::get_site_name()),'' ],
+
+ '$directory_server' => (($dir_choices) ? array('directory_server', t("Directory Server URL"), Config::Get('system','directory_server'), t("Default directory server"), $dir_choices) : null),
+
+ '$sse_enabled' => array('sse_enabled', t('Enable SSE Notifications'), Config::Get('system', 'sse_enabled', 0), t('If disabled, traditional polling will be used. Warning: this setting might not be suited for shared hosting')),
+
+ '$proxyuser' => array('proxyuser', t("Proxy user"), Config::Get('system','proxyuser'), ""),
+ '$proxy' => array('proxy', t("Proxy URL"), Config::Get('system','proxy'), ""),
+ '$timeout' => array('timeout', t("Network timeout"), (x(Config::Get('system','curl_timeout'))?Config::Get('system','curl_timeout'):60), t("Value is in seconds. Set to 0 for unlimited (not recommended).")),
+ '$delivery_interval' => array('delivery_interval', t("Delivery interval"), (x(Config::Get('system','delivery_interval'))?Config::Get('system','delivery_interval'):2), t("Delay background delivery processes by this many seconds to reduce system load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 for large dedicated servers.")),
+ '$delivery_batch_count' => array('delivery_batch_count', t('Deliveries per process'),(x(Config::Get('system','delivery_batch_count'))?Config::Get('system','delivery_batch_count'):1), t("Number of deliveries to attempt in a single operating system process. Adjust if necessary to tune system performance. Recommend: 1-5.")),
+ //'$force_queue' => array('force_queue', t("Queue Threshold"), Config::Get('system','force_queue_threshold',3000), t("Always defer immediate delivery if queue contains more than this number of entries.")),
+ '$poll_interval' => array('poll_interval', t("Poll interval"), (x(Config::Get('system','poll_interval'))?Config::Get('system','poll_interval'):2), t("Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval.")),
+ '$imagick_path' => array('imagick_path', t("Path to ImageMagick convert program"), Config::Get('system','imagick_convert_path'), t("If set, use this program to generate photo thumbnails for huge images ( > 4000 pixels in either dimension), otherwise memory exhaustion may occur. Example: /usr/bin/convert")),
+ '$maxloadavg' => array('maxloadavg', t("Maximum Load Average"), ((intval(Config::Get('system','maxloadavg')) > 0)?Config::Get('system','maxloadavg'):50), t("Maximum system load before delivery and poll processes are deferred - default 50.")),
+ '$default_expire_days' => array('default_expire_days', t('Expiration period in days for imported (grid/network) content'), intval(Config::Get('system','default_expire_days', 30)), t('0 for no expiration of imported content')),
+ '$active_expire_days' => array('active_expire_days', t('Do not expire any posts which have comments less than this many days ago'), intval(Config::Get('system','active_expire_days',7)), ''),
+ '$sellpage' => array('site_sellpage', t('Public servers: Optional landing (marketing) webpage for new registrants'), Config::Get('system','sellpage',''), sprintf( t('Create this page first. Default is %s/register'),z_root())),
+ '$first_page' => array('first_page', t('Page to display after creating a new channel'), Config::Get('system','workflow_channel_next','profiles'), t('Default: profiles')),
+ '$location' => array('site_location', t('Optional: site location'), Config::Get('system','site_location',''), t('Region or country')),
'$form_security_token' => get_form_security_token("admin_site"),
));
}
diff --git a/Zotlabs/Module/Admin/Themes.php b/Zotlabs/Module/Admin/Themes.php
index 7f615afa8..6793f56b1 100644
--- a/Zotlabs/Module/Admin/Themes.php
+++ b/Zotlabs/Module/Admin/Themes.php
@@ -3,6 +3,7 @@
namespace Zotlabs\Module\Admin;
use \Michelf\MarkdownExtra;
+use Zotlabs\Lib\Config;
/**
* @brief Admin area theme settings.
@@ -37,7 +38,7 @@ class Themes {
* @return string with parsed HTML
*/
function get(){
- $allowed_themes_str = get_config('system', 'allowed_themes');
+ $allowed_themes_str = Config::Get('system', 'allowed_themes');
$allowed_themes_raw = explode(',', $allowed_themes_str);
$allowed_themes = array();
if(count($allowed_themes_raw))
@@ -100,7 +101,7 @@ class Themes {
info(sprintf('Theme %s disabled.', $theme));
}
- set_config('system', 'allowed_themes', $s);
+ Config::Set('system', 'allowed_themes', $s);
goaway(z_root() . '/admin/themes' );
}
diff --git a/Zotlabs/Module/Api.php b/Zotlabs/Module/Api.php
index 5b835ac51..8574ae1cd 100644
--- a/Zotlabs/Module/Api.php
+++ b/Zotlabs/Module/Api.php
@@ -1,6 +1,8 @@
<?php
namespace Zotlabs\Module;
+use Zotlabs\Lib\Config;
+
require_once('include/api.php');
class Api extends \Zotlabs\Web\Controller {
@@ -57,7 +59,7 @@ class Api extends \Zotlabs\Web\Controller {
$consumer = new \OAuth1Consumer($app['client_id'], $app['pw'], $app['redirect_uri']);
$verifier = md5($app['secret'] . local_channel());
- set_config('oauth', $verifier, local_channel());
+ Config::Set('oauth', $verifier, local_channel());
if($consumer->callback_url != null) {
diff --git a/Zotlabs/Module/Apps.php b/Zotlabs/Module/Apps.php
index a955d572a..a8817111e 100644
--- a/Zotlabs/Module/Apps.php
+++ b/Zotlabs/Module/Apps.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-
+use \Zotlabs\Lib\Config;
use \Zotlabs\Lib as Zlib;
class Apps extends \Zotlabs\Web\Controller {
@@ -46,7 +46,7 @@ class Apps extends \Zotlabs\Web\Controller {
}
return replace_macros(get_markup_template('myapps.tpl'), array(
- '$sitename' => get_config('system','sitename'),
+ '$sitename' => Config::Get('system','sitename'),
'$cat' => $cat,
'$title' => (($available) ? t('Available Apps') : t('Installed Apps')),
'$apps' => $apps,
diff --git a/Zotlabs/Module/Channel.php b/Zotlabs/Module/Channel.php
index 4e6811a10..f3855b7e8 100644
--- a/Zotlabs/Module/Channel.php
+++ b/Zotlabs/Module/Channel.php
@@ -6,6 +6,7 @@ namespace Zotlabs\Module;
use App;
use Zotlabs\Lib\Activity;
use Zotlabs\Lib\ActivityStreams;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Crypto;
use Zotlabs\Lib\Libzot;
use Zotlabs\Lib\PermissionDescription;
@@ -176,7 +177,7 @@ class Channel extends Controller {
function get($update = 0, $load = false) {
- $noscript_content = get_config('system', 'noscript_content', '1');
+ $noscript_content = Config::Get('system', 'noscript_content', '1');
$category = $datequery = $datequery2 = '';
diff --git a/Zotlabs/Module/Cover_photo.php b/Zotlabs/Module/Cover_photo.php
index 1c1240e29..aa2464ac2 100644
--- a/Zotlabs/Module/Cover_photo.php
+++ b/Zotlabs/Module/Cover_photo.php
@@ -1,6 +1,7 @@
<?php
namespace Zotlabs\Module;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libsync;
/*
@@ -112,10 +113,10 @@ class Cover_photo extends \Zotlabs\Web\Controller {
if($r) {
- $max_thumb = intval(get_config('system','max_thumbnail',1600));
+ $max_thumb = intval(Config::Get('system','max_thumbnail',1600));
$iscaled = false;
if(intval($r[0]['height']) > $max_thumb || intval($r[0]['width']) > $max_thumb) {
- $imagick_path = get_config('system','imagick_convert_path');
+ $imagick_path = Config::Get('system','imagick_convert_path');
if($imagick_path && @file_exists($imagick_path) && intval($r[0]['os_storage'])) {
$fname = dbunescbin($r[0]['content']);
@@ -428,7 +429,7 @@ class Cover_photo extends \Zotlabs\Web\Controller {
function cover_photo_crop_ui_head(&$a, $ph, $hash, $smallest){
- $max_length = get_config('system','max_image_length');
+ $max_length = Config::Get('system','max_image_length');
if(! $max_length)
$max_length = MAX_IMAGE_LENGTH;
if($max_length > 0)
diff --git a/Zotlabs/Module/Dircensor.php b/Zotlabs/Module/Dircensor.php
index 4ce3a81c4..7caefa37c 100644
--- a/Zotlabs/Module/Dircensor.php
+++ b/Zotlabs/Module/Dircensor.php
@@ -3,9 +3,9 @@
namespace Zotlabs\Module;
use App;
-use Zotlabs\Web\Controller;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libzotdir;
-
+use Zotlabs\Web\Controller;
class Dircensor extends Controller {
@@ -14,7 +14,7 @@ class Dircensor extends Controller {
return;
}
- $dirmode = intval(get_config('system','directory_mode'));
+ $dirmode = intval(Config::Get('system','directory_mode'));
if(!in_array($dirmode, [DIRECTORY_MODE_PRIMARY, DIRECTORY_MODE_SECONDARY, DIRECTORY_MODE_STANDALONE])) {
return;
diff --git a/Zotlabs/Module/Directory.php b/Zotlabs/Module/Directory.php
index 53e2edd55..05aa735c8 100644
--- a/Zotlabs/Module/Directory.php
+++ b/Zotlabs/Module/Directory.php
@@ -3,9 +3,9 @@
namespace Zotlabs\Module;
use App;
-use Zotlabs\Web\Controller;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libzotdir;
-
+use Zotlabs\Web\Controller;
require_once('include/socgraph.php');
require_once('include/bbcode.php');
@@ -73,7 +73,7 @@ class Directory extends Controller {
return;
}
- if(get_config('system','block_public_directory',false) && (! get_observer_hash())) {
+ if(Config::Get('system','block_public_directory',false) && (! get_observer_hash())) {
notice( t('Public access denied.') . EOL);
return;
}
@@ -145,7 +145,7 @@ class Directory extends Controller {
$tpl = get_markup_template('directory_header.tpl');
- $dirmode = intval(get_config('system','directory_mode'));
+ $dirmode = intval(Config::Get('system','directory_mode'));
$directory_admin = false;
@@ -165,7 +165,7 @@ class Directory extends Controller {
$url = $directory['url'] . '/dirsearch';
}
- $token = get_config('system','realm_token');
+ $token = Config::Get('system','realm_token');
logger('mod_directory: URL = ' . $url, LOGGER_DEBUG);
@@ -184,11 +184,11 @@ class Directory extends Controller {
if($url) {
- $numtags = get_config('system','directorytags');
+ $numtags = Config::Get('system','directorytags');
$kw = ((intval($numtags) > 0) ? intval($numtags) : 50);
- if(get_config('system','disable_directory_keywords'))
+ if(Config::Get('system','disable_directory_keywords'))
$kw = 0;
if (intval($safe_mode) === 0 && $directory_admin)
@@ -213,7 +213,7 @@ class Directory extends Controller {
if(! is_null($pubforums))
$query .= '&pubforums=' . intval($pubforums);
- $directory_sort_order = get_config('system','directory_sort_order');
+ $directory_sort_order = Config::Get('system','directory_sort_order');
if(! $directory_sort_order)
$directory_sort_order = 'date';
diff --git a/Zotlabs/Module/Dirsearch.php b/Zotlabs/Module/Dirsearch.php
index aa42833c3..d27b195e4 100644
--- a/Zotlabs/Module/Dirsearch.php
+++ b/Zotlabs/Module/Dirsearch.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Module;
use App;
+use Zotlabs\Lib\Config;
use Zotlabs\Web\Controller;
class Dirsearch extends Controller {
@@ -17,7 +18,7 @@ class Dirsearch extends Controller {
// logger('request: ' . print_r($_REQUEST,true));
- $dirmode = intval(get_config('system','directory_mode'));
+ $dirmode = intval(Config::Get('system','directory_mode'));
if($dirmode == DIRECTORY_MODE_NORMAL) {
$ret['message'] = t('This site is not a directory server');
@@ -26,7 +27,7 @@ class Dirsearch extends Controller {
$access_token = $_REQUEST['t'] ?? '';
- $token = get_config('system','realm_token');
+ $token = Config::Get('system','realm_token');
if($token && $access_token != $token) {
$ret['message'] = t('This directory server requires an access token');
json_return_and_die($ret);
@@ -79,7 +80,7 @@ class Dirsearch extends Controller {
$forums = ((array_key_exists('pubforums',$_REQUEST)) ? intval($_REQUEST['pubforums']) : 0);
- if(get_config('system','disable_directory_keywords'))
+ if(Config::Get('system','disable_directory_keywords'))
$kw = 0;
diff --git a/Zotlabs/Module/Display.php b/Zotlabs/Module/Display.php
index f08aedc95..451ddeb1f 100644
--- a/Zotlabs/Module/Display.php
+++ b/Zotlabs/Module/Display.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Module;
use App;
+use Zotlabs\Lib\Config;
use Zotlabs\Web\Controller;
class Display extends Controller {
@@ -12,7 +13,7 @@ class Display extends Controller {
function get($update = 0, $load = false) {
- $noscript_content = (get_config('system', 'noscript_content', '1') && (! $update));
+ $noscript_content = (Config::Get('system', 'noscript_content', '1') && (! $update));
$module_format = 'html';
diff --git a/Zotlabs/Module/Editpost.php b/Zotlabs/Module/Editpost.php
index 5e405bdbc..6f524cdb8 100644
--- a/Zotlabs/Module/Editpost.php
+++ b/Zotlabs/Module/Editpost.php
@@ -84,7 +84,7 @@ class Editpost extends \Zotlabs\Web\Controller {
'item' => $itm[0],
'editor_autocomplete'=> true,
'bbco_autocomplete'=> 'bbcode',
- 'return_path' => $_SESSION['return_url'],
+ 'return_path' => 'hq',
'button' => t('Submit'),
'hide_voting' => true,
'hide_future' => true,
diff --git a/Zotlabs/Module/Email_validation.php b/Zotlabs/Module/Email_validation.php
index c1ba9a01a..c5799560f 100644
--- a/Zotlabs/Module/Email_validation.php
+++ b/Zotlabs/Module/Email_validation.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Module;
+use Zotlabs\Lib\Config;
class Email_validation extends \Zotlabs\Web\Controller {
@@ -12,8 +13,8 @@ class Email_validation extends \Zotlabs\Web\Controller {
// This will redirect internally on success unless the channel is auto_created
if(account_approve(trim(basename($_POST['token'])))) {
$success = true;
- if(get_config('system','auto_channel_create')) {
- $next_page = get_config('system', 'workflow_channel_next', 'profiles');
+ if(Config::Get('system','auto_channel_create')) {
+ $next_page = Config::Get('system', 'workflow_channel_next', 'profiles');
}
if($next_page) {
goaway(z_root() . '/' . $next_page);
@@ -40,9 +41,9 @@ class Email_validation extends \Zotlabs\Web\Controller {
'$submit' => t('Submit'),
'$token' => [ 'token', t('Validation token'),'','' ],
]);
-
+
return $o;
}
-} \ No newline at end of file
+}
diff --git a/Zotlabs/Module/Fhublocs.php b/Zotlabs/Module/Fhublocs.php
index a4d335a94..6cfee94f0 100644
--- a/Zotlabs/Module/Fhublocs.php
+++ b/Zotlabs/Module/Fhublocs.php
@@ -1,6 +1,7 @@
<?php
namespace Zotlabs\Module;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libzot;
require_once('include/crypto.php');
@@ -18,7 +19,7 @@ class Fhublocs extends \Zotlabs\Web\Controller {
$o = '';
$r = q("select * from channel where channel_removed = 0");
- $sitekey = get_config('system','pubkey');
+ $sitekey = Config::Get('system','pubkey');
if($r) {
foreach($r as $rr) {
diff --git a/Zotlabs/Module/Go.php b/Zotlabs/Module/Go.php
index d33136d9e..ec528fb1a 100644
--- a/Zotlabs/Module/Go.php
+++ b/Zotlabs/Module/Go.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Module;
+use Zorlabs\Lib\Config;
class Go extends \Zotlabs\Web\Controller {
@@ -44,9 +45,9 @@ class Go extends \Zotlabs\Web\Controller {
'network' => t('View your personal stream (this may be empty until you add some connections)'),
];
-
- $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false);
- $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true);
+
+ $site_firehose = ((intval(Config::Get('system','site_firehose',0))) ? true : false);
+ $net_firehose = ((Config::Get('system','disable_discover_tab',1)) ? false : true);
if($site_firehose || $net_firehose) {
$options['pubstream'] = t('View the public stream. Warning: this content is not moderated');
@@ -64,4 +65,4 @@ class Go extends \Zotlabs\Web\Controller {
}
-} \ No newline at end of file
+}
diff --git a/Zotlabs/Module/Group.php b/Zotlabs/Module/Group.php
index 1dce08757..63fdee7f0 100644
--- a/Zotlabs/Module/Group.php
+++ b/Zotlabs/Module/Group.php
@@ -2,10 +2,11 @@
namespace Zotlabs\Module;
use App;
-use Zotlabs\Web\Controller;
+use Zotlabs\Lib\AccessList;
use Zotlabs\Lib\Apps;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libsync;
-use Zotlabs\Lib\AccessList;
+use Zotlabs\Web\Controller;
class Group extends Controller {
@@ -123,7 +124,7 @@ class Group extends Controller {
// Switch to text mode interface if we have more than 'n' contacts or group members
$switchtotext = get_pconfig(local_channel(),'system','groupedit_image_limit');
if($switchtotext === false)
- $switchtotext = get_config('system','groupedit_image_limit');
+ $switchtotext = Config::Get('system','groupedit_image_limit');
if($switchtotext === false)
$switchtotext = 400;
diff --git a/Zotlabs/Module/Help.php b/Zotlabs/Module/Help.php
index 55ac80842..fd5cacee6 100644
--- a/Zotlabs/Module/Help.php
+++ b/Zotlabs/Module/Help.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-require_once('include/help.php');
+use Michelf\MarkdownExtra;
/**
* You can create local site resources in doc/Site.md and either link to doc/Home.md for the standard resources
@@ -14,7 +14,50 @@ require_once('include/help.php');
*/
class Help extends \Zotlabs\Web\Controller {
- function get() {
+ use \Zotlabs\Lib\Traits\HelpHelperTrait;
+
+ private string $heading_slug = '';
+
+ /**
+ * Associative array containing the detected language.
+ */
+ public array $lang = [
+ 'language' => 'en', //! Detected language, 2-letter ISO 639-1 code ("en")
+ 'from_url' => false, //! true if language from URL overrides browser default
+ ];
+
+ /**
+ * Pre-check before processing request.
+ *
+ * Determine language requested, and ensure that a topic was requested.
+ * If no topic was requested, redirect to the about page, and abort
+ * processing.
+ */
+ public function init() {
+ $this->determine_help_language();
+
+ if (argc() === 1) {
+ goaway("/help/{$this->lang['language']}/about/about");
+ killme();
+ }
+ }
+
+ /**
+ * Process get request for the help module.
+ *
+ * Loads the correct help file from the `doc/` directory, and passes it to
+ * the help template in `view/tpl/help.tpl`.
+ *
+ * If the requested help topic does not exist for the currently selected
+ * language, a 404 status is returned instead.
+ *
+ * This function currently also handles search and serving static assets
+ * that may be used by the help files.
+ *
+ * @return string The rendered help page or a 404 page if help topic was
+ * not found.
+ */
+ public function get() {
nav_set_selected('Help');
$o = '';
@@ -81,6 +124,120 @@ class Help extends \Zotlabs\Web\Controller {
killme();
}
+ //
+ // The args to the module will be along this pattern:
+ //
+ // help/<lang>/<subdir..>/<topic>
+ //
+ // Where `<lang>` is the language which we want to fetch the topic. This
+ // element is optional, but will be used to override the browser language
+ // preference if it exists.
+ //
+ // There may be zero or more `<subdir...>` elements. If there are any
+ // present, the first subdir will be used as the slug to find the
+ // heading of the help page.
+ //
+ // The `<topic>` should be the name of a file within the given language
+ // and subdirectory tree under the `doc/` directory of the site file
+ // system. The topic is given _without_ the file extension, which will be
+ // determined by the module.
+ //
+ // The valid file extensions for help topic are:
+ //
+ // - `.md` for markdown formatted source files.
+ // - `.bb` for bbcode formatted source files.
+ // - `.html` for help topics in html format.
+ //
+
+ // Strip away the module name from the args
+ $args = array_slice(\App::$argv, 1);
+
+ // Remove language if necessary
+ //
+ // The language was determined during pre-request processing in the
+ // `init` function.
+ if ($this->lang['from_url']) {
+ array_shift($args);
+ }
+
+ // Keep the first remaining arg as the heading slug
+ $this->heading_slug = $args[0];
+
+ // Locate the file for the topic in the doc directory
+ $this->find_help_file(implode('/', $args), $this->lang['language']);
+
+ $this->set_page_title();
+
+ if (empty($this->file_name)) {
+ header($_SERVER["SERVER_PROTOCOL"] . ' 404 ' . t('Not Found'));
+ $tpl = get_markup_template("404.tpl");
+ return replace_macros($tpl, array(
+ '$message' => t('Page not found.')
+ ));
+
+ } else {
+ $tpl = get_markup_template('help.tpl');
+ return replace_macros($tpl, [ '$module' => $this ]);
+ }
+ }
+
+ public function render_content(): string {
+ return $this->render_help_file($this->file_name, $this->file_type);
+ }
+
+ public function render_help_file(string $file_name, string $file_type): string {
+ $raw_text = file_get_contents($file_name);
+
+ switch ($file_type) {
+ case 'md':
+ // We need to escape the `#include` statements in the original file,
+ // to be sure it's not rendered as a heading by markdown.
+ $raw_text = preg_replace('/#include/ism', '%%include', $raw_text);
+ $content = MarkdownExtra::defaultTransform($raw_text);
+ $content = preg_replace('/%%include/ism', '#include', $content);
+ break;
+
+ case 'bb':
+ $content = zidify_links(bbcode($raw_text));
+ break;
+
+ case 'html':
+ $content = parseIdentityAwareHTML($raw_text);
+ break;
+ }
+
+ // Replace includes with the contents of the included file
+ $content = preg_replace_callback(
+ "/#include (.*?)\;/ism",
+ function ($matches) {
+ $parts = explode('.', $matches[1]);
+ $sub_file_type = array_pop($parts);
+ $included_content = $this->render_help_file($matches[1], $sub_file_type);
+ return str_replace($matches[0], $included_content, $matches[0]);
+ },
+ $content
+ );
+
+ return translate_projectname($content);
+ }
+
+ public function get_page_title(): string {
+ $title = t('$Projectname Documentation');
+ $heading = $this->get_heading();
+
+ if (! empty($heading)) {
+ $title .= ': ' . $heading;
+ }
+
+ return $title;
+ }
+
+ public function get_toc_heading(): string {
+ return t('Contents');
+ }
+
+
+ private function get_heading(): string {
$headings = [
'about' => t('About'),
'member' => t('Members'),
@@ -89,21 +246,22 @@ class Help extends \Zotlabs\Web\Controller {
'tutorials' => t('Tutorials')
];
- $heading = '';
- if(array_key_exists(argv(1), $headings))
- $heading = $headings[argv(1)];
-
- $content = get_help_content();
-
- $language = determine_help_language()['language'];
-
- return replace_macros(get_markup_template('help.tpl'), array(
- '$title' => t('$Projectname Documentation'),
- '$tocHeading' => t('Contents'),
- '$content' => $content,
- '$heading' => $heading,
- '$language' => $language
- ));
+ if(array_key_exists($this->heading_slug, $headings)) {
+ return $headings[$this->heading_slug];
+ } else {
+ return '';
+ }
}
+ /**
+ * Set the page title to an unslugified version of the file name.
+ *
+ * @Note This modifies the global `App::$page['title']` property.
+ */
+ private function set_page_title(): void {
+ $title = basename($this->file_name, ".{$this->file_type}");
+ \App::$page['title'] =
+ t('Help:') . ' '
+ . ucwords(str_replace(['-', '_'],' ',notags($title)));
+ }
}
diff --git a/Zotlabs/Module/Home.php b/Zotlabs/Module/Home.php
index 8d78960cc..691ca1af9 100644
--- a/Zotlabs/Module/Home.php
+++ b/Zotlabs/Module/Home.php
@@ -3,6 +3,7 @@
namespace Zotlabs\Module;
use App;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libzot;
use Zotlabs\Web\Controller;
use Zotlabs\Web\HTTPSig;
@@ -20,7 +21,7 @@ class Home extends Controller {
call_hooks('home_init', $ret);
if (Libzot::is_zot_request()) {
- $key = get_config('system', 'prvkey');
+ $key = Config::Get('system', 'prvkey');
$ret = json_encode(Libzot::site_info());
$headers = ['Content-Type' => 'application/x-zot+json', 'Digest' => HTTPSig::generate_digest_header($ret)];
@@ -38,7 +39,7 @@ class Home extends Controller {
if (local_channel() && $channel && $channel['xchan_url'] && !$splash) {
$dest = $ret['startpage'] ?? '';
if (!$dest)
- $dest = get_config('system', 'startpage');
+ $dest = Config::Get('system', 'startpage');
if (!$dest)
$dest = z_root() . '/hq';
@@ -78,7 +79,7 @@ class Home extends Controller {
if ($o)
return $o;
- $frontpage = get_config('system', 'frontpage');
+ $frontpage = Config::Get('system', 'frontpage');
if ($frontpage) {
if (strpos($frontpage, 'include:') !== false) {
$file = trim(str_replace('include:', '', $frontpage));
@@ -91,7 +92,7 @@ class Home extends Controller {
}
if (strpos($frontpage, 'http') !== 0)
$frontpage = z_root() . '/' . $frontpage;
- if (intval(get_config('system', 'mirror_frontpage'))) {
+ if (intval(Config::Get('system', 'mirror_frontpage'))) {
$o = '<html><head><title>' . t('$Projectname') . '</title></head><body style="margin: 0; padding: 0; border: none;" ><iframe src="' . $frontpage . '" width="100%" height="100%" style="margin: 0; padding: 0; border: none;" ></iframe></body></html>';
echo $o;
killme();
@@ -99,11 +100,11 @@ class Home extends Controller {
goaway($frontpage);
}
- $sitename = get_config('system', 'sitename');
+ $sitename = Config::Get('system', 'sitename');
if ($sitename)
$o .= '<h1 class="home-welcome">' . sprintf(t('Welcome to %s'), $sitename) . '</h1>';
- $loginbox = get_config('system', 'login_on_homepage');
+ $loginbox = Config::Get('system', 'login_on_homepage');
if (intval($loginbox) || $loginbox === false)
$o .= login(true);
diff --git a/Zotlabs/Module/Hq.php b/Zotlabs/Module/Hq.php
index ae6a016fc..c8e6efe38 100644
--- a/Zotlabs/Module/Hq.php
+++ b/Zotlabs/Module/Hq.php
@@ -4,14 +4,6 @@ namespace Zotlabs\Module;
use App;
use Zotlabs\Widget\Messages;
-
-require_once("include/bbcode.php");
-require_once('include/security.php');
-require_once('include/conversation.php');
-require_once('include/acl_selectors.php');
-require_once('include/items.php');
-
-
class Hq extends \Zotlabs\Web\Controller {
function init() {
@@ -98,7 +90,6 @@ class Hq extends \Zotlabs\Web\Controller {
'permissions' => $channel_acl,
'bang' => '',
'visitor' => true,
- 'profile_uid' => local_channel(),
'return_path' => 'hq',
'expanded' => true,
'editor_autocomplete' => true,
@@ -117,17 +108,6 @@ class Hq extends \Zotlabs\Web\Controller {
nav_set_selected('HQ');
- if($target_item) {
- // if the target item is not a post (eg a like) we want to address its thread parent
- //$mid = ((($target_item['verb'] == ACTIVITY_LIKE) || ($target_item['verb'] == ACTIVITY_DISLIKE)) ? $target_item['thr_parent'] : $target_item['mid']);
-
- // if we got a decoded hash we must encode it again before handing to javascript
- // $mid = gen_link_id($target_item['mid']);
- }
- else {
- $mid = '';
- }
-
$o .= '<div id="live-hq"></div>' . "\r\n";
$o .= "<script> var profile_uid = " . local_channel()
. "; var netargs = '?f='; var profile_page = " . App::$pager['page'] . ";</script>\r\n";
diff --git a/Zotlabs/Module/Import.php b/Zotlabs/Module/Import.php
index c8a9ac5ed..5ace4e72d 100644
--- a/Zotlabs/Module/Import.php
+++ b/Zotlabs/Module/Import.php
@@ -9,6 +9,7 @@ require_once('include/perm_upgrade.php');
use App;
use URLify;
use Zotlabs\Daemon\Master;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libzot;
use Zotlabs\Web\Controller;
@@ -168,7 +169,7 @@ class Import extends Controller {
if ($newname) {
$x = false;
- if (get_config('system', 'unicode_usernames')) {
+ if (Config::Get('system', 'unicode_usernames')) {
$x = punify(mb_strtolower($newname));
}
@@ -191,6 +192,12 @@ class Import extends Controller {
return;
}
+ if ($channel['channel_removed']) {
+ logger('Channel exists but has been marked removed on this hub. ', print_r($channel,true));
+ notice( t('Channel exists but has been marked removed on this hub. Import failed.') . EOL);
+ return;
+ }
+
if (is_array($data['config'])) {
import_config($channel, $data['config']);
}
@@ -227,10 +234,10 @@ class Import extends Controller {
'hubloc_url_sig' => Libzot::sign(z_root(), $channel['channel_prvkey']),
'hubloc_host' => App::get_hostname(),
'hubloc_callback' => z_root() . '/zot',
- 'hubloc_sitekey' => get_config('system', 'pubkey'),
+ 'hubloc_sitekey' => Config::Get('system', 'pubkey'),
'hubloc_updated' => datetime_convert(),
'hubloc_id_url' => channel_url($channel),
- 'hubloc_site_id' => Libzot::make_xchan_hash(z_root(), get_config('system', 'pubkey'))
+ 'hubloc_site_id' => Libzot::make_xchan_hash(z_root(), Config::Get('system', 'pubkey'))
]
);
@@ -524,27 +531,31 @@ class Import extends Controller {
// This will indirectly perform a refresh_all *and* update the directory
Master::Summon(['Directory', $channel['channel_id']]);
- $cf_api_compat = true;
+ if ($api_path) {
+ $parsed = parse_url($api_path);
+ unset($parsed['path']);
- if ($api_path && $import_posts) { // we are importing from a server and not a file
- if (version_compare($data['compatibility']['version'], '6.3.4', '>=')) {
+ // store the import host so we can manually kick off item/file sync later in case anything did not work out
+ set_pconfig($channel['channel_id'], 'import', 'host', $parsed['host']);
- $m = parse_url($api_path);
+ $hz_server = unparse_url($parsed);
+ }
- $hz_server = $m['scheme'] . '://' . $m['host'];
+ $cf_api_compat = false;
+
+ if ($api_path && $hz_server && $import_posts) { // we are importing from a server and not a file
+ if (version_compare($data['compatibility']['version'], '6.3.4', '>=')) {
+ $cf_api_compat = true;
$since = datetime_convert(date_default_timezone_get(), date_default_timezone_get(), '0001-01-01 00:00');
$until = datetime_convert(date_default_timezone_get(), date_default_timezone_get(), 'now + 1 day');
- //$poll_interval = get_config('system', 'poll_interval', 3);
+ //$poll_interval = Config::Get('system', 'poll_interval', 3);
$page = 0;
Master::Summon(['Content_importer', sprintf('%d', $page), $since, $until, $channel['channel_address'], urlencode($hz_server)]);
Master::Summon(['File_importer', sprintf('%d', $page), $channel['channel_address'], urlencode($hz_server)]);
}
- else {
- $cf_api_compat = false;
- }
}
change_channel($channel['channel_id']);
@@ -553,7 +564,7 @@ class Import extends Controller {
goaway(z_root() . '/import_progress');
}
- if (!$cf_api_compat) {
+ if ($import_posts && !$cf_api_compat) {
notice(t('Automatic content and files import was not possible due to API version incompatiblity. Please import content and files manually!') . EOL);
}
diff --git a/Zotlabs/Module/Import_progress.php b/Zotlabs/Module/Import_progress.php
index 5c68f9ff1..d9b13e8a8 100644
--- a/Zotlabs/Module/Import_progress.php
+++ b/Zotlabs/Module/Import_progress.php
@@ -1,6 +1,7 @@
<?php
namespace Zotlabs\Module;
+use App;
use Zotlabs\Lib\PConfig;
use Zotlabs\Daemon\Master;
@@ -21,6 +22,9 @@ class Import_progress extends \Zotlabs\Web\Controller {
nav_set_selected('Channel Import');
+ $channel = App::get_channel();
+ $import_host = PConfig::Get(local_channel(), 'import', 'host');
+
// items
$c = PConfig::Get(local_channel(), 'import', 'content_progress');
@@ -41,6 +45,24 @@ class Import_progress extends \Zotlabs\Web\Controller {
}
}
else {
+ if(argv(1) === 'resume_itemsync' && $import_host) {
+ $alive = probe_api_path($import_host);
+ if ($alive) {
+ $parsed = parse_url($alive);
+ unset($parsed['path']);
+
+ $hz_server = unparse_url($parsed);
+ $since = datetime_convert(date_default_timezone_get(), date_default_timezone_get(), '0001-01-01 00:00');
+ $until = datetime_convert(date_default_timezone_get(), date_default_timezone_get(), 'now + 1 day');
+ $page = 0;
+ Master::Summon(['Content_importer', sprintf('%d', $page), $since, $until, $channel['channel_address'], urlencode($hz_server)]);
+ goaway('/import_progress');
+ }
+ else {
+ notice(t('Import host does not seem to be online or compatible') . EOL);
+ }
+ }
+
$cprogress = 'waiting to start...';
if (PConfig::Get(local_channel(), 'import', 'content_completed')) {
@@ -73,6 +95,23 @@ class Import_progress extends \Zotlabs\Web\Controller {
}
}
else {
+ if(argv(1) === 'resume_filesync' && $import_host) {
+ $alive = probe_api_path($import_host);
+ if ($alive) {
+ $parsed = parse_url($alive);
+ unset($parsed['path']);
+
+ $hz_server = unparse_url($parsed);
+ $page = 0;
+
+ Master::Summon(['File_importer', sprintf('%d', $page), $channel['channel_address'], urlencode($hz_server)]);
+ goaway('/import_progress');
+ }
+ else {
+ notice(t('Import host does not seem to be online or compatible') . EOL);
+ }
+ }
+
$fprogress = 'waiting to start...';
if (PConfig::Get(local_channel(), 'import', 'files_completed')) {
diff --git a/Zotlabs/Module/Invite.php b/Zotlabs/Module/Invite.php
index bb552e4c7..3e1e98f89 100644
--- a/Zotlabs/Module/Invite.php
+++ b/Zotlabs/Module/Invite.php
@@ -3,6 +3,7 @@ namespace Zotlabs\Module;
use App;
use Zotlabs\Lib\Apps;
+use Zotlabs\Lib\Config;
use Zotlabs\Web\Controller;
/**
@@ -76,7 +77,7 @@ class Invite extends Controller {
$feedbk = '';
$isajax = is_ajax();
$eol = $isajax ? "\n" : EOL;
- $policy = intval(get_config('system','register_policy'));
+ $policy = intval(Config::Get('system','register_policy'));
if ($policy == REGISTER_CLOSED) {
notice( 'ZAI0212E,' . t('Register is closed') . ')' . EOL);
return;
@@ -85,13 +86,13 @@ class Invite extends Controller {
$flags = 0;
elseif ($policy == REGISTER_APPROVE)
$flags = ACCOUNT_PENDING;
- $flags = ($flags | intval(get_config('system','verify_email')));
+ $flags = ($flags | intval(Config::Get('system','verify_email')));
// how many max recipients in one mail submit
- $maxto = get_config('system','invitation_max_recipients', 'na');
+ $maxto = Config::Get('system','invitation_max_recipients', 'na');
If (is_site_admin()) {
// set, if admin is operator, default to 12
- if ($maxto === 'na') set_config('system','invitation_max_recipients', 12);
+ if ($maxto === 'na') Config::Set('system','invitation_max_recipients', 12);
}
$maxto = ($maxto === 'na') ? 12 : $maxto;
@@ -323,7 +324,7 @@ class Invite extends Controller {
return Apps::app_render($papp, 'module');
}
- if (! (get_config('system','invitation_also') || get_config('system','invitation_only')) ) {
+ if (! (Config::Get('system','invitation_also') || Config::Get('system','invitation_only')) ) {
$o = 'ZAI0103E,' . t('Invites not proposed by configuration') . '. ';
$o .= t('Contact the site admin');
return $o;
@@ -331,7 +332,7 @@ class Invite extends Controller {
// invitation_by_user may still not configured, the default 'na' will tell this
// if configured, 0 disables invitations by users, other numbers are how many invites a user may propagate
- $invuser = get_config('system','invitation_by_user', 'na');
+ $invuser = Config::Get('system','invitation_by_user', 'na');
// if the mortal user drives the invitation
If (! is_site_admin()) {
@@ -352,7 +353,7 @@ class Invite extends Controller {
} else {
// general deity admin invite limit infinite (theoretical)
- if ($invuser === 'na') set_config('system','invitation_by_user', 4);
+ if ($invuser === 'na') Config::Set('system','invitation_by_user', 4);
// for display only
$invuser = '∞';
}
@@ -385,11 +386,11 @@ class Invite extends Controller {
$wehave = ($r ? $r[0]['ct'] : 0);
// invites max for all users except admins
- $invmaxau = intval(get_config('system','invitations_max_users'));
+ $invmaxau = intval(Config::Get('system','invitations_max_users'));
if(! $invmaxau) {
$invmaxau = 50;
if (is_site_admin()) {
- set_config('system','invitations_max_users',intval($invmaxau));
+ Config::Set('system','invitations_max_users',intval($invmaxau));
}
}
@@ -519,7 +520,7 @@ class Invite extends Controller {
$ts = replace_macros(get_intltext_template('invite.'.$t1.'.subject.tpl'),
array(
'$projectname' => t('$Projectname'),
- '$invite_loc' => get_config('system','sitename')
+ '$invite_loc' => Config::Get('system','sitename')
)
);
@@ -569,7 +570,7 @@ class Invite extends Controller {
function calcdue($duri=false) {
// expirations, duration interval
if ($duri===false)
- $duri = get_config('system','register_expire', '2d');
+ $duri = Config::Get('system','register_expire', '2d');
if ( preg_match( '/^[0-9]{1,2}[ihdwmy]{1}$/', $duri ) ) {
$durq = substr($duri, -1);
$durn = substr($duri, 0, -1);
diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php
index 0324bf662..3d13655d2 100644
--- a/Zotlabs/Module/Item.php
+++ b/Zotlabs/Module/Item.php
@@ -1262,6 +1262,11 @@ class Item extends Controller {
if ((x($_REQUEST, 'return')) && strlen($return_path)) {
logger('return: ' . $return_path);
+
+ if ($return_path === 'hq') {
+ goaway(z_root() . '/hq/' . $datarray['uuid']);
+ }
+
goaway(z_root() . "/" . $return_path);
}
killme();
@@ -1654,7 +1659,7 @@ class Item extends Controller {
$listener = Libzot::zot_record_preferred($listener);
$c = q("select abook_id from abook where abook_channel = %d and abook_xchan = '%s'",
- intval($profile_uid),
+ intval($item['uid']),
dbesc($listener['hubloc_hash'])
);
diff --git a/Zotlabs/Module/Linkinfo.php b/Zotlabs/Module/Linkinfo.php
index 081966dba..8eb9a8c6d 100644
--- a/Zotlabs/Module/Linkinfo.php
+++ b/Zotlabs/Module/Linkinfo.php
@@ -1,6 +1,7 @@
<?php
namespace Zotlabs\Module;
+use Zotlabs\Lib\Config;
class Linkinfo extends \Zotlabs\Web\Controller {
@@ -168,7 +169,7 @@ class Linkinfo extends \Zotlabs\Web\Controller {
/* Execute below code only if image is present in siteinfo */
$total_images = 0;
- $max_images = get_config('system','max_bookmark_images');
+ $max_images = Config::Get('system','max_bookmark_images');
if($max_images === false)
$max_images = 2;
else
diff --git a/Zotlabs/Module/Lockview.php b/Zotlabs/Module/Lockview.php
index 0c8e23f8c..f3ae07f74 100644
--- a/Zotlabs/Module/Lockview.php
+++ b/Zotlabs/Module/Lockview.php
@@ -227,7 +227,7 @@ class Lockview extends Controller {
$allowed_xchans = array_unique($allowed_xchans);
foreach ($atokens as $atoken) {
if (in_array($atoken['xchan_hash'], $allowed_xchans)) {
- $guest_access_list[] = '<div class="dropdown-item d-flex justify-content-between cursor-pointer" title="' . sprintf(t('Click to copy link to this ressource for guest %s to clipboard'), $atoken['xchan_name']) . '" data-token="' . $url . '?zat=' . $atoken['atoken_token'] . '" onclick="navigator.clipboard.writeText(this.dataset.token); $.jGrowl(\'' . t('Link copied') . '\', { sticky: false, theme: \'info\', life: 1000 });"><span>' . $atoken['xchan_name'] . '</span><i class="fa fa-copy p-1"></i></div>';
+ $guest_access_list[] = '<div class="dropdown-item d-flex justify-content-between cursor-pointer" title="' . sprintf(t('Click to copy link to this ressource for guest %s to clipboard'), $atoken['xchan_name']) . '" data-token="' . $url . '?zat=' . $atoken['atoken_token'] . '" onclick="navigator.clipboard.writeText(this.dataset.token); toast(\'' . t('Link copied') . '\', \'info\');"><span>' . $atoken['xchan_name'] . '</span><i class="fa fa-copy p-1"></i></div>';
}
}
}
diff --git a/Zotlabs/Module/Lostpass.php b/Zotlabs/Module/Lostpass.php
index a0f9018b2..9846c541e 100644
--- a/Zotlabs/Module/Lostpass.php
+++ b/Zotlabs/Module/Lostpass.php
@@ -1,7 +1,7 @@
<?php
namespace Zotlabs\Module;
-
+use Zotlabs\Lib\Config;
class Lostpass extends \Zotlabs\Web\Controller {
@@ -34,19 +34,19 @@ class Lostpass extends \Zotlabs\Web\Controller {
$email_tpl = get_intltext_template("lostpass_eml.tpl");
$message = replace_macros($email_tpl, array(
- '$sitename' => get_config('system','sitename'),
+ '$sitename' => Config::Get('system','sitename'),
'$siteurl' => z_root(),
'$username' => sprintf( t('Site Member (%s)'), $email),
'$email' => $email,
'$reset_link' => z_root() . '/lostpass?verify=' . $hash
));
- $subject = email_header_encode(sprintf( t('Password reset requested at %s'),get_config('system','sitename')), 'UTF-8');
+ $subject = email_header_encode(sprintf( t('Password reset requested at %s'),Config::Get('system','sitename')), 'UTF-8');
$res = z_mail(
[
'toEmail' => $email,
- 'messageSubject' => sprintf( t('Password reset requested at %s'), get_config('system','sitename')),
+ 'messageSubject' => sprintf( t('Password reset requested at %s'), Config::Get('system','sitename')),
'textVersion' => $message,
]
);
@@ -114,7 +114,7 @@ class Lostpass extends \Zotlabs\Web\Controller {
$res = z_mail(
[
'toEmail' => $email,
- 'messageSubject' => sprintf( t('Your password has changed at %s'), get_config('system','sitename')),
+ 'messageSubject' => sprintf( t('Your password has changed at %s'), Config::Get('system','sitename')),
'textVersion' => $message,
]
);
diff --git a/Zotlabs/Module/New_channel.php b/Zotlabs/Module/New_channel.php
index 24dbe2944..48fcd9e10 100644
--- a/Zotlabs/Module/New_channel.php
+++ b/Zotlabs/Module/New_channel.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Module;
use URLify;
+use Zotlabs\Lib\Config;
require_once('include/channel.php');
require_once('include/permissions.php');
@@ -20,7 +21,7 @@ class New_channel extends \Zotlabs\Web\Controller {
$x = false;
- if(get_config('system','unicode_usernames')) {
+ if(Config::Get('system','unicode_usernames')) {
$x = punify(mb_strtolower($n));
}
@@ -55,7 +56,7 @@ class New_channel extends \Zotlabs\Web\Controller {
$x = false;
- if(get_config('system','unicode_usernames')) {
+ if(Config::Get('system','unicode_usernames')) {
$x = punify(mb_strtolower($n));
}
@@ -117,7 +118,7 @@ class New_channel extends \Zotlabs\Web\Controller {
change_channel($result['channel']['channel_id']);
- $next_page = get_config('system', 'workflow_channel_next', 'profiles');
+ $next_page = Config::Get('system', 'workflow_channel_next', 'profiles');
goaway(z_root() . '/' . $next_page);
}
@@ -138,7 +139,7 @@ class New_channel extends \Zotlabs\Web\Controller {
intval($aid)
);
if($r && (! intval($r[0]['total']))) {
- $default_role = get_config('system','default_permissions_role','personal');
+ $default_role = Config::Get('system','default_permissions_role','personal');
}
$limit = account_service_class_fetch(get_account_id(),'total_identities');
@@ -163,7 +164,7 @@ class New_channel extends \Zotlabs\Web\Controller {
$nick_help = '<span id="nick_help_loading" style="display:none">' . t('Loading') . '</span><span id="nick_help_text">';
$nick_help .= t('This will be used to create a unique network address (like an email address).');
- if(! get_config('system','unicode_usernames')) {
+ if(! Config::Get('system','unicode_usernames')) {
$nick_help .= ' ' . t('Allowed characters are a-z 0-9, - and _');
}
$nick_help .= '<span>';
diff --git a/Zotlabs/Module/Profile_photo.php b/Zotlabs/Module/Profile_photo.php
index dc47d213b..8c9d4d90c 100644
--- a/Zotlabs/Module/Profile_photo.php
+++ b/Zotlabs/Module/Profile_photo.php
@@ -4,6 +4,7 @@ namespace Zotlabs\Module;
use App;
use Zotlabs\Daemon\Master;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libsync;
use Zotlabs\Web\Controller;
@@ -599,7 +600,7 @@ class Profile_photo extends Controller {
function profile_photo_crop_ui_head($ph, $hash, $smallest) {
- $max_length = get_config('system', 'max_image_length');
+ $max_length = Config::Get('system', 'max_image_length');
if (!$max_length) {
$max_length = MAX_IMAGE_LENGTH;
diff --git a/Zotlabs/Module/Profiles.php b/Zotlabs/Module/Profiles.php
index 15252d6e6..a06193e12 100644
--- a/Zotlabs/Module/Profiles.php
+++ b/Zotlabs/Module/Profiles.php
@@ -1,6 +1,7 @@
<?php
namespace Zotlabs\Module;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libsync;
class Profiles extends \Zotlabs\Web\Controller {
@@ -619,14 +620,16 @@ class Profiles extends \Zotlabs\Web\Controller {
$profile_fields_advanced = get_profile_fields_advanced();
if(((argc() > 1) && (intval(argv(1)))) || !feature_enabled(local_channel(),'multi_profiles')) {
- if(feature_enabled(local_channel(),'multi_profiles'))
+ if (feature_enabled(local_channel(), 'multi_profiles')) {
$id = \App::$argv[1];
+ }
else {
$x = q("select id from profile where uid = %d and is_default = 1",
intval(local_channel())
);
- if($x)
+ if ($x) {
$id = $x[0]['id'];
+ }
}
$r = q("SELECT * FROM profile WHERE id = %d AND uid = %d LIMIT 1",
@@ -634,7 +637,7 @@ class Profiles extends \Zotlabs\Web\Controller {
intval(local_channel())
);
- if(! $r) {
+ if (!$r) {
notice( t('Profile not found.') . EOL);
return;
}
@@ -673,7 +676,7 @@ class Profiles extends \Zotlabs\Web\Controller {
$opt_tpl = get_markup_template("field_checkbox.tpl");
- if (get_config('system', 'publish_all')) {
+ if (Config::Get('system', 'publish_all')) {
$profile_in_dir = '<input type="hidden" name="profile_in_directory" value="1" />';
}
else {
@@ -716,7 +719,7 @@ class Profiles extends \Zotlabs\Web\Controller {
//$vctmp = (($vc) ? \Sabre\VObject\Reader::read($vc) : null);
//$vcard = (($vctmp) ? get_vcard_array($vctmp,$r[0]['id']) : [] );
- $f = get_config('system','birthday_input_format');
+ $f = Config::Get('system','birthday_input_format');
if(! $f)
$f = 'ymd';
@@ -826,7 +829,8 @@ class Profiles extends \Zotlabs\Web\Controller {
else {
$r = q("SELECT * FROM profile WHERE uid = %d",
- local_channel());
+ intval(local_channel())
+ );
if($r) {
$tpl = get_markup_template('profile_entry.tpl');
diff --git a/Zotlabs/Module/Profperm.php b/Zotlabs/Module/Profperm.php
index 900e2f981..842197415 100644
--- a/Zotlabs/Module/Profperm.php
+++ b/Zotlabs/Module/Profperm.php
@@ -1,6 +1,7 @@
<?php
namespace Zotlabs\Module;
+use Zotlabs\Lib\Config;
require_once('include/photos.php');
@@ -8,42 +9,42 @@ require_once('include/photos.php');
class Profperm extends \Zotlabs\Web\Controller {
function init() {
-
+
if(! local_channel())
return;
-
+
$channel = \App::get_channel();
$which = $channel['channel_address'];
-
+
$profile = \App::$argv[1];
-
+
profile_load($which,$profile);
-
+
}
-
-
+
+
function get() {
-
+
if(! local_channel()) {
notice( t('Permission denied') . EOL);
return;
}
-
-
+
+
if(argc() < 2) {
notice( t('Invalid profile identifier.') . EOL );
return;
}
-
+
// Switch to text mod interface if we have more than 'n' contacts or group members
-
+
$switchtotext = get_pconfig(local_channel(),'system','groupedit_image_limit');
if($switchtotext === false)
- $switchtotext = get_config('system','groupedit_image_limit');
+ $switchtotext = Config::Get('system','groupedit_image_limit');
if($switchtotext === false)
$switchtotext = 400;
-
-
+
+
if((argc() > 2) && intval(argv(1)) && intval(argv(2))) {
$r = q("SELECT abook_id FROM abook WHERE abook_id = %d and abook_channel = %d limit 1",
intval(argv(2)),
@@ -52,8 +53,8 @@ class Profperm extends \Zotlabs\Web\Controller {
if($r)
$change = intval(argv(2));
}
-
-
+
+
if((argc() > 1) && (intval(argv(1)))) {
$r = q("SELECT * FROM profile WHERE id = %d AND uid = %d AND is_default = 0 LIMIT 1",
intval(argv(1)),
@@ -63,21 +64,21 @@ class Profperm extends \Zotlabs\Web\Controller {
notice( t('Invalid profile identifier.') . EOL );
return;
}
-
+
$profile = $r[0];
-
+
$r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash WHERE abook_channel = %d AND abook_profile = '%s'",
intval(local_channel()),
dbesc($profile['profile_guid'])
);
-
+
$ingroup = array();
if($r)
foreach($r as $member)
$ingroup[] = $member['abook_id'];
-
+
$members = $r;
-
+
if($change) {
if(in_array($change,$ingroup)) {
q("UPDATE abook SET abook_profile = '' WHERE abook_id = %d AND abook_channel = %d",
@@ -91,42 +92,42 @@ class Profperm extends \Zotlabs\Web\Controller {
intval($change),
intval(local_channel())
);
-
+
}
-
- $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
+
+ $r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
WHERE abook_channel = %d AND abook_profile = '%s'",
intval(local_channel()),
dbesc($profile['profile_guid'])
);
-
+
$members = $r;
-
+
$ingroup = array();
if(count($r))
foreach($r as $member)
$ingroup[] = $member['abook_id'];
}
-
+
$o .= '<h2>' . t('Profile Visibility Editor') . '</h2>';
-
+
$o .= '<h3>' . t('Profile') . ' \'' . $profile['profile_name'] . '\'</h3>';
-
+
$o .= '<div id="prof-edit-desc">' . t('Click on a contact to add or remove.') . '</div>';
-
+
}
-
+
$o .= '<div id="prof-update-wrapper">';
if($change)
$o = '';
-
+
$o .= '<div id="prof-members-title">';
$o .= '<h3>' . t('Visible To') . '</h3>';
$o .= '</div>';
$o .= '<div id="prof-members">';
-
+
$textmode = (($switchtotext && (count($members) > $switchtotext)) ? true : false);
-
+
foreach($members as $member) {
if($member['xchan_url']) {
$member['click'] = 'profChangeMember(' . $profile['id'] . ',' . $member['abook_id'] . '); return false;';
@@ -135,14 +136,14 @@ class Profperm extends \Zotlabs\Web\Controller {
}
$o .= '</div><div id="prof-members-end"></div>';
$o .= '<hr id="prof-separator" />';
-
+
$o .= '<div id="prof-all-contcts-title">';
$o .= '<h3>' . t("All Connections") . '</h3>';
$o .= '</div>';
$o .= '<div id="prof-all-contacts">';
-
+
$r = abook_connections(local_channel());
-
+
if($r) {
$textmode = (($switchtotext && (count($r) > $switchtotext)) ? true : false);
foreach($r as $member) {
@@ -152,17 +153,17 @@ class Profperm extends \Zotlabs\Web\Controller {
}
}
}
-
+
$o .= '</div><div id="prof-all-contacts-end"></div>';
-
+
if($change) {
echo $o;
killme();
}
$o .= '</div>';
return $o;
-
+
}
-
-
+
+
}
diff --git a/Zotlabs/Module/Pubsites.php b/Zotlabs/Module/Pubsites.php
index 032406be4..cbaa66042 100644
--- a/Zotlabs/Module/Pubsites.php
+++ b/Zotlabs/Module/Pubsites.php
@@ -1,12 +1,13 @@
<?php
namespace Zotlabs\Module;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libzotdir;
class Pubsites extends \Zotlabs\Web\Controller {
function get() {
- $dirmode = intval(get_config('system','directory_mode'));
+ $dirmode = intval(Config::Get('system','directory_mode'));
$url = '';
@@ -19,7 +20,7 @@ class Pubsites extends \Zotlabs\Web\Controller {
}
$url .= '/sites';
- $rating_enabled = get_config('system','rating_enabled');
+ $rating_enabled = Config::Get('system','rating_enabled');
$o = '<div class="generic-content-wrapper">';
diff --git a/Zotlabs/Module/Pubstream.php b/Zotlabs/Module/Pubstream.php
index c40751fdc..6d8edf4d8 100644
--- a/Zotlabs/Module/Pubstream.php
+++ b/Zotlabs/Module/Pubstream.php
@@ -3,6 +3,7 @@ namespace Zotlabs\Module;
use App;
use Zotlabs\Lib\Apps;
+use Zotlabs\Lib\Config;
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
@@ -26,19 +27,19 @@ class Pubstream extends \Zotlabs\Web\Controller {
return login();
}
- if(! intval(get_config('system','open_pubstream',1))) {
+ if(! intval(Config::Get('system','open_pubstream',1))) {
if(! get_observer_hash()) {
return login();
}
}
- $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true);
+ $net_firehose = ((Config::Get('system','disable_discover_tab',1)) ? false : true);
if(!$net_firehose) {
return '';
}
- $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false);
+ $site_firehose = ((intval(Config::Get('system','site_firehose',0))) ? true : false);
$mid = $_REQUEST['mid'] ?? '';
$identifier = 'uuid';
@@ -107,7 +108,7 @@ class Pubstream extends \Zotlabs\Web\Controller {
nav_set_selected(t('Public Stream'));
- $maxheight = get_config('system','home_divmore_height');
+ $maxheight = Config::Get('system','home_divmore_height');
if(! $maxheight)
$maxheight = 400;
@@ -172,7 +173,7 @@ class Pubstream extends \Zotlabs\Web\Controller {
$site_firehose_sql = " and owner_xchan in (select channel_hash from channel where channel_system = 0 and channel_removed = 0) ";
}
- if(get_config('system','public_list_mode'))
+ if(Config::Get('system','public_list_mode'))
$page_mode = 'list';
else
$page_mode = 'client';
@@ -184,7 +185,6 @@ class Pubstream extends \Zotlabs\Web\Controller {
$thread_top = '';
}
- $net_query = (($net) ? " left join xchan on xchan_hash = author_xchan " : '');
$net_query2 = (($net) ? " and xchan_network = '" . protect_sprintf(dbesc($net)) . "' " : '');
if($update && $_SESSION['loadtime'])
@@ -196,16 +196,17 @@ class Pubstream extends \Zotlabs\Web\Controller {
if($update) {
- $ordering = get_config('system', 'pubstream_ordering', 'commented');
+ $ordering = Config::Get('system', 'pubstream_ordering', 'commented');
if($load) {
if($mid) {
$r = q("SELECT parent AS item_id FROM item
left join abook on item.author_xchan = abook.abook_xchan
- $net_query
+ left join xchan on item.author_xchan = xchan.xchan_hash
WHERE item.$identifier = '%s' and item.item_private = 0
$uids $site_firehose_sql
$item_normal
+ and xchan.xchan_censored = 0
and (abook.abook_blocked = 0 or abook.abook_flags is null)
$sql_extra $net_query2",
dbesc($mid)
@@ -215,10 +216,11 @@ class Pubstream extends \Zotlabs\Web\Controller {
// Fetch a page full of parent items for this page
$r = dbq("SELECT parent AS item_id FROM item
left join abook on ( item.author_xchan = abook.abook_xchan $abook_uids )
- $net_query
+ left join xchan on item.author_xchan = xchan.xchan_hash
WHERE item.item_private = 0 $thread_top
$uids $site_firehose_sql
$item_normal
+ and xchan.xchan_censored = 0
and (abook.abook_blocked = 0 or abook.abook_flags is null)
$sql_extra $net_query2
ORDER BY $ordering DESC $pager_sql "
@@ -229,9 +231,10 @@ class Pubstream extends \Zotlabs\Web\Controller {
if($mid) {
$r = q("SELECT parent AS item_id FROM item
left join abook on item.author_xchan = abook.abook_xchan
- $net_query
+ left join xchan on item.author_xchan = xchan.xchan_hash
WHERE item.$identifier = '%s' and item.item_private = 0
$uids $site_firehose_sql $item_normal_update $simple_update
+ and xchan.xchan_censored = 0
and (abook.abook_blocked = 0 or abook.abook_flags is null)
$sql_extra $net_query2",
dbesc($mid)
@@ -240,10 +243,11 @@ class Pubstream extends \Zotlabs\Web\Controller {
else {
$r = dbq("SELECT parent AS item_id FROM item
left join abook on item.author_xchan = abook.abook_xchan
- $net_query
+ left join xchan on item.author_xchan = xchan.xchan_hash
WHERE item.item_private = 0 $thread_top
$uids $site_firehose_sql $item_normal_update
$simple_update
+ and xchan.xchan_censored = 0
and (abook.abook_blocked = 0 or abook.abook_flags is null)
$sql_extra $net_query2"
);
diff --git a/Zotlabs/Module/Rbmark.php b/Zotlabs/Module/Rbmark.php
index 87b774495..df32a97c2 100644
--- a/Zotlabs/Module/Rbmark.php
+++ b/Zotlabs/Module/Rbmark.php
@@ -1,5 +1,5 @@
<?php
-namespace Zotlabs\Module; /** @file */
+namespace Zotlabs\Module;
require_once('include/acl_selectors.php');
require_once('include/crypto.php');
@@ -23,11 +23,9 @@ require_once('include/bookmarks.php');
* remote_return= absolute URL to return after posting is finished
*
*/
-
-
class Rbmark extends \Zotlabs\Web\Controller {
- function post() {
+ public function post(): void {
if($_POST['submit'] !== t('Save'))
return;
@@ -36,22 +34,21 @@ class Rbmark extends \Zotlabs\Web\Controller {
$channel = \App::get_channel();
$t = array('url' => escape_tags($_REQUEST['url']),'term' => escape_tags($_REQUEST['title']));
+
bookmark_add($channel,$channel,$t,((x($_REQUEST,'private')) ? intval($_REQUEST['private']) : 0),
array('menu_id' => ((x($_REQUEST,'menu_id')) ? intval($_REQUEST['menu_id']) : 0),
- 'menu_name' => ((x($_REQUEST,'menu_name')) ? escape_tags($_REQUEST['menu_name']) : ''),
- 'ischat' => ((x($_REQUEST['ischat'])) ? intval($_REQUEST['ischat']) : 0)
+ 'menu_name' => ((x($_REQUEST,'menu_name')) ? escape_tags($_REQUEST['menu_name']) : ''),
+ 'ischat' => ((x($_REQUEST['ischat'])) ? intval($_REQUEST['ischat']) : 0)
));
goaway(z_root() . '/bookmarks');
-
}
- function get() {
+ public function get(): string {
- $o = '';
-
- if(! local_channel()) {
+ $channel_id = local_channel();
+ if($channel_id === false) {
// The login procedure is going to bugger our $_REQUEST variables
// so save them in the session.
@@ -62,59 +59,46 @@ class Rbmark extends \Zotlabs\Web\Controller {
return login();
}
- // If we have saved rbmark session variables, but nothing in the current $_REQUEST, recover the saved variables
+ // If we have saved rbmark session variables, but nothing in the
+ // current $_REQUEST, recover the saved variables
if((! array_key_exists('url',$_REQUEST)) && (array_key_exists('bookmark',$_SESSION))) {
$_REQUEST = $_SESSION['bookmark'];
unset($_SESSION['bookmark']);
}
- if($_REQUEST['remote_return']) {
- $_SESSION['remote_return'] = $_REQUEST['remote_return'];
- }
- if(argc() > 1 && argv(1) === 'return') {
- if($_SESSION['remote_return'])
- goaway($_SESSION['remote_return']);
- goaway(z_root() . '/bookmarks');
- }
-
- $channel = \App::get_channel();
-
-
- $m = menu_list($channel['channel_id'],'',MENU_BOOKMARK);
-
- $menus = array();
- if($m) {
- $menus = array(0 => '');
- foreach($m as $n) {
- $menus[$n['menu_id']] = $n['menu_name'];
- }
- }
- $menu_select = array('menu_id',t('Select a bookmark folder'),false,'',$menus);
-
-
- $o .= replace_macros(get_markup_template('rbmark.tpl'), array(
+ $menu_select = [
+ 'menu_id',
+ t('Select a bookmark folder'),
+ false,
+ '',
+ $this->get_bookmark_folders(intval($channel_id)),
+ null,
+ ];
+ return replace_macros(get_markup_template('rbmark.tpl'), array(
'$header' => t('Save Bookmark'),
- '$url' => array('url',t('URL of bookmark'),escape_tags($_REQUEST['url'])),
- '$title' => array('title',t('Description'),escape_tags($_REQUEST['title'])),
+ '$url' => array('url',t('URL of bookmark'),$_REQUEST['url'], null, null, null),
+ '$title' => array('title',t('Description'),$_REQUEST['title'], null, null, null),
'$ischat' => ((x($_REQUEST,'ischat')) ? intval($_REQUEST['ischat']) : 0),
'$private' => ((x($_REQUEST,'private')) ? intval($_REQUEST['private']) : 0),
'$submit' => t('Save'),
- '$menu_name' => array('menu_name',t('Or enter new bookmark folder name'),'',''),
+ '$menu_name' => array('menu_name',t('Or enter new bookmark folder name'),'','', null, null),
'$menus' => $menu_select
-
));
+ }
+ private function get_bookmark_folders(int $channel_id): array {
+ $menu_list = menu_list($channel_id, '', MENU_BOOKMARK);
+ $menus = [ 0 => '' ];
+ if ($menu_list !== false) {
+ foreach($menu_list as $n) {
+ $menus[$n['menu_id']] = $n['menu_name'];
+ }
+ }
-
-
- return $o;
-
+ return $menus;
}
-
-
-
}
diff --git a/Zotlabs/Module/Regate.php b/Zotlabs/Module/Regate.php
index ac6273951..c67f45a88 100644
--- a/Zotlabs/Module/Regate.php
+++ b/Zotlabs/Module/Regate.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Module;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Connect;
use Zotlabs\Daemon\Master;
@@ -58,7 +59,7 @@ class Regate extends \Zotlabs\Web\Controller {
// normally, that should never happen here
// log suitable for fail2ban also
$logmsg = 'ZAR1230S Unexpected registration verification request for '
- . get_config('system','sitename') . ' arrived from § ' . $ip . ' §';
+ . Config::Get('system','sitename') . ' arrived from § ' . $ip . ' §';
zar_log($logmsg);
goaway(z_root());
}
@@ -118,7 +119,7 @@ class Regate extends \Zotlabs\Web\Controller {
$isa = ($isa && ($isa['account_roles'] && ACCOUNT_ROLE_ADMIN));
// approve contra invite by admin
- if ($isa && get_config('system','register_policy') == REGISTER_APPROVE) {
+ if ($isa && Config::Get('system','register_policy') == REGISTER_APPROVE) {
$flags &= $flags ^ ACCOUNT_PENDING;
}
@@ -159,7 +160,7 @@ class Regate extends \Zotlabs\Web\Controller {
$nextpage = 'new_channel';
- $auto_create = get_config('system', 'auto_channel_create', 1);
+ $auto_create = Config::Get('system', 'auto_channel_create', 1);
if($auto_create) {
@@ -179,7 +180,7 @@ class Regate extends \Zotlabs\Web\Controller {
if($reonar['chan.did1'])
set_aconfig($cra['account']['account_id'], 'register', 'channel_address', $reonar['chan.did1']);
- $permissions_role = get_config('system','default_permissions_role');
+ $permissions_role = Config::Get('system','default_permissions_role');
if($permissions_role)
set_aconfig($cra['account']['account_id'], 'register', 'permissions_role', $permissions_role);
@@ -206,7 +207,7 @@ class Regate extends \Zotlabs\Web\Controller {
}
change_channel($channel_id);
- $nextpage = 'profiles/' . $channel_id;
+ $nextpage = Config::Get('system', 'workflow_channel_next', 'profiles');
$msg_code = 'ZAR1239I';
$msg = t('Channel successfull created') . ' ' . $did2;
}
diff --git a/Zotlabs/Module/Regdir.php b/Zotlabs/Module/Regdir.php
index e49f89231..70e021715 100644
--- a/Zotlabs/Module/Regdir.php
+++ b/Zotlabs/Module/Regdir.php
@@ -1,6 +1,7 @@
<?php
namespace Zotlabs\Module;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Zotfinger;
use Zotlabs\Web\Controller;
@@ -13,55 +14,55 @@ use Zotlabs\Web\Controller;
* We would then need a flag in the site table to indicate that they've been
* validated by the PRIMARY directory for that realm. Sites claiming to be PRIMARY
* but are not the realm PRIMARY will be marked invalid.
- *
+ *
* @param App &$a
*/
class Regdir extends Controller {
function init() {
-
+
$result = array('success' => false);
-
+
$url = $_REQUEST['url'];
$access_token = $_REQUEST['t'];
$valid = 0;
-
+
// we probably don't need the realm as we will find out in the probe.
// What we may want to do is throw an error if you're trying to register in a different realm
// so this configuration issue can be discovered.
-
+
$realm = $_REQUEST['realm'];
if(! $realm)
$realm = DIRECTORY_REALM;
-
+
if($realm === DIRECTORY_REALM) {
$valid = 1;
} else {
- $token = get_config('system','realm_token');
+ $token = Config::Get('system','realm_token');
if($token && $access_token != $token) {
$result['message'] = 'This realm requires an access token';
return;
}
$valid = 1;
}
-
- $dirmode = intval(get_config('system','directory_mode'));
-
+
+ $dirmode = intval(Config::Get('system','directory_mode'));
+
if ($dirmode == DIRECTORY_MODE_NORMAL) {
$ret['message'] = t('This site is not a directory server');
json_return_and_die($ret);
}
-
+
$m = null;
if ($url) {
$m = parse_url($url);
-
+
if ((! $m) || (! z_dns_check($m['host']))) {
$result['message'] = 'unparseable url';
json_return_and_die($result);
}
-
+
$j = Zotfinger::exec($url);
if($j) {
$result['success'] = true;
@@ -79,7 +80,7 @@ class Regdir extends Controller {
}
else {
-
+
if ($dirmode == DIRECTORY_MODE_STANDALONE) {
$r = array(array('site_url' => z_root()));
} else {
@@ -93,7 +94,7 @@ class Regdir extends Controller {
$result['directories'] = array();
foreach ($r as $rr)
$result['directories'][] = $rr['site_url'];
-
+
json_return_and_die($result);
}
}
diff --git a/Zotlabs/Module/Register.php b/Zotlabs/Module/Register.php
index 5a50b4de0..f0163768c 100644
--- a/Zotlabs/Module/Register.php
+++ b/Zotlabs/Module/Register.php
@@ -3,6 +3,7 @@
namespace Zotlabs\Module;
use App;
+use Zotlabs\Lib\Config;
use Zotlabs\Web\Controller;
require_once('include/security.php');
@@ -63,7 +64,7 @@ class Register extends Controller {
$act = q("SELECT COUNT(*) AS act FROM account")[0]['act'];
$is247 = false;
$ip = $_SERVER['REMOTE_ADDR'];
- $sameip = intval(get_config('system','register_sameip', 3));
+ $sameip = intval(Config::Get('system','register_sameip', 3));
$arr = $_POST;
$invite_code = ((x($arr,'invite_code')) ? notags(trim($arr['invite_code'])) : '');
$name = '';
@@ -73,10 +74,10 @@ class Register extends Controller {
$password2 = ((x($arr,'password2')) ? trim($arr['password2']) : '');
$register_msg = ((x($arr,'register_msg')) ? notags(trim($arr['register_msg'])) : '');
$reonar = [];
- $auto_create = get_config('system','auto_channel_create', 1);
+ $auto_create = Config::Get('system','auto_channel_create', 1);
$duty = zar_register_dutystate();
- if (!get_config('system', 'register_duty_jso')) {
+ if (!Config::Get('system', 'register_duty_jso')) {
// if not yet configured default to true
$duty = array( 'isduty' => true, 'atfrm' => '', 'nowfmt' => '');
}
@@ -107,7 +108,7 @@ class Register extends Controller {
}
}
- $email_verify = get_config('system', 'verify_email');
+ $email_verify = Config::Get('system', 'verify_email');
if ($email_verify && !$email) {
notice(t('Email address required') . EOL);
return;
@@ -180,9 +181,9 @@ class Register extends Controller {
return;
}
- $policy = get_config('system','register_policy');
- $invonly = get_config('system','invitation_only');
- $invalso = get_config('system','invitation_also');
+ $policy = Config::Get('system','register_policy');
+ $invonly = Config::Get('system','invitation_only');
+ $invalso = Config::Get('system','invitation_also');
switch($policy) {
@@ -306,11 +307,11 @@ class Register extends Controller {
if($policy == REGISTER_OPEN || $policy == REGISTER_APPROVE ) {
- $cfgdelay = get_config('system', 'register_delay', '0i');
+ $cfgdelay = Config::Get('system', 'register_delay', '0i');
$reg_delayed = calculate_adue( $cfgdelay );
$regdelay = (($reg_delayed) ? datetime_convert(date_default_timezone_get(), 'UTC', $reg_delayed['due']) : $now);
- $cfgexpire = get_config('system', 'register_expire', '3d');
+ $cfgexpire = Config::Get('system', 'register_expire', '3d');
$reg_expires = calculate_adue( $cfgexpire );
$regexpire = (($reg_expires) ? datetime_convert(date_default_timezone_get(), 'UTC', $reg_expires['due']) : datetime_convert('UTC', 'UTC', 'now + 99 years'));
@@ -323,12 +324,12 @@ class Register extends Controller {
$didx = 'e';
push_lang(($reg['lang']) ? $reg['lang'] : App::$language);
- $reonar['from'] = get_config('system', 'from_email');
+ $reonar['from'] = Config::Get('system', 'from_email');
$reonar['to'] = $email;
- $reonar['subject'] = sprintf( t('Registration confirmation for %s'), get_config('system','sitename'));
+ $reonar['subject'] = sprintf( t('Registration confirmation for %s'), Config::Get('system','sitename'));
$reonar['txttemplate']= replace_macros(get_intltext_template('register_verify_member.tpl'),
[
- '$sitename' => get_config('system','sitename'),
+ '$sitename' => Config::Get('system','sitename'),
'$siteurl' => z_root(),
'$email' => $email,
'$timeframe' => [$regdelay, $regexpire],
@@ -428,10 +429,11 @@ class Register extends Controller {
function get() {
$registration_is = '';
+ $register_msg = '';
$other_sites = '';
- if(intval(get_config('system','register_policy')) === REGISTER_CLOSED) {
- if(intval(get_config('system','directory_mode')) === DIRECTORY_MODE_STANDALONE) {
+ if(intval(Config::Get('system','register_policy')) === REGISTER_CLOSED) {
+ if(intval(Config::Get('system','directory_mode')) === DIRECTORY_MODE_STANDALONE) {
notice(t('Registration on this hub is disabled.') . EOL);
return;
}
@@ -440,24 +442,25 @@ class Register extends Controller {
return $mod->get();
}
- if(intval(get_config('system','register_policy')) == REGISTER_APPROVE) {
+ if(intval(Config::Get('system','register_policy')) == REGISTER_APPROVE) {
+ $register_msg = ['register_msg', t('Why do you want to join this hub?'), ((x($_REQUEST,'register_msg')) ? $_REQUEST['register_msg'] : ''), t('This will help to review your registration')];
$registration_is = t('Registration on this hub is by approval only.');
$other_sites = '<a href="pubsites">' . t('Register at another affiliated hub in case when prefered') . '</a>';
}
$duty = zar_register_dutystate();
- if (!get_config('system', 'register_duty_jso')) {
+ if (!Config::Get('system', 'register_duty_jso')) {
// if not yet configured default to true
$duty = array( 'isduty' => true, 'atfrm' => '', 'nowfmt' => '');
}
$invitations = false;
- if(intval(get_config('system','invitation_only'))) {
+ if(intval(Config::Get('system','invitation_only'))) {
$invitations = true;
$registration_is = t('Registration on this hub is by invitation only.');
$other_sites = '<a href="pubsites">' . t('Register at another affiliated hub') . '</a>';
- } elseif (intval(get_config('system','invitation_also'))) {
+ } elseif (intval(Config::Get('system','invitation_also'))) {
$invitations = true;
}
@@ -466,7 +469,7 @@ class Register extends Controller {
$duty['atform'] = 'disabled';
// Configurable terms of service link
- $tosurl = get_config('system','tos_url');
+ $tosurl = Config::Get('system','tos_url');
if(! $tosurl)
$tosurl = z_root() . '/help/TermsOfService';
@@ -475,21 +478,21 @@ class Register extends Controller {
// Configurable whether to restrict age or not - default is based on international legal requirements
// This can be relaxed if you are on a restricted server that does not share with public servers
- if(get_config('system','no_age_restriction')) {
+ if(Config::Get('system','no_age_restriction')) {
$label_tos = sprintf( t('I accept the %s for this website'), $toslink);
}
else {
- $age = get_config('system','minimum_age');
+ $age = Config::Get('system','minimum_age');
if(!$age) {
$age = 13;
}
$label_tos = sprintf( t('I am over %s years of age and accept the %s for this website'), $age, $toslink);
}
- $enable_tos = 1 - intval(get_config('system','no_termsofservice'));
+ $enable_tos = 1 - intval(Config::Get('system','no_termsofservice'));
- $auto_create = get_config('system', 'auto_channel_create', 1);
- $email_verify = get_config('system','verify_email');
+ $auto_create = Config::Get('system', 'auto_channel_create', 1);
+ $email_verify = Config::Get('system','verify_email');
$emailval = ((x($_REQUEST,'email')) ? strip_tags(trim($_REQUEST['email'])) : "");
$email = ['email',
@@ -506,13 +509,11 @@ class Register extends Controller {
$invite_code = array('invite_code', t('Please enter your invitation code'), ((x($_REQUEST,'invite_code')) ? strip_tags(trim($_REQUEST['invite_code'])) : ""));
$name = array('name', t('Your name'), ((x($_REQUEST,'name')) ? $_REQUEST['name'] : ''), t('Real name is preferred'), '', '', $duty['atform']);
- $nickhub = '@' . str_replace(array('http://','https://','/'), '', get_config('system','baseurl'));
+ $nickhub = '@' . str_replace(array('http://','https://','/'), '', Config::Get('system','baseurl'));
$nickname = array('nickname', t('Choose a short nickname'), ((x($_REQUEST,'nickname')) ? $_REQUEST['nickname'] : ''), t('Your nickname will be used to create an easy to remember channel address'), '', '', $duty['atform']);
$tos = array('tos', $label_tos, ((x($_REQUEST,'tos')) ? $_REQUEST['tos'] : ''), '', [t('No'),t('Yes')], $duty['atform']);
- $register_msg = ['register_msg', t('Why do you want to join this hub?'), ((x($_REQUEST,'register_msg')) ? $_REQUEST['register_msg'] : ''), t('This will help to review your registration')];
-
require_once('include/bbcode.php');
$o = replace_macros(get_markup_template('register.tpl'), array(
@@ -520,7 +521,7 @@ class Register extends Controller {
'$title' => t('Registration'),
'$reg_is' => $registration_is,
'$register_msg' => $register_msg,
- '$registertext' => bbcode(get_config('system','register_text')),
+ '$registertext' => bbcode(Config::Get('system','register_text')),
'$other_sites' => $other_sites,
'$msg' => $opal['msg'],
'$invitations' => $invitations,
@@ -551,7 +552,7 @@ class Register extends Controller {
// check against register, account
$rear = array( 'is' => false, 'rn' => 0, 'an' => 0, 'msg' => '' );
- $max_dailies = intval(get_config('system', 'max_daily_registrations', 50));
+ $max_dailies = intval(Config::Get('system', 'max_daily_registrations', 50));
if ($max_dailies) {
diff --git a/Zotlabs/Module/Rpost.php b/Zotlabs/Module/Rpost.php
index 23324ee3a..45f19d7e7 100644
--- a/Zotlabs/Module/Rpost.php
+++ b/Zotlabs/Module/Rpost.php
@@ -28,119 +28,31 @@ require_once('include/conversation.php');
* type= choices are 'html' or 'bbcode', default is 'bbcode'
*
*/
-
-
-
-
class Rpost extends \Zotlabs\Web\Controller {
- function get() {
-
- $o = '';
-
- if(! local_channel()) {
- if(remote_channel()) {
- // redirect to your own site.
- // We can only do this with a GET request so you'll need to keep the text short or risk getting truncated
- // by the wretched beast called 'suhosin'. All the browsers now allow long GET requests, but suhosin
- // blocks them.
-
- $url = Libzot::get_rpost_path(App::get_observer());
- // make sure we're not looping to our own hub
- if(($url) && (! stristr($url, App::get_hostname()))) {
- foreach($_GET as $key => $arg) {
- if($key === 'q')
- continue;
- $url .= '&' . $key . '=' . $arg;
- }
- goaway($url);
- }
- }
+ /**
+ * Handle requests.
+ *
+ * Despite it's name, this method handles both POST and GET requests
+ * to the module.
+ */
+ public function get(): string {
- // The login procedure is going to bugger our $_REQUEST variables
- // so save them in the session.
+ $channel_id = local_channel();
- if(array_key_exists('body',$_REQUEST)) {
- $_SESSION['rpost'] = $_REQUEST;
- }
- return login();
+ if(! $channel_id) {
+ return $this->redirect_or_login();
}
nav_set_selected('Post');
- if (local_channel() && array_key_exists('userfile',$_FILES)) {
-
- $channel = App::get_channel();
- $observer = App::get_observer();
-
- $def_album = get_pconfig($channel['channel_id'],'system','photo_path');
- $def_attach = get_pconfig($channel['channel_id'],'system','attach_path');
-
- $r = attach_store($channel, (($observer) ? $observer['xchan_hash'] : ''), '', [
- 'source' => 'editor',
- 'visible' => 0,
- 'album' => $def_album,
- 'directory' => $def_attach,
- 'flags' => 1, // indicates temporary permissions are created
- 'allow_cid' => '<' . $channel['channel_hash'] . '>',
- 'allow_gid' => '',
- 'deny_cid' => '',
- 'deny_gid' => ''
- ]);
-
- if (! $r['success']) {
- notice( $r['message'] . EOL);
- }
-
- $s = EMPTY_STR;
-
- if (intval($r['data']['is_photo'])) {
- $s .= "\n\n" . $r['body'] . "\n\n";
- }
-
- $url = z_root() . '/cloud/' . $channel['channel_address'] . '/' . $r['data']['display_path'];
-
- if (strpos($r['data']['filetype'],'video') === 0) {
- $s .= "\n\n" . '[zvideo]' . $url . '[/zvideo]' . "\n\n";
- }
-
- if (strpos($r['data']['filetype'],'audio') === 0) {
- $s .= "\n\n" . '[zaudio]' . $url . '[/zaudio]' . "\n\n";
- }
-
- if ($r['data']['filetype'] === 'image/svg+xml') {
- $x = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']);
- if ($x) {
- $bb = svg2bb($x);
- if ($bb) {
- $s .= "\n\n" . $bb;
- }
- else {
- logger('empty return from svgbb');
- }
- }
- else {
- logger('unable to read svg data file: ' . 'store/' . $channel['channel_address'] . '/' . $r['data']['os_path']);
- }
- }
-
- if ($r['data']['filetype'] === 'text/calendar') {
- $content = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']);
- if ($content) {
- $ev = ical_to_ev($content);
- if ($ev) {
- $s .= "\n\n" . format_event_bbcode($ev[0]) . "\n\n";
- }
- }
- }
-
- $s .= "\n\n" . '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]' . "\n";
- $_REQUEST['body'] = ((array_key_exists('body',$_REQUEST)) ? $_REQUEST['body'] . $s : $s);
+ if (! empty($_FILES['userfile'])) {
+ $this->handle_attachments();
}
// If we have saved rpost session variables, but nothing in the current $_REQUEST, recover the saved variables
- if((! array_key_exists('body',$_REQUEST)) && (array_key_exists('rpost',$_SESSION))) {
+ if((! array_key_exists('body',$_REQUEST)) && isset($_SESSION['rpost'])) {
$_REQUEST = $_SESSION['rpost'];
unset($_SESSION['rpost']);
}
@@ -152,21 +64,10 @@ class Rpost extends \Zotlabs\Web\Controller {
);
if($r) {
require_once('include/security.php');
- $change = change_channel($r[0]['channel_id']);
+ change_channel($r[0]['channel_id']);
}
}
- if(isset($_REQUEST['remote_return']) && $_REQUEST['remote_return']) {
- $_SESSION['remote_return'] = $_REQUEST['remote_return'];
- }
- if(argc() > 1 && argv(1) === 'return') {
- if($_SESSION['remote_return'])
- goaway($_SESSION['remote_return']);
- goaway(z_root() . '/network');
- }
-
- $plaintext = true;
-
if(isset($_REQUEST['type']) && $_REQUEST['type'] === 'html') {
require_once('include/html2bbcode.php');
$_REQUEST['body'] = html2bbcode($_REQUEST['body']);
@@ -197,12 +98,12 @@ class Rpost extends \Zotlabs\Web\Controller {
'permissions' => $channel_acl,
'bang' => '',
'visitor' => true,
- 'profile_uid' => local_channel(),
+ 'profile_uid' => $channel_id,
'title' => $_REQUEST['title'] ?? '',
'body' => $_REQUEST['body'] ?? '',
'attachment' => $_REQUEST['attachment'] ?? '',
'source' => ((x($_REQUEST,'source')) ? strip_tags($_REQUEST['source']) : ''),
- 'return_path' => 'rpost/return',
+ 'return_path' => 'hq',
'bbco_autocomplete' => 'bbcode',
'editor_autocomplete' => true,
'bbcode' => true,
@@ -210,19 +111,128 @@ class Rpost extends \Zotlabs\Web\Controller {
'reset' => t('Reset form')
);
- $a = '';
$editor = status_editor($x, false, 'Rpost');
- $o .= replace_macros(get_markup_template('edpost_head.tpl'), array(
+ return replace_macros(get_markup_template('edpost_head.tpl'), array(
'$title' => t('Edit post'),
'$cancel' => '',
- '$editor' => $editor
+ '$editor' => $editor,
+ '$delete' => null,
));
+ }
+
+ /**
+ * Redirect to the observer's instance if not local, or return login form.
+ *
+ * The request is saved in the session if there's a `body` request
+ * param present. (Otherwise not.)
+ *
+ * @return string A login form if not redirected. If the session was
+ * determned to belong to a remote channel, the function does not
+ * return.
+ */
+ private function redirect_or_login(): string {
+ if(remote_channel()) {
+ // redirect to your own site.
+ // We can only do this with a GET request so you'll need to keep the text short or risk getting truncated
+ // by the wretched beast called 'suhosin'. All the browsers now allow long GET requests, but suhosin
+ // blocks them.
+
+ $url = Libzot::get_rpost_path(App::get_observer());
+ // make sure we're not looping to our own hub
+ if(($url) && (! stristr($url, App::get_hostname()))) {
+ foreach($_GET as $key => $arg) {
+ if($key === 'q')
+ continue;
+ $url .= '&' . $key . '=' . $arg;
+ }
+ goaway($url);
+ }
+ }
- return $o;
+ // The login procedure is going to bugger our $_REQUEST variables
+ // so save them in the session.
+ if(array_key_exists('body',$_REQUEST)) {
+ $_SESSION['rpost'] = $_REQUEST;
+ }
+ return login();
}
+ /**
+ * Handle uplads of attachments in the rpost call.
+ *
+ * This is only relevant for POST requests.
+ *
+ * The function will modify the `$_REQUEST['body']` superglobal
+ * (or add it if it does not exist).
+ */
+ private function handle_attachments(): void {
+ $channel = App::get_channel();
+ $observer = App::get_observer();
+
+ $def_album = get_pconfig($channel['channel_id'],'system','photo_path');
+ $def_attach = get_pconfig($channel['channel_id'],'system','attach_path');
+
+ $r = attach_store($channel, (($observer) ? $observer['xchan_hash'] : ''), '', [
+ 'source' => 'editor',
+ 'visible' => 0,
+ 'album' => $def_album,
+ 'directory' => $def_attach,
+ 'flags' => 1, // indicates temporary permissions are created
+ 'allow_cid' => '<' . $channel['channel_hash'] . '>',
+ 'allow_gid' => '',
+ 'deny_cid' => '',
+ 'deny_gid' => ''
+ ]);
+
+ if (! $r['success']) {
+ notice( $r['message'] . EOL);
+ }
+
+ $s = EMPTY_STR;
+
+ if (intval($r['data']['is_photo'])) {
+ $s .= "\n\n" . $r['body'] . "\n\n";
+ }
+
+ $url = z_root() . '/cloud/' . $channel['channel_address'] . '/' . $r['data']['display_path'];
+ if (strpos($r['data']['filetype'],'video') === 0) {
+ $s .= "\n\n" . '[zvideo]' . $url . '[/zvideo]' . "\n\n";
+ }
+
+ if (strpos($r['data']['filetype'],'audio') === 0) {
+ $s .= "\n\n" . '[zaudio]' . $url . '[/zaudio]' . "\n\n";
+ }
+ if ($r['data']['filetype'] === 'image/svg+xml') {
+ $x = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']);
+ if ($x) {
+ $bb = svg2bb($x);
+ if ($bb) {
+ $s .= "\n\n" . $bb;
+ }
+ else {
+ logger('empty return from svgbb');
+ }
+ }
+ else {
+ logger('unable to read svg data file: ' . 'store/' . $channel['channel_address'] . '/' . $r['data']['os_path']);
+ }
+ }
+
+ if ($r['data']['filetype'] === 'text/calendar') {
+ $content = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']);
+ if ($content) {
+ $ev = ical_to_ev($content);
+ if ($ev) {
+ $s .= "\n\n" . format_event_bbcode($ev[0]) . "\n\n";
+ }
+ }
+ }
+
+ $s .= "\n\n" . '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]' . "\n";
+ $_REQUEST['body'] = ((array_key_exists('body',$_REQUEST)) ? $_REQUEST['body'] . $s : $s);
+ }
}
diff --git a/Zotlabs/Module/Search.php b/Zotlabs/Module/Search.php
index 9511c0389..3753e2a5f 100644
--- a/Zotlabs/Module/Search.php
+++ b/Zotlabs/Module/Search.php
@@ -3,11 +3,12 @@
namespace Zotlabs\Module;
use App;
-use Zotlabs\Lib\Libzot;
use Zotlabs\Lib\Activity;
use Zotlabs\Lib\ActivityStreams;
-use Zotlabs\Web\Controller;
+use Zotlabs\Lib\Config;
+use Zotlabs\Lib\Libzot;
use Zotlabs\Lib\Zotfinger;
+use Zotlabs\Web\Controller;
class Search extends Controller {
@@ -18,7 +19,7 @@ class Search extends Controller {
function get($update = 0, $load = false) {
- if ((get_config('system', 'block_public')) || (get_config('system', 'block_public_search'))) {
+ if ((Config::Get('system', 'block_public')) || (Config::Get('system', 'block_public_search'))) {
if ((!local_channel()) && (!remote_channel())) {
notice(t('Public access denied.') . EOL);
return;
diff --git a/Zotlabs/Module/Service_limits.php b/Zotlabs/Module/Service_limits.php
index 2a1f78054..aa27f7a9c 100644
--- a/Zotlabs/Module/Service_limits.php
+++ b/Zotlabs/Module/Service_limits.php
@@ -1,20 +1,20 @@
<?php
namespace Zotlabs\Module; /** @file */
-
+use Zotlabs\Lib\Config;
class Service_limits extends \Zotlabs\Web\Controller {
function get() {
-
+
if(! local_channel()) {
notice( t('Permission denied.') . EOL);
return;
}
-
+
$account = \App::get_account();
if($account['account_service_class']) {
- $x = get_config('service_class',$account['account_service_class']);
+ $x = Config::Get('service_class',$account['account_service_class']);
if($x) {
$o = print_r($x,true);
return $o;
@@ -22,7 +22,7 @@ class Service_limits extends \Zotlabs\Web\Controller {
}
return t('No service class restrictions found.');
}
-
-
-
+
+
+
}
diff --git a/Zotlabs/Module/Settings/Account.php b/Zotlabs/Module/Settings/Account.php
index 85e7c793f..0266cee12 100644
--- a/Zotlabs/Module/Settings/Account.php
+++ b/Zotlabs/Module/Settings/Account.php
@@ -2,6 +2,8 @@
namespace Zotlabs\Module\Settings;
+use Zotlabs\Lib\Config;
+
class Account {
function post() {
@@ -19,7 +21,7 @@ class Account {
if (strpos($email, '@') > 0) {
if(! validate_email($email))
$errs[] = t('Not valid email.');
- $adm = trim(get_config('system','admin_email'));
+ $adm = trim(Config::Get('system','admin_email'));
if(($adm) && (strcasecmp($email,$adm) == 0)) {
$errs[] = t('Protected email address. Cannot change to that email.');
$email = \App::$account['account_email'];
diff --git a/Zotlabs/Module/Settings/Channel.php b/Zotlabs/Module/Settings/Channel.php
index 1e0c2a2db..b46208879 100644
--- a/Zotlabs/Module/Settings/Channel.php
+++ b/Zotlabs/Module/Settings/Channel.php
@@ -7,6 +7,7 @@ use Zotlabs\Access\PermissionLimits;
use Zotlabs\Access\PermissionRoles;
use Zotlabs\Daemon\Master;
use Zotlabs\Lib\Apps;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libsync;
require_once('include/selectors.php');
@@ -183,11 +184,11 @@ class Channel {
$subdir = ((strlen(App::get_path())) ? '<br />' . t('or') . ' ' . z_root() . '/channel/' . $nickname : '');
$webbie = $nickname . '@' . App::get_hostname();
$intl_nickname = unpunify($nickname) . '@' . unpunify(App::get_hostname());
- $disable_discover_tab = intval(get_config('system', 'disable_discover_tab', 1)) == 1;
- $site_firehose = intval(get_config('system', 'site_firehose', 0)) == 1;
+ $disable_discover_tab = intval(Config::Get('system', 'disable_discover_tab', 1)) == 1;
+ $site_firehose = intval(Config::Get('system', 'site_firehose', 0)) == 1;
$expire = $channel['channel_expire_days'];
- $sys_expire = get_config('system', 'default_expire_days');
+ $sys_expire = Config::Get('system', 'default_expire_days');
$tpl_addr = get_markup_template("settings_nick_set.tpl");
$prof_addr = replace_macros($tpl_addr, [
diff --git a/Zotlabs/Module/Settings/Display.php b/Zotlabs/Module/Settings/Display.php
index ee9692014..a7fccea47 100644
--- a/Zotlabs/Module/Settings/Display.php
+++ b/Zotlabs/Module/Settings/Display.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Module\Settings;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libsync;
class Display {
@@ -85,7 +86,7 @@ class Display {
$yes_no = array(t('No'),t('Yes'));
- $default_theme = get_config('system','theme');
+ $default_theme = Config::Get('system','theme');
if(! $default_theme)
$default_theme = 'redbasic';
@@ -95,7 +96,7 @@ class Display {
$theme = (($existing_theme) ? $existing_theme : $default_theme);
- $allowed_themes_str = get_config('system','allowed_themes');
+ $allowed_themes_str = Config::Get('system','allowed_themes');
$allowed_themes_raw = explode(',',$allowed_themes_str);
$allowed_themes = array();
if(count($allowed_themes_raw))
@@ -121,7 +122,7 @@ class Display {
$unsupported = file_exists('view/theme/' . $th . '/unsupported');
$is_library = file_exists('view/theme/'. $th . '/library');
- if (!$is_experimental or ($is_experimental && (get_config('experimentals','exp_themes')==1 or get_config('experimentals','exp_themes')===false))){
+ if (!$is_experimental or ($is_experimental && (Config::Get('experimentals','exp_themes')==1 or Config::Get('experimentals','exp_themes')===false))){
$theme_name = (($is_experimental) ? sprintf(t('%s - (Experimental)'), $f) : $f);
if (! $is_library) {
$themes[$f] = $theme_name;
diff --git a/Zotlabs/Module/Settings/Privacy.php b/Zotlabs/Module/Settings/Privacy.php
index 316b1306e..ed14fa94c 100644
--- a/Zotlabs/Module/Settings/Privacy.php
+++ b/Zotlabs/Module/Settings/Privacy.php
@@ -6,6 +6,7 @@ use App;
use Zotlabs\Access\PermissionLimits;
use Zotlabs\Access\Permissions;
use Zotlabs\Daemon\Master;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Group;
use Zotlabs\Lib\Libsync;
@@ -81,7 +82,7 @@ class Privacy {
$help_txt = t('Advise: set to "Anybody on the internet" and use privacy groups to restrict access');
$limits = PermissionLimits::Get(local_channel());
- $anon_comments = get_config('system', 'anonymous_comments', true);
+ $anon_comments = Config::Get('system', 'anonymous_comments', true);
foreach ($global_perms as $k => $perm) {
$options = [];
diff --git a/Zotlabs/Module/Setup.php b/Zotlabs/Module/Setup.php
index 83faf85dc..35079e5e5 100644
--- a/Zotlabs/Module/Setup.php
+++ b/Zotlabs/Module/Setup.php
@@ -1,5 +1,4 @@
<?php
-namespace Zotlabs\Module;
/**
* @file Zotlabs/Module/Setup.php
*
@@ -8,10 +7,12 @@ namespace Zotlabs\Module;
* @todo This setup module could need some love and improvements.
*/
+namespace Zotlabs\Module;
+
+use Zotlabs\Lib\Config;
/**
- * @brief Initialisation for the setup module.
- *
+ * Controller for the initial setup/installation.
*/
class Setup extends \Zotlabs\Web\Controller {
@@ -45,9 +46,9 @@ class Setup extends \Zotlabs\Web\Controller {
}
if(x($_POST, 'pass')) {
- $this->install_wizard_pass = intval($_POST['pass']);
+ self::$install_wizard_pass = intval($_POST['pass']);
} else {
- $this->install_wizard_pass = 1;
+ self::$install_wizard_pass = 1;
}
}
@@ -57,7 +58,7 @@ class Setup extends \Zotlabs\Web\Controller {
*/
function post() {
- switch($this->install_wizard_pass) {
+ switch(self::$install_wizard_pass) {
case 1:
case 2:
return;
@@ -179,18 +180,18 @@ class Setup extends \Zotlabs\Web\Controller {
$install_title = t('$Projectname Server - Setup');
if(x(\App::$data, 'db_conn_failed')) {
- $this->install_wizard_pass = 2;
+ self::$install_wizard_pass = 2;
$wizard_status = t('Could not connect to database.');
}
if(x(\App::$data, 'url_fail')) {
- $this->install_wizard_pass = 3;
+ self::$install_wizard_pass = 3;
$wizard_status = t('Could not connect to specified site URL. Possible SSL certificate or DNS issue.');
if(\App::$data['url_error'])
$wizard_status .= ' ' . \App::$data['url_error'];
}
if(x(\App::$data, 'db_create_failed')) {
- $this->install_wizard_pass = 2;
+ self::$install_wizard_pass = 2;
$wizard_status = t('Could not create table.');
}
$db_return_text = '';
@@ -214,9 +215,11 @@ class Setup extends \Zotlabs\Web\Controller {
$tpl = get_markup_template('install.tpl');
return replace_macros($tpl, array(
'$title' => $install_title,
+ '$icon' => null,
'$pass' => '',
'$status' => t('Permission denied.'),
'$text' => '',
+ '$what_next' => null,
));
}
}
@@ -236,7 +239,7 @@ class Setup extends \Zotlabs\Web\Controller {
));
}
- switch ($this->install_wizard_pass){
+ switch (self::$install_wizard_pass){
case 1: { // System check
$checks = array();
@@ -392,7 +395,7 @@ class Setup extends \Zotlabs\Web\Controller {
$this->check_add($checks, t('PHP version'), false, true, $help);
}
- if(strlen($phpath)) {
+ if(!empty($phpath)) {
$passed = file_exists($phpath);
}
elseif(function_exists('shell_exec')) {
@@ -760,11 +763,11 @@ class Setup extends \Zotlabs\Web\Controller {
*/
function what_next() {
// install the standard theme
- set_config('system', 'allowed_themes', 'redbasic');
+ Config::Set('system', 'allowed_themes', 'redbasic');
// if imagick converter is installed, use it
if(@is_executable('/usr/bin/convert')) {
- set_config('system','imagick_convert_path','/usr/bin/convert');
+ Config::Set('system','imagick_convert_path','/usr/bin/convert');
}
@@ -783,7 +786,7 @@ class Setup extends \Zotlabs\Web\Controller {
$x = curl_version();
if(stristr($x['ssl_version'],'openssl'))
- set_config('system','curl_ssl_ciphers','ALL:!eNULL');
+ Config::Set('system','curl_ssl_ciphers','ALL:!eNULL');
// Create a system channel
require_once ('include/channel.php');
diff --git a/Zotlabs/Module/Siteinfo.php b/Zotlabs/Module/Siteinfo.php
index 18eb703a2..3cad64a13 100644
--- a/Zotlabs/Module/Siteinfo.php
+++ b/Zotlabs/Module/Siteinfo.php
@@ -1,6 +1,7 @@
<?php
namespace Zotlabs\Module;
+use Zotlabs\Lib\Config;
class Siteinfo extends \Zotlabs\Web\Controller {
@@ -22,18 +23,18 @@ class Siteinfo extends \Zotlabs\Web\Controller {
'$sitenametxt' => t('Site Name'),
'$sitename' => \Zotlabs\Lib\System::get_site_name(),
'$headline' => t('Site Information'),
- '$site_about' => bbcode(get_config('system','siteinfo')),
+ '$site_about' => bbcode(Config::Get('system','siteinfo')),
'$admin_headline' => t('Administrator'),
- '$admin_about' => bbcode(get_config('system','admininfo')),
+ '$admin_about' => bbcode(Config::Get('system','admininfo')),
'$terms' => t('Terms of Service'),
'$prj_header' => t('Software and Project information'),
'$prj_name' => t('This site is powered by $Projectname'),
- '$prj_transport' => t('Federated and decentralised networking and identity services provided by Zot'),
- '$transport_link' => '<a href="https://zotlabs.org">https://zotlabs.org</a>',
+ '$prj_transport' => t('Federated and decentralised networking and identity services provided by'),
+ '$transport_link' => '<a href="https://hubzilla.org">https://hubzilla.org</a>',
'$additional_text' => t('Additional federated transport protocols:'),
'$additional_fed' => implode(', ', $federated),
- '$prj_version' => ((get_config('system','hidden_version_siteinfo')) ? '' : sprintf( t('Version %s'), \Zotlabs\Lib\System::get_project_version())),
+ '$prj_version' => ((Config::Get('system','hidden_version_siteinfo')) ? '' : sprintf( t('Version %s'), \Zotlabs\Lib\System::get_project_version())),
'$prj_linktxt' => t('Project homepage'),
'$prj_srctxt' => t('Developer homepage'),
'$prj_link' => \Zotlabs\Lib\System::get_project_link(),
diff --git a/Zotlabs/Module/Sources.php b/Zotlabs/Module/Sources.php
index ef665e727..177ae1f1a 100644
--- a/Zotlabs/Module/Sources.php
+++ b/Zotlabs/Module/Sources.php
@@ -3,6 +3,7 @@ namespace Zotlabs\Module; /** @file */
use App;
use Zotlabs\Lib\Apps;
+use Zotlabs\Lib\Text;
use Zotlabs\Web\Controller;
class Sources extends Controller {
@@ -15,13 +16,12 @@ class Sources extends Controller {
return;
$source = intval($_REQUEST['source']);
- $xchan = escape_tags($_REQUEST['xchan']);
+ $xchan = ((isset($_REQUEST['xchan'])) ? Text::escape_tags($_REQUEST['xchan']) : '');
$abook = intval($_REQUEST['abook']);
- $words = escape_tags($_REQUEST['words']);
+ $words = ((isset($_REQUEST['words'])) ? Text::escape_tags($_REQUEST['words']) : '');
$resend = intval($_REQUEST['resend']);
- $frequency = $_REQUEST['frequency'];
- $name = escape_tags($_REQUEST['name']);
- $tags = escape_tags($_REQUEST['tags']);
+ $name = ((isset($_REQUEST['name'])) ? Text::escape_tags($_REQUEST['name']) : '');
+ $tags = ((isset($_REQUEST['tags'])) ? Text::escape_tags($_REQUEST['tags']) : '');
$channel = \App::get_channel();
diff --git a/Zotlabs/Module/Sse.php b/Zotlabs/Module/Sse.php
index 8b46dcafd..5baa90128 100644
--- a/Zotlabs/Module/Sse.php
+++ b/Zotlabs/Module/Sse.php
@@ -4,6 +4,7 @@ namespace Zotlabs\Module;
use App;
use Zotlabs\Lib\Apps;
+use Zotlabs\Lib\Config;
use Zotlabs\Web\Controller;
use Zotlabs\Lib\Enotify;
use Zotlabs\Lib\XConfig;
@@ -22,7 +23,7 @@ class Sse extends Controller {
killme();
}
- if(! intval(get_config('system','open_pubstream',1))) {
+ if(! intval(Config::Get('system','open_pubstream',1))) {
if(! get_observer_hash()) {
killme();
}
@@ -52,7 +53,7 @@ class Sse extends Controller {
$sleep = 1000000; // microseconds
- self::$sse_enabled = get_config('system', 'sse_enabled', 0);
+ self::$sse_enabled = Config::Get('system', 'sse_enabled', 0);
if(self::$sse_enabled) {
diff --git a/Zotlabs/Module/Sse_bs.php b/Zotlabs/Module/Sse_bs.php
index 9fb295c4b..09c4ed614 100644
--- a/Zotlabs/Module/Sse_bs.php
+++ b/Zotlabs/Module/Sse_bs.php
@@ -4,6 +4,7 @@ namespace Zotlabs\Module;
use App;
use Zotlabs\Lib\Apps;
+use Zotlabs\Lib\Config;
use Zotlabs\Web\Controller;
use Zotlabs\Lib\Enotify;
use Zotlabs\Lib\XConfig;
@@ -424,7 +425,7 @@ class Sse_bs extends Controller {
return $result;
}
- if(! intval(get_config('system','open_pubstream',1))) {
+ if(! intval(Config::Get('system','open_pubstream',1))) {
if(! get_observer_hash()) {
$result['pubs']['offset'] = -1;
return $result;
@@ -459,7 +460,7 @@ class Sse_bs extends Controller {
$uids = " AND uid IN ( " . $sys['channel_id'] . " ) ";
- $site_firehose = get_config('system', 'site_firehose', 0);
+ $site_firehose = Config::Get('system', 'site_firehose', 0);
if($site_firehose) {
$uids = " AND uid IN ( " . stream_perms_api_uids(PERMS_PUBLIC) . " ) AND item_private = 0 AND item_wall = 1 ";
}
@@ -589,6 +590,7 @@ class Sse_bs extends Controller {
if($forums) {
$item_normal = item_normal();
+ $p_sql = '';
$sql_extra = '';
if(! (self::$vnotify & VNOTIFY_LIKE))
@@ -598,6 +600,7 @@ class Sse_bs extends Controller {
$i = 0;
for($x = 0; $x < $fcount; $x ++) {
+ /*
$p = q("SELECT oid AS parent FROM term WHERE uid = %d AND ttype = %d AND term = '%s'",
intval(self::$uid),
intval(TERM_FORUM),
@@ -606,14 +609,16 @@ class Sse_bs extends Controller {
$p_str = ids_to_querystr($p, 'parent');
$p_sql = (($p_str) ? "OR parent IN ( $p_str )" : '');
+ */
$r = q("select count(*) as total from item
- where uid = %d and ( owner_xchan = '%s' OR author_xchan = '%s' $p_sql ) and item_unseen = 1 $sql_extra $item_normal",
+ where uid = %d and ( owner_xchan = '%s' OR author_xchan = '%s' $p_sql ) and verb != 'Announce' and item_unseen = 1 $sql_extra $item_normal",
intval(self::$uid),
dbesc($forums[$x]['xchan_hash']),
dbesc($forums[$x]['xchan_hash'])
);
+
if($r[0]['total']) {
$forums[$x]['notify_link'] = z_root() . '/network/?f=&pf=1&unseen=1&cid=' . $forums[$x]['abook_id'];
@@ -732,7 +737,7 @@ class Sse_bs extends Controller {
if(! self::$uid && ! is_site_admin())
return $result;
- $policy = intval(get_config('system','register_policy'));
+ $policy = intval(Config::Get('system','register_policy'));
if(($policy & REGISTER_APPROVE) != REGISTER_APPROVE)
return $result;
diff --git a/Zotlabs/Module/Toggle_mobile.php b/Zotlabs/Module/Toggle_mobile.php
deleted file mode 100644
index 9d90c0821..000000000
--- a/Zotlabs/Module/Toggle_mobile.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-namespace Zotlabs\Module;
-
-
-class Toggle_mobile extends \Zotlabs\Web\Controller {
-
- function init() {
-
- if(isset($_GET['off']))
- $_SESSION['show_mobile'] = false;
- else
- $_SESSION['show_mobile'] = true;
-
- if(isset($_GET['address']))
- $address = $_GET['address'];
- else
- $address = z_root();
-
- goaway($address);
- }
-
-
-}
diff --git a/Zotlabs/Module/Toggle_safesearch.php b/Zotlabs/Module/Toggle_safesearch.php
deleted file mode 100644
index 2e9bc2575..000000000
--- a/Zotlabs/Module/Toggle_safesearch.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-namespace Zotlabs\Module;
-
-
-class Toggle_safesearch extends \Zotlabs\Web\Controller {
-
- function init() {
-
- $observer = get_observer_hash();
- if (! $observer)
- return;
-
- if($observer)
- $safe_mode = get_xconfig($observer,'directory','safe_mode');
- if ($safe_mode == '')
- set_xconfig($observer,'directory','safe_mode', '0');
- elseif($safe_mode == '0')
- set_xconfig($observer,'directory','safe_mode', '1');
- elseif($safe_mode == '1')
- set_xconfig($observer,'directory','safe_mode', '0');
-
- if(isset($_GET['address']))
- $address = $_GET['address'];
- else
- $address = z_root() . '/directory';
-
- goaway($address);
- }
-
-
-}
diff --git a/Zotlabs/Module/Wall_attach.php b/Zotlabs/Module/Wall_attach.php
index 0d5c9e983..3c57d4b94 100644
--- a/Zotlabs/Module/Wall_attach.php
+++ b/Zotlabs/Module/Wall_attach.php
@@ -104,32 +104,32 @@ class Wall_attach extends \Zotlabs\Web\Controller {
}
if(intval($r['data']['is_photo'])) {
- $s = "\n\n" . $r['body'] . "\n\n";
+ $s = $r['body'];
}
else {
- if(strpos($r['data']['filetype'],'video') === 0) {
+ if(strpos($r['data']['filetype'], 'video') === 0) {
// give a wee bit of time for the background thumbnail processor to do its thing
// or else we'll never see a video poster
sleep(3);
$url = z_root() . '/cloud/' . $channel['channel_address'] . '/' . $r['data']['display_path'];
$thumb = Linkinfo::get_video_poster($url);
if($thumb) {
- $s = "\n\n" . '[zvideo poster=\'' . $thumb . '\']' . $url . '[/zvideo]' . "\n\n";
+ $s = '[zvideo poster=\'' . $thumb . '\']' . $url . '[/zvideo]';
}
else {
- $s = "\n\n" . '[zvideo]' . $url . '[/zvideo]' . "\n\n";
+ $s = '[zvideo]' . $url . '[/zvideo]';
}
}
if(strpos($r['data']['filetype'],'audio') === 0) {
$url = z_root() . '/cloud/' . $channel['channel_address'] . '/' . $r['data']['display_path'];
- $s = "\n\n" . '[zaudio]' . $url . '[/zaudio]' . "\n\n";
+ $s = '[zaudio]' . $url . '[/zaudio]';
}
if ($r['data']['filetype'] === 'image/svg+xml') {
$x = @file_get_contents('store/' . $channel['channel_address'] . '/' . $r['data']['os_path']);
if ($x) {
$bb = svg2bb($x);
if ($bb) {
- $s .= "\n\n" . $bb;
+ $s .= $bb;
}
else {
logger('empty return from svgbb');
@@ -140,7 +140,7 @@ class Wall_attach extends \Zotlabs\Web\Controller {
}
}
- $s .= "\n\n" . '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]' . "\n";
+ $s .= '[attachment]' . $r['data']['hash'] . ',' . $r['data']['revision'] . '[/attachment]';
}
$sync = attach_export_data($channel,$r['data']['hash']);
diff --git a/Zotlabs/Module/Well_known.php b/Zotlabs/Module/Well_known.php
index 9cc31a7d3..a90397d2f 100644
--- a/Zotlabs/Module/Well_known.php
+++ b/Zotlabs/Module/Well_known.php
@@ -1,6 +1,7 @@
<?php
namespace Zotlabs\Module;
+use Zotlabs\Lib\Config;
class Well_known extends \Zotlabs\Web\Controller {
@@ -21,7 +22,7 @@ class Well_known extends \Zotlabs\Web\Controller {
// Note: Your web server must be configured to create this variable. For example in Apache
// you'll need HostnameLookups On inside httpd.conf for it to exist. See also gethostbyaddr().
- if(get_config('system','siteallowed_remote_host') && (! check_siteallowed($_SERVER['REMOTE_HOST']))) {
+ if(Config::Get('system','siteallowed_remote_host') && (! check_siteallowed($_SERVER['REMOTE_HOST']))) {
logger('well_known: site not allowed. ' . $_SERVER['REMOTE_HOST']);
killme();
}
diff --git a/Zotlabs/Module/Wfinger.php b/Zotlabs/Module/Wfinger.php
index 43b039530..42dcf240f 100644
--- a/Zotlabs/Module/Wfinger.php
+++ b/Zotlabs/Module/Wfinger.php
@@ -1,6 +1,7 @@
<?php
namespace Zotlabs\Module;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Keyutils;
use Zotlabs\Lib\Libzot;
@@ -88,7 +89,7 @@ class Wfinger extends \Zotlabs\Web\Controller {
if($root_resource) {
$result['subject'] = $resource;
$result['properties'] = [
- 'https://w3id.org/security/v1#publicKeyPem' => get_config('system','pubkey')
+ 'https://w3id.org/security/v1#publicKeyPem' => Config::Get('system','pubkey')
];
$result['links'] = [
[
diff --git a/Zotlabs/Photo/PhotoDriver.php b/Zotlabs/Photo/PhotoDriver.php
index fc34f87a9..e8b42ec1b 100644
--- a/Zotlabs/Photo/PhotoDriver.php
+++ b/Zotlabs/Photo/PhotoDriver.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Photo;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Hashpath;
/**
@@ -443,7 +444,7 @@ abstract class PhotoDriver {
$p['display_path'] = $arr['display_path'] ?? '';
$p['width'] = $arr['width'] ?? $this->getWidth();
$p['height'] = $arr['height'] ?? $this->getHeight();
- $p['expires'] = $arr['expires'] ?? gmdate('Y-m-d H:i:s', time() + get_config('system', 'photo_cache_time', 86400));
+ $p['expires'] = $arr['expires'] ?? gmdate('Y-m-d H:i:s', time() + Config::Get('system', 'photo_cache_time', 86400));
$p['profile'] = $arr['profile'] ?? 0;
if(! intval($p['imgscale']))
@@ -508,7 +509,7 @@ abstract class PhotoDriver {
$arr['imgscale'] = $scale;
- if(boolval(get_config('system','photo_storage_type', 1))) {
+ if(boolval(Config::Get('system','photo_storage_type', 1))) {
$arr['os_storage'] = 1;
diff --git a/Zotlabs/Photo/PhotoGd.php b/Zotlabs/Photo/PhotoGd.php
index 6854be0ab..4a47f97ee 100644
--- a/Zotlabs/Photo/PhotoGd.php
+++ b/Zotlabs/Photo/PhotoGd.php
@@ -2,6 +2,8 @@
namespace Zotlabs\Photo;
+use Zotlabs\Lib\Config;
+
/**
* @brief GD photo driver.
*
@@ -157,14 +159,14 @@ class PhotoGd extends PhotoDriver {
switch($this->getType()){
case 'image/png':
- $quality = get_config('system', 'png_quality');
+ $quality = Config::Get('system', 'png_quality');
if((! $quality) || ($quality > 9))
$quality = PNG_QUALITY;
\imagepng($this->image, NULL, $quality);
break;
case 'image/webp':
- $quality = get_config('system', 'webp_quality');
+ $quality = Config::Get('system', 'webp_quality');
if((! $quality) || ($quality > 100))
$quality = WEBP_QUALITY;
\imagewebp($this->image, NULL, $quality);
@@ -174,7 +176,7 @@ class PhotoGd extends PhotoDriver {
// gd can lack imagejpeg(), but we verify during installation it is available
default:
- $quality = get_config('system', 'jpeg_quality');
+ $quality = Config::Get('system', 'jpeg_quality');
if((! $quality) || ($quality > 100))
$quality = JPEG_QUALITY;
\imagejpeg($this->image, NULL, $quality);
diff --git a/Zotlabs/Photo/PhotoImagick.php b/Zotlabs/Photo/PhotoImagick.php
index 0a08d19e6..59f276480 100644
--- a/Zotlabs/Photo/PhotoImagick.php
+++ b/Zotlabs/Photo/PhotoImagick.php
@@ -2,6 +2,8 @@
namespace Zotlabs\Photo;
+use Zotlabs\Lib\Config;
+
/**
* @brief ImageMagick photo driver.
*/
@@ -57,7 +59,7 @@ class PhotoImagick extends PhotoDriver {
switch($this->getType()) {
case 'image/png':
- $quality = get_config('system', 'png_quality');
+ $quality = Config::Get('system', 'png_quality');
if((! $quality) || ($quality > 9))
$quality = PNG_QUALITY;
/*
@@ -73,14 +75,14 @@ class PhotoImagick extends PhotoDriver {
break;
case 'image/jpeg':
- $quality = get_config('system', 'jpeg_quality');
+ $quality = Config::Get('system', 'jpeg_quality');
if((! $quality) || ($quality > 100))
$quality = JPEG_QUALITY;
$this->image->setCompressionQuality($quality);
break;
case 'image/webp':
- $quality = get_config('system', 'webp_quality');
+ $quality = Config::Get('system', 'webp_quality');
if((! $quality) || ($quality > 100))
$quality = WEBP_QUALITY;
$this->image->setCompressionQuality($quality);
diff --git a/Zotlabs/Render/Comanche.php b/Zotlabs/Render/Comanche.php
index 7288c7fd7..ba0d77c39 100644
--- a/Zotlabs/Render/Comanche.php
+++ b/Zotlabs/Render/Comanche.php
@@ -2,6 +2,8 @@
namespace Zotlabs\Render;
+use Zotlabs\Lib\Config;
+
require_once('include/security.php');
require_once('include/menu.php');
@@ -157,7 +159,7 @@ class Comanche {
* @brief Replace conditional variables with real values.
*
* Currently supported condition variables:
- * * $config.xxx.yyy - get_config with cat = xxx and k = yyy
+ * * $config.xxx.yyy - Config::Get with cat = xxx and k = yyy
* * $request - request uri for this page
* * $observer.language - viewer's preferred language (closest match)
* * $observer.address - xchan_addr or false
@@ -172,7 +174,7 @@ class Comanche {
if($v) {
$x = explode('.', $v);
if($x[0] == 'config')
- return get_config($x[1],$x[2]);
+ return Config::Get($x[1],$x[2]);
elseif($x[0] === 'request')
return $_SERVER['REQUEST_URI'];
elseif($x[0] === 'local_channel') {
@@ -208,18 +210,18 @@ class Comanche {
*
* This is extensible. The first version of variable testing supports tests of the forms:
*
- * - [if $config.system.foo ~= baz] which will check if get_config('system','foo') contains the string 'baz';
- * - [if $config.system.foo == baz] which will check if get_config('system','foo') is the string 'baz';
- * - [if $config.system.foo != baz] which will check if get_config('system','foo') is not the string 'baz';
- * - [if $config.system.foo >= 3] which will check if get_config('system','foo') is greater than or equal to 3;
- * - [if $config.system.foo > 3] which will check if get_config('system','foo') is greater than 3;
- * - [if $config.system.foo <= 3] which will check if get_config('system','foo') is less than or equal to 3;
- * - [if $config.system.foo < 3] which will check if get_config('system','foo') is less than 3;
+ * - [if $config.system.foo ~= baz] which will check if Config::Get('system','foo') contains the string 'baz';
+ * - [if $config.system.foo == baz] which will check if Config::Get('system','foo') is the string 'baz';
+ * - [if $config.system.foo != baz] which will check if Config::Get('system','foo') is not the string 'baz';
+ * - [if $config.system.foo >= 3] which will check if Config::Get('system','foo') is greater than or equal to 3;
+ * - [if $config.system.foo > 3] which will check if Config::Get('system','foo') is greater than 3;
+ * - [if $config.system.foo <= 3] which will check if Config::Get('system','foo') is less than or equal to 3;
+ * - [if $config.system.foo < 3] which will check if Config::Get('system','foo') is less than 3;
*
- * - [if $config.system.foo {} baz] which will check if 'baz' is an array element in get_config('system','foo')
- * - [if $config.system.foo {*} baz] which will check if 'baz' is an array key in get_config('system','foo')
- * - [if $config.system.foo] which will check for a return of a true condition for get_config('system','foo');
- * - [if !$config.system.foo] which will check for a return of a false condition for get_config('system','foo');
+ * - [if $config.system.foo {} baz] which will check if 'baz' is an array element in Config::Get('system','foo')
+ * - [if $config.system.foo {*} baz] which will check if 'baz' is an array key in Config::Get('system','foo')
+ * - [if $config.system.foo] which will check for a return of a true condition for Config::Get('system','foo');
+ * - [if !$config.system.foo] which will check for a return of a false condition for Config::Get('system','foo');
*
* The values 0, '', an empty array, and an unset value will all evaluate to false.
*
diff --git a/Zotlabs/Render/SmartyInterface.php b/Zotlabs/Render/SmartyInterface.php
index d80ea3f3a..64c6aa377 100644
--- a/Zotlabs/Render/SmartyInterface.php
+++ b/Zotlabs/Render/SmartyInterface.php
@@ -20,7 +20,7 @@ class SmartyInterface extends Smarty {
$template_dirs = array('theme' => "view/theme/$thname/tpl/");
if ( x(App::$theme_info,"extends") ) {
- $template_dirs = $template_dirs + array('extends' => "view/theme/" . \App::$theme_info["extends"] . "/tpl/");
+ $template_dirs = $template_dirs + array('extends' => "view/theme/" . App::$theme_info["extends"] . "/tpl/");
}
$template_dirs = $template_dirs + array('base' => 'view/tpl/');
$this->setTemplateDir($template_dirs);
diff --git a/Zotlabs/Render/SmartyTemplate.php b/Zotlabs/Render/SmartyTemplate.php
index 2cb96521b..79f03637b 100644
--- a/Zotlabs/Render/SmartyTemplate.php
+++ b/Zotlabs/Render/SmartyTemplate.php
@@ -11,7 +11,7 @@ class SmartyTemplate implements TemplateEngine {
public function __construct() {
- // Cannot use get_config() here because it is called during installation when there is no DB.
+ // Cannot use Config::Get() here because it is called during installation when there is no DB.
// FIXME: this may leak private information such as system pathnames.
$basecompiledir = ((array_key_exists('smarty3_folder', App::$config['system']))
diff --git a/Zotlabs/Render/Theme.php b/Zotlabs/Render/Theme.php
index 543bf7a3f..a42b65e03 100644
--- a/Zotlabs/Render/Theme.php
+++ b/Zotlabs/Render/Theme.php
@@ -24,7 +24,7 @@ class Theme {
*
* @return array
*/
- static public function current(){
+ static public function current() {
self::$system_theme = ((isset(App::$config['system']['theme']))
? App::$config['system']['theme'] : '');
@@ -37,7 +37,7 @@ class Theme {
if(App::$profile_uid) {
$r = q("select channel_theme from channel where channel_id = %d limit 1",
- intval(\App::$profile_uid)
+ intval(App::$profile_uid)
);
if($r) {
$page_theme = $r[0]['channel_theme'];
@@ -46,7 +46,7 @@ class Theme {
// Themes from Comanche layouts over-ride the channel theme
- if(array_key_exists('theme', \App::$layout) && \App::$layout['theme']) {
+ if(array_key_exists('theme', App::$layout) && App::$layout['theme']) {
$page_theme = App::$layout['theme'];
}
diff --git a/Zotlabs/Storage/Browser.php b/Zotlabs/Storage/Browser.php
index 912b4442d..e7f71c8c8 100644
--- a/Zotlabs/Storage/Browser.php
+++ b/Zotlabs/Storage/Browser.php
@@ -4,6 +4,7 @@ namespace Zotlabs\Storage;
use Sabre\DAV;
use App;
+use Zotlabs\Lib\Config;
/**
* @brief Provides a DAV frontend for the webbrowser.
@@ -101,7 +102,7 @@ class Browser extends DAV\Browser\Plugin {
$folder_list = attach_folder_select_list($channel_id);
- $siteroot_disabled = get_config('system', 'cloud_disable_siteroot');
+ $siteroot_disabled = Config::Get('system', 'cloud_disable_siteroot');
$is_root_folder = (($path === 'cloud/' . $nick) ? true : false);
$parent_path = '';
@@ -210,7 +211,7 @@ class Browser extends DAV\Browser\Plugin {
// types
$photo_icon = '';
- $preview_style = intval(get_config('system','thumbnail_security',0));
+ $preview_style = intval(Config::Get('system','thumbnail_security',0));
$is_creator = (($data['creator'] === get_observer_hash()) ? true : false);
@@ -474,7 +475,7 @@ class Browser extends DAV\Browser\Plugin {
$limit = engr_units_to_bytes(service_class_fetch($this->auth->owner_id, 'attach_upload_limit'));
}
- if((! $limit) && get_config('system','cloud_report_disksize')) {
+ if((! $limit) && Config::Get('system','cloud_report_disksize')) {
$limit = engr_units_to_bytes(disk_free_space('store'));
}
diff --git a/Zotlabs/Storage/Directory.php b/Zotlabs/Storage/Directory.php
index 333251f69..a68fdcf26 100644
--- a/Zotlabs/Storage/Directory.php
+++ b/Zotlabs/Storage/Directory.php
@@ -3,6 +3,7 @@
namespace Zotlabs\Storage;
use Sabre\DAV;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libsync;
/**
@@ -89,7 +90,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo
logger('children for ' . $this->ext_path, LOGGER_DATA);
$this->log();
- if (get_config('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) {
+ if (Config::Get('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) {
throw new DAV\Exception\Forbidden('Permission denied.');
}
@@ -111,7 +112,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo
public function getChild($name) {
logger($name, LOGGER_DATA);
- if (get_config('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) {
+ if (Config::Get('system', 'block_public') && (! $this->auth->channel_id) && (! $this->auth->observer)) {
throw new DAV\Exception\Forbidden('Permission denied.');
}
@@ -360,7 +361,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo
intval($c[0]['channel_id'])
);
- $maxfilesize = get_config('system', 'maxfilesize');
+ $maxfilesize = Config::Get('system', 'maxfilesize');
if (($maxfilesize) && ($size > $maxfilesize)) {
attach_delete($c[0]['channel_id'], $hash);
return;
@@ -776,7 +777,7 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo
function ChannelList(&$auth) {
$ret = [];
- if (intval(get_config('system','cloud_disable_siteroot'))) {
+ if (intval(Config::Get('system','cloud_disable_siteroot'))) {
return $ret;
}
diff --git a/Zotlabs/Storage/File.php b/Zotlabs/Storage/File.php
index ff379e2e9..642dd4515 100644
--- a/Zotlabs/Storage/File.php
+++ b/Zotlabs/Storage/File.php
@@ -3,6 +3,7 @@
namespace Zotlabs\Storage;
use Sabre\DAV;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libsync;
/**
@@ -240,7 +241,7 @@ class File extends DAV\Node implements DAV\IFile {
// There is an Exception "InsufficientStorage" or "PaymentRequired" for
// our service class from SabreDAV we could use.
- $maxfilesize = get_config('system', 'maxfilesize');
+ $maxfilesize = Config::Get('system', 'maxfilesize');
if (($maxfilesize) && ($size > $maxfilesize)) {
attach_delete($c[0]['channel_id'], $this->data['hash']);
return;
diff --git a/Zotlabs/Thumbs/Pdf.php b/Zotlabs/Thumbs/Pdf.php
index 6f9111ed3..52afc09a3 100644
--- a/Zotlabs/Thumbs/Pdf.php
+++ b/Zotlabs/Thumbs/Pdf.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Thumbs;
+use Zotlabs\Lib\Config;
class Pdf {
@@ -29,7 +30,7 @@ class Pdf {
fclose($ostream);
}
- $imagick_path = get_config('system','imagick_convert_path');
+ $imagick_path = Config::Get('system','imagick_convert_path');
if($imagick_path && @file_exists($imagick_path)) {
$cmd = $imagick_path . ' ' . escapeshellarg(PROJECT_BASE . '/' . $tmpfile . '[0]') . ' -resize ' . $width . 'x' . $height . ' ' . escapeshellarg(PROJECT_BASE . '/' . $outfile);
// logger('imagick thumbnail command: ' . $cmd);
diff --git a/Zotlabs/Thumbs/Video.php b/Zotlabs/Thumbs/Video.php
index 9df27d703..1da500370 100644
--- a/Zotlabs/Thumbs/Video.php
+++ b/Zotlabs/Thumbs/Video.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Thumbs;
+use Zotlabs\Lib\Config;
class Video {
@@ -47,7 +48,7 @@ class Video {
logger('ffmpeg not found in path. Video thumbnails may fail.');
}
- $imagick_path = get_config('system','imagick_convert_path');
+ $imagick_path = Config::Get('system','imagick_convert_path');
if($imagick_path && @file_exists($imagick_path)) {
$cmd = $imagick_path . ' ' . escapeshellarg(PROJECT_BASE . '/' . $tmpfile . '[0]') . ' -resize ' . $width . 'x' . $height . ' ' . escapeshellarg(PROJECT_BASE . '/' . $outfile);
// logger('imagick thumbnail command: ' . $cmd);
diff --git a/Zotlabs/Update/_1103.php b/Zotlabs/Update/_1103.php
index 3f9a9286c..a32c81fe9 100644
--- a/Zotlabs/Update/_1103.php
+++ b/Zotlabs/Update/_1103.php
@@ -2,13 +2,15 @@
namespace Zotlabs\Update;
+use Zotlabs\Lib\Config;
+
class _1103 {
function run() {
$x = curl_version();
if(stristr($x['ssl_version'],'openssl'))
- set_config('system','curl_ssl_ciphers','ALL:!eNULL');
+ Config::Set('system','curl_ssl_ciphers','ALL:!eNULL');
return UPDATE_SUCCESS;
}
-} \ No newline at end of file
+}
diff --git a/Zotlabs/Update/_1226.php b/Zotlabs/Update/_1226.php
index 6e5a0e319..526fc867b 100644
--- a/Zotlabs/Update/_1226.php
+++ b/Zotlabs/Update/_1226.php
@@ -2,6 +2,7 @@
namespace Zotlabs\Update;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libzot;
class _1226 {
@@ -17,7 +18,7 @@ class _1226 {
$r = ($r1 && $r2);
}
else {
- $r = q("ALTER TABLE `channel` ADD `channel_portable_id` char(191) NOT NULL DEFAULT '' ,
+ $r = q("ALTER TABLE `channel` ADD `channel_portable_id` char(191) NOT NULL DEFAULT '' ,
ADD INDEX `channel_portable_id` (`channel_portable_id`)");
}
@@ -52,7 +53,7 @@ class _1226 {
$rec['xchan_hash'] = $zhash;
$rec['xchan_guid_sig'] = 'sha256.' . $rec['xchan_guid_sig'];
$rec['xchan_network'] = 'zot6';
-
+
xchan_store_lowlevel($rec);
}
$x = q("select * from hubloc where hubloc_hash = '%s' and hubloc_url = '%s' limit 1",
@@ -67,7 +68,7 @@ class _1226 {
$rec['hubloc_url_sig'] = 'sha256.' . $rec['hubloc_url_sig'];
$rec['hubloc_callback'] = z_root() . '/zot';
$rec['hubloc_id_url'] = channel_url($rv);
- $rec['hubloc_site_id'] = Libzot::make_xchan_hash(z_root(),get_config('system','pubkey'));
+ $rec['hubloc_site_id'] = Libzot::make_xchan_hash(z_root(),Config::Get('system','pubkey'));
hubloc_store_lowlevel($rec);
}
}
diff --git a/Zotlabs/Update/_1236.php b/Zotlabs/Update/_1236.php
index e57338e16..b5bfdaad8 100644
--- a/Zotlabs/Update/_1236.php
+++ b/Zotlabs/Update/_1236.php
@@ -2,15 +2,16 @@
namespace Zotlabs\Update;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Libzot;
class _1236 {
function run() {
-
- $r = q("SELECT channel.channel_address, channel.channel_hash, xchan.xchan_guid, channel.channel_pubkey, channel.channel_portable_id FROM channel
- LEFT JOIN xchan ON channel_hash = xchan_hash
- WHERE xchan.xchan_network = 'zot'
+
+ $r = q("SELECT channel.channel_address, channel.channel_hash, xchan.xchan_guid, channel.channel_pubkey, channel.channel_portable_id FROM channel
+ LEFT JOIN xchan ON channel_hash = xchan_hash
+ WHERE xchan.xchan_network = 'zot'
AND channel.channel_removed = 0"
);
@@ -102,7 +103,7 @@ class _1236 {
$rec['hubloc_url_sig'] = 'sha256.' . $rec['hubloc_url_sig'];
$rec['hubloc_callback'] = z_root() . '/zot';
$rec['hubloc_id_url'] = channel_url($rr);
- $rec['hubloc_site_id'] = Libzot::make_xchan_hash(z_root(),get_config('system','pubkey'));
+ $rec['hubloc_site_id'] = Libzot::make_xchan_hash(z_root(),Config::Get('system','pubkey'));
$hubloc = hubloc_store_lowlevel($rec);
}
diff --git a/Zotlabs/Update/_1242.php b/Zotlabs/Update/_1242.php
index c2c9a66d0..0a4265984 100644
--- a/Zotlabs/Update/_1242.php
+++ b/Zotlabs/Update/_1242.php
@@ -2,6 +2,8 @@
namespace Zotlabs\Update;
+use Zotlabs\Lib\Config;
+
class _1242 {
function run() {
@@ -10,7 +12,7 @@ class _1242 {
if ($pp['v'][0] === '{') {
$a = json_decode($pp['v'], true);
if (isset($a['encrypted'])) {
- $v = crypto_unencapsulate($a, get_config('system', 'prvkey'));
+ $v = crypto_unencapsulate($a, Config::Get('system', 'prvkey'));
set_pconfig($pp['uid'], $pp['cat'], $pp['k'], obscurify($v));
}
}
@@ -18,4 +20,4 @@ class _1242 {
return UPDATE_SUCCESS;
}
-} \ No newline at end of file
+}
diff --git a/Zotlabs/Update/_1243.php b/Zotlabs/Update/_1243.php
index 850cb1d6c..05845ad47 100644
--- a/Zotlabs/Update/_1243.php
+++ b/Zotlabs/Update/_1243.php
@@ -2,15 +2,17 @@
namespace Zotlabs\Update;
+use Zotlabs\Lib\Config;
+
class _1243 {
function run() {
-
- $x = get_config('system','filesystem_storage_thumbnails');
- del_config('system','filesystem_storage_thumbnails');
+
+ $x = Config::Get('system','filesystem_storage_thumbnails');
+ Config::Delete('system','filesystem_storage_thumbnails');
if ($x !== false)
- set_config('system','photo_storage_type', intval($x));
-
+ Config::Set('system','photo_storage_type', intval($x));
+
return UPDATE_SUCCESS;
}
diff --git a/Zotlabs/Web/Controller.php b/Zotlabs/Web/Controller.php
index 2d0f58891..6384f24df 100644
--- a/Zotlabs/Web/Controller.php
+++ b/Zotlabs/Web/Controller.php
@@ -2,12 +2,58 @@
namespace Zotlabs\Web;
+/**
+ * Base controller class for Modules.
+ *
+ * Modules should extend this class, and override the methods needed. Emtpy
+ * default implementations allow Modules to only override the methods they
+ * need.
+ *
+ * The methods defined by this class is invoked in order:
+ *
+ * - init()
+ * - post() -- only for POST requests
+ * - get()
+ *
+ * Modules which emit other serialisations besides HTML (XML,JSON, etc.) should
+ * do so within the module `init` and/or `post` functions and then invoke
+ * `killme()` to terminate further processing.
+ */
+abstract class Controller {
-class Controller {
+ /**
+ * Initialize request processing.
+ *
+ * This method is called before any other request processing, and
+ * regardless of the request method. The theme is not yet loaded when
+ * this method is invoked.
+ */
+ public function init() {
+ }
- function init() {}
- function post() {}
- function get() {}
+ /**
+ * Process POST requests.
+ *
+ * This method is called if the incoming request is a POST request. It is
+ * invoked after the theme has been loaded. This method should not normally
+ * render HTML output, as processing will fall through to the GET processing
+ * if this method completes without error or stopping processing in other
+ * ways.
+ */
+ public function post() {
+ }
+ /**
+ * Process GET requests or the body part of POST requests.
+ *
+ * This method is called directly for GET requests, and immediately after the
+ * `post()` method for POST requests.
+ *
+ * It will return the module content as a HTML string.
+ *
+ * @return string HTML content for the module.
+ */
+ public function get() {
+ return '';
+ }
}
-
diff --git a/Zotlabs/Web/HTTPSig.php b/Zotlabs/Web/HTTPSig.php
index 793b8cb45..7c289ff5f 100644
--- a/Zotlabs/Web/HTTPSig.php
+++ b/Zotlabs/Web/HTTPSig.php
@@ -5,6 +5,7 @@ namespace Zotlabs\Web;
use DateTime;
use DateTimeZone;
use Zotlabs\Lib\Activity;
+use Zotlabs\Lib\Config;
use Zotlabs\Lib\Crypto;
use Zotlabs\Lib\Keyutils;
use Zotlabs\Lib\Webfinger;
@@ -528,7 +529,7 @@ class HTTPSig {
// TODO: should we default to hs2019? cavage-http-signatures-12 is not very wide spread yet
- if (get_config('system', 'use_hs2019', false) && $algorithm === 'rsa-sha256') {
+ if (Config::Get('system', 'use_hs2019', false) && $algorithm === 'rsa-sha256') {
$algorithm = 'hs2019';
}
@@ -673,7 +674,7 @@ class HTTPSig {
$iv = $key = $alg = $data = null;
if (!$prvkey) {
- $prvkey = get_config('system', 'prvkey');
+ $prvkey = Config::Get('system', 'prvkey');
}
$matches = [];
diff --git a/Zotlabs/Web/Router.php b/Zotlabs/Web/Router.php
index 2876fcc3c..122e7ff73 100644
--- a/Zotlabs/Web/Router.php
+++ b/Zotlabs/Web/Router.php
@@ -4,6 +4,7 @@ namespace Zotlabs\Web;
use App;
use Zotlabs\Extend\Route;
+use Zotlabs\Lib\Config;
use Exception;
/**
@@ -36,6 +37,7 @@ class Router {
private $modname = '';
private $controller = null;
+ private bool $module_loaded = false;
/**
* @brief Router constructor.
@@ -61,7 +63,7 @@ class Router {
include_once($route[0]);
if(class_exists($modname)) {
$this->controller = new $modname;
- App::$module_loaded = true;
+ $this->module_loaded = true;
}
}
}
@@ -69,15 +71,15 @@ class Router {
// legacy plugins - this can be removed when they have all been converted
- if(! (App::$module_loaded)) {
+ if(! ($this->module_loaded)) {
if(is_array(App::$plugins) && in_array($module, App::$plugins) && file_exists("addon/{$module}/{$module}.php")) {
include_once("addon/{$module}/{$module}.php");
if(class_exists($modname)) {
$this->controller = new $modname;
- App::$module_loaded = true;
+ $this->module_loaded = true;
}
elseif(function_exists($module . '_module')) {
- App::$module_loaded = true;
+ $this->module_loaded = true;
}
}
}
@@ -87,40 +89,40 @@ class Router {
* Otherwise, look for the standard program module
*/
- if(! (App::$module_loaded)) {
+ if(! ($this->module_loaded)) {
try {
$filename = 'Zotlabs/SiteModule/'. ucfirst($module). '.php';
if(file_exists($filename)) {
// This won't be picked up by the autoloader, so load it explicitly
require_once($filename);
$this->controller = new $modname;
- App::$module_loaded = true;
+ $this->module_loaded = true;
}
else {
$filename = 'Zotlabs/Module/'. ucfirst($module). '.php';
if(file_exists($filename)) {
$this->controller = new $modname;
- App::$module_loaded = true;
+ $this->module_loaded = true;
}
}
- if(! App::$module_loaded)
+ if(! $this->module_loaded)
throw new Exception('Module not found');
}
catch(Exception $e) {
if(file_exists("mod/site/{$module}.php")) {
include_once("mod/site/{$module}.php");
- App::$module_loaded = true;
+ $this->module_loaded = true;
}
elseif(file_exists("mod/{$module}.php")) {
include_once("mod/{$module}.php");
- App::$module_loaded = true;
+ $this->module_loaded = true;
}
}
}
$x = [
'module' => $module,
- 'installed' => App::$module_loaded,
+ 'installed' => $this->module_loaded,
'controller' => $this->controller
];
/**
@@ -137,7 +139,7 @@ class Router {
*/
call_hooks('module_loaded', $x);
if($x['installed']) {
- App::$module_loaded = true;
+ $this->module_loaded = true;
$this->controller = $x['controller'];
}
@@ -145,7 +147,7 @@ class Router {
* The URL provided does not resolve to a valid module.
*/
- if(! (App::$module_loaded)) {
+ if(! ($this->module_loaded)) {
// undo the setting of a letsencrypt acme-challenge rewrite rule
// which blocks access to our .well-known routes.
@@ -154,14 +156,14 @@ class Router {
// make the file read-only so letsencrypt doesn't modify it
if(strpos($_SERVER['REQUEST_URI'],'/.well-known/') === 0) {
- if(file_exists('.well-known/.htaccess') && get_config('system','fix_apache_acme',true)) {
+ if(file_exists('.well-known/.htaccess') && Config::Get('system','fix_apache_acme',true)) {
rename('.well-known/.htaccess','.well-known/.htaccess.old');
}
}
$x = [
'module' => $module,
- 'installed' => App::$module_loaded,
+ 'installed' => $this->module_loaded,
'controller' => $this->controller
];
call_hooks('page_not_found',$x);
@@ -173,7 +175,7 @@ class Router {
killme();
}
- if(get_config('system','log_404',true)) {
+ if(Config::Get('system','log_404',true)) {
logger("Module {$module} not found.", LOGGER_DEBUG, LOG_WARNING);
logger('index.php: page not found: ' . $_SERVER['REQUEST_URI']
. ' ADDRESS: ' . $_SERVER['REMOTE_ADDR'] . ' QUERY: '
@@ -188,7 +190,7 @@ class Router {
// pretend this is a module so it will initialise the theme
App::$module = '404';
- App::$module_loaded = true;
+ $this->module_loaded = true;
App::$error = true;
}
}
@@ -204,7 +206,7 @@ class Router {
* Call module functions
*/
- if(App::$module_loaded) {
+ if($this->module_loaded) {
App::$page['page_title'] = App::$module;
$placeholder = '';
diff --git a/Zotlabs/Web/Session.php b/Zotlabs/Web/Session.php
index 14c054d20..ec26e6b0d 100644
--- a/Zotlabs/Web/Session.php
+++ b/Zotlabs/Web/Session.php
@@ -10,6 +10,7 @@ namespace Zotlabs\Web;
* session info.
*/
+use Zotlabs\Lib\Config;
class Session {
@@ -24,7 +25,7 @@ class Session {
ini_set('session.use_only_cookies', 1);
ini_set('session.cookie_httponly', 1);
- $this->custom_handler = boolval(get_config('system', 'session_custom', false));
+ $this->custom_handler = boolval(Config::Get('system', 'session_custom', false));
/*
* Set our session storage functions.
@@ -33,8 +34,8 @@ class Session {
if($this->custom_handler) {
/* Custom handler (files, memached, redis..) */
- $session_save_handler = strval(get_config('system', 'session_save_handler', Null));
- $session_save_path = strval(get_config('system', 'session_save_path', Null));
+ $session_save_handler = strval(Config::Get('system', 'session_save_handler', Null));
+ $session_save_path = strval(Config::Get('system', 'session_save_path', Null));
if(is_null($session_save_handler) || is_null($session_save_path)) {
logger('Session save handler or path not set', LOGGER_NORMAL, LOG_ERR);
@@ -48,8 +49,8 @@ class Session {
else {
ini_set('session.save_handler', $session_save_handler);
ini_set('session.save_path', $session_save_path);
- ini_set('session.gc_probability', intval(get_config('system', 'session_gc_probability', 1)));
- ini_set('session.gc_divisor', intval(get_config('system', 'session_gc_divisor', 100)));
+ ini_set('session.gc_probability', intval(Config::Get('system', 'session_gc_probability', 1)));
+ ini_set('session.gc_divisor', intval(Config::Get('system', 'session_gc_divisor', 100)));
}
}
}
@@ -212,7 +213,7 @@ class Session {
$paranoia = intval(get_pconfig($_SESSION['uid'], 'system', 'paranoia'));
if(! $paranoia)
- $paranoia = intval(get_config('system', 'paranoia'));
+ $paranoia = intval(Config::Get('system', 'paranoia'));
switch($paranoia) {
case 0:
diff --git a/Zotlabs/Web/WebServer.php b/Zotlabs/Web/WebServer.php
index f43ae10a4..6f8a4b956 100644
--- a/Zotlabs/Web/WebServer.php
+++ b/Zotlabs/Web/WebServer.php
@@ -13,11 +13,11 @@ class WebServer {
require_once('boot.php');
- sys_boot();
+ $installed = sys_boot();
\App::$language = get_best_language();
- load_translation_table(\App::$language,\App::$install);
+ load_translation_table(\App::$language, !$installed);
/**
@@ -56,7 +56,7 @@ class WebServer {
load_translation_table(\App::$language);
}
- if((x($_GET,'zid')) && (! \App::$install)) {
+ if (x($_GET,'zid') && $installed) {
\App::$query_string = strip_zids(\App::$query_string);
if(! local_channel()) {
if (!isset($_SESSION['my_address']) || $_SESSION['my_address'] != $_GET['zid']) {
@@ -69,14 +69,14 @@ class WebServer {
}
}
- if((x($_GET,'zat')) && (! \App::$install)) {
+ if (x($_GET,'zat') && $installed) {
\App::$query_string = strip_zats(\App::$query_string);
if(! local_channel()) {
zat_init();
}
}
- if((x($_REQUEST,'owt')) && (! \App::$install)) {
+ if (x($_REQUEST,'owt') && $installed) {
$token = $_REQUEST['owt'];
\App::$query_string = strip_query_param(\App::$query_string,'owt');
owt_init($token);
@@ -85,7 +85,7 @@ class WebServer {
if((x($_SESSION, 'authenticated')) || (x($_POST, 'auth-params')) || (\App::$module === 'login'))
require('include/auth.php');
- if(\App::$install) {
+ if (!$installed) {
/* Allow an exception for the view module so that pcss will be interpreted during installation */
if(\App::$module != 'view')
\App::$module = 'setup';
diff --git a/Zotlabs/Widget/Helpindex.php b/Zotlabs/Widget/Helpindex.php
index 63e686d3a..5264e1947 100644
--- a/Zotlabs/Widget/Helpindex.php
+++ b/Zotlabs/Widget/Helpindex.php
@@ -1,6 +1,9 @@
<?php
-
/**
+ * Widget to show the help index.
+ *
+ * By default used by the left sidebar by the help module.
+ *
* * Name: Help index
* * Description: Help pages index
*/
@@ -9,54 +12,28 @@ namespace Zotlabs\Widget;
class Helpindex {
- function widget($arr) {
-
- require_once('include/help.php');
-
- $o = '<div class="widget">';
-
- $level_0 = get_help_content('sitetoc');
- if(! $level_0) {
- $path = 'toc';
- $x = determine_help_language();
- $lang = $x['language'];
- if($lang !== 'en') {
- $path = $lang . '/toc';
- }
- $level_0 = get_help_content($path);
- }
+ use \Zotlabs\Lib\Traits\HelpHelperTrait;
- $level_0 = preg_replace('/\<ul(.*?)\>/','<ul class="nav nav-pills flex-column">',$level_0);
+ private string $contents = '';
- $levels = array();
+ function widget() {
+ $this->determine_help_language();
+ $this->find_help_file('toc', $this->lang['language']);
- // TODO: Implement support for translations in hierarchical table of content files
- /*
- if(argc() > 2) {
- $path = '';
- for($x = 1; $x < argc(); $x ++) {
- $path .= argv($x) . '/';
- $y = get_help_content($path . 'sitetoc');
- if(! $y)
- $y = get_help_content($path . 'toc');
- if($y)
- $levels[] = preg_replace('/\<ul(.*?)\>/','<ul class="nav nav-pills flex-column">',$y);
- }
- }
- */
-
- if($level_0)
- $o .= $level_0;
- if($levels) {
- foreach($levels as $l) {
- $o .= '<br /><br />';
- $o .= $l;
- }
+ if (! empty($this->file_name)) {
+ $this->contents = file_get_contents($this->file_name);
}
- $o .= '</div>';
+ $tpl = get_markup_template('widget.tpl');
+ return replace_macros($tpl, [ '$widget' => $this ]);
+ }
+
+ public function title(): string {
+ return '';
+ }
- return $o;
+ public function contents(): string {
+ return $this->contents;
}
}
diff --git a/Zotlabs/Widget/Newmember.php b/Zotlabs/Widget/Newmember.php
index 70a858fb0..79bdf9f9f 100644
--- a/Zotlabs/Widget/Newmember.php
+++ b/Zotlabs/Widget/Newmember.php
@@ -7,6 +7,8 @@
namespace Zotlabs\Widget;
+use Zotlabs\Lib\Config;
+
class Newmember {
function widget($arr) {
@@ -66,8 +68,8 @@ class Newmember {
]
];
- $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false);
- $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true);
+ $site_firehose = ((intval(Config::Get('system','site_firehose',0))) ? true : false);
+ $net_firehose = ((Config::Get('system','disable_discover_tab',1)) ? false : true);
// hack to put this in the correct spot of the array
diff --git a/Zotlabs/Widget/Pinned.php b/Zotlabs/Widget/Pinned.php
index 1380c156b..2ba170fe8 100644
--- a/Zotlabs/Widget/Pinned.php
+++ b/Zotlabs/Widget/Pinned.php
@@ -1,6 +1,8 @@
<?php
namespace Zotlabs\Widget;
+use Zotlabs\Lib\Config;
+
/**
* * Name: Pinned items
* * Description: Display pinned items
@@ -31,7 +33,7 @@ class Pinned {
if(! $this->uid)
return $ret;
- $this->allowed_types = get_config('system', 'pin_types', [ ITEM_TYPE_POST ]);
+ $this->allowed_types = Config::Get('system', 'pin_types', [ ITEM_TYPE_POST ]);
$items = $this->list($types);
diff --git a/Zotlabs/Widget/Pubtagcloud.php b/Zotlabs/Widget/Pubtagcloud.php
index 90bf5eb97..8119d0c73 100644
--- a/Zotlabs/Widget/Pubtagcloud.php
+++ b/Zotlabs/Widget/Pubtagcloud.php
@@ -7,6 +7,8 @@
namespace Zotlabs\Widget;
+use Zotlabs\Lib\Config;
+
class Pubtagcloud {
function widget($arr) {
@@ -16,19 +18,19 @@ class Pubtagcloud {
return EMPTY_STR;
}
- if(! intval(get_config('system','open_pubstream',1))) {
+ if(! intval(Config::Get('system','open_pubstream',1))) {
if(! get_observer_hash()) {
return EMPTY_STR;
}
}
- $net_firehose = ((get_config('system','disable_discover_tab',1)) ? false : true);
+ $net_firehose = ((Config::Get('system','disable_discover_tab',1)) ? false : true);
if(!$net_firehose) {
return '';
}
- $site_firehose = ((intval(get_config('system','site_firehose',0))) ? true : false);
+ $site_firehose = ((intval(Config::Get('system','site_firehose',0))) ? true : false);
$safemode = get_xconfig(get_observer_hash(),'directory','safemode',1);
diff --git a/Zotlabs/Widget/Rating.php b/Zotlabs/Widget/Rating.php
index 20c27ff1c..f8986ac93 100644
--- a/Zotlabs/Widget/Rating.php
+++ b/Zotlabs/Widget/Rating.php
@@ -8,12 +8,14 @@
namespace Zotlabs\Widget;
+use Zotlabs\Lib\Config;
+
class Rating {
function widget($arr) {
- $rating_enabled = get_config('system','rating_enabled');
+ $rating_enabled = Config::Get('system','rating_enabled');
if(! $rating_enabled) {
return;
}