Merge remote-tracking branch 'upstream/dev' into doco
This commit is contained in:
commit
8ba5cbc2b9
@ -10,8 +10,8 @@ class AConfig {
|
||||
return XConfig::Load('a_' . $account_id);
|
||||
}
|
||||
|
||||
static public function Get($account_id,$family,$key) {
|
||||
return XConfig::Get('a_' . $account_id,$family,$key);
|
||||
static public function Get($account_id,$family,$key,$default = false) {
|
||||
return XConfig::Get('a_' . $account_id,$family,$key, $default);
|
||||
}
|
||||
|
||||
static public function Set($account_id,$family,$key,$value) {
|
||||
|
@ -16,7 +16,7 @@ class AbConfig {
|
||||
}
|
||||
|
||||
|
||||
static public function Get($chan,$xhash,$family,$key) {
|
||||
static public function Get($chan,$xhash,$family,$key, $default = false) {
|
||||
$r = q("select * from abconfig where chan = %d and xchan = '%s' and cat = '%s' and k = '%s' limit 1",
|
||||
intval($chan),
|
||||
dbesc($xhash),
|
||||
@ -26,7 +26,7 @@ class AbConfig {
|
||||
if($r) {
|
||||
return ((preg_match('|^a:[0-9]+:{.*}$|s', $r[0]['v'])) ? unserialize($r[0]['v']) : $r[0]['v']);
|
||||
}
|
||||
return false;
|
||||
return $default;
|
||||
}
|
||||
|
||||
|
||||
|
@ -98,13 +98,13 @@ class Config {
|
||||
* @return mixed Return value or false on error or if not set
|
||||
*/
|
||||
|
||||
static public function Get($family,$key) {
|
||||
static public function Get($family,$key,$default = false) {
|
||||
if((! array_key_exists($family, \App::$config)) || (! array_key_exists('config_loaded', \App::$config[$family])))
|
||||
self::Load($family);
|
||||
|
||||
if(array_key_exists('config_loaded', \App::$config[$family])) {
|
||||
if(! array_key_exists($key, \App::$config[$family])) {
|
||||
return false;
|
||||
return $default;
|
||||
}
|
||||
return ((! is_array(\App::$config[$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$family][$key]))
|
||||
? unserialize(\App::$config[$family][$key])
|
||||
@ -112,7 +112,7 @@ class Config {
|
||||
);
|
||||
}
|
||||
|
||||
return false;
|
||||
return $default;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -10,7 +10,7 @@ class IConfig {
|
||||
return;
|
||||
}
|
||||
|
||||
static public function Get(&$item, $family, $key) {
|
||||
static public function Get(&$item, $family, $key, $default = false) {
|
||||
|
||||
$is_item = false;
|
||||
|
||||
@ -28,7 +28,7 @@ class IConfig {
|
||||
$iid = $item;
|
||||
|
||||
if(! $iid)
|
||||
return false;
|
||||
return $default;
|
||||
|
||||
if(is_array($item) && array_key_exists('iconfig',$item) && is_array($item['iconfig'])) {
|
||||
foreach($item['iconfig'] as $c) {
|
||||
@ -48,7 +48,7 @@ class IConfig {
|
||||
$item['iconfig'][] = $r[0];
|
||||
return $r[0]['v'];
|
||||
}
|
||||
return false;
|
||||
return $default;
|
||||
|
||||
}
|
||||
|
||||
|
@ -67,16 +67,16 @@ class PConfig {
|
||||
* @return mixed Stored value or false if it does not exist
|
||||
*/
|
||||
|
||||
static public function Get($uid,$family,$key,$instore = false) {
|
||||
static public function Get($uid,$family,$key,$default = false) {
|
||||
|
||||
if(is_null($uid) || $uid === false)
|
||||
return false;
|
||||
return $default;
|
||||
|
||||
if(! array_key_exists($uid, \App::$config))
|
||||
self::Load($uid);
|
||||
|
||||
if((! array_key_exists($family, \App::$config[$uid])) || (! array_key_exists($key, \App::$config[$uid][$family])))
|
||||
return false;
|
||||
return $default;
|
||||
|
||||
return ((! is_array(\App::$config[$uid][$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$uid][$family][$key]))
|
||||
? unserialize(\App::$config[$uid][$family][$key])
|
||||
|
@ -59,16 +59,16 @@ class XConfig {
|
||||
* @return mixed Stored $value or false if it does not exist
|
||||
*/
|
||||
|
||||
static public function Get($xchan, $family, $key) {
|
||||
static public function Get($xchan, $family, $key, $default = false) {
|
||||
|
||||
if(! $xchan)
|
||||
return false;
|
||||
return $default;
|
||||
|
||||
if(! array_key_exists($xchan, \App::$config))
|
||||
load_xconfig($xchan);
|
||||
|
||||
if((! array_key_exists($family, \App::$config[$xchan])) || (! array_key_exists($key, \App::$config[$xchan][$family])))
|
||||
return false;
|
||||
return $default;
|
||||
|
||||
return ((! is_array(\App::$config[$xchan][$family][$key])) && (preg_match('|^a:[0-9]+:{.*}$|s', \App::$config[$xchan][$family][$key]))
|
||||
? unserialize(\App::$config[$xchan][$family][$key])
|
||||
|
@ -161,13 +161,6 @@ class Setup extends \Zotlabs\Web\Controller {
|
||||
}
|
||||
}
|
||||
|
||||
function get_db_errno() {
|
||||
if(class_exists('mysqli'))
|
||||
return mysqli_connect_errno();
|
||||
else
|
||||
return mysql_errno();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get output for the setup page.
|
||||
*
|
||||
@ -175,6 +168,7 @@ class Setup extends \Zotlabs\Web\Controller {
|
||||
*
|
||||
* @return string parsed HTML output
|
||||
*/
|
||||
|
||||
function get() {
|
||||
|
||||
$o = '';
|
||||
@ -401,7 +395,8 @@ class Setup extends \Zotlabs\Web\Controller {
|
||||
|
||||
if (strlen($phpath)) {
|
||||
$passed = file_exists($phpath);
|
||||
} else {
|
||||
}
|
||||
elseif(function_exists('shell_exec')) {
|
||||
if(is_windows())
|
||||
$phpath = trim(shell_exec('where php'));
|
||||
else
|
||||
@ -426,9 +421,13 @@ class Setup extends \Zotlabs\Web\Controller {
|
||||
if($passed) {
|
||||
$str = autoname(8);
|
||||
$cmd = "$phpath install/testargs.php $str";
|
||||
$result = trim(shell_exec($cmd));
|
||||
$passed2 = $result == $str;
|
||||
$help = '';
|
||||
|
||||
if(function_exists('shell_exec'))
|
||||
$result = trim(shell_exec($cmd));
|
||||
else
|
||||
$help .= t('Unable to check command line PHP, as shell_exec() is disabled. This is required.') . EOL;
|
||||
$passed2 = (($result == $str) ? true : false);
|
||||
if(!$passed2) {
|
||||
$help .= t('The command line version of PHP on your system does not have "register_argc_argv" enabled.'). EOL;
|
||||
$help .= t('This is required for message delivery to work.');
|
||||
@ -457,7 +456,7 @@ class Setup extends \Zotlabs\Web\Controller {
|
||||
userReadableSize($result['max_upload_filesize']),
|
||||
$result['max_file_uploads']
|
||||
);
|
||||
$help .= '<br>' . t('You can adjust these settings in the servers php.ini.');
|
||||
$help .= '<br>' . t('You can adjust these settings in the server php.ini file.');
|
||||
|
||||
$this->check_add($checks, t('PHP upload limits'), true, false, $help);
|
||||
}
|
||||
@ -512,11 +511,17 @@ class Setup extends \Zotlabs\Web\Controller {
|
||||
$this->check_add($ck_funcs, t('Apache mod_rewrite module'), true, true);
|
||||
}
|
||||
}
|
||||
if((! function_exists('proc_open')) || strstr(ini_get('disable_functions'),'proc_open')) {
|
||||
$this->check_add($ck_funcs, t('proc_open'), false, true, t('Error: proc_open is required but is either not installed or has been disabled in php.ini'));
|
||||
if((! function_exists('exec')) || strstr(ini_get('disable_functions'),'exec')) {
|
||||
$this->check_add($ck_funcs, t('exec'), false, true, t('Error: exec is required but is either not installed or has been disabled in php.ini'));
|
||||
}
|
||||
else {
|
||||
$this->check_add($ck_funcs, t('proc_open'), true, true);
|
||||
$this->check_add($ck_funcs, t('exec'), true, true);
|
||||
}
|
||||
if((! function_exists('shell_exec')) || strstr(ini_get('disable_functions'),'shell_exec')) {
|
||||
$this->check_add($ck_funcs, t('shell_exec'), false, true, t('Error: shell_exec is required but is either not installed or has been disabled in php.ini'));
|
||||
}
|
||||
else {
|
||||
$this->check_add($ck_funcs, t('shell_exec'), true, true);
|
||||
}
|
||||
|
||||
if(! function_exists('curl_init')) {
|
||||
@ -579,7 +584,7 @@ class Setup extends \Zotlabs\Web\Controller {
|
||||
|
||||
if(! is_writable(TEMPLATE_BUILD_PATH) ) {
|
||||
$status = false;
|
||||
$help = t('Red uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering.') .EOL;
|
||||
$help = t('This software uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering.') .EOL;
|
||||
$help .= sprintf( t('In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder.'), TEMPLATE_BUILD_PATH) . EOL;
|
||||
$help .= t('Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder.').EOL;
|
||||
$help .= sprintf( t('Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains.'), TEMPLATE_BUILD_PATH) . EOL;
|
||||
@ -601,7 +606,7 @@ class Setup extends \Zotlabs\Web\Controller {
|
||||
|
||||
if(! is_writable('store')) {
|
||||
$status = false;
|
||||
$help = t('This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder') . EOL;
|
||||
$help = t('This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the top level web folder') . EOL;
|
||||
$help .= t('Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder.').EOL;
|
||||
}
|
||||
|
||||
@ -716,7 +721,7 @@ class Setup extends \Zotlabs\Web\Controller {
|
||||
// (e.g. NSS used in RedHat) require different syntax, so hopefully
|
||||
// the default curl cipher list will work for most sites. If not,
|
||||
// this can set via config. Many distros are now disabling RC4,
|
||||
// but many Red sites still use it and are unable to change it.
|
||||
// but many existing sites still use it and are unable to change it.
|
||||
// We do not use SSL for encryption, only to protect session cookies.
|
||||
// z_fetch_url() is also used to import shared links and other content
|
||||
// so in theory most any cipher could show up and we should do our best
|
||||
|
@ -149,6 +149,7 @@ class Wiki extends \Zotlabs\Web\Controller {
|
||||
'$wikiName' => array('wikiName', t('Wiki name')),
|
||||
'$mimeType' => array('mimeType', t('Content type'), '', '', ['text/markdown' => 'Markdown', 'text/bbcode' => 'BB Code']),
|
||||
'$name' => t('Name'),
|
||||
'$type' => t('Type'),
|
||||
'$lockstate' => $x['lockstate'],
|
||||
'$acl' => $x['acl'],
|
||||
'$allow_cid' => $x['allow_cid'],
|
||||
|
@ -12,5 +12,122 @@ Required:
|
||||
|
||||
Returns:
|
||||
|
||||
abook+xchan (DB join) for each member of the privacy group
|
||||
group_member+abook+xchan (DB join) for each member of the privacy group
|
||||
|
||||
|
||||
[
|
||||
|
||||
{
|
||||
"id": "1",
|
||||
"uid": "2",
|
||||
"gid": "1",
|
||||
"xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg",
|
||||
"abook_id": "2",
|
||||
"abook_account": "1",
|
||||
"abook_channel": "2",
|
||||
"abook_xchan": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg",
|
||||
"abook_my_perms": "218555",
|
||||
"abook_their_perms": "0",
|
||||
"abook_closeness": "0",
|
||||
"abook_created": "2016-01-02 21:16:26",
|
||||
"abook_updated": "2016-01-02 21:16:26",
|
||||
"abook_connected": "0000-00-00 00:00:00",
|
||||
"abook_dob": "0000-00-00 00:00:00",
|
||||
"abook_flags": "0",
|
||||
"abook_blocked": "0",
|
||||
"abook_ignored": "0",
|
||||
"abook_hidden": "0",
|
||||
"abook_archived": "0",
|
||||
"abook_pending": "0",
|
||||
"abook_unconnected": "0",
|
||||
"abook_self": "1",
|
||||
"abook_feed": "0",
|
||||
"abook_profile": "",
|
||||
"abook_incl": "",
|
||||
"abook_excl": "",
|
||||
"abook_instance": "",
|
||||
"xchan_hash": "pgcJx1IQjuPkx8aI9qheJlBMZzJz-oTPjHy3h5pWlOVOriBO_cSiUhhqwhuZ74TYJ8_ECO3pPiRMWC0q8YPCQg",
|
||||
"xchan_guid": "lql-1VnxtiO4-WF0h72wLX1Fu8szzHDOXgQaTbELwXW77k8AKFfh-hYr70vqMrc3SSvWN-Flrc5HFhRTWB7ICw",
|
||||
"xchan_guid_sig": "PafvEL0VpKfxATxlCqDjfOeSIMdmpr3iU7X-Sysa1h5LzDpjSXsjO37tYZL-accb1M5itLlfnW5epkTa5I4flsW21zSY1A2jCuBQUTLLGV7rNyyBy7lgqJUFvAMRx0TfXzP9lcaPqlM9T1tA6jfWOsOmkdzwofGeXBnsjGfjsO2xdGYe6vwjOU0DSavukvzDMnOayB9DekpvDnaNBTxeGLM45Skzr7ZEMcNF7TeXMbnvpfLaALYEKeQs9bGH-UgAG8fBWgzVAzeBfx_XSR1rdixjyiZGP0kq0h35SlmMPcEjliodOBFwMXqpXFB7Ibp4F6o6te2p2ErViJccQVG8VNKB6SbKNXY6bhP5zVcVsJ-vR-p4xXoYJJvzTN7yTDsGAXHOLF4ZrXbo5yi5gFAlIrTLAF2EdWQwxSGyLRWKxG8PrDkzEzX6cJJ0VRcLh5z6OI5QqQNdeghPZbshMFMJSc_ApCPi9_hI4ZfctCIOi3T6bdgTNKryLm5fhy_eqjwLAZTGP-aUBgLZpb1mf2UojBn6Ey9cCyq-0T2RWyk-FcIcbV4qJ-p_8oODqw13Qs5FYkjLr1bGBq82SuolkYrXEwQClxnrfKa4KYc2_eHAXPL01iS9zVnI1ySOCNJshB97Odpooc4wk7Nb2Fo-Q6THU9zuu0uK_-JbK7IIl6go2qA",
|
||||
"xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA18JB76lyP4zzL/y7BCej\neJnfZIWZNtM3MZvI1zEVMWmmwOS+u/yH8oPwyaDk4Y/tnj8GzMPj1lCGVRcd8EJa\nNrCMd50HODA5EsJtxpsOzRcILYjOcTtIAG1K4LtKqELi9ICAaFp0fNfa+Jf0eCek\nvPusx2/ORhy+o23hFoSMhL86o2gmaiRnmnA3Vz4ZMG92ieJEDMXt9IA1EkIqS4y5\nBPZfVPLD1pv8iivj+dtN1XjwplgjUbtxmU0/Ej808nHppscRIqx/XJ0XZU90oNGw\n/wYoK2EzJlPbRsAkwNqoFrAYlr5HPpn4BJ2ebFYQgWBUraD7HwS5atsQEaxGfO21\nlUP0+lDg9t3CXvudDj0UG1jiEKbVIGA+4aG0GN2DSC5AyRq/GRxqyay5W2vQbAZH\nyvxPGrZFO24I65g3pjhpjEsLqZ4ilTLQoLMs0drCIcRm5RxMUo4s/LMg16lT4cEk\n1qRtk2X0Sb1AMQQ2uRXiVtWz77QHMONEYkf6OW4SHbwcv5umvlv69NYEGfCcbgq0\nAV7U4/BWztUz/SWj4r194CG43I9I8dmaEx9CFA/XMePIAXQUuABfe1QMOR6IxLpq\nTHG1peZgHQKeGz4aSGrhQkZNNoOVNaZoIfcvopxcHDTZLigseEIaPPha4WFYoKPi\nUPbZ5o8gTLc750uzrnb2jwcCAwEAAQ==\n-----END PUBLIC KEY-----\n",
|
||||
"xchan_photo_mimetype": "image/png",
|
||||
"xchan_photo_l": "https://xyz.macgirvin.com/photo/profile/l/2",
|
||||
"xchan_photo_m": "https://xyz.macgirvin.com/photo/profile/m/2",
|
||||
"xchan_photo_s": "https://xyz.macgirvin.com/photo/profile/s/2",
|
||||
"xchan_addr": "teller@xyz.macgirvin.com",
|
||||
"xchan_url": "https://xyz.macgirvin.com/channel/teller",
|
||||
"xchan_connurl": "https://xyz.macgirvin.com/poco/teller",
|
||||
"xchan_follow": "https://xyz.macgirvin.com/follow?f=&url=%s",
|
||||
"xchan_connpage": "",
|
||||
"xchan_name": "Teller",
|
||||
"xchan_network": "zot",
|
||||
"xchan_instance_url": "",
|
||||
"xchan_flags": "0",
|
||||
"xchan_photo_date": "2016-10-19 01:26:50",
|
||||
"xchan_name_date": "2016-01-02 21:16:26",
|
||||
"xchan_hidden": "0",
|
||||
"xchan_orphan": "0",
|
||||
"xchan_censored": "0",
|
||||
"xchan_selfcensored": "0",
|
||||
"xchan_system": "0",
|
||||
"xchan_pubforum": "0",
|
||||
"xchan_deleted": "0"
|
||||
},
|
||||
{
|
||||
"id": "12",
|
||||
"uid": "2",
|
||||
"gid": "1",
|
||||
"xchan": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w",
|
||||
"abook_id": "24",
|
||||
"abook_account": "1",
|
||||
"abook_channel": "2",
|
||||
"abook_xchan": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w",
|
||||
"abook_my_perms": "218555",
|
||||
"abook_their_perms": "218555",
|
||||
"abook_closeness": "80",
|
||||
"abook_created": "2016-01-27 00:48:43",
|
||||
"abook_updated": "2016-12-04 17:16:58",
|
||||
"abook_connected": "2016-12-04 17:16:58",
|
||||
"abook_dob": "0001-01-01 00:00:00",
|
||||
"abook_flags": "0",
|
||||
"abook_blocked": "0",
|
||||
"abook_ignored": "0",
|
||||
"abook_hidden": "0",
|
||||
"abook_archived": "0",
|
||||
"abook_pending": "0",
|
||||
"abook_unconnected": "0",
|
||||
"abook_self": "0",
|
||||
"abook_feed": "0",
|
||||
"abook_profile": "debb5236efb1626cfbad33ccb49892801e5f844aa04bf81f580cfa7d13204819",
|
||||
"abook_incl": "",
|
||||
"abook_excl": "",
|
||||
"abook_instance": "",
|
||||
"xchan_hash": "xuSMUYxw1djBB97qXsbrBN1nzJH_gFwQL6pS4zIy8fuusOfBxNlMiVb4h_q5tOEvpE7tYf1EsryjNciMuPIj5w",
|
||||
"xchan_guid": "d5EMLlt1tHHZ0dANoA7B5Wq9UgXoWcFS9-gXOkL_AAejcPApoQRyxfHTuu8DoTbUaO-bYmX5HPuWuK9PHyqNmA",
|
||||
"xchan_guid_sig": "CVWEMRPtzI1YcHfnnWHTuv3H964OAmSElgUfxMoX6RdQdxNpqb_POirpVuyP8s3W17mVCfO5V9IAjkg5iKcqCk6YcvOD_egmMy-AnM9TC1kKndQHw55CunD82Q8K_xBNSXkSROizcNkKh9DVLjJPFjW1AqtI4njkZ3EMgrWqnbFRM1qPToUoCY9zM3tEMHoAD9YX1zP90wl40LzfN-dtcNWpSBbiz9owou62uzLbN7mrCwKOMlXLjwwGswRnxIsEnb3O-FXOs8hs0mArKe9snq1-BKeD16LyzxgwlpVLElzIJZGEZGtMdIJgeRzKuBvPjsOIpQ1yAkuOpFJ3nGCM-IPOIIjAmyVl5zD3xPVcxxpZlJRn5fG1Y-gnqTgsrEQCA7M6XPWQdrdHU4akZfyUyFJDhv3uM-jon9VzrYTBw68R0WA-1Z8WafEHA4qh5OWAj85lUarwhr7iTiEckH51ypPCPs6VbT6Pw7yMaxfjFOcipashQagx0tfOlDhE5dQANOXKASFtH1J9-CZY2MQdLPQ6u54d5whuHKMGaJ0V68pnmZ2rOn7g344Ah2WCJrm17jj60QsRMorqRFj7GMdPIA1XB8Wrk88MuYOe3Dhyuu6ZWKI7YTWJS690ZVkKUqAiNHqj0W86DtaiPUc_mmGR0fHl4Gksnko3WmCFv9q2X2E",
|
||||
"xchan_pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAoj2xCJktBA8Ww7Hp+ZNL\nrNuQpo8UB/bfvRkIy+yua3xpF1TuXcnAH61kyRz8vXgOu/l2CyxQbIoaGslCV5Sy\n8JKeNXe+IilUdSSEjMIwCPfSPsYnMHsSnHWmPmclvJwEtQUKOZmW5mMuVBvXy7D2\njomFwc69AYphdyys6eQ7Dcn6+FRBiQbyMprZ5lxyVW+O4DuXVNa3ej2ebx0gCJZ4\ntTIlBoKwEey91dY+FyKVFjdwfNczpmL7LgmZXqcVx+MG3mYgibwdVMiXVj5X06cs\nV9hJ5Xi+Aklsv/UWJtjw9FVt7y9TLptnhh4Ra6T/MDmnBBIAkOR7P/X8cRv078MT\nl0IMsP0RJcDEtTLtwHFVtDs6p52KDFqclKWbqmxmxqV3OTPVYtArRGIzgnJi/5ur\nHRr5G6Cif7QY3UowsIOf78Qvy28LwSbdymgBAWwPPKIviXWxGO+9kMWdmPSUQrWy\nK0+7YA9P9fBUFfn9Hc+p8SJQmQ6OAqLwrDGiPSOlGaNrbEqwqLGgIpXwK+lEFcFJ\n3SPOjJRWdR2whlMxvpwX+39+H7dWN3vSa3Al4/Sq7qW8yW2rYwf+eGyp4Z0lRR+8\nJxFMCwZkSw5g14YdlikAPojv5V1c6KuA5ieg8G1hwyONV7A4JHPyEdPt0W0TZi6C\nCOVkPaC3xGrguETZpJfVpwUCAwEAAQ==\n-----END PUBLIC KEY-----\n",
|
||||
"xchan_photo_mimetype": "image/png",
|
||||
"xchan_photo_l": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-4",
|
||||
"xchan_photo_m": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-5",
|
||||
"xchan_photo_s": "https://xyz.macgirvin.com/photo/9da63aa910ea14e1501ee1a749d181a6-6",
|
||||
"xchan_addr": "cloner@xyz.macgirvin.com",
|
||||
"xchan_url": "http://abc.macgirvin.com/channel/cloner",
|
||||
"xchan_connurl": "http://abc.macgirvin.com/poco/cloner",
|
||||
"xchan_follow": "https://xyz.macgirvin.com/follow?f=&url=%s",
|
||||
"xchan_connpage": "",
|
||||
"xchan_name": "Karen",
|
||||
"xchan_network": "zot",
|
||||
"xchan_instance_url": "",
|
||||
"xchan_flags": "0",
|
||||
"xchan_photo_date": "2016-03-31 19:59:20",
|
||||
"xchan_name_date": "2016-01-26 23:23:42",
|
||||
"xchan_hidden": "0",
|
||||
"xchan_orphan": "0",
|
||||
"xchan_censored": "0",
|
||||
"xchan_selfcensored": "0",
|
||||
"xchan_system": "0",
|
||||
"xchan_pubforum": "0",
|
||||
"xchan_deleted": "0"
|
||||
}
|
||||
|
||||
]
|
@ -7,6 +7,35 @@ GET /api/z/1.0/group
|
||||
Description: list privacy groups
|
||||
|
||||
|
||||
Returns: DB tables of all privacy groups. To use with API group_members, provide group_id from the id element returned in this call, or group_name from the gname returned in this call.
|
||||
Returns: DB tables of all privacy groups.
|
||||
|
||||
|
||||
To use with API group_members, provide either 'group_id' from the id element returned in this call, or 'group_name' from the gname returned in this call.
|
||||
|
||||
|
||||
[
|
||||
|
||||
{
|
||||
"id": "1",
|
||||
"hash": "966c946394f3e2627bbb8a55026b5725e582407098415c02f85232de3f3fde76Friends",
|
||||
"uid": "2",
|
||||
"visible": "0",
|
||||
"deleted": "0",
|
||||
"gname": "Friends"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"hash": "852ebc17f8c3ed4866f2162e384ded0f9b9d1048f93822c0c84196745f6eec66Family",
|
||||
"uid": "2",
|
||||
"visible": "1",
|
||||
"deleted": "0",
|
||||
"gname": "Family"
|
||||
},
|
||||
{
|
||||
"id": "3",
|
||||
"hash": "cc3cb5a7f9818effd7c7c80a58b09a189b62efa698a74319117babe33ee30ab9Co-workers",
|
||||
"uid": "2",
|
||||
"visible": "0",
|
||||
"deleted": "0",
|
||||
"gname": "Co-workers"
|
||||
}
|
||||
]
|
@ -11,7 +11,11 @@ api/z/1.0/channel/export/basic
|
||||
|
||||
api/z/1.0/channel/stream
|
||||
|
||||
Fetch conversation items
|
||||
Fetch channel conversation items
|
||||
|
||||
api/z/1.0/network/stream
|
||||
|
||||
Fetch network conversation items
|
||||
|
||||
|
||||
api/z/1.0/files
|
||||
|
@ -33,6 +33,7 @@
|
||||
api_register_func('api/red/item/full','red_item', true);
|
||||
api_register_func('api/z/1.0/item/full','red_item', true);
|
||||
|
||||
api_register_func('api/z/1.0/network/stream','api_network_stream', true);
|
||||
api_register_func('api/z/1.0/abook','api_zot_abook_xchan',true);
|
||||
api_register_func('api/z/1.0/abconfig','api_zot_abconfig',true);
|
||||
api_register_func('api/z/1.0/perm_allowed','api_zot_perm_allowed',true);
|
||||
@ -55,18 +56,63 @@
|
||||
}
|
||||
|
||||
|
||||
function api_network_stream($type) {
|
||||
if(api_user() === false) {
|
||||
logger('api_channel_stream: no user');
|
||||
return false;
|
||||
}
|
||||
|
||||
$channel = channelx_by_n(api_user());
|
||||
if(! $channel)
|
||||
return false;
|
||||
|
||||
|
||||
if($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||
// json_return_and_die(post_activity_item($_REQUEST));
|
||||
}
|
||||
else {
|
||||
$mindate = (($_REQUEST['mindate']) ? datetime_convert('UTC','UTC',$_REQUEST['mindate']) : '');
|
||||
if(! $mindate)
|
||||
$mindate = datetime_convert('UTC','UTC', 'now - 14 days');
|
||||
|
||||
$arr = $_REQUEST;
|
||||
$ret = [];
|
||||
$i = items_fetch($arr,App::get_channel(),get_observer_hash());
|
||||
if($i) {
|
||||
foreach($i as $iv) {
|
||||
$ret[] = encode_item($iv);
|
||||
}
|
||||
}
|
||||
|
||||
json_return_and_die($ret);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function api_channel_stream($type) {
|
||||
if(api_user() === false) {
|
||||
logger('api_channel_stream: no user');
|
||||
return false;
|
||||
}
|
||||
|
||||
$channel = channelx_by_n(api_user());
|
||||
if(! $channel)
|
||||
return false;
|
||||
|
||||
|
||||
if($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||
json_return_and_die(post_activity_item($_REQUEST));
|
||||
}
|
||||
else {
|
||||
// fetch stream
|
||||
$mindate = (($_REQUEST['mindate']) ? datetime_convert('UTC','UTC',$_REQUEST['mindate']) : '');
|
||||
if(! $mindate)
|
||||
$mindate = datetime_convert('UTC','UTC', 'now - 14 days');
|
||||
|
||||
json_return_and_die(zot_feed($channel['channel_id'],$channel['channel_hash'],[ 'mindate' => $mindate ]));
|
||||
}
|
||||
}
|
||||
|
||||
@ -237,8 +283,8 @@
|
||||
}
|
||||
|
||||
if($r) {
|
||||
$x = q("select * from group_member left join xchan on group_member.xchan = xchan.xchan_hash
|
||||
left join abook on abook_xchan = xchan_hash where gid = %d",
|
||||
$x = q("select * from group_member left join abook on abook_xchan = xchan and abook_channel = group_member.uid left join xchan on group_member.xchan = xchan.xchan_hash
|
||||
where gid = %d",
|
||||
intval($r[0]['id'])
|
||||
);
|
||||
json_return_and_die($x);
|
||||
|
@ -149,16 +149,18 @@ function markdown_to_bb($s, $use_zrl = false) {
|
||||
|
||||
$s = html2bbcode($s);
|
||||
|
||||
$s = preg_replace("/\[([uz])rl=(.*?)\]\[\/[uz]rl\]/ism",'[$1rl=$2]$2[/$1rl]',$s);
|
||||
|
||||
// protect the recycle symbol from turning into a tag, but without unescaping angles and naked ampersands
|
||||
$s = str_replace('♲',html_entity_decode('♲',ENT_QUOTES,'UTF-8'),$s);
|
||||
|
||||
// Convert everything that looks like a link to a link
|
||||
if($use_zrl) {
|
||||
$s = str_replace(array('[img','/img]'),array('[zmg','/zmg]'),$s);
|
||||
$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[zrl=$2$3]$2$3[/zrl]',$s);
|
||||
$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,\(\)]+)/ism", '$1[zrl=$2$3]$2$3[/zrl]',$s);
|
||||
}
|
||||
else {
|
||||
$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3]$2$3[/url]',$s);
|
||||
$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,\(\)]+)/ism", '$1[url=$2$3]$2$3[/url]',$s);
|
||||
}
|
||||
|
||||
// remove duplicate adjacent code tags
|
||||
|
@ -826,12 +826,12 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false)
|
||||
// Check for table of content without params
|
||||
while(strpos($Text,'[toc]') !== false) {
|
||||
$toc_id = 'toc-' . random_string(10);
|
||||
$Text = preg_replace("/\[toc\]/ism", '<strong>' . t('Contents:') . '</strong><ul id="' . $toc_id . '" class="toc" data-toc=".section-content-wrapper"></ul><script>$("#' . $toc_id . '").toc();</script>', $Text, 1);
|
||||
$Text = preg_replace("/\[toc\]/ism", '<ul id="' . $toc_id . '" class="toc" data-toc=".section-content-wrapper"></ul><script>$("#' . $toc_id . '").toc();</script>', $Text, 1);
|
||||
}
|
||||
// Check for table of content with params
|
||||
while(strpos($Text,'[toc') !== false) {
|
||||
$toc_id = 'toc-' . random_string(10);
|
||||
$Text = preg_replace("/\[toc([^\]]+?)\]/ism", '<strong>' . t('Contents:') . '</strong><ul id="' . $toc_id . '" class="toc"$1></ul><script>$("#' . $toc_id . '").toc();</script>', $Text, 1);
|
||||
$Text = preg_replace("/\[toc([^\]]+?)\]/ism", '<ul id="' . $toc_id . '" class="toc"$1></ul><script>$("#' . $toc_id . '").toc();</script>', $Text, 1);
|
||||
}
|
||||
// Check for centered text
|
||||
if (strpos($Text,'[/center]') !== false) {
|
||||
|
@ -35,8 +35,8 @@ function load_config($family) {
|
||||
Zlib\Config::Load($family);
|
||||
}
|
||||
|
||||
function get_config($family, $key) {
|
||||
return Zlib\Config::Get($family,$key);
|
||||
function get_config($family, $key, $default = false) {
|
||||
return Zlib\Config::Get($family,$key,$default);
|
||||
}
|
||||
|
||||
function set_config($family, $key, $value) {
|
||||
@ -51,8 +51,8 @@ function load_pconfig($uid) {
|
||||
Zlib\PConfig::Load($uid);
|
||||
}
|
||||
|
||||
function get_pconfig($uid, $family, $key, $instore = false) {
|
||||
return Zlib\PConfig::Get($uid,$family,$key,$instore = false);
|
||||
function get_pconfig($uid, $family, $key, $default = false) {
|
||||
return Zlib\PConfig::Get($uid,$family,$key,$default);
|
||||
}
|
||||
|
||||
function set_pconfig($uid, $family, $key, $value) {
|
||||
@ -67,8 +67,8 @@ function load_xconfig($xchan) {
|
||||
Zlib\XConfig::Load($xchan);
|
||||
}
|
||||
|
||||
function get_xconfig($xchan, $family, $key) {
|
||||
return Zlib\XConfig::Get($xchan,$family,$key);
|
||||
function get_xconfig($xchan, $family, $key, $default = false) {
|
||||
return Zlib\XConfig::Get($xchan,$family,$key, $default);
|
||||
}
|
||||
|
||||
function set_xconfig($xchan, $family, $key, $value) {
|
||||
@ -83,8 +83,8 @@ function load_aconfig($account_id) {
|
||||
Zlib\AConfig::Load($account_id);
|
||||
}
|
||||
|
||||
function get_aconfig($account_id, $family, $key) {
|
||||
return Zlib\AConfig::Get($account_id, $family, $key);
|
||||
function get_aconfig($account_id, $family, $key, $default = false) {
|
||||
return Zlib\AConfig::Get($account_id, $family, $key, $default);
|
||||
}
|
||||
|
||||
function set_aconfig($account_id, $family, $key, $value) {
|
||||
@ -99,8 +99,8 @@ function load_abconfig($chan, $xhash, $family = '') {
|
||||
return Zlib\AbConfig::Load($chan,$xhash,$family);
|
||||
}
|
||||
|
||||
function get_abconfig($chan,$xhash,$family,$key) {
|
||||
return Zlib\AbConfig::Get($chan,$xhash,$family,$key);
|
||||
function get_abconfig($chan,$xhash,$family,$key, $default = false) {
|
||||
return Zlib\AbConfig::Get($chan,$xhash,$family,$key, $default);
|
||||
}
|
||||
|
||||
function set_abconfig($chan,$xhash,$family,$key,$value) {
|
||||
@ -115,8 +115,8 @@ function load_iconfig(&$item) {
|
||||
Zlib\IConfig::Load($item);
|
||||
}
|
||||
|
||||
function get_iconfig(&$item, $family, $key) {
|
||||
return Zlib\IConfig::Get($item, $family, $key);
|
||||
function get_iconfig(&$item, $family, $key, $default = false) {
|
||||
return Zlib\IConfig::Get($item, $family, $key, $default);
|
||||
}
|
||||
|
||||
function set_iconfig(&$item, $family, $key, $value, $sharing = false) {
|
||||
|
@ -3980,8 +3980,8 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C
|
||||
|
||||
$sql_nets .= "( abook.abook_closeness >= " . intval($arr['cmin']) . " ";
|
||||
$sql_nets .= " AND abook.abook_closeness <= " . intval($arr['cmax']) . " ) ";
|
||||
/** @fixme dead code, $cmax is undefined */
|
||||
if ($cmax == 99)
|
||||
|
||||
if ($arr['cmax'] == 99)
|
||||
$sql_nets .= " OR abook.abook_closeness IS NULL ) ";
|
||||
}
|
||||
}
|
||||
@ -4116,25 +4116,21 @@ function webpage_to_namespace($webpage) {
|
||||
|
||||
function update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remote_id,$mid) {
|
||||
|
||||
$page_type = '';
|
||||
|
||||
if(! $post_id)
|
||||
return;
|
||||
|
||||
if($webpage == ITEM_TYPE_WEBPAGE)
|
||||
$page_type = 'WEBPAGE';
|
||||
elseif($webpage == ITEM_TYPE_BLOCK)
|
||||
$page_type = 'BUILDBLOCK';
|
||||
elseif($webpage == ITEM_TYPE_PDL)
|
||||
$page_type = 'PDL';
|
||||
elseif($webpage == ITEM_TYPE_DOC)
|
||||
$page_type = 'docfile';
|
||||
elseif($namespace && $remote_id) {
|
||||
$page_type = webpage_to_namespace($webpage);
|
||||
|
||||
if($page_type == 'unknown' && $namespace && $remote_id) {
|
||||
$page_type = $namespace;
|
||||
$pagetitle = $remote_id;
|
||||
}
|
||||
else {
|
||||
$page_type = '';
|
||||
}
|
||||
|
||||
if($page_type) {
|
||||
|
||||
// store page info as an alternate message_id so we can access it via
|
||||
// https://sitename/page/$channelname/$pagetitle
|
||||
// if no pagetitle was given or it couldn't be transliterated into a url, use the first
|
||||
|
@ -19,7 +19,7 @@ function wiki_list($channel, $observer_hash) {
|
||||
$w['htmlName'] = get_iconfig($w, 'wiki', 'htmlName');
|
||||
$w['urlName'] = get_iconfig($w, 'wiki', 'urlName');
|
||||
$w['path'] = get_iconfig($w, 'wiki', 'path');
|
||||
$w['path'] = get_iconfig($w, 'wiki', 'mimeType');
|
||||
$w['mimeType'] = get_iconfig($w, 'wiki', 'mimeType');
|
||||
}
|
||||
}
|
||||
// TODO: query db for wikis the observer can access. Return with two lists, for read and write access
|
||||
|
@ -4179,7 +4179,7 @@ function update_hub_connected($hub,$sitekey = '') {
|
||||
dbesc($sitekey)
|
||||
);
|
||||
if(intval($hub['hubloc_orphancheck'])) {
|
||||
q("update hubloc set hubloc_orhpancheck = 0 where hubloc_id = %d and hubloc_sitekey = '%s' ",
|
||||
q("update hubloc set hubloc_orphancheck = 0 where hubloc_id = %d and hubloc_sitekey = '%s' ",
|
||||
intval($hub['hubloc_id']),
|
||||
dbesc($sitekey)
|
||||
);
|
||||
|
@ -29,13 +29,13 @@
|
||||
padding: 7px 3px 7px 10px;
|
||||
}
|
||||
|
||||
#wikis-index th:nth-child(2),
|
||||
#wikis-index td:nth-child(2){
|
||||
#wikis-index th:nth-child(3),
|
||||
#wikis-index td:nth-child(3){
|
||||
padding: 7px 10px 7px 7px;
|
||||
}
|
||||
|
||||
#wikis-index th:nth-child(3),
|
||||
#wikis-index td:nth-child(3){
|
||||
#wikis-index th:nth-child(4),
|
||||
#wikis-index td:nth-child(4){
|
||||
padding: 7px 10px 7px 7px;
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,8 @@
|
||||
<div class="section-content-wrapper-np">
|
||||
<table id="wikis-index">
|
||||
<tr>
|
||||
<th width="98%">{{$name}}</th>
|
||||
<th width="97%">{{$name}}</th>
|
||||
<th width="1%">{{$type}}</th>
|
||||
<th width="1%" class="wikis-index-tool"></th>
|
||||
{{if $owner}}
|
||||
<th width="1%"></th>
|
||||
@ -36,6 +37,7 @@
|
||||
{{foreach $wikis as $wiki}}
|
||||
<tr class="wikis-index-row">
|
||||
<td><a href="/wiki/{{$channel}}/{{$wiki.urlName}}/Home" title="{{$view}}"{{if $wiki.active}} class="active"{{/if}}>{{$wiki.title}}</a></td>
|
||||
<td>{{$wiki.mimeType}}</td>
|
||||
<td class="wiki-index-tool"><i class="fa fa-download fakelink" onclick="wiki_download_wiki('{{$wiki.resource_id}}'); return false;"></i></td>
|
||||
{{if $owner}}
|
||||
<td><i class="fa fa-trash-o drop-icons" onclick="wiki_delete_wiki('{{$wiki.title}}', '{{$wiki.resource_id}}'); return false;"></i></td>
|
||||
|
Reference in New Issue
Block a user