streams/Zotlabs/Module/Manage.php

202 lines
6.3 KiB
PHP
Raw Normal View History

2016-04-19 03:38:38 +00:00
<?php
namespace Zotlabs\Module;
2019-05-23 23:37:56 +00:00
use App;
use Zotlabs\Web\Controller;
use Zotlabs\Lib\PConfig;
2016-04-19 03:38:38 +00:00
2019-05-23 23:37:56 +00:00
require_once('include/security.php');
class Manage extends Controller {
2016-04-19 03:38:38 +00:00
function get() {
2019-05-23 23:37:56 +00:00
if ((! get_account_id()) || ($_SESSION['delegate'])) {
2016-04-19 03:38:38 +00:00
notice( t('Permission denied.') . EOL);
return;
}
2019-05-23 23:37:56 +00:00
nav_set_selected('Manage');
2016-04-19 03:38:38 +00:00
$change_channel = ((argc() > 1) ? intval(argv(1)) : 0);
if (argc() > 2) {
if (argv(2) === 'default') {
$r = q("select channel_id from channel where channel_id = %d and channel_account_id = %d limit 1",
2016-04-19 03:38:38 +00:00
intval($change_channel),
intval(get_account_id())
);
if ($r) {
q("update account set account_default_channel = %d where account_id = %d",
intval($change_channel),
intval(get_account_id())
);
}
goaway(z_root() . '/manage');
}
elseif (argv(2) === 'menu') {
$state = intval(PConfig::get($change_channel,'system','include_in_menu', 0));
PConfig::set($change_channel,'system','include_in_menu',1 - $state);
goaway(z_root() . '/manage');
2016-04-19 03:38:38 +00:00
}
2016-04-19 03:38:38 +00:00
}
2016-05-10 05:28:54 +00:00
2016-04-19 03:38:38 +00:00
2019-05-23 23:37:56 +00:00
if ($change_channel) {
2016-05-10 05:28:54 +00:00
2016-04-19 03:38:38 +00:00
$r = change_channel($change_channel);
2016-05-10 05:28:54 +00:00
2019-05-23 23:37:56 +00:00
if ((argc() > 2) && !(argv(2) === 'default')) {
goaway(z_root() . '/' . implode('/',array_slice(App::$argv,2))); // Go to whatever is after /manage/, but with the new channel
2016-04-19 03:38:38 +00:00
}
2019-05-23 23:37:56 +00:00
elseif ($r && $r['channel_startpage']) {
goaway(z_root() . '/' . $r['channel_startpage']); // If nothing extra is specified, go to the default page
2016-04-19 03:38:38 +00:00
}
goaway(z_root());
}
$channels = null;
$r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel.channel_account_id = %d and channel_removed = 0 order by channel_name ",
intval(get_account_id())
);
2016-04-19 03:38:38 +00:00
2019-05-23 23:37:56 +00:00
$account = App::get_account();
2016-04-19 03:38:38 +00:00
2019-05-23 23:37:56 +00:00
if ($r && count($r)) {
2021-09-14 07:58:36 +00:00
$channels = ((is_site_admin()) ? array_merge ([ get_sys_channel() ], $r) : $r);
2019-05-23 23:37:56 +00:00
for ($x = 0; $x < count($channels); $x ++) {
$channels[$x]['link'] = 'manage/' . intval($channels[$x]['channel_id']);
$channels[$x]['include_in_menu'] = intval(PConfig::get($channels[$x]['channel_id'],'system','include_in_menu',0));
$channels[$x]['default'] = (($channels[$x]['channel_id'] == $account['account_default_channel']) ? "1" : '');
$channels[$x]['default_links'] = '1';
2019-04-05 07:54:35 +00:00
$channels[$x]['collections_label'] = t('Collection');
$channels[$x]['forum_label'] = t('Group');
2016-04-19 03:38:38 +00:00
$c = q("SELECT id, item_wall FROM item
WHERE item_unseen = 1 and uid = %d " . item_normal(),
intval($channels[$x]['channel_id'])
);
2016-04-19 03:38:38 +00:00
2019-05-23 23:37:56 +00:00
if ($c) {
foreach ($c as $it) {
2019-05-23 23:37:56 +00:00
if (intval($it['item_wall'])) {
$channels[$x]['home'] ++;
2019-05-23 23:37:56 +00:00
}
else {
$channels[$x]['network'] ++;
2019-05-23 23:37:56 +00:00
}
2016-04-19 03:38:38 +00:00
}
}
2016-04-19 03:38:38 +00:00
$intr = q("SELECT COUNT(abook.abook_id) AS total FROM abook left join xchan on abook.abook_xchan = xchan.xchan_hash where abook_channel = %d and abook_pending = 1 and abook_self = 0 and abook_ignored = 0 and xchan_deleted = 0 and xchan_orphan = 0 ",
intval($channels[$x]['channel_id'])
);
2016-04-19 03:38:38 +00:00
2019-05-23 23:37:56 +00:00
if ($intr) {
$channels[$x]['intros'] = intval($intr[0]['total']);
2019-05-23 23:37:56 +00:00
}
2016-04-19 03:38:38 +00:00
$events = q("SELECT etype, dtstart, adjust FROM event
WHERE event.uid = %d AND dtstart < '%s' AND dtstart > '%s' and dismissed = 0
ORDER BY dtstart ASC ",
intval($channels[$x]['channel_id']),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now + 7 days')),
dbesc(datetime_convert('UTC', date_default_timezone_get(), 'now - 1 days'))
);
2019-05-23 23:37:56 +00:00
if ($events) {
$channels[$x]['all_events'] = count($events);
2019-05-23 23:37:56 +00:00
if ($channels[$x]['all_events']) {
$str_now = datetime_convert('UTC', date_default_timezone_get(), 'now', 'Y-m-d');
2019-05-23 23:37:56 +00:00
foreach ($events as $e) {
$bd = false;
2019-05-23 23:37:56 +00:00
if ($e['etype'] === 'birthday') {
$channels[$x]['birthdays'] ++;
$bd = true;
}
else {
$channels[$x]['events'] ++;
}
2019-05-23 23:37:56 +00:00
if (datetime_convert('UTC', ((intval($e['adjust'])) ? date_default_timezone_get() : 'UTC'), $e['dtstart'], 'Y-m-d') === $str_now) {
$channels[$x]['all_events_today'] ++;
2019-05-23 23:37:56 +00:00
if ($bd) {
$channels[$x]['birthdays_today'] ++;
2019-05-23 23:37:56 +00:00
}
else {
$channels[$x]['events_today'] ++;
2019-05-23 23:37:56 +00:00
}
2016-04-19 03:38:38 +00:00
}
}
}
}
}
}
$r = q("select count(channel_id) as total from channel where channel_account_id = %d and channel_removed = 0",
intval(get_account_id())
);
$limit = account_service_class_fetch(get_account_id(),'total_identities');
2019-05-23 23:37:56 +00:00
if ($limit !== false) {
$channel_usage_message = sprintf( t("You have created %1$.0f of %2$.0f allowed channels."), $r[0]['total'], $limit);
2016-04-19 03:38:38 +00:00
}
else {
$channel_usage_message = '';
}
2016-04-19 03:38:38 +00:00
2019-05-23 23:37:56 +00:00
$create = [ 'new_channel', t('Create a new channel'), t('Create New') ];
2016-04-19 03:38:38 +00:00
$delegates = null;
2019-05-23 23:37:56 +00:00
if (local_channel()) {
$delegates = q("select * from abook left join xchan on abook_xchan = xchan_hash where
2018-05-26 22:12:02 +00:00
abook_channel = %d and abook_xchan in ( select xchan from abconfig where chan = %d and cat = 'system' and k = 'their_perms' and v like '%s' )",
intval(local_channel()),
2018-05-26 22:12:02 +00:00
intval(local_channel()),
dbesc('%delegate%')
);
}
2016-04-19 03:38:38 +00:00
2019-05-23 23:37:56 +00:00
if ($delegates) {
for ($x = 0; $x < count($delegates); $x ++) {
2018-07-19 00:05:38 +00:00
$delegates[$x]['link'] = 'magic?f=&bdest=' . bin2hex($delegates[$x]['xchan_url'])
2016-04-19 03:38:38 +00:00
. '&delegate=' . urlencode($delegates[$x]['xchan_addr']);
$delegates[$x]['channel_name'] = $delegates[$x]['xchan_name'];
$delegates[$x]['delegate'] = 1;
2019-04-05 07:54:35 +00:00
$delegates[$x]['collections_label'] = t('Collection');
$delegates[$x]['forum_label'] = t('Group');
2016-04-19 03:38:38 +00:00
}
}
else {
$delegates = null;
}
2019-05-23 23:37:56 +00:00
return replace_macros(get_markup_template('channels.tpl'), [
2019-04-05 07:54:35 +00:00
'$header' => t('Channels'),
2016-04-19 03:38:38 +00:00
'$msg_selected' => t('Current Channel'),
'$selected' => local_channel(),
'$desc' => t('Switch to one of your channels by selecting it.'),
2019-10-05 08:07:02 +00:00
'$msg_default' => t('Default Login Channel'),
2016-04-19 03:38:38 +00:00
'$msg_make_default' => t('Make Default'),
'$msg_include' => t('Add to menu'),
2019-10-05 08:07:02 +00:00
'$msg_no_include' => t('Add to menu'),
2016-04-19 03:38:38 +00:00
'$create' => $create,
'$all_channels' => $channels,
'$mail_format' => t('%d new messages'),
'$intros_format' => t('%d new introductions'),
'$channel_usage_message' => $channel_usage_message,
'$delegated_desc' => t('Delegated Channel'),
'$delegates' => $delegates
2019-05-23 23:37:56 +00:00
]);
2016-04-19 03:38:38 +00:00
}
}