aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs
diff options
context:
space:
mode:
Diffstat (limited to 'Zotlabs')
-rw-r--r--Zotlabs/Lib/Activity.php126
-rw-r--r--Zotlabs/Lib/Enotify.php115
-rw-r--r--Zotlabs/Lib/Libzot.php1
-rw-r--r--Zotlabs/Lib/Libzotdir.php17
-rw-r--r--Zotlabs/Lib/Share.php42
-rw-r--r--Zotlabs/Lib/ThreadItem.php4
-rw-r--r--Zotlabs/Module/Acl.php2
-rw-r--r--Zotlabs/Module/Cdav.php1
-rw-r--r--Zotlabs/Module/Chanview.php46
-rw-r--r--Zotlabs/Module/Connedit.php6
-rw-r--r--Zotlabs/Module/Hq.php6
-rw-r--r--Zotlabs/Module/Network.php130
-rw-r--r--Zotlabs/Module/Oep.php44
-rw-r--r--Zotlabs/Module/Search.php21
-rw-r--r--Zotlabs/Module/Settings/Channel.php217
-rw-r--r--Zotlabs/Update/_1246.php24
-rw-r--r--Zotlabs/Update/_1247.php23
-rw-r--r--Zotlabs/Widget/Hq_controls.php9
-rw-r--r--Zotlabs/Widget/Messages.php17
19 files changed, 446 insertions, 405 deletions
diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php
index 3c1b140a0..784de3d2c 100644
--- a/Zotlabs/Lib/Activity.php
+++ b/Zotlabs/Lib/Activity.php
@@ -42,9 +42,6 @@ class Activity {
if ($x['type'] === ACTIVITY_OBJ_EVENT) {
return self::fetch_event($x);
}
- if ($x['type'] === ACTIVITY_OBJ_PHOTO) {
- return self::fetch_image($x);
- }
call_hooks('encode_object', $x);
}
@@ -194,6 +191,7 @@ class Activity {
}
static function fetch_image($x) {
+
$ret = [
'type' => 'Image',
'id' => $x['id'],
@@ -1535,8 +1533,9 @@ class Activity {
static function actor_store($url, $person_obj) {
- if (!is_array($person_obj))
+ if (!is_array($person_obj)) {
return;
+ }
$inbox = $person_obj['inbox'];
@@ -1547,11 +1546,14 @@ class Activity {
}
$name = $person_obj['name'];
- if (!$name)
+ if (!$name) {
$name = $person_obj['preferredUsername'];
- if (!$name)
+ }
+ if (!$name) {
$name = t('Unknown');
+ }
+ $icon = z_root() . '/' . get_default_profile_photo(300);
if ($person_obj['icon']) {
if (is_array($person_obj['icon'])) {
if (array_key_exists('url', $person_obj['icon']))
@@ -1616,84 +1618,85 @@ class Activity {
}
}
- $r = q("select * from xchan where xchan_hash = '%s' limit 1",
+ $m = parse_url($url);
+ if($m) {
+ $hostname = $m['host'];
+ $baseurl = $m['scheme'] . '://' . $m['host'] . (($m['port']) ? ':' . $m['port'] : '');
+ $site_url = $m['scheme'] . '://' . $m['host'];
+ }
+
+ $r = q("select * from xchan join hubloc on xchan_hash = hubloc_hash where xchan_hash = '%s'",
dbesc($url)
);
- if (!$r) {
- // create a new record
-
- xchan_store_lowlevel(
- [
- 'xchan_hash' => $url,
- 'xchan_guid' => $url,
- 'xchan_pubkey' => $pubkey,
- 'xchan_addr' => '',
- 'xchan_url' => $profile,
- 'xchan_name' => $name,
- 'xchan_name_date' => datetime_convert(),
- 'xchan_network' => 'activitypub'
- ]
- );
- }
- else {
+ if($r) {
// Record exists. Cache existing records for one week at most
// then refetch to catch updated profile photos, names, etc.
-
- $d = datetime_convert('UTC', 'UTC', 'now - 1 week');
- if ($r[0]['xchan_name_date'] > $d)
+ $d = datetime_convert('UTC', 'UTC', 'now - 3 days');
+ if($r[0]['hubloc_updated'] > $d) {
return;
+ }
- // update existing record
- q("update xchan set xchan_name = '%s', xchan_pubkey = '%s', xchan_network = '%s', xchan_name_date = '%s' where xchan_hash = '%s'",
- dbesc($name),
- dbesc($pubkey),
- dbesc('activitypub'),
+ q("UPDATE site SET site_update = '%s', site_dead = 0 WHERE site_url = '%s'",
dbesc(datetime_convert()),
+ dbesc($site_url)
+ );
+
+ // update existing xchan record
+ q("update xchan set xchan_name = '%s', xchan_guid = '%s', xchan_pubkey = '%s', xchan_network = 'activitypub', xchan_name_date = '%s' where xchan_hash = '%s'",
+ dbesc(escape_tags($name)),
+ dbesc(escape_tags($url)),
+ dbesc(escape_tags($pubkey)),
+ dbescdate(datetime_convert()),
dbesc($url)
);
- }
- if ($collections) {
- set_xconfig($url, 'activitypub', 'collections', $collections);
+ // update existing hubloc record
+ q("update hubloc set hubloc_guid = '%s', hubloc_network = 'activitypub', hubloc_url = '%s', hubloc_host = '%s', hubloc_callback = '%s', hubloc_updated = '%s', hubloc_id_url = '%s' where hubloc_hash = '%s'",
+ dbesc(escape_tags($url)),
+ dbesc(escape_tags($baseurl)),
+ dbesc(escape_tags($hostname)),
+ dbesc(escape_tags($inbox)),
+ dbescdate(datetime_convert()),
+ dbesc(escape_tags($profile)),
+ dbesc($url)
+ );
}
+ else {
+ // create a new record
- $r = q("select * from hubloc where hubloc_hash = '%s' limit 1",
- dbesc($url)
- );
-
- $m = parse_url($url);
- if ($m) {
- $hostname = $m['host'];
- $site_url = $m['scheme'] . '://' . $m['host'] . (($m['port']) ? ':' . $m['port'] : '');
- }
+ xchan_store_lowlevel(
+ [
+ 'xchan_hash' => escape_tags($url),
+ 'xchan_guid' => escape_tags($url),
+ 'xchan_pubkey' => escape_tags($pubkey),
+ 'xchan_addr' => '',
+ 'xchan_url' => escape_tags($profile),
+ 'xchan_name' => escape_tags($name),
+ 'xchan_name_date' => datetime_convert(),
+ 'xchan_network' => 'activitypub'
+ ]
+ );
- if (!$r) {
hubloc_store_lowlevel(
[
- 'hubloc_guid' => $url,
- 'hubloc_hash' => $url,
+ 'hubloc_guid' => escape_tags($url),
+ 'hubloc_hash' => escape_tags($url),
'hubloc_addr' => '',
'hubloc_network' => 'activitypub',
- 'hubloc_url' => $site_url,
- 'hubloc_host' => $hostname,
- 'hubloc_callback' => $inbox,
+ 'hubloc_url' => escape_tags($baseurl),
+ 'hubloc_host' => escape_tags($hostname),
+ 'hubloc_callback' => escape_tags($inbox),
'hubloc_updated' => datetime_convert(),
'hubloc_primary' => 1,
- 'hubloc_id_url' => $profile
+ 'hubloc_id_url' => escape_tags($profile)
]
);
}
- q("UPDATE site SET site_update = '%s', site_dead = 0 WHERE site_url = '%s' AND site_update < %s - INTERVAL %s",
- dbesc(datetime_convert()),
- dbesc($site_url),
- db_utcnow(),
- db_quoteinterval('1 DAY')
- );
-
- if (!$icon)
- $icon = z_root() . '/' . get_default_profile_photo(300);
+ if ($collections) {
+ set_xconfig($url, 'activitypub', 'collections', $collections);
+ }
$photos = import_xchan_photo($icon, $url);
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'",
@@ -2264,7 +2267,6 @@ class Activity {
$s['app'] = escape_tags($generator['name']);
}
-
if (!$response_activity) {
$a = self::decode_taxonomy($act->obj);
if ($a) {
@@ -2399,7 +2401,7 @@ class Activity {
}
- if ($act->obj['type'] === 'Image') {
+ if ($act->obj['type'] === 'Image' && strpos($s['body'],'zrl=') === false) {
$ptr = null;
diff --git a/Zotlabs/Lib/Enotify.php b/Zotlabs/Lib/Enotify.php
index 50b564bde..7d741edd8 100644
--- a/Zotlabs/Lib/Enotify.php
+++ b/Zotlabs/Lib/Enotify.php
@@ -69,24 +69,24 @@ class Enotify {
$sender_name = $product;
$hostname = \App::get_hostname();
if(strpos($hostname,':'))
- $hostname = substr($hostname,0,strpos($hostname,':'));
+ $hostname = substr($hostname, 0, strpos($hostname,':'));
// Do not translate 'noreply' as it must be a legal 7-bit email address
- $reply_email = get_config('system','reply_address');
+ $reply_email = get_config('system', 'reply_address');
if(! $reply_email)
$reply_email = 'noreply' . '@' . $hostname;
- $sender_email = get_config('system','from_email');
+ $sender_email = get_config('system', 'from_email');
if(! $sender_email)
$sender_email = 'Administrator' . '@' . $hostname;
- $sender_name = get_config('system','from_email_name');
+ $sender_name = get_config('system', 'from_email_name');
if(! $sender_name)
$sender_name = \Zotlabs\Lib\System::get_site_name();
- $additional_mail_header = "";
+ $additional_mail_header = '';
if(array_key_exists('item', $params)) {
require_once('include/conversation.php');
@@ -114,27 +114,28 @@ class Enotify {
}
- $always_show_in_notices = get_pconfig($recip['channel_id'],'system','always_show_in_notices');
- $vnotify = get_pconfig($recip['channel_id'],'system','vnotify');
+ $always_show_in_notices = get_pconfig($recip['channel_id'], 'system', 'always_show_in_notices');
+ $vnotify = get_pconfig($recip['channel_id'], 'system', 'vnotify');
$salutation = $recip['channel_name'];
// e.g. "your post", "David's photo", etc.
$possess_desc = t('%s <!item_type!>');
+// @@TODO: consider using switch instead of those elseif
if ($params['type'] == NOTIFY_MAIL) {
logger('notification: mail');
- $subject = sprintf( t('[$Projectname:Notify] New direct message received at %s'),$sitename);
+ $subject = sprintf( t('[$Projectname:Notify] New direct message received at %s'), $sitename);
- $preamble = sprintf( t('%1$s sent you a new direct message at %2$s.'), $sender['xchan_name'],$sitename);
- $epreamble = sprintf( t('%1$s sent you %2$s.'),'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]', '[zrl=$itemlink]' . t('a direct message') . '[/zrl]');
+ $preamble = sprintf( t('%1$s sent you a new direct message at %2$s.'), $sender['xchan_name'], $sitename);
+ $epreamble = sprintf( t('%1$s sent you %2$s.'), '[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]', '[zrl=$itemlink]' . t('a direct message') . '[/zrl]');
$sitelink = t('Please visit %s to view and/or reply to your direct messages.');
$tsitelink = sprintf( $sitelink, $siteurl . '/hq/' . gen_link_id($params['item']['mid']));
$hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '/hq/' . gen_link_id($params['item']['mid']) . '">' . $sitename . '</a>');
$itemlink = $siteurl . '/hq/' . gen_link_id($params['item']['mid']);
}
- if ($params['type'] == NOTIFY_COMMENT) {
+ elseif ($params['type'] === NOTIFY_COMMENT) {
//logger("notification: params = " . print_r($params, true), LOGGER_DEBUG);
$moderated = (($params['item']['item_blocked'] == ITEM_MODERATED) ? true : false);
@@ -171,7 +172,6 @@ class Enotify {
// Check to see if there was already a notify for this post.
// If so don't create a second notification
- $p = null;
$p = q("select id from notify where link = '%s' and uid = %d limit 1",
dbesc($params['link']),
intval($recip['channel_id'])
@@ -196,6 +196,7 @@ class Enotify {
xchan_query($p);
+//@@FIXME $p can be null (line 188)
$item_post_type = item_post_type($p[0]);
// $private = $p[0]['item_private'];
$parent_id = $p[0]['id'];
@@ -250,7 +251,7 @@ class Enotify {
}
- if ($params['type'] == NOTIFY_LIKE) {
+ elseif ($params['type'] === NOTIFY_LIKE) {
// logger("notification: params = " . print_r($params, true), LOGGER_DEBUG);
$itemlink = $params['link'];
@@ -268,7 +269,6 @@ class Enotify {
// Check to see if there was already a notify for this post.
// If so don't create a second notification
- $p = null;
$p = q("select id from notify where link = '%s' and uid = %d limit 1",
dbesc($params['link']),
intval($recip['channel_id'])
@@ -293,7 +293,7 @@ class Enotify {
xchan_query($p);
-
+//@@FIXME $p can be null (line 285)
$item_post_type = item_post_type($p[0]);
// $private = $p[0]['item_private'];
$parent_id = $p[0]['id'];
@@ -302,7 +302,7 @@ class Enotify {
// "your post"
- if($p[0]['owner']['xchan_name'] == $p[0]['author']['xchan_name'] && intval($p[0]['item_wall']))
+ if($p[0]['owner']['xchan_name'] === $p[0]['author']['xchan_name'] && intval($p[0]['item_wall']))
$dest_str = sprintf(t('%1$s liked [zrl=%2$s]your %3$s[/zrl]'),
'[zrl=' . $sender['xchan_url'] . ']' . $sender['xchan_name'] . '[/zrl]',
$itemlink,
@@ -328,7 +328,7 @@ class Enotify {
- if($params['type'] == NOTIFY_WALL) {
+ elseif($params['type'] === NOTIFY_WALL) {
$subject = sprintf( t('[$Projectname:Notify] %s posted to your profile wall') , $sender['xchan_name']);
$preamble = sprintf( t('%1$s posted to your profile wall at %2$s') , $sender['xchan_name'], $sitename);
@@ -343,9 +343,8 @@ class Enotify {
$itemlink = $params['link'];
}
- if ($params['type'] == NOTIFY_TAGSELF) {
+ elseif ($params['type'] === NOTIFY_TAGSELF) {
- $p = null;
$p = q("select id from notify where link = '%s' and uid = %d limit 1",
dbesc($params['link']),
intval($recip['channel_id'])
@@ -368,7 +367,7 @@ class Enotify {
$itemlink = $params['link'];
}
- if ($params['type'] == NOTIFY_POKE) {
+ elseif ($params['type'] === NOTIFY_POKE) {
$subject = sprintf( t('[$Projectname:Notify] %1$s poked you') , $sender['xchan_name']);
$preamble = sprintf( t('%1$s poked you at %2$s') , $sender['xchan_name'], $sitename);
$epreamble = sprintf( t('%1$s [zrl=%2$s]poked you[/zrl].') ,
@@ -385,7 +384,7 @@ class Enotify {
$itemlink = $params['link'];
}
- if ($params['type'] == NOTIFY_TAGSHARE) {
+ elseif ($params['type'] === NOTIFY_TAGSHARE) {
$subject = sprintf( t('[$Projectname:Notify] %s tagged your post') , $sender['xchan_name']);
$preamble = sprintf( t('%1$s tagged your post at %2$s'),$sender['xchan_name'], $sitename);
$epreamble = sprintf( t('%1$s tagged [zrl=%2$s]your post[/zrl]') ,
@@ -398,7 +397,7 @@ class Enotify {
$itemlink = $params['link'];
}
- if ($params['type'] == NOTIFY_INTRO) {
+ elseif ($params['type'] === NOTIFY_INTRO) {
$subject = sprintf( t('[$Projectname:Notify] Introduction received'));
$preamble = sprintf( t('You\'ve received an new connection request from \'%1$s\' at %2$s'), $sender['xchan_name'], $sitename);
$epreamble = sprintf( t('You\'ve received [zrl=%1$s]a new connection request[/zrl] from %2$s.'),
@@ -412,7 +411,7 @@ class Enotify {
$itemlink = $params['link'];
}
- if ($params['type'] == NOTIFY_SUGGEST) {
+ elseif ($params['type'] === NOTIFY_SUGGEST) {
$subject = sprintf( t('[$Projectname:Notify] Friend suggestion received'));
$preamble = sprintf( t('You\'ve received a friend suggestion from \'%1$s\' at %2$s'), $sender['xchan_name'], $sitename);
$epreamble = sprintf( t('You\'ve received [zrl=%1$s]a friend suggestion[/zrl] for %2$s from %3$s.'),
@@ -430,11 +429,11 @@ class Enotify {
$itemlink = $params['link'];
}
- if ($params['type'] == NOTIFY_CONFIRM) {
+ elseif ($params['type'] === NOTIFY_CONFIRM) {
// ?
}
- if ($params['type'] == NOTIFY_SYSTEM) {
+ elseif ($params['type'] === NOTIFY_SYSTEM) {
// ?
}
@@ -477,7 +476,7 @@ class Enotify {
} while ($dups === true);
- $datarray = array();
+ $datarray = [];
$datarray['hash'] = $hash;
$datarray['sender_hash'] = $sender['xchan_hash'];
$datarray['xname'] = $sender['xchan_name'];
@@ -514,7 +513,7 @@ class Enotify {
// (probably would be better that way)
if (!$always_show_in_notices) {
- if (($params['type'] == NOTIFY_WALL) || ($params['type'] == NOTIFY_MAIL) || ($params['type'] == NOTIFY_INTRO)) {
+ if (($params['type'] === NOTIFY_WALL) || ($params['type'] === NOTIFY_MAIL) || ($params['type'] === NOTIFY_INTRO)) {
$seen = 1;
}
}
@@ -550,12 +549,12 @@ class Enotify {
}
$itemlink = z_root() . '/notify/view/' . $notify_id;
- $msg = str_replace('$itemlink',$itemlink,$epreamble);
+ $msg = str_replace('$itemlink', $itemlink, $epreamble);
// wretched hack, but we don't want to duplicate all the preamble variations and we also don't want to screw up a translation
if ((\App::$language === 'en' || (! \App::$language)) && strpos($msg,', '))
- $msg = substr($msg,strpos($msg,', ')+1);
+ $msg = substr($msg, strpos($msg,', ')+1);
$datarray['id'] = $notify_id;
$datarray['msg'] = $msg;
@@ -575,7 +574,7 @@ class Enotify {
logger('notification: sending notification email');
- $hn = get_pconfig($recip['channel_id'],'system','email_notify_host');
+ $hn = get_pconfig($recip['channel_id'], 'system', 'email_notify_host');
if($hn && (! stristr(\App::get_hostname(),$hn))) {
// this isn't the email notification host
pop_lang();
@@ -584,7 +583,7 @@ class Enotify {
$textversion = strip_tags(html_entity_decode(bbcode(stripslashes(str_replace(array("\\r", "\\n"), array( "", "\n"), $body))),ENT_QUOTES,'UTF-8'));
- $htmlversion = bbcode(stripslashes(str_replace(array("\\r","\\n"), array("","<br />\n"),$body)));
+ $htmlversion = bbcode(stripslashes(str_replace(array("\\r","\\n"), array('',"<br />\n"),$body)));
// use $_SESSION['zid_override'] to force zid() to use
@@ -601,7 +600,7 @@ class Enotify {
unset($_SESSION['zid_override']);
unset($_SESSION['zrl_override']);
- $datarray = array();
+ $datarray = [];
$datarray['banner'] = $banner;
$datarray['product'] = $product;
$datarray['preamble'] = $preamble;
@@ -758,9 +757,9 @@ class Enotify {
$messageSubject = email_header_encode(html_entity_decode($params['messageSubject'],ENT_QUOTES,'UTF-8'),'UTF-8');
// generate a mime boundary
- $mimeBoundary = rand(0, 9) . "-"
- .rand(100000000, 999999999) . "-"
- .rand(100000000, 999999999) . "=:"
+ $mimeBoundary = rand(0, 9) . '-'
+ .rand(100000000, 999999999) . '-'
+ .rand(100000000, 999999999) . '=:'
.rand(10000, 99999);
// generate a multipart/alternative message header
@@ -768,7 +767,7 @@ class Enotify {
$params['additionalMailHeader'] .
"From: $fromName <{$params['fromEmail']}>" . PHP_EOL .
"Reply-To: $fromName <{$params['replyTo']}>" . PHP_EOL .
- "MIME-Version: 1.0" . PHP_EOL .
+ 'MIME-Version: 1.0' . PHP_EOL .
"Content-Type: multipart/alternative; boundary=\"{$mimeBoundary}\"";
// assemble the final multipart message body with the text and html types included
@@ -776,15 +775,15 @@ class Enotify {
$htmlBody = chunk_split(base64_encode($params['htmlVersion']));
$multipartMessageBody =
- "--" . $mimeBoundary . PHP_EOL . // plain text section
- "Content-Type: text/plain; charset=UTF-8" . PHP_EOL .
- "Content-Transfer-Encoding: base64" . PHP_EOL . PHP_EOL .
+ '--' . $mimeBoundary . PHP_EOL . // plain text section
+ 'Content-Type: text/plain; charset=UTF-8' . PHP_EOL .
+ 'Content-Transfer-Encoding: base64' . PHP_EOL . PHP_EOL .
$textBody . PHP_EOL .
- "--" . $mimeBoundary . PHP_EOL . // text/html section
- "Content-Type: text/html; charset=UTF-8" . PHP_EOL .
- "Content-Transfer-Encoding: base64" . PHP_EOL . PHP_EOL .
+ '--' . $mimeBoundary . PHP_EOL . // text/html section
+ 'Content-Type: text/html; charset=UTF-8' . PHP_EOL .
+ 'Content-Transfer-Encoding: base64' . PHP_EOL . PHP_EOL .
$htmlBody . PHP_EOL .
- "--" . $mimeBoundary . "--" . PHP_EOL; // message ending
+ '--' . $mimeBoundary . '--' . PHP_EOL; // message ending
// send the message
$res = mail(
@@ -793,7 +792,7 @@ class Enotify {
$multipartMessageBody, // message body
$messageHeader // message headers
);
- logger("notification: enotify::send returns " . (($res) ? 'success' : 'failure'), LOGGER_DEBUG);
+ logger('notification: enotify::send returns ' . (($res) ? 'success' : 'failure'), LOGGER_DEBUG);
return $res;
}
@@ -833,13 +832,12 @@ class Enotify {
$edit = false;
if($item['edited'] > $item['created']) {
+ $edit = true;
if($item['item_thread_top']) {
$itemem_text = sprintf( t('edited a post dated %s'), relative_date($item['created']));
- $edit = true;
}
else {
$itemem_text = sprintf( t('edited a comment dated %s'), relative_date($item['created']));
- $edit = true;
}
}
@@ -860,14 +858,14 @@ class Enotify {
//'b64mid' => ((in_array($item['verb'], [ACTIVITY_LIKE, ACTIVITY_DISLIKE])) ? 'b64.' . base64url_encode($item['thr_parent']) : 'b64.' . base64url_encode($item['mid'])),
'thread_top' => (($item['item_thread_top']) ? true : false),
'message' => bbcode(escape_tags($itemem_text)),
- 'body' => htmlentities(html2plain(bbcode($item['body']), 75, true), ENT_QUOTES, 'UTF-8', false),
+ 'body' => htmlentities(html2plain(bbcode($item['body'], ['drop_media', true]), 75, true), ENT_QUOTES, 'UTF-8', false),
// these are for the superblock addon
'hash' => $item[$who]['xchan_hash'],
'uid' => $item['uid'],
'display' => true
);
- call_hooks('enotify_format',$x);
+ call_hooks('enotify_format', $x);
if(! $x['display']) {
return [];
}
@@ -903,7 +901,7 @@ class Enotify {
static public function format_intros($rr) {
- $x = [
+ return [
'notify_link' => z_root() . '/connections/ifpending',
'name' => $rr['xchan_name'],
'addr' => $rr['xchan_addr'],
@@ -912,15 +910,13 @@ class Enotify {
'when' => datetime_convert('UTC', date_default_timezone_get(), $rr['abook_created']),
'hclass' => ('notify-unseen'),
'message' => t('added your channel')
- ];
-
- return $x;
+ ];
}
static public function format_files($rr) {
- $x = [
+ return [
'notify_link' => z_root() . '/sharedwithme',
'name' => $rr['author']['xchan_name'],
'addr' => $rr['author']['xchan_addr'],
@@ -931,13 +927,11 @@ class Enotify {
'message' => t('shared a file with you')
];
- return $x;
-
}
static public function format_mail($rr) {
- $x = [
+ return [
'notify_link' => z_root() . '/mail/' . $rr['id'],
'name' => $rr['xchan_name'],
'addr' => $rr['xchan_addr'],
@@ -948,8 +942,6 @@ class Enotify {
'message' => t('sent you a direct message'),
];
- return $x;
-
}
static public function format_all_events($rr) {
@@ -959,7 +951,7 @@ class Enotify {
$today = ((substr($strt, 0, 10) === datetime_convert('UTC', date_default_timezone_get(), 'now', 'Y-m-d')) ? true : false);
$when = day_translate(datetime_convert('UTC', (($rr['adjust']) ? date_default_timezone_get() : 'UTC'), $rr['dtstart'], $bd_format)) . (($today) ? ' ' . t('[today]') : '');
- $x = [
+ return [
'notify_link' => z_root() . '/cdav/calendar/' . $rr['event_hash'],
'name' => $rr['xchan_name'],
'addr' => $rr['xchan_addr'],
@@ -970,13 +962,12 @@ class Enotify {
'message' => t('created an event')
];
- return $x;
}
static public function format_register($rr) {
- $x = [
+ return [
'notify_link' => z_root() . '/admin/accounts',
'name' => $rr['reg_did2'],
//'addr' => '',
@@ -986,7 +977,5 @@ class Enotify {
'message' => t('status verified')
];
- return $x;
-
}
}
diff --git a/Zotlabs/Lib/Libzot.php b/Zotlabs/Lib/Libzot.php
index d5768cc84..ae8c725d7 100644
--- a/Zotlabs/Lib/Libzot.php
+++ b/Zotlabs/Lib/Libzot.php
@@ -1142,6 +1142,7 @@ class Libzot {
}
+
$deliveries = null;
if (array_key_exists('recipients', $env) && count($env['recipients'])) {
diff --git a/Zotlabs/Lib/Libzotdir.php b/Zotlabs/Lib/Libzotdir.php
index 507ddb674..4f35a1b80 100644
--- a/Zotlabs/Lib/Libzotdir.php
+++ b/Zotlabs/Lib/Libzotdir.php
@@ -264,6 +264,11 @@ class Libzotdir {
if (is_array($j['transactions']) && count($j['transactions'])) {
foreach ($j['transactions'] as $t) {
+
+ if (empty($t['hash']) || empty($t['transaction_id']) || empty($t['address'])) {
+ continue;
+ }
+
$r = q("select * from updates where ud_guid = '%s' limit 1",
dbesc($t['transaction_id'])
);
@@ -638,8 +643,13 @@ class Libzotdir {
$dirmode = intval(get_config('system', 'directory_mode'));
- if($dirmode == DIRECTORY_MODE_NORMAL)
+ if($dirmode == DIRECTORY_MODE_NORMAL) {
+ return;
+ }
+
+ if (empty($hash) || empty($guid) || empty($addr)) {
return;
+ }
if($flags) {
q("insert into updates (ud_hash, ud_guid, ud_date, ud_flags, ud_addr ) values ( '%s', '%s', '%s', %d, '%s' )",
@@ -659,9 +669,4 @@ class Libzotdir {
}
}
-
-
-
-
-
}
diff --git a/Zotlabs/Lib/Share.php b/Zotlabs/Lib/Share.php
index b4cd5a194..81f378d0d 100644
--- a/Zotlabs/Lib/Share.php
+++ b/Zotlabs/Lib/Share.php
@@ -8,13 +8,13 @@ class Share {
public function __construct($post_id) {
-
+
if(! $post_id)
return;
-
+
if(! (local_channel() || remote_channel()))
return;
-
+
$r = q("SELECT * from item left join xchan on author_xchan = xchan_hash WHERE id = %d LIMIT 1",
intval($post_id)
);
@@ -23,26 +23,26 @@ class Share {
if(($r[0]['item_private']) && ($r[0]['xchan_network'] !== 'rss'))
return;
-
+
$sql_extra = item_permissions_sql($r[0]['uid']);
-
+
$r = q("select * from item where id = %d $sql_extra",
intval($post_id)
);
if(! $r)
return;
-
+
if($r[0]['mimetype'] !== 'text/bbcode')
return;
-
+
/** @FIXME eventually we want to post remotely via rpost on your home site */
// When that works remove this next bit:
-
+
if(! local_channel())
return;
xchan_query($r);
-
+
$this->item = $r[0];
return;
}
@@ -66,14 +66,14 @@ class Share {
'address' => $this->item['author']['xchan_addr'],
'network' => $this->item['author']['xchan_network'],
'link' => [
- [
- 'rel' => 'alternate',
- 'type' => 'text/html',
+ [
+ 'rel' => 'alternate',
+ 'type' => 'text/html',
'href' => $this->item['author']['xchan_url']
],
[
- 'rel' => 'photo',
- 'type' => $this->item['author']['xchan_photo_mimetype'],
+ 'rel' => 'photo',
+ 'type' => $this->item['author']['xchan_photo_mimetype'],
'href' => $this->item['author']['xchan_photo_m']
]
]
@@ -84,14 +84,14 @@ class Share {
'address' => $this->item['owner']['xchan_addr'],
'network' => $this->item['owner']['xchan_network'],
'link' => [
- [
- 'rel' => 'alternate',
- 'type' => 'text/html',
+ [
+ 'rel' => 'alternate',
+ 'type' => 'text/html',
'href' => $this->item['owner']['xchan_url']
],
[
- 'rel' => 'photo',
- 'type' => $this->item['owner']['xchan_photo_mimetype'],
+ 'rel' => 'photo',
+ 'type' => $this->item['owner']['xchan_photo_mimetype'],
'href' => $this->item['owner']['xchan_photo_m']
]
]
@@ -117,7 +117,7 @@ class Share {
$object = json_decode($this->item['obj'],true);
$photo_bb = $object['body'];
}
-
+
if (strpos($this->item['body'], "[/share]") !== false) {
$pos = strpos($this->item['body'], "[share");
$bb = substr($this->item['body'], $pos);
@@ -126,7 +126,7 @@ class Share {
"' profile='" . $this->item['author']['xchan_url'] .
"' avatar='" . $this->item['author']['xchan_photo_s'] .
"' link='" . $this->item['plink'] .
- "' auth='" . ((in_array($this->item['author']['xchan_network'], ['zot6', 'zot'])) ? 'true' : 'false') .
+ "' auth='" . (($this->item['author']['xchan_network'] === 'zot6') ? 'true' : 'false') .
"' posted='" . $this->item['created'] .
"' message_id='" . $this->item['mid'] .
"']";
diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php
index c0d5c001b..c9048cd4f 100644
--- a/Zotlabs/Lib/ThreadItem.php
+++ b/Zotlabs/Lib/ThreadItem.php
@@ -299,7 +299,7 @@ class ThreadItem {
);
*/
- $settings = t('Conversation Tools');
+ $settings = t('Conversation Features');
}
$has_bookmarks = false;
@@ -367,7 +367,7 @@ class ThreadItem {
call_hooks('dropdown_extras',$dropdown_extras_arr);
$dropdown_extras = $dropdown_extras_arr['dropdown_extras'];
- $midb64 = 'b64.' . base64url_encode($item['mid']);
+ $midb64 = gen_link_id($item['mid']);
$mids = [ $midb64 ];
$response_mids = [];
foreach($response_verbs as $v) {
diff --git a/Zotlabs/Module/Acl.php b/Zotlabs/Module/Acl.php
index 7373de899..aeb02eeaa 100644
--- a/Zotlabs/Module/Acl.php
+++ b/Zotlabs/Module/Acl.php
@@ -371,7 +371,7 @@ class Acl extends \Zotlabs\Web\Controller {
);
}
if($type !== 'f') {
- if (! array_key_exists($x[$lkey], $contacts) || ($contacts[$x[$lkey]]['net'] !== 'zot6' && ($g['net'] == 'zot6' || $g['net'] == 'zot'))) {
+ if (! array_key_exists($x[$lkey], $contacts) || ($contacts[$x[$lkey]]['net'] !== 'zot6' && $g['net'] == 'zot6')) {
$contacts[$x[$lkey]] = array(
"type" => "c",
"photo" => $g['micro'],
diff --git a/Zotlabs/Module/Cdav.php b/Zotlabs/Module/Cdav.php
index e26cdd072..e41772d38 100644
--- a/Zotlabs/Module/Cdav.php
+++ b/Zotlabs/Module/Cdav.php
@@ -1059,6 +1059,7 @@ class Cdav extends Controller {
'$cancel' => t('Cancel'),
'$create' => t('Create'),
'$recurrence_warning' => t('Sorry! Editing of recurrent events is not yet implemented.'),
+ '$disabled_warning' => t('Could not fetch calendar resource. The selected calendar might be disabled.'),
'$channel_hash' => $channel['channel_hash'],
'$acl' => $acl,
diff --git a/Zotlabs/Module/Chanview.php b/Zotlabs/Module/Chanview.php
index 8ae4841b4..afeb2aacf 100644
--- a/Zotlabs/Module/Chanview.php
+++ b/Zotlabs/Module/Chanview.php
@@ -10,12 +10,12 @@ use Zotlabs\Lib\Zotfinger;
class Chanview extends \Zotlabs\Web\Controller {
function get() {
-
+
$observer = App::get_observer();
$xchan = null;
-
+
$r = null;
-
+
if($_REQUEST['hash']) {
$r = q("select * from xchan where xchan_hash = '%s'",
dbesc($_REQUEST['hash'])
@@ -27,18 +27,18 @@ class Chanview extends \Zotlabs\Web\Controller {
);
}
elseif(local_channel() && intval($_REQUEST['cid'])) {
- $r = q("SELECT abook.*, xchan.*
+ $r = q("SELECT abook.*, xchan.*
FROM abook left join xchan on abook_xchan = xchan_hash
WHERE abook_channel = %d and abook_id = %d",
intval(local_channel()),
intval($_REQUEST['cid'])
);
- }
+ }
elseif($_REQUEST['url']) {
-
+
// if somebody re-installed they will have more than one xchan, use the most recent name date as this is
- // the most useful consistently ascending table item we have.
-
+ // the most useful consistently ascending table item we have.
+
$r = q("select * from xchan where xchan_url = '%s' order by xchan_name_date desc",
dbesc($_REQUEST['url'])
);
@@ -46,13 +46,13 @@ class Chanview extends \Zotlabs\Web\Controller {
if($r) {
App::$poi = Libzot::zot_record_preferred($r, 'xchan_network');
}
-
-
+
+
// Here, let's see if we have an xchan. If we don't, how we proceed is determined by what
- // info we do have. If it's a URL, we can offer to visit it directly. If it's a webbie or
- // address, we can and should try to import it. If it's just a hash, we can't continue, but we
+ // info we do have. If it's a URL, we can offer to visit it directly. If it's a webbie or
+ // address, we can and should try to import it. If it's just a hash, we can't continue, but we
// probably wouldn't have a hash if we don't already have an xchan for this channel.
-
+
if(! App::$poi) {
logger('mod_chanview: fallback');
@@ -90,7 +90,7 @@ class Chanview extends \Zotlabs\Web\Controller {
}
}
}
-
+
if(! App::$poi) {
notice( t('Channel not found.') . EOL);
return;
@@ -98,9 +98,9 @@ class Chanview extends \Zotlabs\Web\Controller {
$is_zot = false;
$connected = false;
-
+
$url = App::$poi['xchan_url'];
- if(in_array(App::$poi['xchan_network'], ['zot', 'zot6'])) {
+ if(App::$poi['xchan_network'] === 'zot6') {
$is_zot = true;
}
if(local_channel()) {
@@ -111,29 +111,29 @@ class Chanview extends \Zotlabs\Web\Controller {
if($c)
$connected = true;
}
-
- // We will load the chanview template if it's a foreign network,
+
+ // We will load the chanview template if it's a foreign network,
// just so that we can provide a connect button along with a profile
// photo. Chances are we can't load the remote profile into an iframe
// because of cross-domain security headers. So provide a link to
- // the remote profile.
+ // the remote profile.
// If we are already connected, just go to the profile.
// Zot channels will usually have a connect link.
-
+
if($is_zot || $connected) {
if($is_zot && $observer) {
$url = zid($url);
}
goaway($url);
}
- else {
+ else {
$o = replace_macros(get_markup_template('chanview.tpl'),array(
'$url' => $url,
'$full' => t('toggle full screen mode')
));
-
+
return $o;
}
}
-
+
}
diff --git a/Zotlabs/Module/Connedit.php b/Zotlabs/Module/Connedit.php
index 8910adfa8..7fabf1224 100644
--- a/Zotlabs/Module/Connedit.php
+++ b/Zotlabs/Module/Connedit.php
@@ -40,12 +40,12 @@ class Connedit extends Controller {
if((argc() >= 2) && intval(argv(1))) {
$r = q("SELECT abook.*, xchan.*
FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE abook_channel = %d and abook_id = %d LIMIT 1",
+ WHERE abook_channel = %d and abook_id = %d and xchan_deleted = 0 LIMIT 1",
intval(local_channel()),
intval(argv(1))
);
if($r) {
- App::$poi = array_shift($r);
+ App::$poi = $r[0];
}
}
@@ -423,7 +423,7 @@ class Connedit extends Controller {
$cmd = argv(2);
$orig_record = q("SELECT abook.*, xchan.* FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE abook_id = %d AND abook_channel = %d AND abook_self = 0 LIMIT 1",
+ WHERE abook_id = %d AND abook_channel = %d AND abook_self = 0 and xchan_deleted = 0 LIMIT 1",
intval($contact_id),
intval(local_channel())
);
diff --git a/Zotlabs/Module/Hq.php b/Zotlabs/Module/Hq.php
index 4d55b76b0..8c126d154 100644
--- a/Zotlabs/Module/Hq.php
+++ b/Zotlabs/Module/Hq.php
@@ -113,11 +113,7 @@ class Hq extends \Zotlabs\Web\Controller {
'reset' => t('Reset form')
];
- $o = replace_macros(get_markup_template("hq.tpl"),
- [
- '$editor' => status_editor($a,$x,false,'Hq')
- ]
- );
+ $o = status_editor($a, $x, true);
}
diff --git a/Zotlabs/Module/Network.php b/Zotlabs/Module/Network.php
index be954cbfd..03437d109 100644
--- a/Zotlabs/Module/Network.php
+++ b/Zotlabs/Module/Network.php
@@ -22,11 +22,11 @@ class Network extends \Zotlabs\Web\Controller {
$search = $_GET['search'] ?? '';
- if(in_array(substr($search, 0, 1),[ '@', '!', '?']) || strpos($search, 'https://') === 0)
+ if(in_array(substr($search, 0, 1), [ '@', '!', '?']) || strpos($search, 'https://') === 0)
goaway(z_root() . '/search?f=&search=' . $search);
if(count($_GET) < 2) {
- $network_options = get_pconfig(local_channel(),'system','network_page_default');
+ $network_options = get_pconfig(local_channel(), 'system', 'network_page_default');
if($network_options)
goaway(z_root() . '/network?f=&' . $network_options);
}
@@ -84,7 +84,7 @@ class Network extends \Zotlabs\Web\Controller {
$search = $_GET['search'] ?? '';
if($search) {
- if(strpos($search,'#') === 0) {
+ if(strpos($search, '#') === 0) {
$hashtags = substr($search,1);
$search = '';
}
@@ -114,31 +114,31 @@ class Network extends \Zotlabs\Web\Controller {
$def_acl = array('allow_gid' => '<' . $r[0]['hash'] . '>');
}
- $default_cmin = ((Apps::system_app_installed(local_channel(),'Affinity Tool')) ? get_pconfig(local_channel(),'affinity','cmin',0) : (-1));
- $default_cmax = ((Apps::system_app_installed(local_channel(),'Affinity Tool')) ? get_pconfig(local_channel(),'affinity','cmax',99) : (-1));
-
- $cid = ((x($_GET,'cid')) ? intval($_GET['cid']) : 0);
- $star = ((x($_GET,'star')) ? intval($_GET['star']) : 0);
- $liked = ((x($_GET,'liked')) ? intval($_GET['liked']) : 0);
- $conv = ((x($_GET,'conv')) ? intval($_GET['conv']) : 0);
- $spam = ((x($_GET,'spam')) ? intval($_GET['spam']) : 0);
- $cmin = ((array_key_exists('cmin',$_GET)) ? intval($_GET['cmin']) : $default_cmin);
- $cmax = ((array_key_exists('cmax',$_GET)) ? intval($_GET['cmax']) : $default_cmax);
- $file = ((x($_GET,'file')) ? $_GET['file'] : '');
- $xchan = ((x($_GET,'xchan')) ? $_GET['xchan'] : '');
- $net = ((x($_GET,'net')) ? $_GET['net'] : '');
- $pf = ((x($_GET,'pf')) ? $_GET['pf'] : '');
- $unseen = ((x($_GET,'unseen')) ? $_GET['unseen'] : '');
-
- if (Apps::system_app_installed(local_channel(),'Affinity Tool')) {
- $affinity_locked = intval(get_pconfig(local_channel(),'affinity','lock',1));
+ $default_cmin = ((Apps::system_app_installed(local_channel(), 'Affinity Tool')) ? get_pconfig(local_channel(), 'affinity', 'cmin', 0) : (-1));
+ $default_cmax = ((Apps::system_app_installed(local_channel(), 'Affinity Tool')) ? get_pconfig(local_channel(), 'affinity', 'cmax', 99) : (-1));
+
+ $cid = ((x($_GET, 'cid')) ? intval($_GET['cid']) : 0);
+ $star = ((x($_GET, 'star')) ? intval($_GET['star']) : 0);
+ $liked = ((x($_GET, 'liked')) ? intval($_GET['liked']) : 0);
+ $conv = ((x($_GET, 'conv')) ? intval($_GET['conv']) : 0);
+ $spam = ((x($_GET, 'spam')) ? intval($_GET['spam']) : 0);
+ $cmin = ((array_key_exists('cmin', $_GET)) ? intval($_GET['cmin']) : $default_cmin);
+ $cmax = ((array_key_exists('cmax', $_GET)) ? intval($_GET['cmax']) : $default_cmax);
+ $file = ((x($_GET, 'file')) ? $_GET['file'] : '');
+ $xchan = ((x($_GET, 'xchan')) ? $_GET['xchan'] : '');
+ $net = ((x($_GET, 'net')) ? $_GET['net'] : '');
+ $pf = ((x($_GET, 'pf')) ? $_GET['pf'] : '');
+ $unseen = ((x($_GET, 'unseen')) ? $_GET['unseen'] : '');
+
+ if (Apps::system_app_installed(local_channel(), 'Affinity Tool')) {
+ $affinity_locked = intval(get_pconfig(local_channel(), 'affinity', 'lock', 1));
if ($affinity_locked) {
- set_pconfig(local_channel(),'affinity','cmin',$cmin);
- set_pconfig(local_channel(),'affinity','cmax',$cmax);
+ set_pconfig(local_channel(), 'affinity', 'cmin', $cmin);
+ set_pconfig(local_channel(), 'affinity', 'cmax', $cmax);
}
}
- if(x($_GET,'search') || $file || (!$pf && $cid) || $hashtags || $verb || $category || $conv || $unseen)
+ if(x($_GET, 'search') || $file || (!$pf && $cid) || $hashtags || $verb || $category || $conv || $unseen)
$nouveau = true;
$cid_r = [];
@@ -164,8 +164,8 @@ class Network extends \Zotlabs\Web\Controller {
// search terms header
if($search || $hashtags) {
- $o .= replace_macros(get_markup_template("section_title.tpl"),array(
- '$title' => t('Search Results For:') . ' ' . (($search) ? htmlspecialchars($search, ENT_COMPAT,'UTF-8') : '#' . htmlspecialchars($hashtags, ENT_COMPAT,'UTF-8'))
+ $o .= replace_macros(get_markup_template('section_title.tpl'), array(
+ '$title' => t('Search Results For:') . ' ' . (($search) ? htmlspecialchars($search, ENT_COMPAT, 'UTF-8') : '#' . htmlspecialchars($hashtags, ENT_COMPAT,'UTF-8'))
));
}
@@ -193,7 +193,7 @@ class Network extends \Zotlabs\Web\Controller {
$x = array(
'is_owner' => true,
- 'allow_location' => ((intval(get_pconfig($channel['channel_id'],'system','use_browser_location'))) ? '1' : ''),
+ 'allow_location' => ((intval(get_pconfig($channel['channel_id'], 'system', 'use_browser_location'))) ? '1' : ''),
'default_location' => $channel['channel_location'],
'nickname' => $channel['channel_address'],
'lockstate' => (($private_editing || $channel['channel_allow_cid'] || $channel['channel_allow_gid'] || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
@@ -209,7 +209,7 @@ class Network extends \Zotlabs\Web\Controller {
'reset' => t('Reset form')
);
- $status_editor = status_editor($a,$x,false,'Network');
+ $status_editor = status_editor($a, $x, false, 'Network');
$o .= $status_editor;
}
@@ -221,7 +221,7 @@ class Network extends \Zotlabs\Web\Controller {
$sql_options = (($star)
- ? " and item_starred = 1 "
+ ? ' and item_starred = 1 '
: '');
$sql_nets = '';
@@ -235,7 +235,7 @@ class Network extends \Zotlabs\Web\Controller {
$contact_str = '';
$contacts = group_get_members($group);
if($contacts) {
- $contact_str = ids_to_querystr($contacts,'xchan',true);
+ $contact_str = ids_to_querystr($contacts, 'xchan', true);
}
else {
$contact_str = " '0' ";
@@ -249,7 +249,7 @@ class Network extends \Zotlabs\Web\Controller {
$x = group_rec_byhash(local_channel(), $group_hash);
if($x) {
- $title = replace_macros(get_markup_template("section_title.tpl"),array(
+ $title = replace_macros(get_markup_template('section_title.tpl'), array(
'$title' => t('Privacy group: ') . $x['gname']
));
}
@@ -292,7 +292,7 @@ class Network extends \Zotlabs\Web\Controller {
$p1 = q("SELECT DISTINCT parent FROM item WHERE uid = " . intval(local_channel()) . " AND ( author_xchan = '" . dbesc($cid_r[0]['abook_xchan']) . "' OR owner_xchan = '" . dbesc($cid_r[0]['abook_xchan']) . "' ) $item_normal ");
$p2 = q("SELECT oid AS parent FROM term WHERE uid = " . intval(local_channel()) . " AND ttype = $ttype AND term = '" . dbesc($cid_r[0]['xchan_name']) . "'");
- $p_str = ids_to_querystr(array_merge($p1,$p2),'parent');
+ $p_str = ids_to_querystr(array_merge($p1, $p2), 'parent');
if(! $p_str)
killme();
@@ -300,7 +300,7 @@ class Network extends \Zotlabs\Web\Controller {
}
}
- $title = replace_macros(get_markup_template("section_title.tpl"),array(
+ $title = replace_macros(get_markup_template('section_title.tpl'), array(
'$title' => '<a href="' . zid($cid_r[0]['xchan_url']) . '" ><img src="' . zid($cid_r[0]['xchan_photo_s']) . '" alt="' . urlencode($cid_r[0]['xchan_name']) . '" /></a> <a href="' . zid($cid_r[0]['xchan_url']) . '" >' . $cid_r[0]['xchan_name'] . '</a>'
));
@@ -314,7 +314,7 @@ class Network extends \Zotlabs\Web\Controller {
if($r) {
$item_thread_top = '';
$sql_extra = " AND item.parent IN ( SELECT DISTINCT parent FROM item WHERE true $sql_options AND uid = " . intval(local_channel()) . " AND ( author_xchan = '" . dbesc($xchan) . "' or owner_xchan = '" . dbesc($xchan) . "' ) $item_normal ) ";
- $title = replace_macros(get_markup_template("section_title.tpl"),array(
+ $title = replace_macros(get_markup_template("section_title.tpl"), array(
'$title' => '<a href="' . zid($r[0]['xchan_url']) . '" ><img src="' . zid($r[0]['xchan_photo_s']) . '" alt="' . urlencode($r[0]['xchan_name']) . '" /></a> <a href="' . zid($r[0]['xchan_url']) . '" >' . $r[0]['xchan_name'] . '</a>'
));
@@ -345,13 +345,13 @@ class Network extends \Zotlabs\Web\Controller {
$sql_extra3 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2))));
}
- $sql_extra2 = (($nouveau) ? '' : " AND item.parent = item.id ");
+ $sql_extra2 = (($nouveau) ? '' : ' AND item.parent = item.id ');
$sql_extra3 = (($nouveau) ? '' : $sql_extra3);
- if(x($_GET,'search')) {
+ if(x($_GET, 'search')) {
$search = escape_tags($_GET['search']);
- if(strpos($search,'#') === 0) {
- $sql_extra .= term_query('item',substr($search,1),TERM_HASHTAG,TERM_COMMUNITYTAG);
+ if(strpos($search, '#') === 0) {
+ $sql_extra .= term_query('item', substr($search, 1), TERM_HASHTAG, TERM_COMMUNITYTAG);
}
else {
$sql_extra .= sprintf(" AND (item.body like '%s' OR item.title like '%s') ",
@@ -368,8 +368,8 @@ class Network extends \Zotlabs\Web\Controller {
// The name 'verb' is a holdover from the earlier XML
// ActivityStreams specification.
- if (substr($verb,0,1) === '.') {
- $verb = substr($verb,1);
+ if (substr($verb, 0, 1) === '.') {
+ $verb = substr($verb, 1);
$sql_extra .= sprintf(" AND item.obj_type like '%s' ",
dbesc(protect_sprintf('%' . $verb . '%'))
);
@@ -382,14 +382,14 @@ class Network extends \Zotlabs\Web\Controller {
}
if(strlen($file)) {
- $sql_extra .= term_query('item',$file,TERM_FILE);
+ $sql_extra .= term_query('item', $file, TERM_FILE);
}
if ($dm) {
- $sql_extra .= " AND item_private = 2 ";
+ $sql_extra .= ' AND item_private = 2 ';
}
else {
- $sql_extra .= " AND item_private IN (0, 1) ";
+ $sql_extra .= ' AND item_private IN (0, 1) ';
}
@@ -405,38 +405,38 @@ class Network extends \Zotlabs\Web\Controller {
}
else {
- $itemspage = get_pconfig(local_channel(),'system','itemspage');
+ $itemspage = get_pconfig(local_channel(), 'system', 'itemspage');
App::set_pager_itemspage(((intval($itemspage)) ? $itemspage : 10));
$pager_sql = sprintf(" LIMIT %d OFFSET %d ", intval(App::$pager['itemspage']), intval(App::$pager['start']));
}
// cmin and cmax are both -1 when the affinity tool is disabled
- if(($cmin != (-1)) || ($cmax != (-1))) {
+ if(($cmin !== (-1)) || ($cmax !== (-1))) {
// Not everybody who shows up in the network stream will be in your address book.
// By default those that aren't are assumed to have closeness = 99; but this isn't
// recorded anywhere. So if cmax is 99, we'll open the search up to anybody in
// the stream with a NULL address book entry.
- $sql_nets .= " AND ";
+ $sql_nets .= ' AND ';
- if($cmax == 99)
- $sql_nets .= " ( ";
+ if($cmax === 99)
+ $sql_nets .= ' ( ';
- $sql_nets .= "( abook.abook_closeness >= " . intval($cmin) . " ";
- $sql_nets .= " AND abook.abook_closeness <= " . intval($cmax) . " ) ";
+ $sql_nets .= '( abook.abook_closeness >= ' . intval($cmin) . ' ';
+ $sql_nets .= ' AND abook.abook_closeness <= ' . intval($cmax) . ' ) ';
- if($cmax == 99)
- $sql_nets .= " OR abook.abook_closeness IS NULL ) ";
+ if($cmax === 99)
+ $sql_nets .= ' OR abook.abook_closeness IS NULL ) ';
}
- $net_query = (($net) ? " left join xchan on xchan_hash = author_xchan " : '');
+ $net_query = (($net) ? ' left join xchan on xchan_hash = author_xchan ' : '');
$net_query2 = (($net) ? " and xchan_network = '" . protect_sprintf(dbesc($net)) . "' " : '');
- $abook_uids = " and abook.abook_channel = " . local_channel() . " ";
- $uids = " and item.uid = " . local_channel() . " ";
+ $abook_uids = ' and abook.abook_channel = ' . local_channel() . ' ';
+ $uids = ' and item.uid = ' . local_channel() . ' ';
if(feature_enabled(local_channel(), 'network_list_mode'))
$page_mode = 'list';
@@ -475,22 +475,22 @@ class Network extends \Zotlabs\Web\Controller {
ORDER BY item.created DESC $pager_sql "
);
- $parents_str = ids_to_querystr($items,'item_id');
+ $parents_str = ids_to_querystr($items, 'item_id');
require_once('include/items.php');
xchan_query($items);
- $items = fetch_post_tags($items,true);
+ $items = fetch_post_tags($items, true);
}
elseif($update) {
// Normal conversation view
if($order === 'post')
- $ordering = "created";
+ $ordering = 'created';
else
- $ordering = "commented";
+ $ordering = 'commented';
if($load) {
// Fetch a page full of parent items for this page
@@ -521,7 +521,7 @@ class Network extends \Zotlabs\Web\Controller {
if($r) {
- $parents_str = ids_to_querystr($r,'item_id');
+ $parents_str = ids_to_querystr($r, 'item_id');
$items = q("SELECT item.*, item.id AS item_id FROM item
WHERE true $uids $item_normal
@@ -530,9 +530,9 @@ class Network extends \Zotlabs\Web\Controller {
dbesc($parents_str)
);
- xchan_query($items,true);
- $items = fetch_post_tags($items,true);
- $items = conv_sort($items,$ordering);
+ xchan_query($items, true);
+ $items = fetch_post_tags($items, true);
+ $items = conv_sort($items, $ordering);
}
else {
$items = array();
@@ -550,7 +550,7 @@ class Network extends \Zotlabs\Web\Controller {
// We only launch liveUpdate if you aren't filtering in some incompatible
// way and also you aren't writing a comment (discovered in javascript).
- $maxheight = get_pconfig(local_channel(),'system','network_divmore_height');
+ $maxheight = get_pconfig(local_channel(), 'system', 'network_divmore_height');
if(! $maxheight)
$maxheight = 400;
@@ -595,7 +595,7 @@ class Network extends \Zotlabs\Web\Controller {
));
}
- $o .= conversation($items,$mode,$update,$page_mode);
+ $o .= conversation($items, $mode, $update, $page_mode);
if(($items) && (! $update))
$o .= alt_pager(count($items));
diff --git a/Zotlabs/Module/Oep.php b/Zotlabs/Module/Oep.php
index faad2fc52..346bef519 100644
--- a/Zotlabs/Module/Oep.php
+++ b/Zotlabs/Module/Oep.php
@@ -122,12 +122,12 @@ class Oep extends \Zotlabs\Web\Controller {
$o = "[share author='".urlencode($p[0]['author']['xchan_name']).
- "' profile='".$p[0]['author']['xchan_url'] .
- "' avatar='".$p[0]['author']['xchan_photo_s'].
- "' link='".$p[0]['plink'].
- "' auth='".((in_array($p[0]['author']['xchan_network'], ['zot6','zot'])) ? 'true' : 'false') .
- "' posted='".$p[0]['created'].
- "' message_id='".$p[0]['mid']."']";
+ "' profile='".$p[0]['author']['xchan_url'] .
+ "' avatar='".$p[0]['author']['xchan_photo_s'].
+ "' link='".$p[0]['plink'].
+ "' auth='".(($p[0]['author']['xchan_network'] === 'zot6') ? 'true' : 'false') .
+ "' posted='".$p[0]['created'].
+ "' message_id='".$p[0]['mid']."']";
if($p[0]['title'])
$o .= '[b]'.$p[0]['title'].'[/b]'."\r\n";
@@ -210,13 +210,13 @@ class Oep extends \Zotlabs\Web\Controller {
$o = "[share author='".urlencode($p[0]['author']['xchan_name']).
- "' profile='".$p[0]['author']['xchan_url'] .
- "' avatar='".$p[0]['author']['xchan_photo_s'].
- "' link='".$p[0]['plink'].
- "' auth='".((in_array($p[0]['author']['xchan_network'], ['zot6','zot'])) ? 'true' : 'false') .
- "' posted='".$p[0]['created'].
- "' message_id='".$p[0]['mid']."']";
- if($p[0]['title'])
+ "' profile='".$p[0]['author']['xchan_url'] .
+ "' avatar='".$p[0]['author']['xchan_photo_s'].
+ "' link='".$p[0]['plink'].
+ "' auth='".(($p[0]['author']['xchan_network'] === 'zot6') ? 'true' : 'false') .
+ "' posted='".$p[0]['created'].
+ "' message_id='".$p[0]['mid']."']";
+ if($p[0]['title'])
$o .= '[b]'.$p[0]['title'].'[/b]'."\r\n";
$o .= $x;
@@ -296,14 +296,14 @@ class Oep extends \Zotlabs\Web\Controller {
$o = "[share author='".urlencode($p[0]['author']['xchan_name']).
- "' profile='".$p[0]['author']['xchan_url'] .
- "' avatar='".$p[0]['author']['xchan_photo_s'].
- "' link='".$p[0]['plink'].
- "' auth='".((in_array($p[0]['author']['xchan_network'], ['zot6','zot'])) ? 'true' : 'false') .
- "' posted='".$p[0]['created'].
- "' message_id='".$p[0]['mid']."']";
- if($p[0]['title'])
- $o .= '[b]'.$p[0]['title'].'[/b]'."\r\n";
+ "' profile='".$p[0]['author']['xchan_url'] .
+ "' avatar='".$p[0]['author']['xchan_photo_s'].
+ "' link='".$p[0]['plink'].
+ "' auth='".(($p[0]['author']['xchan_network'] === 'zot6') ? 'true' : 'false') .
+ "' posted='".$p[0]['created'].
+ "' message_id='".$p[0]['mid']."']";
+ if($p[0]['title'])
+ $o .= '[b]'.$p[0]['title'].'[/b]'."\r\n";
$o .= $x;
$o .= "[/share]";
@@ -374,7 +374,7 @@ class Oep extends \Zotlabs\Web\Controller {
"' profile='".$p[0]['author']['xchan_url'] .
"' avatar='".$p[0]['author']['xchan_photo_s'].
"' link='".$p[0]['plink'].
- "' auth='".((in_array($p[0]['author']['xchan_network'], ['zot6','zot'])) ? 'true' : 'false') .
+ "' auth='".(($p[0]['author']['xchan_network'] === 'zot6') ? 'true' : 'false') .
"' posted='".$p[0]['created'].
"' message_id='".$p[0]['mid']."']";
if($p[0]['title'])
diff --git a/Zotlabs/Module/Search.php b/Zotlabs/Module/Search.php
index 2ad79e3f6..274b02321 100644
--- a/Zotlabs/Module/Search.php
+++ b/Zotlabs/Module/Search.php
@@ -25,10 +25,11 @@ class Search extends Controller {
nav_set_selected('Search');
- require_once("include/bbcode.php");
- require_once('include/security.php');
+ require_once('include/bbcode.php');
require_once('include/conversation.php');
require_once('include/items.php');
+ require_once('include/security.php');
+
$format = (($_REQUEST['format']) ? $_REQUEST['format'] : '');
if ($format !== '') {
@@ -38,11 +39,9 @@ class Search extends Controller {
$observer = App::get_observer();
$observer_hash = (($observer) ? $observer['xchan_hash'] : '');
- $o = '<div id="live-search"></div>' . "\r\n";
-
- $o .= '<div class="generic-content-wrapper-styled">' . "\r\n";
+ $o = '<div class="generic-content-wrapper-styled">' . "\r\n";
- $o .= '<h3>' . t('Search') . '</h3>';
+ $o .= '<h2>' . t('Search') . '</h2>';
if (x(App::$data, 'search'))
$search = trim(App::$data['search']);
@@ -87,21 +86,21 @@ class Search extends Controller {
$tag = true;
$search = substr($search, 1);
}
- if (strpos($search, '@') === 0) {
+ elseif(strpos($search, '@') === 0) {
$search = substr($search, 1);
goaway(z_root() . '/directory' . '?f=1&navsearch=1&search=' . $search);
}
- if (strpos($search, '!') === 0) {
+ elseif(strpos($search, '!') === 0) {
$search = substr($search, 1);
goaway(z_root() . '/directory' . '?f=1&navsearch=1&search=' . $search);
}
- if (strpos($search, '?') === 0) {
+ elseif(strpos($search, '?') === 0) {
$search = substr($search, 1);
goaway(z_root() . '/help' . '?f=1&navsearch=1&search=' . $search);
}
// look for a naked webbie
- if (strpos($search,'@') !== false && strpos($search,'http') !== 0) {
+ if (strpos($search, '@') !== false && strpos($search, 'http') !== 0) {
goaway(z_root() . '/directory' . '?f=1&navsearch=1&search=' . $search);
}
@@ -234,7 +233,7 @@ class Search extends Controller {
$items = [];
}
- if ($format == 'json') {
+ if ($format === 'json') {
$result = [];
require_once('include/conversation.php');
foreach ($items as $item) {
diff --git a/Zotlabs/Module/Settings/Channel.php b/Zotlabs/Module/Settings/Channel.php
index 2eed1efc9..5732d2628 100644
--- a/Zotlabs/Module/Settings/Channel.php
+++ b/Zotlabs/Module/Settings/Channel.php
@@ -16,11 +16,11 @@ class Channel {
$channel = \App::get_channel();
check_form_security_token_redirectOnErr('/settings', 'settings');
-
+
call_hooks('settings_post', $_POST);
-
+
$set_perms = '';
-
+
$role = ((x($_POST,'permissions_role')) ? notags(trim($_POST['permissions_role'])) : '');
$oldrole = get_pconfig(local_channel(),'system','permissions_role');
@@ -28,9 +28,9 @@ class Channel {
if($oldrole === 'social_party') {
$oldrole = 'social_federation';
}
-
+
if(($role != $oldrole) || ($role === 'custom')) {
-
+
if($role === 'custom') {
$hide_presence = (((x($_POST,'hide_presence')) && (intval($_POST['hide_presence']) == 1)) ? 1: 0);
$publish = (((x($_POST,'profile_in_directory')) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0);
@@ -38,18 +38,18 @@ class Channel {
$r = q("update channel set channel_default_group = '%s' where channel_id = %d",
dbesc($def_group),
intval(local_channel())
- );
-
+ );
+
$global_perms = \Zotlabs\Access\Permissions::Perms();
-
+
foreach($global_perms as $k => $v) {
\Zotlabs\Access\PermissionLimits::Set(local_channel(),$k,intval($_POST[$k]));
}
$acl = new \Zotlabs\Access\AccessList($channel);
$acl->set_from_array($_POST);
$x = $acl->get();
-
- $r = q("update channel set channel_allow_cid = '%s', channel_allow_gid = '%s',
+
+ $r = q("update channel set channel_allow_cid = '%s', channel_allow_gid = '%s',
channel_deny_cid = '%s', channel_deny_gid = '%s' where channel_id = %d",
dbesc($x['allow_cid']),
dbesc($x['allow_gid']),
@@ -93,13 +93,13 @@ class Channel {
}
// no default collection
else {
- q("update channel set channel_default_group = '', channel_allow_gid = '', channel_allow_cid = '', channel_deny_gid = '',
+ q("update channel set channel_default_group = '', channel_allow_gid = '', channel_allow_cid = '', channel_deny_gid = '',
channel_deny_cid = '' where channel_id = %d",
intval(local_channel())
);
}
- if($role_permissions['perms_connect']) {
+ if($role_permissions['perms_connect']) {
$x = \Zotlabs\Access\Permissions::FilledPerms($role_permissions['perms_connect']);
foreach($x as $k => $v) {
set_abconfig(local_channel(),$channel['channel_hash'],'my_perms',$k, $v);
@@ -110,7 +110,7 @@ class Channel {
del_pconfig(local_channel(),'autoperms',$k);
}
}
- }
+ }
if($role_permissions['limits']) {
foreach($role_permissions['limits'] as $k => $v) {
@@ -121,11 +121,11 @@ class Channel {
$publish = intval($role_permissions['directory_publish']);
}
}
-
+
set_pconfig(local_channel(),'system','hide_online_status',$hide_presence);
set_pconfig(local_channel(),'system','permissions_role',$role);
}
-
+
$username = ((x($_POST,'username')) ? notags(trim($_POST['username'])) : '');
$timezone = ((x($_POST,'timezone_select')) ? notags(trim($_POST['timezone_select'])) : '');
$defloc = ((x($_POST,'defloc')) ? notags(trim($_POST['defloc'])) : '');
@@ -135,36 +135,36 @@ class Channel {
$evdays = ((x($_POST,'evdays')) ? intval($_POST['evdays']) : 3);
$photo_path = ((x($_POST,'photo_path')) ? escape_tags(trim($_POST['photo_path'])) : '');
$attach_path = ((x($_POST,'attach_path')) ? escape_tags(trim($_POST['attach_path'])) : '');
-
+
$expire_items = ((x($_POST,'expire_items')) ? intval($_POST['expire_items']) : 0);
$expire_starred = ((x($_POST,'expire_starred')) ? intval($_POST['expire_starred']) : 0);
$expire_photos = ((x($_POST,'expire_photos'))? intval($_POST['expire_photos']) : 0);
$expire_network_only = ((x($_POST,'expire_network_only'))? intval($_POST['expire_network_only']) : 0);
-
+
$allow_location = (((x($_POST,'allow_location')) && (intval($_POST['allow_location']) == 1)) ? 1: 0);
-
+
$blocktags = (((x($_POST,'blocktags')) && (intval($_POST['blocktags']) == 1)) ? 0: 1); // this setting is inverted!
$unkmail = (((x($_POST,'unkmail')) && (intval($_POST['unkmail']) == 1)) ? 1: 0);
$cntunkmail = ((x($_POST,'cntunkmail')) ? intval($_POST['cntunkmail']) : 0);
- $suggestme = ((x($_POST,'suggestme')) ? intval($_POST['suggestme']) : 0);
- $autoperms = ((x($_POST,'autoperms')) ? intval($_POST['autoperms']) : 0);
-
+ $suggestme = ((x($_POST,'suggestme')) ? intval($_POST['suggestme']) : 0);
+ $autoperms = ((x($_POST,'autoperms')) ? intval($_POST['autoperms']) : 0);
+
$post_newfriend = (($_POST['post_newfriend'] == 1) ? 1: 0);
$post_joingroup = (($_POST['post_joingroup'] == 1) ? 1: 0);
$post_profilechange = (($_POST['post_profilechange'] == 1) ? 1: 0);
$adult = (($_POST['adult'] == 1) ? 1 : 0);
$defpermcat = ((x($_POST,'defpermcat')) ? notags(trim($_POST['defpermcat'])) : 'default');
-
+
$mailhost = ((array_key_exists('mailhost',$_POST)) ? notags(trim($_POST['mailhost'])) : '');
-
+
$pageflags = $channel['channel_pageflags'];
$existing_adult = (($pageflags & PAGE_ADULT) ? 1 : 0);
if($adult != $existing_adult)
$pageflags = ($pageflags ^ PAGE_ADULT);
-
-
+
+
$notify = 0;
-
+
if(x($_POST,'notify1'))
$notify += intval($_POST['notify1']);
if(x($_POST,'notify2'))
@@ -181,10 +181,10 @@ class Channel {
$notify += intval($_POST['notify7']);
if(x($_POST,'notify8'))
$notify += intval($_POST['notify8']);
-
-
+
+
$vnotify = 0;
-
+
if(x($_POST,'vnotify1'))
$vnotify += intval($_POST['vnotify1']);
if(x($_POST,'vnotify2'))
@@ -215,13 +215,13 @@ class Channel {
$vnotify += intval($_POST['vnotify14']);
if(x($_POST,'vnotify15'))
$vnotify += intval($_POST['vnotify15']);
-
+
$always_show_in_notices = x($_POST,'always_show_in_notices') ? 1 : 0;
-
+
$err = '';
-
+
$name_change = false;
-
+
if($username != $channel['channel_name']) {
$name_change = true;
require_once('include/channel.php');
@@ -231,12 +231,12 @@ class Channel {
return;
}
}
-
+
if($timezone != $channel['channel_timezone']) {
if(strlen($timezone))
date_default_timezone_set($timezone);
}
-
+
set_pconfig(local_channel(),'system','use_browser_location',$allow_location);
set_pconfig(local_channel(),'system','suggestme', $suggestme);
set_pconfig(local_channel(),'system','post_newfriend', $post_newfriend);
@@ -251,7 +251,7 @@ class Channel {
set_pconfig(local_channel(),'system','default_permcat',$defpermcat);
set_pconfig(local_channel(),'system','email_notify_host',$mailhost);
set_pconfig(local_channel(),'system','autoperms',$autoperms);
-
+
$r = q("update channel set channel_name = '%s', channel_pageflags = %d, channel_timezone = '%s', channel_location = '%s', channel_notifyflags = %d, channel_max_anon_mail = %d, channel_max_friend_req = %d, channel_expire_days = %d $set_perms where channel_id = %d",
dbesc($username),
intval($pageflags),
@@ -262,17 +262,17 @@ class Channel {
intval($maxreq),
intval($expire),
intval(local_channel())
- );
+ );
if($r)
info( t('Settings updated.') . EOL);
-
+
if(! is_null($publish)) {
$r = q("UPDATE profile SET publish = %d WHERE is_default = 1 AND uid = %d",
intval($publish),
intval(local_channel())
);
}
-
+
if($name_change) {
// change name on all associated xchans by matching the url
$r = q("update xchan set xchan_name = '%s', xchan_name_date = '%s' where xchan_url = '%s'",
@@ -285,49 +285,49 @@ class Channel {
intval($channel['channel_id'])
);
}
-
+
\Zotlabs\Daemon\Master::Summon(array('Directory',local_channel()));
-
+
Libsync::build_sync_packet();
-
-
+
+
if($email_changed && \App::$config['system']['register_policy'] == REGISTER_VERIFY) {
-
+
// FIXME - set to un-verified, blocked and redirect to logout
// Q: Why? Are we verifying people or email addresses?
// A: the policy is to verify email addresses
}
-
+
goaway(z_root() . '/settings' );
return; // NOTREACHED
}
-
+
function get() {
-
+
require_once('include/acl_selectors.php');
require_once('include/permissions.php');
$yes_no = array(t('No'),t('Yes'));
-
-
+
+
$p = q("SELECT * FROM profile WHERE is_default = 1 AND uid = %d LIMIT 1",
intval(local_channel())
);
if(count($p))
$profile = $p[0];
-
+
load_pconfig(local_channel(),'expire');
-
+
$channel = \App::get_channel();
-
+
$global_perms = \Zotlabs\Access\Permissions::Perms();
$permiss = array();
-
+
$perm_opts = array(
array( t('Nobody except yourself'), 0),
- array( t('Only those you specifically allow'), PERMS_SPECIFIC),
+ array( t('Only those you specifically allow'), PERMS_SPECIFIC),
array( t('Approved connections'), PERMS_CONTACTS),
array( t('Any connections'), PERMS_PENDING),
array( t('Anybody on this website'), PERMS_SITE),
@@ -335,10 +335,10 @@ class Channel {
array( t('Anybody authenticated'), PERMS_AUTHED),
array( t('Anybody on the internet'), PERMS_PUBLIC)
);
-
+
$limits = \Zotlabs\Access\PermissionLimits::Get(local_channel());
$anon_comments = get_config('system','anonymous_comments',true);
-
+
foreach($global_perms as $k => $perm) {
$options = array();
$can_be_public = ((strstr($k,'view') || ($k === 'post_comments' && $anon_comments)) ? true : false);
@@ -347,61 +347,61 @@ class Channel {
continue;
$options[$opt[1]] = $opt[0];
}
- $permiss[] = array($k,$perm,$limits[$k],'',$options);
+ $permiss[] = array($k,$perm,$limits[$k],'',$options);
}
-
+
// logger('permiss: ' . print_r($permiss,true));
-
+
$username = $channel['channel_name'];
$nickname = $channel['channel_address'];
$timezone = $channel['channel_timezone'];
$notify = $channel['channel_notifyflags'];
$defloc = $channel['channel_location'];
-
+
$maxreq = $channel['channel_max_friend_req'];
$expire = $channel['channel_expire_days'];
$adult_flag = intval($channel['channel_pageflags'] & PAGE_ADULT);
$sys_expire = get_config('system','default_expire_days');
-
+
// $unkmail = \App::$user['unkmail'];
// $cntunkmail = \App::$user['cntunkmail'];
-
+
$hide_presence = intval(get_pconfig(local_channel(), 'system','hide_online_status'));
-
-
+
+
$expire_items = get_pconfig(local_channel(), 'expire','items');
$expire_items = (($expire_items===false)? '1' : $expire_items); // default if not set: 1
-
+
$expire_notes = get_pconfig(local_channel(), 'expire','notes');
$expire_notes = (($expire_notes===false)? '1' : $expire_notes); // default if not set: 1
-
+
$expire_starred = get_pconfig(local_channel(), 'expire','starred');
$expire_starred = (($expire_starred===false)? '1' : $expire_starred); // default if not set: 1
-
+
$expire_photos = get_pconfig(local_channel(), 'expire','photos');
$expire_photos = (($expire_photos===false)? '0' : $expire_photos); // default if not set: 0
-
+
$expire_network_only = get_pconfig(local_channel(), 'expire','network_only');
$expire_network_only = (($expire_network_only===false)? '0' : $expire_network_only); // default if not set: 0
-
-
+
+
$suggestme = get_pconfig(local_channel(), 'system','suggestme');
$suggestme = (($suggestme===false)? '0': $suggestme); // default if not set: 0
-
+
$post_newfriend = get_pconfig(local_channel(), 'system','post_newfriend');
$post_newfriend = (($post_newfriend===false)? '0': $post_newfriend); // default if not set: 0
-
+
$post_joingroup = get_pconfig(local_channel(), 'system','post_joingroup');
$post_joingroup = (($post_joingroup===false)? '0': $post_joingroup); // default if not set: 0
-
+
$post_profilechange = get_pconfig(local_channel(), 'system','post_profilechange');
$post_profilechange = (($post_profilechange===false)? '0': $post_profilechange); // default if not set: 0
-
+
$blocktags = get_pconfig(local_channel(),'system','blocktags');
$blocktags = (($blocktags===false) ? '0' : $blocktags);
-
+
$timezone = date_default_timezone_get();
-
+
$opt_tpl = get_markup_template("field_checkbox.tpl");
if(get_config('system','publish_all')) {
$profile_in_dir = '<input type="hidden" name="profile_in_directory" value="1" />';
@@ -411,20 +411,20 @@ class Channel {
'$field' => array('profile_in_directory', t('Publish your default profile in the network directory'), $profile['publish'], '', $yes_no),
));
}
-
+
$suggestme = replace_macros($opt_tpl,array(
'$field' => array('suggestme', t('Allow us to suggest you as a potential friend to new members?'), $suggestme, '', $yes_no),
-
+
));
-
+
$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());
-
+
$tpl_addr = get_markup_template("settings_nick_set.tpl");
-
+
$prof_addr = replace_macros($tpl_addr,array(
'$desc' => t('Your channel address is'),
'$nickname' => (($intl_nickname === $webbie) ? $webbie : $intl_nickname . '&nbsp;(' . $webbie . ')'),
@@ -447,27 +447,27 @@ class Channel {
$default_permcat = get_pconfig(local_channel(),'system','default_permcat','default');
-
+
$stpl = get_markup_template('settings.tpl');
-
+
$acl = new \Zotlabs\Access\AccessList($channel);
$perm_defaults = $acl->get();
-
+
require_once('include/group.php');
$group_select = mini_group_select(local_channel(),$channel['channel_default_group']);
-
+
$evdays = get_pconfig(local_channel(),'system','evdays');
if(! $evdays)
$evdays = 3;
-
+
$permissions_role = get_pconfig(local_channel(),'system','permissions_role');
if(! $permissions_role)
$permissions_role = 'custom';
// compatibility mapping - can be removed after 3.4 release
- if($permissions_role === 'social_party')
+ if($permissions_role === 'social_party')
$permissions_role = 'social_federation';
- if(in_array($permissions_role,['forum','repository']))
+ if(in_array($permissions_role,['forum','repository']))
$autoperms = replace_macros(get_markup_template('field_checkbox.tpl'), [
'$field' => [ 'autoperms',t('Automatic membership approval'), ((get_pconfig(local_channel(),'system','autoperms')) ? 1 : 0), t('If enabled, connection requests will be approved without your interaction'), $yes_no ]]);
else
@@ -491,7 +491,7 @@ class Channel {
$o .= replace_macros($stpl,array(
'$ptitle' => t('Channel Settings'),
-
+
'$submit' => t('Submit'),
'$baseurl' => z_root(),
'$uid' => local_channel(),
@@ -503,15 +503,15 @@ class Channel {
'$timezone' => array('timezone_select' , t('Your Timezone:'), $timezone, '', get_timezones()),
'$defloc' => array('defloc', t('Default Post Location:'), $defloc, t('Geographical location to display on your posts')),
'$allowloc' => array('allow_location', t('Use Browser Location:'), ((get_pconfig(local_channel(),'system','use_browser_location')) ? 1 : ''), '', $yes_no),
-
+
'$adult' => array('adult', t('Adult Content'), $adult_flag, t('This channel frequently or regularly publishes adult content. (Please tag any adult material and/or nudity with #NSFW)'), $yes_no),
-
+
'$h_prv' => t('Security and Privacy Settings'),
'$permissions_set' => $permissions_set,
'$perms_set_msg' => t('Your permissions are already configured. Click to view/adjust'),
-
+
'$hide_presence' => array('hide_presence', t('Hide my online presence'),$hide_presence, t('Prevents displaying in your profile that you are online'), $yes_no),
-
+
'$lbl_pmacro' => t('Simple Privacy Settings:'),
'$pmacro3' => t('Very Public - <em>extremely permissive (should be used with caution)</em>'),
'$pmacro2' => t('Typical - <em>default public, privacy when desired (similar to social network permissions but with improved privacy)</em>'),
@@ -519,9 +519,9 @@ class Channel {
'$pmacro0' => t('Blocked - <em>default blocked to/from everybody</em>'),
'$permiss_arr' => $permiss,
'$blocktags' => array('blocktags',t('Allow others to tag your posts'), 1-$blocktags, t('Often used by the community to retro-actively flag inappropriate content'), $yes_no),
-
+
'$lbl_p2macro' => t('Channel Permission Limits'),
-
+
'$expire' => array('expire',t('Expire other channel content after this many days'),$expire, t('0 or blank to use the website limit.') . ' ' . ((intval($sys_expire)) ? sprintf( t('This website expires after %d days.'),intval($sys_expire)) : t('This website does not expire imported content.')) . ' ' . t('The website limit takes precedence if lower than your limit.')),
'$maxreq' => array('maxreq', t('Maximum Friend Requests/Day:'), intval($channel['channel_max_friend_req']) , t('May reduce spam activity')),
'$permissions' => t('Default Privacy Group'),
@@ -540,10 +540,10 @@ class Channel {
'$profile_in_dir' => $profile_in_dir,
'$hide_friends' => $hide_friends,
'$hide_wall' => $hide_wall,
- '$unkmail' => $unkmail,
+ '$unkmail' => $unkmail,
'$cntunkmail' => array('cntunkmail', t('Maximum private messages per day from unknown people:'), intval($channel['channel_max_anon_mail']) ,t("Useful to reduce spamming")),
-
- '$autoperms' => $autoperms,
+
+ '$autoperms' => $autoperms,
'$h_not' => t('Notification Settings'),
'$activity_options' => t('By default post a status message when:'),
'$post_newfriend' => array('post_newfriend', t('accepting a friend request'), $post_newfriend, '', $yes_no),
@@ -558,12 +558,12 @@ class Channel {
'$notify6' => array('notify6', t('You receive a friend suggestion'), ($notify & NOTIFY_SUGGEST), NOTIFY_SUGGEST, '', $yes_no),
'$notify7' => array('notify7', t('You are tagged in a post'), ($notify & NOTIFY_TAGSELF), NOTIFY_TAGSELF, '', $yes_no),
'$notify8' => array('notify8', t('You are poked/prodded/etc. in a post'), ($notify & NOTIFY_POKE), NOTIFY_POKE, '', $yes_no),
-
+
'$notify9' => array('notify9', t('Someone likes your post/comment'), ($notify & NOTIFY_LIKE), NOTIFY_LIKE, '', $yes_no),
-
-
+
+
'$lbl_vnot' => t('Show visual notifications including:'),
-
+
'$vnotify1' => array('vnotify1', t('Unseen stream activity'), ($vnotify & VNOTIFY_NETWORK), VNOTIFY_NETWORK, '', $yes_no),
'$vnotify2' => array('vnotify2', t('Unseen channel activity'), ($vnotify & VNOTIFY_CHANNEL), VNOTIFY_CHANNEL, '', $yes_no),
'$vnotify3' => array('vnotify3', t('Unseen private messages'), ($vnotify & VNOTIFY_MAIL), VNOTIFY_MAIL, t('Recommended'), $yes_no),
@@ -581,12 +581,13 @@ class Channel {
'$vnotify15' => array('vnotify15', t('Unseen forum posts'), ($vnotify & VNOTIFY_FORUMS), VNOTIFY_FORUMS, '', $yes_no),
'$mailhost' => [ 'mailhost', t('Email notification hub (hostname)'), get_pconfig(local_channel(),'system','email_notify_host',\App::get_hostname()), sprintf( t('If your channel is mirrored to multiple hubs, set this to your preferred location. This will prevent duplicate email notifications. Example: %s'),\App::get_hostname()) ],
'$always_show_in_notices' => array('always_show_in_notices', t('Show new wall posts, private messages and connections under Notices'), $always_show_in_notices, 1, '', $yes_no),
-
- '$evdays' => array('evdays', t('Notify me of events this many days in advance'), $evdays, t('Must be greater than 0')),
+ '$desktop_notifications_info' => t('Desktop notifications are unavailable because the required browser permission has not been granted'),
+ '$desktop_notifications_request' => t('Grant permission'),
+ '$evdays' => array('evdays', t('Notify me of events this many days in advance'), $evdays, t('Must be greater than 0')),
'$basic_addon' => $plugin['basic'],
'$sec_addon' => $plugin['security'],
'$notify_addon' => $plugin['notify'],
-
+
'$h_advn' => t('Advanced Account/Page Type Settings'),
'$h_descadvn' => t('Change the behaviour of this account for special situations'),
'$pagetype' => $pagetype,
@@ -596,11 +597,11 @@ class Channel {
'$removeme' => t('Remove Channel'),
'$removechannel' => t('Remove this channel.'),
));
-
+
call_hooks('settings_form',$o);
-
+
//$o .= '</form>' . "\r\n";
-
+
return $o;
}
}
diff --git a/Zotlabs/Update/_1246.php b/Zotlabs/Update/_1246.php
new file mode 100644
index 000000000..3023c45dd
--- /dev/null
+++ b/Zotlabs/Update/_1246.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1246 {
+
+ function run() {
+
+ q("START TRANSACTION");
+
+ $r1 = dbq("UPDATE xchan SET xchan_deleted = 2 WHERE xchan_network = 'zot' AND xchan_deleted = 0");
+ $r2 = dbq("UPDATE hubloc SET hubloc_deleted = 2 WHERE hubloc_network = 'zot' AND hubloc_deleted = 0");
+
+ if($r1 && $r2) {
+ q("COMMIT");
+ return UPDATE_SUCCESS;
+ }
+
+ q("ROLLBACK");
+ return UPDATE_FAILED;
+
+ }
+
+}
diff --git a/Zotlabs/Update/_1247.php b/Zotlabs/Update/_1247.php
new file mode 100644
index 000000000..e776a52f4
--- /dev/null
+++ b/Zotlabs/Update/_1247.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace Zotlabs\Update;
+
+class _1247 {
+
+ function run() {
+
+ q("START TRANSACTION");
+
+ $r = dbq("DELETE FROM updates WHERE ud_addr = '' OR ud_hash = '' OR ud_guid = ''");
+
+ if($r) {
+ q("COMMIT");
+ return UPDATE_SUCCESS;
+ }
+
+ q("ROLLBACK");
+ return UPDATE_FAILED;
+
+ }
+
+}
diff --git a/Zotlabs/Widget/Hq_controls.php b/Zotlabs/Widget/Hq_controls.php
index 8b532defe..91335fd76 100644
--- a/Zotlabs/Widget/Hq_controls.php
+++ b/Zotlabs/Widget/Hq_controls.php
@@ -15,9 +15,8 @@ class Hq_controls {
$entries = [
'toggle_editor' => [
'label' => t('Toggle post editor'),
- 'id' => 'jot-toggle',
'href' => '#',
- 'class' => 'btn btn-outline-primary',
+ 'class' => 'btn jot-toggle',
'type' => 'button',
'icon' => 'pencil',
'extra' => 'data-toggle="button"'
@@ -27,9 +26,8 @@ class Hq_controls {
if(Apps::system_app_installed(local_channel(), 'Notes')) {
$entries['toggle_notes'] = [
'label' => t('Toggle personal notes'),
- 'id' => 'notes-toggle',
'href' => '#',
- 'class' => 'btn btn-outline-primary',
+ 'class' => 'btn notes-toggle',
'type' => 'button',
'icon' => 'sticky-note-o',
'extra' => 'data-toggle="button"'
@@ -39,7 +37,8 @@ class Hq_controls {
return replace_macros(get_markup_template('hq_controls.tpl'),
[
'$entries' => $entries,
- '$wrapper_class' => $options['class']
+ '$wrapper_class' => $options['wrapper_class'],
+ '$entry_class' => $options['entry_class']
]
);
}
diff --git a/Zotlabs/Widget/Messages.php b/Zotlabs/Widget/Messages.php
index a03238c9a..269d669dc 100644
--- a/Zotlabs/Widget/Messages.php
+++ b/Zotlabs/Widget/Messages.php
@@ -11,14 +11,10 @@ class Messages {
if (!local_channel())
return EMPTY_STR;
- $o = '';
$page = self::get_messages_page($options);
- if (!$page['entries'])
- return $o;
-
$tpl = get_markup_template('messages_widget.tpl');
- $o .= replace_macros($tpl, [
+ $o = replace_macros($tpl, [
'$entries' => $page['entries'],
'$offset' => $page['offset'],
'$feature_star' => feature_enabled(local_channel(), 'star_posts'),
@@ -26,7 +22,8 @@ class Messages {
'messages_title' => t('Public and restricted messages'),
'direct_messages_title' => t('Direct messages'),
'starred_messages_title' => t('Starred messages'),
- 'loading' => t('Loading')
+ 'loading' => t('Loading'),
+ 'empty' => t('No messages')
]
]);
@@ -45,6 +42,7 @@ class Messages {
$item_normal = item_normal();
$entries = [];
$limit = 30;
+ $dummy_order_sql = '';
$offset = 0;
if ($options['offset']) {
@@ -56,6 +54,9 @@ class Messages {
switch($options['type']) {
case 'direct':
$type_sql = ' AND item_private = 2 ';
+ // $dummy_order_sql has no other meaning but to trick
+ // some mysql backends into using the right index.
+ $dummy_order_sql = ', received DESC ';
break;
case 'starred':
$type_sql = ' AND item_starred = 1 ';
@@ -69,7 +70,7 @@ class Messages {
$type_sql
AND item_thread_top = 1
$item_normal
- ORDER BY created DESC
+ ORDER BY created DESC $dummy_order_sql
LIMIT $limit OFFSET $offset",
intval(local_channel()),
dbescdate($loadtime)
@@ -95,7 +96,7 @@ class Messages {
$summary = $item['summary'];
}
if (!$summary) {
- $summary = htmlentities(html2plain(bbcode($item['body']), 75, true), ENT_QUOTES, 'UTF-8', false);
+ $summary = htmlentities(html2plain(bbcode($item['body'], ['drop_media' => true]), 75, true), ENT_QUOTES, 'UTF-8', false);
}
if (!$summary) {
$summary = '...';