streams/Code/Module/Locs.php
Mike Macgirvin 3dd89f71d5 cleanup
2022-09-04 11:35:50 +10:00

145 lines
4.5 KiB
PHP

<?php
namespace Code\Module;
use App;
use Code\Web\Controller;
use Code\Daemon\Run;
use Code\Render\Theme;
class Locs extends Controller
{
public function post()
{
if (!local_channel()) {
return;
}
$channel = App::get_channel();
if ($_REQUEST['primary']) {
$hubloc_id = intval($_REQUEST['primary']);
if ($hubloc_id) {
$r = q(
"select hubloc_id from hubloc where hubloc_id = %d and hubloc_hash = '%s' and hubloc_deleted = 0 limit 1",
intval($hubloc_id),
dbesc($channel['channel_hash'])
);
if (!$r) {
notice(t('Location not found.') . EOL);
return;
}
$r = q(
"update hubloc set hubloc_primary = 0 where hubloc_primary = 1 and hubloc_hash = '%s' ",
dbesc($channel['channel_hash'])
);
$r = q(
"update hubloc set hubloc_primary = 1 where hubloc_id = %d and hubloc_hash = '%s'",
intval($hubloc_id),
dbesc($channel['channel_hash'])
);
$x = q(
"select * from hubloc where hubloc_id = %d and hubloc_hash = '%s' and hubloc_deleted = 0 ",
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) {
$r = q(
"select * from hubloc where hubloc_id = %d and hubloc_url != '%s' and hubloc_hash = '%s' and hubloc_deleted = 0 limit 1",
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'])) {
$x = q(
"select hubloc_id from hubloc where hubloc_primary = 1 and hubloc_hash = '%s' and hubloc_deleted = 0 ",
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]);
Run::Summon(['Notifier', 'refresh_all', $channel['channel_id']]);
return;
}
}
}
public function get()
{
if (!local_channel()) {
notice(t('Permission denied.') . EOL);
return '';
}
$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');
}
$r = q(
"select * from hubloc where hubloc_hash = '%s' and hubloc_deleted = 0",
dbesc($channel['channel_hash'])
);
if (!$r) {
notice(t('No locations found.') . EOL);
return '';
}
$o = replace_macros(Theme::get_template('locmanage.tpl'), [
'$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'),
'$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.'),
'$hubs' => $r,
'$base_url' => z_root()
]);
return $o;
}
}