From ae705dd86514ad797a312b4463186e6f29f55f79 Mon Sep 17 00:00:00 2001 From: Mario Date: Sat, 16 Jul 2022 14:49:56 +0000 Subject: HQ dashboard - missing files --- Zotlabs/Widget/Channel_activities.php | 246 ++++++++++++++++++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 Zotlabs/Widget/Channel_activities.php (limited to 'Zotlabs/Widget') diff --git a/Zotlabs/Widget/Channel_activities.php b/Zotlabs/Widget/Channel_activities.php new file mode 100644 index 000000000..a95a3f083 --- /dev/null +++ b/Zotlabs/Widget/Channel_activities.php @@ -0,0 +1,246 @@ +'; + $o .= '

Welcome ' . self::$channel['channel_name'] . '!

'; + //$o .= 'Last login date: ' . get_pconfig(self::$uid, 'system', 'stored_login_date') . ' from ' . get_pconfig(self::$uid, 'system', 'stored_login_addr'); + + self::get_photos_activity(); + self::get_files_activity(); + self::get_webpages_activity(); + self::get_channels_activity(); + + $hookdata = [ + 'channel' => self::$channel, + 'activities' => self::$activities, + 'limit' => self::$limit + ]; + + call_hooks('channel_activities_widget', $hookdata); + + if (!$hookdata['activities']) { + $o .= '

No recent activity to display

'; + return $o; + } + + $keys = array_column($hookdata['activities'], 'date'); + + array_multisort($keys, SORT_DESC, $hookdata['activities']); + + // hz_syslog('activities: ' . print_r($hookdata['activities'], true)); + + foreach($hookdata['activities'] as $a) { + $o .= replace_macros(get_markup_template($a['tpl']), [ + '$url' => $a['url'], + '$icon' => $a['icon'], + '$label' => $a['label'], + '$items' => $a['items'] + ]); + } + + $o .= ''; + + return $o; + } + + private static function get_photos_activity() { + + $r = q("SELECT edited, height, width, imgscale, description, filename, resource_id FROM photo WHERE uid = %d + AND photo_usage = 0 AND is_nsfw = 0 AND imgscale = 3 + ORDER BY edited DESC LIMIT 6", + intval(self::$uid) + ); + + if (!$r) { + return; + } + + foreach($r as $rr) { + $i[] = [ + 'url' => z_root() . '/photos/' . self::$channel['channel_address'] . '/image/' . $rr['resource_id'], + 'edited' => datetime_convert('UTC', date_default_timezone_get(), $rr['edited']), + 'width' => $rr['width'], + 'height' => $rr['height'], + 'alt' => (($rr['description']) ? $rr['description'] : $rr['filename']), + 'src' => z_root() . '/photo/' . $rr['resource_id'] . '-' . $rr['imgscale'] + ]; + } + + self::$activities['photos'] = [ + 'label' => t('Photos'), + 'icon' => 'photo', + 'url' => z_root() . '/photos/' . self::$channel['channel_address'], + 'date' => $r[0]['edited'], + 'items' => $i, + 'tpl' => 'channel_activities_photos.tpl' + ]; + + } + + private static function get_files_activity() { + + $r = q("SELECT * FROM attach WHERE uid = %d + AND is_dir = 0 AND is_photo = 0 + ORDER BY edited DESC LIMIT %d", + intval(self::$uid), + intval(self::$limit) + ); + + if (!$r) { + return; + } + + foreach($r as $rr) { + $i[] = [ + 'url' => z_root() . '/cloud/' . self::$channel['channel_address'] . '/' . rtrim($rr['display_path'], $rr['filename']) . '#' . $rr['id'], + 'summary' => $rr['filename'], + 'footer' => datetime_convert('UTC', date_default_timezone_get(), $rr['edited']) + ]; + } + + self::$activities['files'] = [ + 'label' => t('Files'), + 'icon' => 'folder-open', + 'url' => z_root() . '/cloud/' . self::$channel['channel_address'], + 'date' => $r[0]['edited'], + 'items' => $i, + 'tpl' => 'channel_activities.tpl' + ]; + + } + + private static function get_webpages_activity() { + + $r = q("SELECT * FROM iconfig LEFT JOIN item ON iconfig.iid = item.id WHERE item.uid = %d + AND iconfig.cat = 'system' AND iconfig.k = 'WEBPAGE' AND item_type = %d + ORDER BY item.edited DESC LIMIT %d", + intval(self::$uid), + intval(ITEM_TYPE_WEBPAGE), + intval(self::$limit) + ); + + if (!$r) { + return; + } + + foreach($r as $rr) { + $summary = html2plain(purify_html(bbcode($rr['body'], ['drop_media' => true, 'tryoembed' => false])), 85, true); + if ($summary) { + $summary = substr_words(htmlentities($summary, ENT_QUOTES, 'UTF-8', false), 85); + } + + $i[] = [ + 'url' => z_root() . '/page/' . self::$channel['channel_address'] . '/' . $rr['v'], + 'title' => $rr['title'], + 'summary' => $summary, + 'footer' => datetime_convert('UTC', date_default_timezone_get(), $rr['edited']) + ]; + } + + self::$activities['webpages'] = [ + 'label' => t('Webpages'), + 'icon' => 'newspaper-o', + 'url' => z_root() . '/webpages/' . self::$channel['channel_address'], + 'date' => $r[0]['edited'], + 'items' => $i, + 'tpl' => 'channel_activities.tpl' + ]; + + } + + private static function get_channels_activity() { + + $account = App::get_account(); + + $r = q("SELECT channel_id, channel_name, xchan_photo_s FROM channel + LEFT JOIN xchan ON channel_hash = xchan_hash + WHERE channel_account_id = %d + AND channel_id != %d AND channel_removed = 0", + intval($account['account_id']), + intval(self::$uid) + ); + + if (!$r) { + return; + } + + $channels_activity = 0; + + foreach($r as$rr) { + + $intros = q("SELECT COUNT(abook_id) AS total FROM abook WHERE abook_channel = %d + AND abook_pending = 1 AND abook_self = 0 AND abook_ignored = 0", + intval($rr['channel_id']) + ); + + $notices = q("SELECT COUNT(id) AS total FROM notify WHERE uid = %d AND seen = 0", + intval($rr['channel_id']) + ); + + if (!$intros[0]['total'] && !$notices[0]['total']) { + continue; + } + + $footer = ''; + + if ($intros[0]['total']) { + $footer .= intval($intros[0]['total']) . ' ' . tt('new connection', 'new connections', intval($intros[0]['total']), 'noun'); + if ($notices[0]['total']) { + $footer .= ', '; + } + } + if ($notices[0]['total']) { + $footer .= intval($notices[0]['total']) . ' ' . tt('notice', 'notices', intval($notices[0]['total']), 'noun'); + } + + $i[] = [ + 'url' => z_root() . '/manage/' . $rr['channel_id'], + 'title' => '', + 'summary' => '' . $rr['channel_name'], + 'footer' => $footer + ]; + + $channels_activity++; + + } + + if(!$channels_activity) { + return; + } + + self::$activities['channels'] = [ + 'label' => t('Channels'), + 'icon' => 'home', + 'url' => z_root() . '/manage', + 'date' => datetime_convert(), + 'items' => $i, + 'tpl' => 'channel_activities.tpl' + ]; + + } + +} + -- cgit v1.2.3