Ejemplo n.º 1
0
    public function sendToNZBGet($guid)
    {
        $releases = new Releases();
        $reldata = $releases->getByGuid($guid);
        $url = "{$this->serverurl}getnzb/{$guid}&i={$this->uid}&r={$this->rsstoken}";
        $header = <<<NZBGet_URL
<?xml version="1.0"?>
<methodCall>
\t<methodName>appendurl</methodName>
\t<params>
\t\t<param>
\t\t\t<value><string>{$reldata['searchname']}.nzb</string></value>
\t\t</param>
\t\t<param>
\t\t\t<value><string>{$reldata['category_name']}</string></value>
\t\t</param>
\t\t<param>
\t\t\t<value><i4>0</i4></value>
\t\t</param>
\t\t<param>
\t\t\t<value><boolean>>False</boolean></value>
\t\t</param>
\t\t<param>
\t\t\t<value>
\t\t\t\t<string>{$url}</string>
\t\t\t</value>
\t\t</param>
\t</params>
</methodCall>
NZBGet_URL;
        getUrl($this->fullurl() . "appendurl", "POST", $header);
    }
Ejemplo n.º 2
0
 public function delete($id)
 {
     $db = new DB();
     $this->delCartForUser($id);
     $this->delUserCategoryExclusions($id);
     $releases = new Releases();
     $releases->deleteCommentsForUser($id);
     $forum = new Forum();
     $forum->deleteUser($id);
     $db->query(sprintf("delete from users where ID = %d", $id));
 }
Ejemplo n.º 3
0
    /**
     * Send a NZB URL to NZBGet.
     *
     * @param string $guid Release identifier.
     *
     * @return bool|mixed
     *
     * @access public
     */
    public function sendURLToNZBGet($guid)
    {
        $reldata = $this->Releases->getByGuid($guid);
        $header = '<?xml version="1.0"?>
			<methodCall>
				<methodName>appendurl</methodName>
				<params>
					<param>
						<value><string>' . $reldata['searchname'] . '.nzb' . '</string></value>
					</param>
					<param>
						<value><string>' . $reldata['category_name'] . '</string></value>
					</param>
					<param>
						<value><i4>0</i4></value>
					</param>
					<param>
						<value><boolean>>False</boolean></value>
					</param>
					<param>
						<value>
							<string>' . $this->serverurl . 'getnzb/' . $guid . '%26i%3D' . $this->uid . '%26r%3D' . $this->rsstoken . '</string>
						</value>
					</param>
				</params>
			</methodCall>';
        nzedb\utility\getUrl($this->fullURL . 'appendurl', 'post', $header);
    }
Ejemplo n.º 4
0
    /**
     * Send a NZB URL to NZBGet.
     *
     * @param string $guid Release identifier.
     *
     * @return bool|mixed
     *
     * @access public
     */
    public function sendURLToNZBGet($guid)
    {
        $reldata = $this->Releases->getByGuid($guid);
        $url = "{$this->serverurl}getnzb/{$guid}&amp;i={$this->uid}&amp;r={$this->rsstoken}";
        $header = '<?xml version="1.0"?>
			<methodCall>
				<methodName>appendurl</methodName>
				<params>
					<param>
						<value><string>' . $reldata['searchname'] . '.nzb' . '</string></value>
					</param>
					<param>
						<value><string>' . $reldata['category_name'] . '</string></value>
					</param>
					<param>
						<value><i4>0</i4></value>
					</param>
					<param>
						<value><boolean>>False</boolean></value>
					</param>
					<param>
						<value>
							<string>' . $url . '</string>
						</value>
					</param>
				</params>
			</methodCall>';
        Utility::getUrl(['url' => $this->fullURL . 'appendurl', 'method' => 'post', 'postdata' => $header, 'verifycert' => false]);
    }
Ejemplo n.º 5
0
 public static function getInstance()
 {
     if (!self::$releases_instance) {
         self::$releases_instance = new Releases();
     }
     return self::$releases_instance;
 }
Ejemplo n.º 6
0
 public function purge($id)
 {
     $db = new DB();
     $releases = new Releases();
     $binaries = new Binaries();
     $this->reset($id);
     $rels = $db->query(sprintf("select ID from releases where groupID = %d", $id));
     foreach ($rels as $rel) {
         $releases->delete($rel["ID"]);
     }
     $bins = $db->query(sprintf("select ID from binaries where groupID = %d", $id));
     foreach ($bins as $bin) {
         $binaries->delete($bin["ID"]);
     }
 }
Ejemplo n.º 7
0
 /**
  * Delete releases from the database.
  */
 protected function deleteReleases()
 {
     $deletedCount = 0;
     foreach ($this->result as $release) {
         if ($this->delete) {
             $this->releases->deleteSingle(['g' => $release['guid'], 'i' => $release['id']], $this->nzb, $this->releaseImage);
             if ($this->echoCLI) {
                 echo $this->pdo->log->primary('Deleting: ' . $this->method . ': ' . $release['searchname']);
             }
         } elseif ($this->echoCLI) {
             echo $this->pdo->log->primary('Would be deleting: ' . $this->method . ': ' . $release['searchname']);
         }
         $deletedCount++;
     }
     $this->deletedCount += $deletedCount;
     return true;
 }
Ejemplo n.º 8
0
 /**
  * @param array $options Echo to cli / Class instances.
  */
 public function __construct(array $options = [])
 {
     $defaults = ['Echo' => false, 'ReleaseImage' => null, 'Settings' => null];
     $options += $defaults;
     $this->pdo = $options['Settings'] instanceof Settings ? $options['Settings'] : new Settings();
     $this->releaseImage = $options['ReleaseImage'] instanceof ReleaseImage ? $options['ReleaseImage'] : new ReleaseImage($this->pdo);
     $this->movieqty = $this->pdo->getSetting('maxxxxprocessed') != '' ? $this->pdo->getSetting('maxxxxprocessed') : 100;
     $this->showPasswords = Releases::showPasswords($this->pdo);
     $this->debug = NN_DEBUG;
     $this->echooutput = $options['Echo'] && NN_ECHOCLI;
     $this->imgSavePath = NN_COVERS . 'xxx' . DS;
     $this->cookie = NN_TMP . 'xxx.cookie';
     if (NN_DEBUG || NN_LOGGING) {
         $this->debug = true;
         try {
             $this->debugging = new \Logger();
         } catch (\LoggerException $error) {
             $this->_debug = false;
         }
     }
 }
Ejemplo n.º 9
0
function downloadPage()
{
    global $app;
    try {
        $releases = new Releases();
        $winstable = [$releases->latestWin32Asset(), $releases->latestWin64Asset()];
        $winpre = [$releases->latestWin32Asset(false), $releases->latestWin64Asset(false)];
        $osxstable = $releases->latestOSXAsset();
        $osxpre = $releases->latestOSXAsset(false);
        if ($winpre[0]['created_at'] < $winstable[0]['created_at']) {
            $winpre = null;
        }
        if ($osxpre['created_at'] < $osxstable['created_at']) {
            $osxpre = null;
        }
        $vars = ['winstable' => $winstable, 'winpre' => $winpre, 'osxstable' => $osxstable, 'osxpre' => $osxpre];
    } catch (Exception $e) {
        error_log($e);
        return $app['twig']->render('download/error.twig');
    }
    return $app['twig']->render('download/index.twig', $vars);
}
Ejemplo n.º 10
0
<?php

include dirname(__FILE__) . '/autoload.php';
Releases::get('alfred-spotify-controls', '2.2.10');
Ejemplo n.º 11
0
         $page->smarty->assign('rid', $rid);
         $page->smarty->assign('show', $show);
         if (isset($_REQUEST['from'])) {
             $page->smarty->assign('from', $_REQUEST['from']);
         }
         $page->content = $page->smarty->fetch('myshows-add.tpl');
         $page->render();
     }
     break;
 case 'browse':
     $page->title = "Browse My Shows";
     $page->meta_title = "My Shows";
     $page->meta_keywords = "search,add,to,cart,nzb,description,details";
     $page->meta_description = "Browse Your Shows";
     $shows = $us->getShows($users->currentUserId());
     $releases = new Releases();
     $browsecount = $releases->getShowsCount($shows, -1, $page->userdata["categoryexclusions"]);
     $offset = isset($_REQUEST["offset"]) && ctype_digit($_REQUEST['offset']) ? $_REQUEST["offset"] : 0;
     $ordering = $releases->getBrowseOrdering();
     $orderby = isset($_REQUEST["ob"]) && in_array($_REQUEST['ob'], $ordering) ? $_REQUEST["ob"] : '';
     $results = array();
     $results = $releases->getShowsRange($shows, $offset, ITEMS_PER_PAGE, $orderby, -1, $page->userdata["categoryexclusions"]);
     $page->smarty->assign('pagertotalitems', $browsecount);
     $page->smarty->assign('pageroffset', $offset);
     $page->smarty->assign('pageritemsperpage', ITEMS_PER_PAGE);
     $page->smarty->assign('pagerquerybase', WWW_TOP . "/myshows/browse?ob=" . $orderby . "&amp;offset=");
     $page->smarty->assign('pagerquerysuffix', "#results");
     $pager = $page->smarty->fetch($page->getCommonTemplate("pager.tpl"));
     $page->smarty->assign('pager', $pager);
     foreach ($ordering as $ordertype) {
         $page->smarty->assign('orderby' . $ordertype, WWW_TOP . "/myshows/browse?ob=" . $ordertype . "&amp;offset=0");
Ejemplo n.º 12
0
 /**
  * @param array $options Class instances / Echo to CLI.
  */
 public function __construct(array $options = [])
 {
     $defaults = ['Echo' => false, 'Logger' => null, 'ReleaseImage' => null, 'Settings' => null, 'TMDb' => null];
     $options += $defaults;
     $this->pdo = $options['Settings'] instanceof Settings ? $options['Settings'] : new Settings();
     $this->releaseImage = $options['ReleaseImage'] instanceof \ReleaseImage ? $options['ReleaseImage'] : new \ReleaseImage($this->pdo);
     $this->lookuplanguage = $this->pdo->getSetting('lookuplanguage') != '' ? (string) $this->pdo->getSetting('lookuplanguage') : 'en';
     $this->fanartapikey = $this->pdo->getSetting('fanarttvkey');
     $this->imdburl = $this->pdo->getSetting('imdburl') == 0 ? false : true;
     $this->movieqty = $this->pdo->getSetting('maximdbprocessed') != '' ? $this->pdo->getSetting('maximdbprocessed') : 100;
     $this->searchEngines = true;
     $this->showPasswords = Releases::showPasswords($this->pdo);
     $this->debug = NN_DEBUG;
     $this->echooutput = $options['Echo'] && NN_ECHOCLI && $this->pdo->cli;
     $this->imgSavePath = NN_COVERS . 'movies' . DS;
     $this->service = '';
     if (NN_DEBUG || NN_LOGGING) {
         $this->debug = true;
         try {
             $this->debugging = new \Logger();
         } catch (\LoggerException $error) {
             $this->_debug = false;
         }
     }
 }
Ejemplo n.º 13
0
<?php

require_once "config.php";
$page = new AdminPage();
$users = new Users();
$releases = new Releases();
$page->title = "Site Stats";
$topgrabs = $users->getTopGrabbers();
$page->smarty->assign('topgrabs', $topgrabs);
$topdownloads = $releases->getTopDownloads();
$page->smarty->assign('topdownloads', $topdownloads);
$topcomments = $releases->getTopComments();
$page->smarty->assign('topcomments', $topcomments);
$recent = $releases->getRecentlyAdded();
$page->smarty->assign('recent', $recent);
$usersbymonth = $users->getUsersByMonth();
$page->smarty->assign('usersbymonth', $usersbymonth);
$usersbyrole = $users->getUsersByRole();
$page->smarty->assign('usersbyrole', $usersbyrole);
$usersbyhosthash = $users->getUsersByHostHash();
$page->smarty->assign('usersbyhosthash', $usersbyhosthash);
$loginsbymonth = $users->getLoginCountsByMonth();
$page->smarty->assign('loginsbymonth', $loginsbymonth);
$page->content = $page->smarty->fetch('site-stats.tpl');
$page->render();
Ejemplo n.º 14
0
<?php

use newznab\db\Settings;
$nzb = new NZB($page->settings);
$rel = new Releases(['Settings' => $page->settings]);
$uid = 0;
// Page is accessible only by the rss token, or logged in users.
if ($page->users->isLoggedIn()) {
    $uid = $page->users->currentUserId();
    $maxdls = $page->userdata["downloadrequests"];
    $rsstoken = $page->userdata['rsstoken'];
} else {
    if ($page->settings->getSetting('registerstatus') == Settings::REGISTER_STATUS_API_ONLY) {
        $res = $page->users->getById(0);
    } else {
        if (!isset($_GET["i"]) || !isset($_GET["r"])) {
            header("X-DNZB-RCode: 400");
            header("X-DNZB-RText: Bad request, please supply all parameters!");
            $page->show403();
        }
        $res = $page->users->getByIdAndRssToken($_GET["i"], $_GET["r"]);
        if (!$res) {
            header("X-DNZB-RCode: 401");
            header("X-DNZB-RText: Unauthorised, wrong user ID or rss key!");
            $page->show403();
        }
    }
    $uid = $res["id"];
    $rsstoken = $res['rsstoken'];
    $maxdls = $res["downloadrequests"];
}
Ejemplo n.º 15
0
    public function processGID($limit = 500, $batch = 5000, $delete_broken_releases = false)
    {
        // Process until someone presses cntrl-c
        $db = new Settings();
        $nzb = new NZB();
        $processed = 0;
        // We need an offset for tracking unhandled issues
        $offset = 0;
        $fsql = 'SELECT id, name, guid FROM releases ' . 'WHERE gid IS NULL ORDER BY adddate DESC LIMIT %d,%d';
        $usql = "UPDATE releases SET gid = '%s' WHERE id = %d";
        while (1) {
            // finish
            if ($limit > 0 && $processed >= $limit) {
                break;
            }
            $batch = $limit > 0 && $batch > $limit ? $limit : $batch;
            $res = $db->query(sprintf($fsql, $offset, $batch));
            if (!$res) {
                break;
            }
            if (count($res) <= 0) {
                break;
            }
            $offset += $batch;
            foreach ($res as $r) {
                $nzbfile = $nzb->getNZBPath($r["guid"]);
                if ($nzbfile === Null) {
                    continue;
                }
                $nzbInfo = new NZBInfo();
                if (!$nzbInfo->loadFromFile($nzbfile)) {
                    if ($delete_broken_releases) {
                        $release = new Releases();
                        $release->deleteSingle(['g' => $r['guid'], 'i' => $r['id']], $this->nzb, $this->releaseImage);
                        // Free the variable in an attempt to recover memory
                        unset($release);
                        echo '-';
                    } else {
                        // Skip over this one for future fetches
                        $offset++;
                    }
                    continue;
                }
                $gid = false;
                if (!empty($nzbInfo->gid)) {
                    $gid = $nzbInfo->gid;
                }
                // Free the variable in an attempt to recover memory
                unset($nzbInfo);
                if (!$gid) {
                    if ($delete_broken_releases) {
                        $release = new Releases();
                        $release->{$release}->deleteSingle(['g' => $r['guid'], 'i' => $r['id']], $this->nzb, $this->releaseImage);
                        unset($release);
                        echo '-';
                    } else {
                        // Skip over this one for future fetches
                        $offset++;
                    }
                    continue;
                }
                // Update DB With Global Identifer
                $ures = $db->queryExec(sprintf("UPDATE releases SET gid = %s WHERE id = %d", $db->escapeString($gid), $r['id']));
                if ($ures->rowCount() == 0) {
                    printf("\nPostPrc : Failed to update: %s\n", $r['name']);
                }
                // make noise...
                echo '.';
                $processed += 1;
            }
        }
        # Batch update for comment table
        /*$usql = 'UPDATE release_comments, releases '
        		.'SET release_comments.gid = releases.gid, '
        		.'release_comments.nzb_guid = releases.nzb_guid '
        		.'WHERE releases.id = release_comments.releaseid '
        		.'AND release_comments.gid IS NULL '
        		.'AND release_comments.nzb_guid = "" '
        		.'AND releases.nzb_guid IS NOT NULL '
        		.'AND releases.gid IS NOT NULL ';*/
        $affected = $db->queryExec(sprintf('UPDATE release_comments, releases SET release_comments.gid = releases.gid,
											release_comments.nzb_guid = releases.nzb_guid
											WHERE releases.id = release_comments.releaseid
											AND release_comments.gid IS NULL
											AND release_comments.nzb_guid = ""
											AND releases.nzb_guid IS NOT NULL
											AND releases.gid IS NOT NULL '));
        $rows = $affected->rowCount();
        if ($rows > 0) {
            $processed += $rows;
        }
        return $processed;
    }
Ejemplo n.º 16
0
<?php

require_once dirname(__FILE__) . '/../../../www/config.php';
use nzedb\db\Settings;
$pdo = new Settings();
if ($argc < 3 || !isset($argv[1]) || isset($argv[1]) && !is_numeric($argv[1])) {
    exit($pdo->log->error("\nIncorrect argument suppplied. This script will delete all duplicate releases matching on name, fromname, group_id and size.\n" . "Unfortunately, I can not guarantee which copy will be deleted.\n\n" . "php remove_exact_dupes.php 10 exact             ...: To delete all duplicates added within the last 10 hours.\n" . "php remove_exact_dupes.php 10 near              ...: To delete all duplicates with size variation of 1% and added within the last 10 hours.\n" . "php remove_exact_dupes.php 0 exact              ...: To delete all duplicates.\n" . "php remove_exact_dupes.php 0 near               ...: To delete all duplicates with size variation of 1%.\n" . "php remove_exact_dupes.php 10 exact dupes/      ...: To delete all duplicates added within the last 10 hours and save a copy of the nzb to dupes folder.\n"));
}
$crosspostt = $argv[1];
$releases = new Releases(['Settings' => $pdo]);
$count = $total = $all = 0;
$nzb = new NZB($pdo);
$ri = new ReleaseImage($pdo);
$consoleTools = new ConsoleTools(['ColorCLI' => $pdo->log]);
$size = ' size ';
if ($argv[2] === 'near') {
    $size = ' size between (size *.99) AND (size * 1.01) ';
}
if ($crosspostt != 0) {
    $query = sprintf('SELECT max(id) AS id, id AS idx, guid FROM releases WHERE adddate > (NOW() - INTERVAL %d HOUR) GROUP BY name, fromname, group_id,' . $size . 'HAVING COUNT(*) > 1', $crosspostt);
} else {
    $query = sprintf('SELECT max(id) AS id, id AS idx, guid FROM releases GROUP BY name, fromname, group_id,' . $size . 'HAVING COUNT(*) > 1');
}
do {
    $resrel = $pdo->queryDirect($query);
    if ($resrel instanceof Traversable) {
        $total = $resrel->rowCount();
        echo $pdo->log->header(number_format($total) . " Releases have Duplicates");
        foreach ($resrel as $rowrel) {
            $nzbpath = $nzb->getNZBPath($rowrel['guid']);
            if (isset($argv[3]) && is_dir($argv[3])) {
<?php

require_once "config.php";
require_once WWW_DIR . "/lib/adminpage.php";
require_once WWW_DIR . "/lib/releases.php";
$page = new AdminPage();
$releases = new Releases();
$category = new Category();
$previewtype = 1;
$page->title = "Preview List";
$previewcat = "-1";
if (isset($_REQUEST["previewcat"])) {
    $previewcat = $_REQUEST["previewcat"];
}
$catarray = array();
$catarray[] = $previewcat;
$releasecount = $releases->getPreviewCount($previewtype, $catarray);
$offset = isset($_REQUEST["offset"]) ? $_REQUEST["offset"] : 0;
$page->smarty->assign('pagertotalitems', $releasecount);
$page->smarty->assign('pageroffset', $offset);
$page->smarty->assign('pageritemsperpage', ITEMS_PER_PAGE);
$page->smarty->assign('pagerquerybase', WWW_TOP . "/preview-list.php?previewcat=" . $previewcat . "&offset=");
$pager = $page->smarty->fetch("pager.tpl");
$page->smarty->assign('pager', $pager);
$parentcatlist = $category->getForMenu();
$page->smarty->assign('catlist', $parentcatlist);
$page->smarty->assign('previewcat', $previewcat);
$releaselist = $releases->getPreviewRange($previewtype, $catarray, $offset, ITEMS_PER_PAGE);
$page->smarty->assign('releaselist', $releaselist);
$page->content = $page->smarty->fetch('preview-list.tpl');
$page->render();
Ejemplo n.º 18
0
 *   - Zend Engine: {this colon is unreliable and not used on a few occasions}
 *     . Fixed bug #54585 (track_errors causes segfault). (Dmitry)
 *   - Upgraded bundled Sqlite3 to version 3.7.4. (Ilia)
 * These sub-sections only occur recently (5.2.7), the rest (PHP5 and 4) are
 *  like the second example.
 * 
 * In many cases these files are huge(!) - as of 7/5/2011 5.3's NEWS is 5999
 *  lines and 4.4's tops out at 3955.
 */
for ($i = 0; $i < count($lines); $i++) {
    if (strlen(trim($lines[$i])) == 0) {
        unset($lines[$i]);
    }
}
$lines = array_slice($lines, 0);
$releases = new Releases();
$curRelease = null;
$lastChange = null;
$curSection = null;
for ($i = 0; $i < count($lines); $i++) {
    if ($i < 2) {
        continue;
    }
    $releaseRegex = "/(?P<day>[0-9\\?]{2}) (?P<month>[A-Za-z\\?]{3}) (?P<year>[0-9\\?]{4}), (Version|PHP) (?P<version>[0-9\\.]+)/";
    if (preg_match($releaseRegex, $lines[$i], $releaseMatches) === 1) {
        // This is a release header
        $release = new Release();
        // Build date
        $months = array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
        $date = mktime(0, 0, 0, $releaseMatches["month"] == "???" ? null : array_search($releaseMatches["month"], $months) + 1, $releaseMatches["day"] == "??" ? null : $releaseMatches["day"], $releaseMatches["year"] == "????" ? null : $releaseMatches["year"]);
        $release->date = $date;
Ejemplo n.º 19
0
<?php

require_once WWW_DIR . "/lib/releases.php";
require_once WWW_DIR . "/lib/category.php";
require_once WWW_DIR . "/lib/nzb.php";
$releases = new Releases();
$category = new Category();
$nzb = new NZB();
//
// api functions
//
$function = "s";
if (isset($_GET["t"])) {
    if ($_GET["t"] == "details" || $_GET["t"] == "d") {
        $function = "d";
    } elseif ($_GET["t"] == "get" || $_GET["t"] == "g") {
        $function = "g";
    } elseif ($_GET["t"] == "search" || $_GET["t"] == "s") {
        $function = "s";
    } elseif ($_GET["t"] == "caps" || $_GET["t"] == "c") {
        $function = "c";
    } elseif ($_GET["t"] == "tvsearch" || $_GET["t"] == "tv") {
        $function = "tv";
    } elseif ($_GET["t"] == "movie" || $_GET["t"] == "m") {
        $function = "m";
    } elseif ($_GET["t"] == "register" || $_GET["t"] == "r") {
        $function = "r";
    } else {
        showApiError(202);
    }
} else {
Ejemplo n.º 20
0
 public function checkFiles(Releases $release)
 {
     if (!$release->id) {
         throw new \LogicException('Unexpected empty release identifier in BleedingEdge::checkFiles()');
     }
     // Make sure we are given a release which exists
     if (empty($release->category_id)) {
         return;
     }
     // Set the category from the release if the model's category doesn't match
     if ($this->category_id != $release->category_id || empty($this->folder)) {
         $this->setCategory($release->category_id);
     }
     // Make sure the category was indeed set
     if (empty($this->category) || empty($this->category_id) || empty($this->folder)) {
         return;
     }
     // Can't proceed if it's not a bleedingedge category
     if ($this->category->type != 'bleedingedge') {
         return;
     }
     $potentialPrefix = substr($this->folder, 0, 5);
     $potentialPrefix = strtolower($potentialPrefix);
     $useS3 = $potentialPrefix == 's3://';
     // Safe fallback
     $folderName = $release->version;
     if ($useS3) {
         // On S3 it's always the version-as-folder, otherwise it'd take FOREVER to scan S3
         $folder = $this->folder . '/' . $release->version;
         $known_folders[] = $release->version;
     } else {
         $folderName = $this->getReleaseFolder($this->folder, $release->version, $release->alias, $release->maturity);
         if ($folderName === false) {
             // Normally this shouldn't happen!
             return;
         } else {
             $known_folders[] = $folderName;
             $folder = $this->folder . '/' . $folderName;
         }
     }
     // Do we have a changelog?
     if (empty($release->notes)) {
         $changelog = $folder . '/CHANGELOG';
         $hasChangelog = false;
         $this_changelog = '';
         if ($useS3) {
             $s3 = AmazonS3::getInstance();
             $response = $s3->getObject(substr($changelog, 5));
             $hasChangelog = $response !== false;
             if ($hasChangelog) {
                 $this_changelog = $response;
             }
         } else {
             if (\JFile::exists($changelog)) {
                 $hasChangelog = true;
                 $this_changelog = @file_get_contents($changelog);
             }
         }
         if ($hasChangelog) {
             $first_changelog = array();
             $notes = $this->coloriseChangelog($this_changelog, $first_changelog);
             $release->notes = $notes;
             $release->save();
         }
     }
     $release->getRelations()->rebase($release);
     $known_items = array();
     if ($useS3) {
         $files = array();
         $everything = $this->_listS3Contents($folder);
         $dirLength = strlen($folder) - 5;
         if (count($everything)) {
             foreach ($everything as $path => $info) {
                 if (array_key_exists('size', $info) && substr($path, -1) != '/') {
                     if (substr($path, 0, $dirLength) == substr($folder, 5)) {
                         $path = substr($path, $dirLength);
                     }
                     $path = trim($path, '/');
                     $files[] = $path;
                 }
             }
         }
     } else {
         $files = \JFolder::files($folder);
     }
     if ($release->items->count()) {
         /** @var Items $item */
         foreach ($release->items as $item) {
             $known_items[] = basename($item->filename);
             if ($item->published && !in_array(basename($item->filename), $files)) {
                 $item->unpublish();
             }
             if (!$item->published && in_array(basename($item->filename), $files)) {
                 $item->publish();
             }
         }
     }
     if (!empty($files)) {
         foreach ($files as $file) {
             if (basename($file) == 'CHANGELOG') {
                 continue;
             }
             if (in_array($file, $known_items)) {
                 continue;
             }
             \JLoader::import('joomla.utilities.date');
             $jNow = new \JDate();
             $data = array('id' => 0, 'release_id' => $release->id, 'description' => '', 'type' => 'file', 'filename' => $folderName . '/' . $file, 'url' => '', 'groups' => $release->groups, 'hits' => '0', 'published' => '1', 'created' => $jNow->toSql(), 'access' => '1');
             // Before saving the item, call the onNewARSBleedingEdgeItem()
             // event of ars plugins so that they have the chance to modify
             // this information.
             // -- Load plugins
             \JLoader::import('joomla.plugin.helper');
             \JPluginHelper::importPlugin('ars');
             // -- Setup information data
             $infoData = array('folder' => $folder, 'file' => $file, 'release_id' => $release->id, 'release' => $release);
             // -- Trigger the plugin event
             $app = \JFactory::getApplication();
             $jResponse = $app->triggerEvent('onNewARSBleedingEdgeItem', array($infoData, $data));
             // -- Merge response
             if (is_array($jResponse)) {
                 foreach ($jResponse as $response) {
                     if (is_array($response)) {
                         $data = array_merge($data, $response);
                     }
                 }
             }
             if (isset($data['ignore'])) {
                 if ($data['ignore']) {
                     continue;
                 }
             }
             /** @var Items $table */
             $table = $this->container->factory->model('Items')->tmpInstance();
             $table->create($data);
         }
     }
     if (isset($table) && is_object($table) && method_exists($table, 'reorder')) {
         $db = $table->getDbo();
         $table->reorder($db->qn('release_id') . ' = ' . $db->q($release->id));
     }
 }
Ejemplo n.º 21
0
<?php

require_once WWW_DIR . "/lib/releases.php";
require_once WWW_DIR . "/lib/category.php";
require_once WWW_DIR . "/lib/groups.php";
require_once WWW_DIR . "/lib/genres.php";
require_once WWW_DIR . "/lib/nzb.php";
require_once WWW_DIR . "/lib/movie.php";
require_once WWW_DIR . "/lib/util.php";
$releases = new Releases();
$rc = new ReleaseComments();
$gen = new Genres();
$category = new Category();
$grp = new Groups();
$nzb = new NZB();
$movie = new Movie();
if ($page->site->apienabled != 1) {
    showApiError(910);
}
//
// api functions
//
$function = "s";
if (isset($_GET["t"])) {
    if ($_GET["t"] == "details" || $_GET["t"] == "d") {
        $function = "d";
    } elseif ($_GET["t"] == "comments" || $_GET["t"] == "comm") {
        $function = "co";
    } elseif ($_GET["t"] == "commentadd" || $_GET["t"] == "commadd") {
        $function = "ca";
    } elseif ($_GET["t"] == "get" || $_GET["t"] == "g") {
Ejemplo n.º 22
0
<?php

require_once "config.php";
$page = new AdminPage();
$releases = new Releases();
$num = isset($_GET["id"]) ? $releases->removeAnidbIdFromReleases($_GET["id"]) : 0;
$page->smarty->assign('numtv', $num);
$page->title = "Remove anidbID from Releases";
$page->content = $page->smarty->fetch('anidb-remove.tpl');
$page->render();
Ejemplo n.º 23
0
<?php

if (!$page->users->isLoggedIn()) {
    $page->show403();
}
if (isset($_GET["id"])) {
    $releases = new Releases(['Settings' => $page->settings]);
    $rc = new ReleaseComments();
    $re = new ReleaseExtra();
    $data = $releases->getByGuid($_GET["id"]);
    if (!$data) {
        $page->show404();
    }
    if ($page->isPostBack()) {
        $rc->addComment($data["id"], $data["gid"], $_POST["txtAddComment"], $page->users->currentUserId(), $_SERVER['REMOTE_ADDR']);
    }
    $nfo = $releases->getReleaseNfo($data["id"], false);
    $reVideo = $re->getVideo($data["id"]);
    $reAudio = $re->getAudio($data["id"]);
    $reSubs = $re->getSubs($data["id"]);
    $comments = $rc->getCommentsByGid($data["gid"]);
    $rage = '';
    if ($data["rageid"] != '') {
        $tvrage = new TvAnger();
        $rageinfo = $tvrage->getByRageID($data["rageid"]);
        if (count($rageinfo) > 0) {
            $seriesnames = $seriesdescription = $seriescountry = $seriesgenre = $seriesimg = $seriesid = array();
            foreach ($rageinfo as $r) {
                $seriesnames[] = $r['releasetitle'];
                if (!empty($r['description'])) {
                    $seriesdescription[] = $r['description'];
Ejemplo n.º 24
0
 /**
  * Perform cleanup of all items in arrays.
  */
 private function doClean()
 {
     $this->numnuked += count($this->cleanup['nuke']);
     $this->nummiscd += count($this->cleanup['misc']);
     if (!$this->echoonly) {
         $releases = new \Releases(['Settings' => $this->pdo]);
         foreach (array_keys($this->cleanup['nuke']) as $id) {
             $releases->delete($id);
         }
         if (count($this->cleanup['misc'])) {
             $sql = 'update releases set categoryid = ' . Category::CAT_MISC_OTHER . ' where categoryid != ' . Category::CAT_MISC_OTHER . ' and id in (' . implode(array_keys($this->cleanup['misc']), ',') . ')';
             $this->pdo->queryExec($sql);
         }
     }
     $this->cleanup = array('nuke' => array(), 'misc' => array());
 }
Ejemplo n.º 25
0
<?php

require_once "config.php";
require_once WWW_DIR . "/lib/adminpage.php";
require_once WWW_DIR . "/lib/releases.php";
$page = new AdminPage();
$releases = new Releases();
$num = 0;
if (isset($_GET["id"])) {
    $num = $releases->removeRageIdFromReleases($_GET["id"]);
}
$page->smarty->assign('numtv', $num);
$page->title = "Remove Rage Id from Releases";
$page->content = $page->smarty->fetch('rage-remove.tpl');
$page->render();
Ejemplo n.º 26
0
<?php

if (!$page->users->isLoggedIn()) {
    $page->show403();
}
if (!isset($_REQUEST["id"])) {
    $page->show404();
}
$r = new Releases(['Settings' => $page->settings]);
$rel = $r->getByGuid($_REQUEST["id"]);
if (!$rel) {
    print "No tv info";
} else {
    //print "<h3 class=\"tooltiphead\">episode info...</h3>\n";
    print "<ul>\n";
    if (isset($rel['tvtitle'])) {
        print "<li>" . htmlentities($rel["tvtitle"], ENT_QUOTES) . "</li>\n";
    }
    print "<li>Aired on " . date("F j, Y", strtotime($rel["tvairdate"])) . "</li>\n";
    print "</ul>";
    if ($rel["rageid"] > 0) {
        $t = new TvRage(['Settings' => $page->settings]);
        $rage = $t->getByRageID($rel["rageid"]);
        if (count($rage) > 0) {
            if ($rage[0]["imgdata"] != "") {
                print "<img class=\"shadow\" src=\"" . WWW_TOP . "/getimage?type=tvrage&amp;id=" . $rage[0]["id"] . "\" width=\"180\"/>";
            }
        }
    }
}
Ejemplo n.º 27
0
function create_guids($live, $delete = false)
{
    $pdo = new Settings();
    $consoletools = new ConsoleTools(['ColorCLI' => $pdo->log]);
    $timestart = TIME();
    $relcount = $deleted = $total = 0;
    $relrecs = false;
    if ($live == "true") {
        $relrecs = $pdo->queryDirect(sprintf("SELECT id, guid FROM releases WHERE nzbstatus = 1 AND nzb_guid IS NULL ORDER BY id DESC"));
    } else {
        if ($live == "limited") {
            $relrecs = $pdo->queryDirect(sprintf("SELECT id, guid FROM releases WHERE nzbstatus = 1 AND nzb_guid IS NULL ORDER BY id DESC LIMIT 10000"));
        }
    }
    if ($relrecs) {
        $total = $relrecs->rowCount();
    }
    if ($total > 0) {
        echo $pdo->log->header("Creating nzb_guids for " . number_format($total) . " releases.");
        $releases = new Releases(['Settings' => $pdo]);
        $nzb = new NZB($pdo);
        $releaseImage = new ReleaseImage($pdo);
        $reccnt = 0;
        if ($relrecs instanceof Traversable) {
            foreach ($relrecs as $relrec) {
                $reccnt++;
                $nzbpath = $nzb->NZBPath($relrec['guid']);
                if ($nzbpath !== false) {
                    $nzbfile = nzedb\utility\Utility::unzipGzipFile($nzbpath);
                    if ($nzbfile) {
                        $nzbfile = @simplexml_load_string($nzbfile);
                    }
                    if (!$nzbfile) {
                        if (isset($delete) && $delete == 'delete') {
                            //echo "\n".$nzb->NZBPath($relrec['guid'])." is not a valid xml, deleting release.\n";
                            $releases->deleteSingle(['g' => $relrec['guid'], 'i' => $relrec['id']], $nzb, $releaseImage);
                            $deleted++;
                        }
                        continue;
                    }
                    $binary_names = array();
                    foreach ($nzbfile->file as $file) {
                        $binary_names[] = $file["subject"];
                    }
                    if (count($binary_names) == 0) {
                        if (isset($delete) && $delete == 'delete') {
                            //echo "\n".$nzb->NZBPath($relrec['guid'])." has no binaries, deleting release.\n";
                            $releases->deleteSingle(['g' => $relrec['guid'], 'i' => $relrec['id']], $nzb, $releaseImage);
                            $deleted++;
                        }
                        continue;
                    }
                    asort($binary_names);
                    foreach ($nzbfile->file as $file) {
                        if ($file["subject"] == $binary_names[0]) {
                            $segment = $file->segments->segment;
                            $nzb_guid = md5($segment);
                            $pdo->queryExec("UPDATE releases set nzb_guid = " . $pdo->escapestring($nzb_guid) . " WHERE id = " . $relrec["id"]);
                            $relcount++;
                            $consoletools->overWritePrimary("Created: [" . $deleted . "] " . $consoletools->percentString($reccnt, $total) . " Time:" . $consoletools->convertTimer(TIME() - $timestart));
                            break;
                        }
                    }
                } else {
                    if (isset($delete) && $delete == 'delete') {
                        //echo $pdo->log->primary($nzb->NZBPath($relrec['guid']) . " does not have an nzb, deleting.");
                        $releases->deleteSingle(['g' => $relrec['guid'], 'i' => $relrec['id']], $nzb, $releaseImage);
                    }
                }
            }
        }
        if ($relcount > 0) {
            echo "\n";
        }
        echo $pdo->log->header("Updated " . $relcount . " release(s). This script ran for " . $consoletools->convertTime(TIME() - $timestart));
    } else {
        echo $pdo->log->info('Query time: ' . $consoletools->convertTime(TIME() - $timestart));
        exit($pdo->log->info("No releases are missing the guid."));
    }
}
require_once FS_ROOT . "/../../www/lib/nzb.php";
require_once FS_ROOT . "/../../www/lib/util.php";
require_once FS_ROOT . "/../../www/lib/nzbinfo.php";
require_once FS_ROOT . "/../../www/lib/category.php";
require_once FS_ROOT . "/../../www/lib/releases.php";
if (!empty($argc)) {
    echo "\n\n***WARNING*** : This method of importing is deprecated - you should use /misc/update_scripts/import.php\n\n\n";
    die;
}
$db = new DB();
$page = new AdminPage();
$nzb = new NZB();
$filestoprocess = array();
$browserpostednames = array();
$cat = new Category();
$releases = new Releases();
if ($page->isPostBack()) {
    $retval = "";
    //
    // Via browser, build an array of all the nzb files uploaded into php /tmp location
    //
    if (isset($_FILES["uploadedfiles"])) {
        foreach ($_FILES["uploadedfiles"]["error"] as $key => $error) {
            if ($error == UPLOAD_ERR_OK) {
                $tmp_name = $_FILES["uploadedfiles"]["tmp_name"][$key];
                $name = $_FILES["uploadedfiles"]["name"][$key];
                $filestoprocess[] = $tmp_name;
                $browserpostednames[$tmp_name] = $name;
            }
        }
    }
Ejemplo n.º 29
0
<?php

if (!$page->users->isLoggedIn()) {
    $page->show403();
}
$releases = new Releases();
$contents = new Contents();
$category = new Category();
$error = false;
// Array with all the possible poster wall types.
$startTypes = array('Books', 'Console', 'Movies', 'XXX', 'Audio', 'PC', 'TV');
// Array that will contain the poster wall types (the above array minus whatever they have disabled in admin).
$types = array();
// Get the names of all enabled parent categories.
$categories = $category->getEnabledParentNames();
// Loop through our possible ones and check if they are in the enabled categories.
if (count($categories) > 0) {
    foreach ($categories as $pType) {
        if (in_array($pType['title'], $startTypes)) {
            $types[] = $pType['title'];
        }
    }
} else {
    $error = "No categories are enabled!";
}
if (count($types) === 0) {
    $error = 'No categories enabled for the new poster wall. Possible choices are: ' . implode(', ', $startTypes) . '.';
}
if (!$error) {
    // Check if the user did not pass the required t parameter, set it to the first type.
    if (!isset($_REQUEST['t'])) {
Ejemplo n.º 30
0
<?php

$page = new AdminPage(true);
$releases = new Releases(['Settings' => $page->settings]);
$category = new Category(['Settings' => $page->settings]);
// Set the current action.
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
$id = isset($_REQUEST['id']) && is_array($_REQUEST['id']) ? $_REQUEST['id'] : '';
$page->smarty->assign('action', $action);
$page->smarty->assign('idArr', $id);
switch ($action) {
    case 'doedit':
    case 'edit':
        $success = false;
        if ($action == 'doedit') {
            $upd = $releases->updatemulti($_REQUEST["id"], $_REQUEST["category"], $_REQUEST["grabs"], $_REQUEST["rageid"], $_REQUEST["season"], $_REQUEST['imdbid']);
            if ($upd !== false) {
                $success = true;
            } else {
            }
        }
        $page->smarty->assign('success', $success);
        $page->smarty->assign('from', isset($_REQUEST['from']) ? $_REQUEST['from'] : '');
        $page->smarty->assign('catlist', $category->getForSelect());
        $page->content = $page->smarty->fetch('ajax_release-edit.tpl');
        echo $page->content;
        break;
    case 'dodelete':
        $is_guid = true;
        if (is_array($_GET['id'])) {
            if (is_numeric($_GET['id'][0])) {