mirror of
https://github.com/YGGverse/YGGtracker.git
synced 2025-01-11 15:37:57 +00:00
add magnet comments, downloads, views, stars import support
This commit is contained in:
parent
22655dc71b
commit
dd96d56fcc
@ -41,10 +41,16 @@ try
|
|||||||
// Manifest
|
// Manifest
|
||||||
if ($manifest = @json_decode(@file_get_contents($node->manifest)))
|
if ($manifest = @json_decode(@file_get_contents($node->manifest)))
|
||||||
{
|
{
|
||||||
|
// Feed channel exists
|
||||||
|
if (empty($manifest->feeds))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// Users
|
// Users
|
||||||
if (API_IMPORT_USERS_ENABLED)
|
if (API_IMPORT_USERS_ENABLED)
|
||||||
{
|
{
|
||||||
if (empty($manifest->users))
|
if (empty($manifest->feeds->users))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -52,7 +58,7 @@ try
|
|||||||
// Init alias registry for this host
|
// Init alias registry for this host
|
||||||
$aliasUserId = [];
|
$aliasUserId = [];
|
||||||
|
|
||||||
foreach (@json_decode(@file_get_contents($manifest->users)) as $remoteUser)
|
foreach (@json_decode(@file_get_contents($manifest->feeds->users)) as $remoteUser)
|
||||||
{
|
{
|
||||||
// Validate required fields
|
// Validate required fields
|
||||||
if (!isset($remoteUser->address) || !preg_match(YGGDRASIL_HOST_REGEX, $remoteUser->address) ||
|
if (!isset($remoteUser->address) || !preg_match(YGGDRASIL_HOST_REGEX, $remoteUser->address) ||
|
||||||
@ -115,7 +121,7 @@ try
|
|||||||
// Magnets
|
// Magnets
|
||||||
if (API_IMPORT_MAGNETS_ENABLED)
|
if (API_IMPORT_MAGNETS_ENABLED)
|
||||||
{
|
{
|
||||||
if (empty($manifest->magnets))
|
if (empty($manifest->feeds->magnets))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -123,7 +129,7 @@ try
|
|||||||
// Init alias registry for this host
|
// Init alias registry for this host
|
||||||
$aliasMagnetId = [];
|
$aliasMagnetId = [];
|
||||||
|
|
||||||
foreach (@json_decode(@file_get_contents($manifest->magnets)) as $remoteMagnet)
|
foreach (@json_decode(@file_get_contents($manifest->feeds->magnets)) as $remoteMagnet)
|
||||||
{
|
{
|
||||||
// Validate required fields
|
// Validate required fields
|
||||||
if (!isset($remoteMagnet->userId) || !is_int($remoteMagnet->userId) ||
|
if (!isset($remoteMagnet->userId) || !is_int($remoteMagnet->userId) ||
|
||||||
@ -335,6 +341,163 @@ try
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Magnet comments
|
||||||
|
if (API_IMPORT_MAGNET_COMMENTS_ENABLED)
|
||||||
|
{
|
||||||
|
if (empty($manifest->feeds->magnetComments))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (@json_decode(@file_get_contents($manifest->feeds->magnetComments)) as $remoteMagnetComment)
|
||||||
|
{
|
||||||
|
// Validate
|
||||||
|
if (
|
||||||
|
empty($remoteMagnetComment->magnetId) || !is_int($remoteMagnetComment->magnetId) || !isset($aliasMagnetId[$remoteMagnetComment->magnetId]) ||
|
||||||
|
empty($remoteMagnetComment->userId) || !is_int($remoteMagnetComment->userId) || !isset($aliasUserId[$remoteMagnetComment->userId]) ||
|
||||||
|
empty($remoteMagnetComment->timeAdded) || !is_int($remoteMagnetComment->timeAdded) ||
|
||||||
|
empty($remoteMagnetComment->approved) || !is_bool($remoteMagnetComment->approved) ||
|
||||||
|
!isset($remoteMagnetComment->value) || !is_string($remoteMagnetComment->value) || mb_strlen($remoteMagnetComment->value) < MAGNET_COMMENT_MIN_LENGTH || mb_strlen($remoteMagnetComment->value) > MAGNET_COMMENT_MAX_LENGTH ||
|
||||||
|
|
||||||
|
!isset($remoteMagnetComment->magnetCommentIdParent) || !(is_bool($remoteMagnetComment->magnetCommentIdParent) || is_int($remoteMagnetComment->magnetCommentIdParent))
|
||||||
|
)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add new magnet comment if not exist by timestamp added for this user
|
||||||
|
if (!$db->findMagnetComment($aliasMagnetId[$remoteMagnetComment->magnetId],
|
||||||
|
$aliasUserId[$remoteMagnetComment->userId],
|
||||||
|
$remoteMagnetComment->timeAdded))
|
||||||
|
{
|
||||||
|
// Parent comment provided
|
||||||
|
if (is_int($remoteMagnetComment->magnetCommentIdParent))
|
||||||
|
{
|
||||||
|
$localMagnetCommentIdParent = null; // @TODO feature not in use yet
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$localMagnetCommentIdParent = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$db->addMagnetComment(
|
||||||
|
$aliasMagnetId[$remoteMagnetComment->magnetId],
|
||||||
|
$aliasUserId[$remoteMagnetComment->userId],
|
||||||
|
$localMagnetCommentIdParent,
|
||||||
|
$remoteMagnetComment->value,
|
||||||
|
$remoteMagnetComment->approved,
|
||||||
|
true,
|
||||||
|
$remoteMagnetComment->timeAdded
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Magnet downloads
|
||||||
|
if (API_IMPORT_MAGNET_DOWNLOADS_ENABLED)
|
||||||
|
{
|
||||||
|
if (empty($manifest->feeds->magnetDownloads))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (@json_decode(@file_get_contents($manifest->feeds->magnetDownloads)) as $remoteMagnetDownload)
|
||||||
|
{
|
||||||
|
// Validate
|
||||||
|
if (
|
||||||
|
empty($remoteMagnetDownload->magnetId) || !is_int($remoteMagnetDownload->magnetId) || !isset($aliasMagnetId[$remoteMagnetDownload->magnetId]) ||
|
||||||
|
empty($remoteMagnetDownload->userId) || !is_int($remoteMagnetDownload->userId) || !isset($aliasUserId[$remoteMagnetDownload->userId]) ||
|
||||||
|
empty($remoteMagnetDownload->timeAdded) || !is_int($remoteMagnetDownload->timeAdded)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add new magnet download if not exist by timestamp added for this user
|
||||||
|
if (!$db->findMagnetDownload($aliasMagnetId[$remoteMagnetDownload->magnetId],
|
||||||
|
$aliasUserId[$remoteMagnetDownload->userId],
|
||||||
|
$remoteMagnetDownload->timeAdded))
|
||||||
|
{
|
||||||
|
$db->addMagnetDownload(
|
||||||
|
$aliasMagnetId[$remoteMagnetDownload->magnetId],
|
||||||
|
$aliasUserId[$remoteMagnetDownload->userId],
|
||||||
|
$remoteMagnetDownload->timeAdded
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Magnet views
|
||||||
|
if (API_IMPORT_MAGNET_VIEWS_ENABLED)
|
||||||
|
{
|
||||||
|
if (empty($manifest->feeds->magnetViews))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (@json_decode(@file_get_contents($manifest->feeds->magnetViews)) as $remoteMagnetView)
|
||||||
|
{
|
||||||
|
// Validate
|
||||||
|
if (
|
||||||
|
empty($remoteMagnetView->magnetId) || !is_int($remoteMagnetView->magnetId) || !isset($aliasMagnetId[$remoteMagnetView->magnetId]) ||
|
||||||
|
empty($remoteMagnetView->userId) || !is_int($remoteMagnetView->userId) || !isset($aliasUserId[$remoteMagnetView->userId]) ||
|
||||||
|
empty($remoteMagnetView->timeAdded) || !is_int($remoteMagnetView->timeAdded)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add new magnet view if not exist by timestamp added for this user
|
||||||
|
if (!$db->findMagnetView($aliasMagnetId[$remoteMagnetView->magnetId],
|
||||||
|
$aliasUserId[$remoteMagnetView->userId],
|
||||||
|
$remoteMagnetView->timeAdded))
|
||||||
|
{
|
||||||
|
$db->addMagnetView(
|
||||||
|
$aliasMagnetId[$remoteMagnetView->magnetId],
|
||||||
|
$aliasUserId[$remoteMagnetView->userId],
|
||||||
|
$remoteMagnetView->timeAdded
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Magnet stars
|
||||||
|
if (API_IMPORT_MAGNET_STARS_ENABLED)
|
||||||
|
{
|
||||||
|
if (empty($manifest->feeds->magnetStars))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (@json_decode(@file_get_contents($manifest->feeds->magnetStars)) as $remoteMagnetStar)
|
||||||
|
{
|
||||||
|
// Validate
|
||||||
|
if (
|
||||||
|
empty($remoteMagnetStar->magnetId) || !is_int($remoteMagnetStar->magnetId) || !isset($aliasMagnetId[$remoteMagnetStar->magnetId]) ||
|
||||||
|
empty($remoteMagnetStar->userId) || !is_int($remoteMagnetStar->userId) || !isset($aliasUserId[$remoteMagnetStar->userId]) ||
|
||||||
|
empty($remoteMagnetStar->timeAdded) || !is_int($remoteMagnetStar->timeAdded) ||
|
||||||
|
!isset($remoteMagnetStar->value) || !is_bool($remoteMagnetStar->value)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add new magnet star if not exist by timestamp added for this user
|
||||||
|
if (!$db->findMagnetStar($aliasMagnetId[$remoteMagnetStar->magnetId],
|
||||||
|
$aliasUserId[$remoteMagnetStar->userId],
|
||||||
|
$remoteMagnetStar->timeAdded))
|
||||||
|
{
|
||||||
|
$db->addMagnetStar(
|
||||||
|
$aliasMagnetId[$remoteMagnetStar->magnetId],
|
||||||
|
$aliasUserId[$remoteMagnetStar->userId],
|
||||||
|
$remoteMagnetStar->value,
|
||||||
|
$remoteMagnetStar->timeAdded
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1377,6 +1377,17 @@ class Database {
|
|||||||
return $query->fetchAll();
|
return $query->fetchAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function findMagnetComment(int $magnetId, int $userId, int $timeAdded) {
|
||||||
|
|
||||||
|
$this->_debug->query->select->total++;
|
||||||
|
|
||||||
|
$query = $this->_db->prepare('SELECT * FROM `magnetComment` WHERE `magnetId` = ? AND `userId` = ? AND `timeAdded` = ?');
|
||||||
|
|
||||||
|
$query->execute([$magnetId, $userId, $timeAdded]);
|
||||||
|
|
||||||
|
return $query->fetch();
|
||||||
|
}
|
||||||
|
|
||||||
public function getMagnetComment(int $magnetCommentId) {
|
public function getMagnetComment(int $magnetCommentId) {
|
||||||
|
|
||||||
$this->_debug->query->select->total++;
|
$this->_debug->query->select->total++;
|
||||||
@ -1466,6 +1477,17 @@ class Database {
|
|||||||
return $query->fetch()->result;
|
return $query->fetch()->result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function findMagnetStar(int $magnetId, int $userId, int $timeAdded) {
|
||||||
|
|
||||||
|
$this->_debug->query->select->total++;
|
||||||
|
|
||||||
|
$query = $this->_db->prepare('SELECT * FROM `magnetStar` WHERE `magnetId` = ? AND `userId` = ? AND `timeAdded` = ?');
|
||||||
|
|
||||||
|
$query->execute([$magnetId, $userId, $timeAdded]);
|
||||||
|
|
||||||
|
return $query->fetch();
|
||||||
|
}
|
||||||
|
|
||||||
// Magnet download
|
// Magnet download
|
||||||
public function addMagnetDownload(int $magnetId, int $userId, int $timeAdded) : int {
|
public function addMagnetDownload(int $magnetId, int $userId, int $timeAdded) : int {
|
||||||
|
|
||||||
@ -1507,6 +1529,17 @@ class Database {
|
|||||||
return $query->fetch()->result;
|
return $query->fetch()->result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function findMagnetDownload(int $magnetId, int $userId, int $timeAdded) {
|
||||||
|
|
||||||
|
$this->_debug->query->select->total++;
|
||||||
|
|
||||||
|
$query = $this->_db->prepare('SELECT * FROM `magnetDownload` WHERE `magnetId` = ? AND `userId` = ? AND `timeAdded` = ?');
|
||||||
|
|
||||||
|
$query->execute([$magnetId, $userId, $timeAdded]);
|
||||||
|
|
||||||
|
return $query->fetch();
|
||||||
|
}
|
||||||
|
|
||||||
public function findMagnetDownloadsTotalByMagnetId(int $magnetId) : int {
|
public function findMagnetDownloadsTotalByMagnetId(int $magnetId) : int {
|
||||||
|
|
||||||
$this->_debug->query->select->total++;
|
$this->_debug->query->select->total++;
|
||||||
@ -1595,4 +1628,15 @@ class Database {
|
|||||||
|
|
||||||
return $query->fetch()->result;
|
return $query->fetch()->result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function findMagnetView(int $magnetId, int $userId, int $timeAdded) {
|
||||||
|
|
||||||
|
$this->_debug->query->select->total++;
|
||||||
|
|
||||||
|
$query = $this->_db->prepare('SELECT * FROM `magnetView` WHERE `magnetId` = ? AND `userId` = ? AND `timeAdded` = ?');
|
||||||
|
|
||||||
|
$query->execute([$magnetId, $userId, $timeAdded]);
|
||||||
|
|
||||||
|
return $query->fetch();
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user