streams/Code/Module/Locs.php

146 lines
4.5 KiB
PHP
Raw Normal View History

2016-04-19 03:38:38 +00:00
<?php
2021-12-03 03:01:39 +00:00
2022-02-16 04:08:28 +00:00
namespace Code\Module;
2016-04-19 03:38:38 +00:00
2019-02-28 23:14:22 +00:00
use App;
2022-02-16 04:08:28 +00:00
use Code\Web\Controller;
use Code\Daemon\Run;
use Code\Render\Theme;
2022-02-12 20:43:29 +00:00
2016-04-19 03:38:38 +00:00
2021-12-02 23:02:31 +00:00
class Locs extends Controller
{
public function post()
{
2021-12-03 03:01:39 +00:00
if (!local_channel()) {
2021-12-02 23:02:31 +00:00
return;
2021-12-03 03:01:39 +00:00
}
2021-12-02 23:02:31 +00:00
$channel = App::get_channel();
if ($_REQUEST['primary']) {
$hubloc_id = intval($_REQUEST['primary']);
if ($hubloc_id) {
2021-12-03 03:01:39 +00:00
$r = q(
2022-06-17 02:46:54 +00:00
"select hubloc_id from hubloc where hubloc_id = %d and hubloc_hash = '%s' and hubloc_deleted = 0 limit 1",
2021-12-02 23:02:31 +00:00
intval($hubloc_id),
dbesc($channel['channel_hash'])
);
if (!$r) {
notice(t('Location not found.') . EOL);
return;
}
2021-12-03 03:01:39 +00:00
$r = q(
"update hubloc set hubloc_primary = 0 where hubloc_primary = 1 and hubloc_hash = '%s' ",
2021-12-02 23:02:31 +00:00
dbesc($channel['channel_hash'])
);
2021-12-03 03:01:39 +00:00
$r = q(
"update hubloc set hubloc_primary = 1 where hubloc_id = %d and hubloc_hash = '%s'",
2021-12-02 23:02:31 +00:00
intval($hubloc_id),
dbesc($channel['channel_hash'])
);
2021-12-03 03:01:39 +00:00
$x = q(
2022-06-17 02:46:54 +00:00
"select * from hubloc where hubloc_id = %d and hubloc_hash = '%s' and hubloc_deleted = 0 ",
2021-12-02 23:02:31 +00:00
intval($hubloc_id),
dbesc($channel['channel_hash'])
);
if ($x) {
hubloc_change_primary($x[0]);
}
Run::Summon(['Notifier', 'refresh_all', $channel['channel_id']]);
return;
}
}
if ($_REQUEST['drop']) {
$hubloc_id = intval($_REQUEST['drop']);
if ($hubloc_id) {
2021-12-03 03:01:39 +00:00
$r = q(
2022-06-17 02:46:54 +00:00
"select * from hubloc where hubloc_id = %d and hubloc_url != '%s' and hubloc_hash = '%s' and hubloc_deleted = 0 limit 1",
2021-12-02 23:02:31 +00:00
intval($hubloc_id),
dbesc(z_root()),
dbesc($channel['channel_hash'])
);
if (!$r) {
notice(t('Location not found.') . EOL);
return;
}
if (intval($r[0]['hubloc_primary'])) {
2021-12-03 03:01:39 +00:00
$x = q(
2022-06-17 02:46:54 +00:00
"select hubloc_id from hubloc where hubloc_primary = 1 and hubloc_hash = '%s' and hubloc_deleted = 0 ",
2021-12-02 23:02:31 +00:00
dbesc($channel['channel_hash'])
);
if (!$x) {
notice(t('Location lookup failed.'));
return;
}
if (count($x) == 1) {
notice(t('Please select another location to become primary before removing the primary location.') . EOL);
return;
}
}
hubloc_delete($r[0]);
2021-12-02 23:02:31 +00:00
Run::Summon(['Notifier', 'refresh_all', $channel['channel_id']]);
return;
}
}
}
public function get()
{
if (!local_channel()) {
notice(t('Permission denied.') . EOL);
2022-09-04 01:35:50 +00:00
return '';
2021-12-02 23:02:31 +00:00
}
$channel = App::get_channel();
if ($_REQUEST['sync']) {
Run::Summon(['Notifier', 'refresh_all', $channel['channel_id']]);
info(t('Pushing location info') . EOL);
goaway(z_root() . '/locs');
}
2021-12-03 03:01:39 +00:00
$r = q(
2022-06-17 02:46:54 +00:00
"select * from hubloc where hubloc_hash = '%s' and hubloc_deleted = 0",
2021-12-02 23:02:31 +00:00
dbesc($channel['channel_hash'])
);
if (!$r) {
notice(t('No locations found.') . EOL);
2022-09-04 01:35:50 +00:00
return '';
2021-12-02 23:02:31 +00:00
}
2022-02-12 20:43:29 +00:00
$o = replace_macros(Theme::get_template('locmanage.tpl'), [
2021-12-02 23:02:31 +00:00
'$header' => t('Manage Channel Locations'),
'$loc' => t('Location'),
'$addr' => t('Address'),
'$mkprm' => t('Primary'),
'$drop' => t('Drop'),
'$submit' => t('Submit'),
'$sync' => t('Publish these settings'),
2022-05-14 07:16:32 +00:00
'$sync_text' => t('Please wait a minute or two between consecutive operations.'),
'$drop_text' => t('When possible, drop a location by logging into that site and removing your channel.'),
'$last_resort' => t('Use this form to drop the location if the site is no longer operating.'),
2021-12-02 23:02:31 +00:00
'$hubs' => $r,
'$base_url' => z_root()
]);
return $o;
}
2016-04-19 03:38:38 +00:00
}