/** * Delete unwanted releases based on admin settings. * This deletes releases based on group. * * @param int|string $groupID (optional) * * @void * @access public */ public function deletedReleasesByGroup($groupID = '') { $startTime = time(); $minSizeDeleted = $maxSizeDeleted = $minFilesDeleted = 0; if ($this->echoCLI) { echo $this->pdo->log->header("Process Releases -> Delete releases smaller/larger than minimum size/file count from group/site setting."); } if ($groupID == '') { $groupIDs = $this->groups->getActiveIDs(); } else { $groupIDs = [['id' => $groupID]]; } $maxSizeSetting = $this->pdo->getSetting('maxsizetoformrelease'); $minSizeSetting = $this->pdo->getSetting('minsizetoformrelease'); $minFilesSetting = $this->pdo->getSetting('minfilestoformrelease'); foreach ($groupIDs as $groupID) { $releases = $this->pdo->queryDirect(sprintf("\n\t\t\t\t\tSELECT SQL_NO_CACHE r.guid, r.id\n\t\t\t\t\tFROM releases r\n\t\t\t\t\tINNER JOIN groups g ON g.id = r.group_id\n\t\t\t\t\tWHERE r.group_id = %d\n\t\t\t\t\tAND greatest(IFNULL(g.minsizetoformrelease, 0), %d) > 0\n\t\t\t\t\tAND r.size < greatest(IFNULL(g.minsizetoformrelease, 0), %d)", $groupID['id'], $minSizeSetting, $minSizeSetting)); if ($releases instanceof \Traversable) { foreach ($releases as $release) { $this->releases->deleteSingle(['g' => $release['guid'], 'i' => $release['id']], $this->nzb, $this->releaseImage); $minSizeDeleted++; } } if ($maxSizeSetting > 0) { $releases = $this->pdo->queryDirect(sprintf(' SELECT SQL_NO_CACHE id, guid FROM releases WHERE group_id = %d AND size > %d', $groupID['id'], $maxSizeSetting)); if ($releases instanceof \Traversable) { foreach ($releases as $release) { $this->releases->deleteSingle(['g' => $release['guid'], 'i' => $release['id']], $this->nzb, $this->releaseImage); $maxSizeDeleted++; } } } $releases = $this->pdo->queryDirect(sprintf("\n\t\t\t\t\tSELECT SQL_NO_CACHE r.id, r.guid\n\t\t\t\t\tFROM releases r\n\t\t\t\t\tINNER JOIN groups g ON g.id = r.group_id\n\t\t\t\t\tWHERE r.group_id = %d\n\t\t\t\t\tAND greatest(IFNULL(g.minfilestoformrelease, 0), %d) > 0\n\t\t\t\t\tAND r.totalpart < greatest(IFNULL(g.minfilestoformrelease, 0), %d)", $groupID['id'], $minFilesSetting, $minFilesSetting)); if ($releases instanceof \Traversable) { foreach ($releases as $release) { $this->releases->deleteSingle(['g' => $release['guid'], 'i' => $release['id']], $this->nzb, $this->releaseImage); $minFilesDeleted++; } } } if ($this->echoCLI) { $this->pdo->log->doEcho($this->pdo->log->primary('Deleted ' . ($minSizeDeleted + $maxSizeDeleted + $minFilesDeleted) . ' releases: ' . PHP_EOL . $minSizeDeleted . ' smaller than, ' . $maxSizeDeleted . ' bigger than, ' . $minFilesDeleted . ' with less files than site/groups setting in: ' . $this->consoleTools->convertTime(time() - $startTime)), true); } }