public function procede() { if (!$this->oRequest->existParam('key')) { throw new Error('Vous devez renseigner la clé.', 3003); } if ($this->oRequest->getParam('key', 'string') != Config::get('ingestkey')) { throw new Error('La clé est invalide.', 3003); } //Ajoute du titre $this->oView->addData('titre', 'Analyse des flux RSS'); //On récupère les éléments pour les statistiques $iNbReleases = Release::getCount(); $iNbTorrents = Torrent::getCount(); $iStartTime = time(); //Traitement des Trackers $aTrackers = Tracker::getTrackers(); //Ajout des flux $aRssList = Rss::getFlux(); foreach ($aRssList as $oRss) { $aTrackers[$oRss->getTrackerId()]->addFlux($oRss); } //Parsage des flux $aResults = array(); foreach ($aTrackers as $oTracker) { $aResults = array_merge($aResults, $oTracker->parseRss()); } //Traitement des résultats $oTable = new TableGenerator(); $oTable->setId(md5('Ingest')); $oTable->addColumn('Tags'); $oTable->addColumn('Tracker'); $oTable->addColumn('Release'); foreach ($aResults as $oResult) { if (is_string($oResult)) { Logger::log('ingest', $oResult); $this->oView->addAlert($oResult, 'danger'); } else { $oResult->store(); $sTags = ''; foreach ($oResult->getTags() as $oTag) { $oTagView = new View('label'); $oTagView->addData('type', 'info'); $oTagView->addData('text', $oTag->getName()); $oTagView->create(); $sTags .= $oTagView->getCode() . ' '; } $oTable->addLine(array($sTags, $aTrackers[$oResult->getTracker()]->getName(), $oResult->getReleaseName())); } } //Statistiques $iNewReleases = Release::getCount() - $iNbReleases; $iNewTorrents = Torrent::getCount() - $iNbTorrents; Stats::storeIngestStats($iNewReleases, $iNewTorrents, date("Y-m-j G:i:s", $iStartTime)); //Enregistrement de la dernière date de vérification Rss::updateLastCheck(date("Y-m-j G:i:s", $iStartTime)); Logger::log('ingest', $iNewReleases . ' nouvelles releases et ' . $iNewTorrents . ' nouveaux torrents.'); $oTable->setBottom($iNewReleases . ' nouvelles releases et ' . $iNewTorrents . ' nouveaux torrents.'); $oTable->create(); $this->oView->addData('content', $oTable->getCode()); $this->oView->Create(); }
/** * Retourne un tableau contenant les informations des releases * @return array */ public function getReleaseTable() { //Création du tableau $aResponse = array(); $aRegex = Regex::getAllRegex(); $aTrackers = Tracker::getTrackers(); while ($aResult = $this->oResults->fetch_assoc()) { $row = array(); if ($aResult['id_links'] != NULL) { $aTags = explode(';', $aResult['tags']); $row['tags'] = array(); foreach ($aTags as $iTagId) { if ($iTagId != NULL) { $row['tags'][$iTagId] = $aRegex[$iTagId]->getName(); } } $row['categorie'] = $aResult['id_categorie']; $row['fiche'] = $aResult['id_fiche']; $row["release"] = $aResult['name']; $row["release_id"] = $aResult['id']; //Récupération des éléments $aTrackersId = explode(';', $aResult['trackers']); $aLinks = explode(';', $aResult['id_links']); $aDates = explode(';', $aResult['dates']); $aTorrentsId = explode(';', $aResult['id_torrents']); //Récupération du premier up $iFirstPost = 0; $iKeyFirst = 0; foreach ($aDates as $iKey => $sDate) { if ($iFirstPost == 0 || strtotime($sDate) < $iFirstPost) { $iFirstPost = strtotime($sDate); $iKeyFirst = $iKey; } } $row["first_tracker"] = $aTrackersId[$iKeyFirst]; //Affichage des liens $sBottom = ''; foreach ($aTrackersId as $iKey => $iTrackerId) { $aTorrent = array(); $aTorrent['tracker'] = $iTrackerId; //Calcul du pretime $sDate = $aDates[$iKey]; if ($aResult['pretime'] != "0000-00-00 00:00:00") { $iDelay = strtotime($sDate) - strtotime($aResult['pretime']); $sBottom = 'PRE Time : ' . $aResult['pretime']; $row['origin'] = 'Scene'; } else { $iDelay = strtotime($sDate) - $iFirstPost; $sBottom = 'Premier torrent : ' . date("Y-m-j G:i:s", $iFirstPost); $row['origin'] = 'P2P'; } if ($iDelay == 0) { $sDelay = "-"; } else { // Traitement pour affichage $iDelayJ = floor($iDelay / 86400); $iDelayH = floor(($iDelay - $iDelayJ * 86400) / 3600); $iDelayM = floor(($iDelay - $iDelayJ * 86400 - $iDelayH * 3600) / 60); $iDelayS = ($iDelay - $iDelayJ * 86400 - $iDelayH * 3600) % 60; $sDelay = ($iDelayJ != 0 ? $iDelayJ . 'j ' : '') . ($iDelayH != 0 ? $iDelayH . 'h ' : '') . ($iDelayM != 0 ? $iDelayM . 'm ' : '') . ($iDelayS != 0 ? $iDelayS . 's ' : ''); } $aTorrent['delay'] = $sDelay; //Affichage des liens $sFicheLink = $this->oCurrentUser->getLinkWithPasskey($iTrackerId, $aTrackers[$iTrackerId]->getLink()); if ($sFicheLink != false) { $sFicheLink = str_replace('{IDTORRENT}', $aLinks[$iKey], $sFicheLink); $aTorrent['fichelink'] = $sFicheLink; } $sDirectLink = $this->oCurrentUser->getLinkWithPasskey($iTrackerId, $aTrackers[$iTrackerId]->getDirectLink()); if ($sDirectLink != false) { $sDirectLink = str_replace('{IDTORRENT}', $aLinks[$iKey], $sDirectLink); $aTorrent['directlink'] = $sDirectLink; $aTorrent['torrentid'] = $aTorrentsId[$iKey]; } $row["torrents"][] = $aTorrent; } $row['first'] = $sBottom; $aResponse[$aResult['id']] = $row; } } return $aResponse; }
public function procede() { //Récupère la catégorie if ($this->oRequest->existParam('type')) { $this->iType = $this->oRequest->getParam('type', 'int'); } else { $this->iType = 0; } //Récupère le contenu de la recherche if ($this->oRequest->existParam('research')) { $sSearch = $this->oRequest->getParam('research', 'string'); $sSearch = strtr($sSearch, ".", "%"); $sSearch = strtr($sSearch, " ", "%"); } else { $sSearch = ""; } //Récupère le nombre d'éléments par page if ($this->oRequest->existParam('length')) { $iLenght = $this->oRequest->getParam('length', 'int'); } else { $iLenght = 10; } //Récupère la page affichée if ($this->oRequest->existParam('draw')) { $iDraw = $this->oRequest->getParam('draw', 'int'); } else { $iDraw = 1; } //Récupère l'OffSet if ($this->oRequest->existParam('start')) { $iStart = $this->oRequest->getParam('start', 'int'); } else { $iStart = 0; } //Récupération du nombre de réponses $oMysqli = Database::getInstance(); if ($this->iType != 0) { $sWhere = "AND id_categorie = '{$this->iType}' "; } else { $sWhere = ''; } $oResult = $oMysqli->query("SELECT COUNT(*) as total FROM tks_releases \r\n WHERE name LIKE '%" . $sSearch . "%' {$sWhere} "); $iNbResponses = $oResult->fetch_assoc()['total']; $oSearch = new Search($this->oCurrentUser); $oSearch->searchWithWords($sSearch, $this->iType, $iStart, $iLenght); $aResults = $oSearch->getReleaseTable(); //Création du Tableau JSON $aJson = array(); $aJson["draw"] = $iDraw; $aJson["recordsTotal"] = $iNbResponses; $aJson["recordsFiltered"] = $iNbResponses; $aJson["data"] = array(); $aTrackers = Tracker::getTrackers(); $aCategories = Categorie::getCategories(); foreach ($aResults as $aRelease) { //Affichage de la catégorie $oCatView = new View('label'); $oCatView->addData('type', 'primary'); if ($aRelease['categorie'] != 0) { $oCatView->addData('text', $aCategories[$aRelease['categorie']]->getName()); } else { $oCatView->addData('text', 'Non scrappé'); } $oCatView->create(); $sTags = $oCatView->getCode() . ' '; //Affichage des TAGS : foreach ($aRelease['tags'] as $iTagId => $sTagName) { if ($iTagId != NULL) { $oTagView = new View('label'); $oTagView->addData('type', 'info'); $oTagView->addData('text', $sTagName); $oTagView->create(); $sTags .= $oTagView->getCode() . ' '; } } //Affichage de la source : $oOriginView = new View('label'); $oOriginView->addData('text', $aRelease['origin']); if ($aRelease['origin'] == 'Scene') { $oOriginView->addData('type', 'success'); } else { $oOriginView->addData('type', 'danger'); } $oOriginView->create(); $sTags .= $oOriginView->getCode(); //Création de la popup Tracker $oPopup = new View('releasepopup'); $oPopup->addData('id', md5($aRelease['release'])); $oPopup->addData('tracker', $aTrackers[$aRelease["first_tracker"]]->getName()); $oPopup->addData('nbtracker', count($aRelease['torrents'])); $oPopup->addData('title', $aRelease['release']); //Affichage des liens $aTableLinks = array(); foreach ($aRelease['torrents'] as $aTorrent) { $sButtons = ''; if (isset($aTorrent['fichelink'])) { $oFicheButton = new View('minibutton'); $oFicheButton->addData('link', $aTorrent['fichelink']); $oFicheButton->addData('icon', 'fa-search-plus'); $oFicheButton->addData('style', 'primary'); $oFicheButton->create(); $sButtons .= $oFicheButton->getCode() . ' '; } if (isset($aTorrent['directlink'])) { $oDirectButton = new View('minibutton'); $oDirectButton->addData('link', $aTorrent['directlink']); $oDirectButton->addData('icon', 'fa-download'); $oDirectButton->addData('style', 'success'); $oDirectButton->create(); $sButtons .= $oDirectButton->getCode() . ' '; $oRssButton = new View('miniajaxbutton'); $oRssButton->addData('tid', $aTorrent['torrentid']); $oRssButton->addData('icon', 'fa-rss-square'); $oRssButton->addData('style', 'warning'); $oRssButton->create(); $sButtons .= $oRssButton->getCode() . ' '; } $aTableLinks[] = array($aTrackers[$aTorrent['tracker']]->getName(), $aTorrent['delay'], $sButtons); } //Affichage du lien vers la fiche $sFicheLink = ''; if ($aRelease['fiche'] != null) { switch ($aRelease['categorie']) { case 1: $sCat = 'film'; break; case 2: $sCat = 'serie'; break; case 3: $sCat = 'music'; break; } $sFicheLink = '<a href="index.php?p=fichedetail&type=' . $sCat . '&id=' . $aRelease['fiche'] . '" style="color: black;">' . $aRelease['release'] . '</a>'; } elseif ($aRelease['categorie'] == 9) { if ($this->oCurrentUser->checkAccess('modrelease')) { $sFicheLink = '<a href="index.php?p=modrelease&id=' . $aRelease['release_id'] . '" style="color: red;">' . $aRelease['release'] . '</a>'; } else { $sFicheLink = $aRelease['release']; } } else { $sFicheLink = $aRelease['release']; } $oTable = new View('torrentlist'); $oTable->addData('titre', $aRelease['release']); $oTable->addData('tabledatas', $aTableLinks); $oTable->addData('bottom', $aRelease['first']); $oTable->create(); $oPopup->addData('content', $oTable->getCode()); $oPopup->create(); $row = array(); $row["release"] = $sFicheLink; $row["link"] = $oPopup->getCode(); $row["tags"] = $sTags; $aJson["data"][] = $row; } echo json_encode($aJson); }
private function createView() { //Affichage des Trackers $this->oView->addData('titre', 'Administration des Trackers'); //Construction du tableau $oTable = new TableGenerator(); $oTable->setId(md5('Administration des Trackers')); $oTable->addColumn('Nom'); $oTable->addColumn('Passkey'); $oTable->addColumn('Lien de la fiche'); $oTable->addColumn('Lien de téléchargement'); $oTable->addColumn(''); $aTrackers = Tracker::getTrackers(); foreach ($aTrackers as $oTracker) { $oTable->addLine(array($oTracker->getName(), $oTracker->getNbPasskeys() == 0 ? 'Aucun' : $oTracker->getNbPasskeys() . ' passkeys', $this->createLinkPopup($oTracker), $this->createDirectLinkPopup($oTracker), $this->createEditPopup($oTracker))); } //Popup d'ajout $oTable->setBottom($this->createAddPopup() . ' ' . $this->createImportPopup()); $oTable->create(); $this->oView->addData('content', $oTable->getCode()); $this->oView->create(); }
private function createReleasesTable($sType) { $oSearch = new Search($this->oCurrentUser); $oSearch->searchWithIdFiche($this->oFiche->getId(), $sType); $aReleases = $oSearch->getReleaseTable(); if (count($aReleases) != 0) { $oFinalTable = new TableGenerator(); $oFinalTable->setId('releases'); $oFinalTable->addColumn('Tags'); $oFinalTable->addColumn('Release'); $oFinalTable->addColumn('Lien'); $aTrackers = Tracker::getTrackers(); $aCategories = Categorie::getCategories(); foreach ($aReleases as $iIdRelease => $aRelease) { //Affichage de la catégorie $oCatView = new View('label'); $oCatView->addData('type', 'primary'); if ($aRelease['categorie'] != 0) { $oCatView->addData('text', $aCategories[$aRelease['categorie']]->getName()); } else { $oCatView->addData('text', 'Non scrappé'); } $oCatView->create(); $sTags = $oCatView->getCode() . ' '; //Affichage des TAGS : foreach ($aRelease['tags'] as $iTagId => $sTagName) { if ($iTagId != NULL) { $oTagView = new View('label'); $oTagView->addData('type', 'info'); $oTagView->addData('text', $sTagName); $oTagView->create(); $sTags .= $oTagView->getCode() . ' '; } } //Affichage de la source : $oOriginView = new View('label'); $oOriginView->addData('text', $aRelease['origin']); if ($aRelease['origin'] == 'Scene') { $oOriginView->addData('type', 'success'); } else { $oOriginView->addData('type', 'danger'); } $oOriginView->create(); $sTags .= $oOriginView->getCode(); //Création de la popup Tracker $oPopup = new View('releasepopup'); $oPopup->addData('id', $iIdRelease); $oPopup->addData('tracker', $aTrackers[$aRelease["first_tracker"]]->getName()); $oPopup->addData('nbtracker', count($aRelease['torrents'])); $oPopup->addData('title', $aRelease['release']); //Affichage des liens $aTableLinks = array(); foreach ($aRelease['torrents'] as $aTorrent) { $sButtons = ''; if (isset($aTorrent['fichelink'])) { $oFicheButton = new View('minibutton'); $oFicheButton->addData('link', $aTorrent['fichelink']); $oFicheButton->addData('icon', 'fa-search-plus'); $oFicheButton->addData('style', 'primary'); $oFicheButton->create(); $sButtons .= $oFicheButton->getCode() . ' '; } if (isset($aTorrent['directlink'])) { $oDirectButton = new View('minibutton'); $oDirectButton->addData('link', $aTorrent['directlink']); $oDirectButton->addData('icon', 'fa-download'); $oDirectButton->addData('style', 'success'); $oDirectButton->create(); $sButtons .= $oDirectButton->getCode() . ' '; $oRssButton = new View('miniajaxbutton'); $oRssButton->addData('tid', $aTorrent['torrentid']); $oRssButton->addData('icon', 'fa-rss-square'); $oRssButton->addData('style', 'warning'); $oRssButton->create(); $sButtons .= $oRssButton->getCode() . ' '; } $aTableLinks[] = array($aTrackers[$aTorrent['tracker']]->getName(), $aTorrent['delay'], $sButtons); } $oTable = new View('torrentlist'); $oTable->addData('titre', $aRelease['release']); $oTable->addData('tabledatas', $aTableLinks); $oTable->addData('bottom', $aRelease['first']); $oTable->create(); $oPopup->addData('content', $oTable->getCode()); $oPopup->create(); //Affichage du lien de modération if ($this->oCurrentUser->checkAccess('modrelease')) { $sFicheLink = '<a href="index.php?p=modrelease&id=' . $aRelease['release_id'] . '" style="color: black;">' . $aRelease['release'] . '</a>'; } else { $sFicheLink = $aRelease['release']; } $oFinalTable->addLine(array($sTags, $sFicheLink, $oPopup->getCode())); } $oFinalTable->create(); $this->oView->addData('releases', $oFinalTable->getCode()); } else { $this->oView->addData('releases', 'Aucune release trouvée :('); } }