From 5b3f801a40323f8311f3b72c168008e07805b59a Mon Sep 17 00:00:00 2001 From: ghost Date: Wed, 20 Sep 2023 16:52:05 +0300 Subject: [PATCH] draft import page --- src/public/import.php | 303 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 303 insertions(+) create mode 100644 src/public/import.php diff --git a/src/public/import.php b/src/public/import.php new file mode 100644 index 0000000..a233cd9 --- /dev/null +++ b/src/public/import.php @@ -0,0 +1,303 @@ + + true, + 'message' => _('Internal server error'), +]; + +// Yggdrasil connections only +if (!Valid::host($_SERVER['REMOTE_ADDR'])) +{ + $response->success = false; + $response->message = _('Yggdrasil connection required for this action'); +} + +// Init session +else if (!$userId = $db->initUserId($_SERVER['REMOTE_ADDR'], USER_DEFAULT_APPROVED, time())) +{ + $response->success = false; + $response->message = _('Could not init user session'); +} + +// Init user +else if (!$user = $db->getUser($userId)) +{ + $response->success = false; + $response->message = _('Could not get user session'); +} + +// On first visit, redirect user to the welcome page with access level question +else if (is_null($user->public)) +{ + header( + sprintf('Location: %s/welcome.php', WEBSITE_URL) + ); +} + +// Import form magnet link request +else if (!empty($_POST['magnet'])) +{ + // Validate magnet + if (!$magnet = Yggverse\Parser\Magnet::parse($_POST['magnet'])) + { + $response->success = false; + $response->message = _('Could not parse magnet link'); + } + + // Request valid + else + { + // Begin magnet registration + try + { + $db->beginTransaction(); + + // Init magnet + if ($magnetId = $db->addMagnet( $user->userId, + $magnet->xl, + $magnet->dn, + '', // @TODO deprecated, remove + MAGNET_DEFAULT_PUBLIC, + MAGNET_DEFAULT_COMMENTS, + MAGNET_DEFAULT_SENSITIVE, + $user->approved ? true : MAGNET_DEFAULT_APPROVED, + time())) + { + foreach ($magnet as $key => $value) + { + switch ($key) + { + case 'xt': + foreach ($value as $xt) + { + if (Yggverse\Parser\Magnet::isXTv1($xt)) + { + $db->addMagnetToInfoHash( + $magnetId, + $db->initInfoHashId( + Yggverse\Parser\Magnet::filterInfoHash($xt), 1 + ) + ); + } + if (Yggverse\Parser\Magnet::isXTv2($xt)) + { + $db->addMagnetToInfoHash( + $magnetId, + $db->initInfoHashId( + Yggverse\Parser\Magnet::filterInfoHash($xt), 2 + ) + ); + } + } + break; + case 'tr': + foreach ($value as $tr) + { + if (Valid::url($tr)) + { + if ($url = Yggverse\Parser\Url::parse($tr)) + { + $db->initMagnetToAddressTrackerId( + $magnetId, + $db->initAddressTrackerId( + $db->initSchemeId($url->host->scheme), + $db->initHostId($url->host->name), + $db->initPortId($url->host->port), + $db->initUriId($url->page->uri) + ) + ); + } + } + } + break; + case 'ws': + foreach ($value as $ws) + { + // @TODO + } + break; + case 'as': + foreach ($value as $as) + { + if (Valid::url($as)) + { + if ($url = Yggverse\Parser\Url::parse($as)) + { + $db->initMagnetToAcceptableSourceId( + $magnetId, + $db->initAcceptableSourceId( + $db->initSchemeId($url->host->scheme), + $db->initHostId($url->host->name), + $db->initPortId($url->host->port), + $db->initUriId($url->page->uri) + ) + ); + } + } + } + break; + case 'xs': + foreach ($value as $xs) + { + if (Valid::url($xs)) + { + if ($url = Yggverse\Parser\Url::parse($xs)) + { + $db->initMagnetToExactSourceId( + $magnetId, + $db->initExactSourceId( + $db->initSchemeId($url->host->scheme), + $db->initHostId($url->host->name), + $db->initPortId($url->host->port), + $db->initUriId($url->page->uri) + ) + ); + } + } + } + break; + case 'mt': + foreach ($value as $mt) + { + // @TODO + } + break; + case 'x.pe': + foreach ($value as $xPe) + { + // @TODO + } + break; + case 'kt': + foreach ($value as $kt) + { + $db->initMagnetToKeywordTopicId( + $magnetId, + $db->initKeywordTopicId(trim(mb_strtolower(strip_tags(html_entity_decode($kt))))) + ); + } + break; + } + } + + $db->commit(); + } + } + + catch (Exception $error) + { + $response->success = false; + $response->message = sprintf( + _('Internal server error: %s'), + print_r($error, true) + ); + + $db->rollBack(); + } + } + + // Redirect to edit page on success + if ($response->success) + { + header(sprintf('Location: %s/edit.php?magnetId=%s', trim(WEBSITE_URL, '/'), $magnetId)); + } +} + +// Import form torrent file request +else if (!empty($_FILE['torrent'])) +{ + // @TODO +} + +?> + + + + + + + <?php echo sprintf(_('Add - %s'), WEBSITE_NAME) ?> + + + + + + +
+
+ +
+
+
+
+
+
+
+ success) { ?> +
+

+
+
+
+ + +
+
+ + +
+
+ +
+
+ +
+ message ?> +
+ +
+
+
+
+
+ + + \ No newline at end of file