diff --git a/app/Console/Commands/Test.php b/app/Console/Commands/Test.php
index 766d5ecd..15a45733 100644
--- a/app/Console/Commands/Test.php
+++ b/app/Console/Commands/Test.php
@@ -18,6 +18,7 @@ use App\Repositories\AttendanceRepository;
use App\Repositories\ExamRepository;
use App\Repositories\HitAndRunRepository;
use App\Repositories\SearchBoxRepository;
+use App\Repositories\TagRepository;
use App\Repositories\TorrentRepository;
use App\Repositories\UserRepository;
use Carbon\Carbon;
@@ -62,11 +63,7 @@ class Test extends Command
*/
public function handle()
{
- $tzlist = \DateTimeZone::listIdentifiers(\DateTimeZone::ALL);
- foreach($tzlist as $value)
- {
- echo $value ."\n";
- }
+
}
}
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
index e96728c1..3ae4f597 100644
--- a/database/seeders/DatabaseSeeder.php
+++ b/database/seeders/DatabaseSeeder.php
@@ -41,5 +41,6 @@ class DatabaseSeeder extends Seeder
$this->call(TeamsTableSeeder::class);
$this->call(TorrentsStateTableSeeder::class);
$this->call(UploadspeedTableSeeder::class);
+ $this->call(TagsTableSeeder::class);
}
}
diff --git a/database/seeders/TagsTableSeeder.php b/database/seeders/TagsTableSeeder.php
new file mode 100644
index 00000000..6b3a8201
--- /dev/null
+++ b/database/seeders/TagsTableSeeder.php
@@ -0,0 +1,89 @@
+delete();
+
+ \DB::table('tags')->insert(array (
+ 0 =>
+ array (
+ 'id' => 1,
+ 'name' => '禁转',
+ 'color' => '#ff0000',
+ 'priority' => 7,
+ 'created_at' => '2022-03-10 01:46:44',
+ 'updated_at' => '2022-03-10 01:46:44',
+ ),
+ 1 =>
+ array (
+ 'id' => 2,
+ 'name' => '首发',
+ 'color' => '#8F77B5',
+ 'priority' => 6,
+ 'created_at' => '2022-03-10 01:46:44',
+ 'updated_at' => '2022-03-10 01:46:44',
+ ),
+ 2 =>
+ array (
+ 'id' => 3,
+ 'name' => '官方',
+ 'color' => '#0000ff',
+ 'priority' => 5,
+ 'created_at' => '2022-03-10 01:46:44',
+ 'updated_at' => '2022-03-10 01:46:44',
+ ),
+ 3 =>
+ array (
+ 'id' => 4,
+ 'name' => 'DIY',
+ 'color' => '#46d5ff',
+ 'priority' => 4,
+ 'created_at' => '2022-03-10 01:46:44',
+ 'updated_at' => '2022-03-10 01:46:44',
+ ),
+ 4 =>
+ array (
+ 'id' => 5,
+ 'name' => '国语',
+ 'color' => '#6a3906',
+ 'priority' => 3,
+ 'created_at' => '2022-03-10 01:46:44',
+ 'updated_at' => '2022-03-10 01:46:44',
+ ),
+ 5 =>
+ array (
+ 'id' => 6,
+ 'name' => '中字',
+ 'color' => '#006400',
+ 'priority' => 2,
+ 'created_at' => '2022-03-10 01:46:44',
+ 'updated_at' => '2022-03-10 01:46:44',
+ ),
+ 6 =>
+ array (
+ 'id' => 7,
+ 'name' => 'HDR',
+ 'color' => '#38b03f',
+ 'priority' => 1,
+ 'created_at' => '2022-03-10 01:46:44',
+ 'updated_at' => '2022-03-10 01:46:44',
+ ),
+ ));
+
+
+ }
+}
\ No newline at end of file
diff --git a/nexus/Client/Client.php b/nexus/Client/Client.php
deleted file mode 100644
index 09cc3952..00000000
--- a/nexus/Client/Client.php
+++ /dev/null
@@ -1,463 +0,0 @@
- [
- 'table' => 'agent_allowed_family',
- 'table_columns' => [
- 'id', 'family', 'start_name',
-// 'peer_id_pattern', 'peer_id_match_num', 'peer_id_matchtype', 'peer_id_start',
- 'agent_pattern', 'agent_match_num', 'agent_matchtype', 'agent_start',
- ],
- 'form_fields' => [
- 'family', 'start_name',
- 'peer_id_pattern', 'peer_id_match_num', 'peer_id_matchtype', 'peer_id_start',
- 'agent_pattern', 'agent_match_num', 'agent_matchtype', 'agent_start',
- 'exception', 'allowhttps', 'comment',
- ],
- ],
- ];
-
- private $type;
-
- public function __construct($type)
- {
- if (!isset(self::$types[$type])) {
- throw new \InvalidArgumentException("Invalid type: $type");
- }
- $this->type = $type;
- }
-
- public function getTypeHuman($type)
- {
- global $lang_fields;
- $map = [
- self::TYPE_TEXT => $lang_fields['field_type_text'],
- self::TYPE_TEXTAREA => $lang_fields['field_type_textarea'],
- self::TYPE_RADIO => $lang_fields['field_type_radio'],
- self::TYPE_CHECKBOX => $lang_fields['field_type_checkbox'],
- self::TYPE_SELECT => $lang_fields['field_type_select'],
- self::TYPE_IMAGE => $lang_fields['field_type_image'],
- ];
- return $map[$type] ?? '';
- }
-
- public function getTypeRadioOptions()
- {
- $out = [];
- foreach (self::$types as $key => $value) {
- $out[$key] = sprintf('%s(%s)', $value['text'], $this->getTypeHuman($key));
- }
- return $out;
- }
-
-
- public function radio($name, $options, $current = null)
- {
- $arr = [];
- foreach ($options as $value => $label) {
- $arr[] = sprintf(
- '',
- $name, $value, (string)$current === (string)$value ? ' checked' : '', $label
- );
- }
- return implode('', $arr);
- }
-
- function buildFieldForm(array $row = [])
- {
- global $lang_fields, $lang_functions;
- $trName = tr($lang_fields['col_name'] . '*', ' ' . $lang_fields['col_name_help'], 1, '', true);
- $trLabel = tr($lang_fields['col_label'] . '*', '', 1, '', true);
- $trType = tr($lang_fields['col_type'] . '*', $this->radio('type', $this->getTypeRadioOptions(), $row['type'] ?? null), 1, '', true);
- $trRequired = tr($lang_fields['col_required'] . '*', $this->radio('required', ['0' => $lang_functions['text_no'], '1' => $lang_functions['text_yes']], $row['required'] ?? null), 1, '', true);
- $trHelp = tr($lang_fields['col_help'], '', 1, '', true);
- $trOptions = tr($lang_fields['col_options'], '
' . $lang_fields['col_options_help'], 1, '', true);
- $trIsSingleRow = tr($lang_fields['col_is_single_row'] . '*', $this->radio('is_single_row', ['0' => $lang_functions['text_no'], '1' => $lang_functions['text_yes']], $row['is_single_row'] ?? null), 1, '', true);
- $id = $row['id'] ?? 0;
- $form = <<
-
-
-
-HTML;
- return $form;
- }
-
- private function getHeader()
- {
- global $lang_clients;
- $header = [];
- foreach (self::$types[$this->type]['table_columns'] as $column) {
- $header[$column] = $lang_clients['col_' . $column] ?? ucfirst($column);
- }
- $header['action'] = $lang_clients['col_action'];
- return $header;
- }
-
- function buildClientTable()
- {
- global $lang_clients, $lang_functions;
- $tableName = self::$types[$this->type]['table'];
- $perPage = 10;
- $total = get_row_count($tableName);
- list($paginationTop, $paginationBottom, $limit) = pager($perPage, $total, "?");
- $sql = "select * from $tableName order by family asc $limit";
- $res = sql_query($sql);
- $header = $this->getHeader();
- $rows = [];
- while ($row = mysql_fetch_assoc($res)) {
- $row['action'] = sprintf(
- "%s | %s",
- $row['id'], $lang_clients['js_sure_to_delete_this'], $lang_clients['text_delete'], $row['id'], $lang_clients['text_edit']
- );
- $rows[] = $row;
- }
- $head = <<{$lang_clients['client_management']}
-
-HEAD;
- $table = $this->buildTable($header, $rows);
- return $head . $table . $paginationBottom;
- }
-
- public function save($data)
- {
- global $lang_functions, $lang_fields;
- $attributes = [];
- if (empty($data['name'])) {
- throw new \InvalidArgumentException("{$lang_fields['col_name']} {$lang_functions['text_required']}");
- }
- if (!preg_match('/^\w+$/', $data['name'])) {
- throw new \InvalidArgumentException("{$lang_fields['col_name']} {$lang_functions['text_invalid']}");
- }
- $attributes['name'] = $data['name'];
-
- if (empty($data['label'])) {
- throw new \InvalidArgumentException("{$lang_fields['col_label']} {$lang_functions['text_required']}");
- }
- $attributes['label'] = $data['label'];
-
- if (empty($data['type'])) {
- throw new \InvalidArgumentException("{$lang_fields['col_type']} {$lang_functions['text_required']}");
- }
- if (!isset(self::$types[$data['type']])) {
- throw new \InvalidArgumentException("{$lang_fields['col_type']} {$lang_functions['text_invalid']}");
- }
- $attributes['type'] = $data['type'];
-
- if (!isset($data['required'])) {
- throw new \InvalidArgumentException("{$lang_fields['col_required']} {$lang_functions['text_required']}");
- }
- if (!in_array($data['required'], ["0", "1"], true)) {
- throw new \InvalidArgumentException("{$lang_fields['col_name']} {$lang_functions['text_invalid']}");
- }
- $attributes['required'] = $data['required'];
-
- if (!isset($data['is_single_row'])) {
- throw new \InvalidArgumentException("{$lang_fields['col_is_single_row']} {$lang_functions['text_required']}");
- }
- if (!in_array($data['is_single_row'], ["0", "1"], true)) {
- throw new \InvalidArgumentException("{$lang_fields['col_is_single_row']} {$lang_functions['text_invalid']}");
- }
- $attributes['is_single_row'] = $data['is_single_row'];
-
- $attributes['help'] = $data['help'] ?? '';
- $attributes['options'] = trim($data['options'] ?? '');
- $now = date('Y-m-d H:i:s');
- $attributes['updated_at'] = $now;
- $table = 'torrents_custom_fields';
- if (!empty($data['id'])) {
- $result = DB::update($table, $attributes, "id = " . sqlesc($data['id']));
- } else {
- $attributes['created_at'] = $now;
- $result = DB::insert($table, $attributes);
- }
- return $result;
- }
-
-
- public function buildFieldCheckbox($name, $current = [])
- {
- $sql = 'select * from torrents_custom_fields';
- $res = sql_query($sql);
- if (!is_array($current)) {
- $current = explode(',', $current);
- }
- $checkbox = '';
- while ($row = mysql_fetch_assoc($res)) {
- $checkbox .= sprintf(
- '',
- $name, $row['id'], in_array($row['id'], $current) ? ' checked' : '', "{$row['name']}[{$row['label']}]"
- );
- }
- $checkbox .= '';
- return $checkbox;
-
- }
-
- public function renderOnUploadPage($torrentId = 0)
- {
- global $browsecatmode;
- $searchBox = DB::getOne('searchbox', "id = $browsecatmode");
- if (empty($searchBox)) {
- throw new \RuntimeException("Invalid search box: $browsecatmode");
- }
- $customValues = $this->listTorrentCustomField($torrentId);
- $sql = sprintf('select * from torrents_custom_fields where id in (%s)', $searchBox['custom_fields'] ?: 0);
- $res = sql_query($sql);
- $html = '';
- while ($row = mysql_fetch_assoc($res)) {
- $name = "custom_fields[{$row['id']}]";
- $currentValue = $customValues[$row['id']]['custom_field_value'] ?? '';
- if ($row['type'] == self::TYPE_TEXT) {
- $html .= tr($row['label'], sprintf('', $name, $currentValue), 1);
- } elseif ($row['type'] == self::TYPE_TEXTAREA) {
- $html .= tr($row['label'], sprintf('', $name, $currentValue), 1);
- } elseif ($row['type'] == self::TYPE_RADIO || $row['type'] == self::TYPE_CHECKBOX) {
- if ($row['type'] == self::TYPE_CHECKBOX) {
- $name .= '[]';
- }
- $part = "";
- foreach (preg_split('/[\r\n]+/', trim($row['options'])) as $option) {
- if (empty($option) || ($pos = strpos($option, '|')) === false) {
- continue;
- }
- $value = substr($option, 0, $pos);
- $label = substr($option, $pos + 1);
- $checked = "";
- if ($row['type'] == self::TYPE_RADIO && (string)$currentValue === (string)$value) {
- $checked = " checked";
- }
- if ($row['type'] == self::TYPE_CHECKBOX && in_array($value, (array)$currentValue)) {
- $checked = " checked";
- }
- $part .= sprintf(
- '',
- $row['type'], $name, $value, $checked, $label
- );
- }
- $html .= tr($row['label'], $part, 1);
- } elseif ($row['type'] == self::TYPE_SELECT) {
- $part = '';
- $html .= tr($row['label'], $part, 1);
- } elseif ($row['type'] == self::TYPE_IMAGE) {
- $callbackFunc = "preview_custom_field_image_" . $row['id'];
- $iframeId = "iframe_$callbackFunc";
- $inputId = "input_$callbackFunc";
- $imgId = "attach" . $row['id'];
- $previewBoxId = "preview_$callbackFunc";
- $y = '';
- $y .= sprintf('', $inputId, $name, $currentValue);
- $y .= '';
- if (!empty($currentValue)) {
- if (substr($currentValue, 0, 4) == 'http') {
- $y .= formatImg($currentValue, true, 700, 0, $imgId);
- } else {
- $y .= format_comment($currentValue);
- }
- }
- $y .= '
';
- $y .= <<
- function {$callbackFunc}(delkey, url)
- {
- var previewBox = $('$previewBoxId')
- var existsImg = $('$imgId')
- var input = $('$inputId')
- if (existsImg) {
- previewBox.removeChild(existsImg)
- input.value = ''
- }
- var img = document.createElement('img')
- img.src=url
- img.setAttribute('onload', 'Scale(this, 700, 0);')
- img.setAttribute('onclick', 'Preview(this);')
- input.value = '[attach]' + delkey + '[/attach]'
- img.id='$imgId'
- previewBox.appendChild(img)
- }
-
-JS;
- $html .= tr($row['label'], $y, 1);
- }
- }
- return $html;
- }
-
- public function listTorrentCustomField($torrentId, $searchBoxId = 0)
- {
- global $browsecatmode;
- if ($searchBoxId <= 0) {
- $searchBoxId = $browsecatmode;
- }
- //suppose torrentId is array
- $isArray = true;
- $torrentIdArr = $torrentId;
- if (!is_array($torrentId)) {
- $isArray = false;
- $torrentIdArr = [$torrentId];
- }
- $torrentIdStr = implode(',', $torrentIdArr);
- $res = sql_query("select f.*, v.custom_field_value, v.torrent_id from torrents_custom_field_values v inner join torrents_custom_fields f on v.custom_field_id = f.id inner join searchbox box on box.id = $searchBoxId and find_in_set(f.id, box.custom_fields) where torrent_id in ($torrentIdStr)");
- $values = [];
- $result = [];
- while ($row = mysql_fetch_assoc($res)) {
- $typeInfo = self::$types[$row['type']];
- if ($typeInfo['has_option']) {
- $options = preg_split('/[\r\n]+/', trim($row['options']));
- $optionsArr = [];
- foreach ($options as $option) {
- $pos = strpos($option, '|');
- $value = substr($option, 0, $pos);
- $label = substr($option, $pos + 1);
- $optionsArr[$value] = $label;
- }
- $row['options'] = $optionsArr;
- }
- $result[$row['torrent_id']][$row['id']] = $row;
- if ($typeInfo['is_value_multiple']) {
- $values[$row['torrent_id']][$row['id']][] = $row['custom_field_value'];
- } else {
- $values[$row['torrent_id']][$row['id']] = $row['custom_field_value'];
- }
- }
- foreach ($result as $tid => &$fields) {
- foreach ($fields as &$field) {
- $field['custom_field_value'] = $values[$tid][$field['id']];
- }
- }
- return $isArray ? $result : ($result[$torrentId] ?? []);
- }
-
- public function renderOnTorrentDetailsPage($torrentId)
- {
- global $browsecatmode;
- $displayName = get_searchbox_value($browsecatmode, 'custom_fields_display_name');
- $display = get_searchbox_value($browsecatmode, 'custom_fields_display');
- $customFields = $this->listTorrentCustomField($torrentId);
-// dd($displayName, $display, $customFields);
- $mixedRowContent = nl2br($display);
- $rowByRowHtml = '';
- foreach ($customFields as $field) {
- $content = $this->formatCustomFieldValue($field);
- $mixedRowContent = str_replace("<%{$field['name']}.label%>", $field['label'], $mixedRowContent);
- $mixedRowContent = str_replace("<%{$field['name']}.value%>", $content, $mixedRowContent);
- if ($field['is_single_row']) {
- $rowByRowHtml .= tr($field['label'], $content, 1);
- }
- }
- $result = $rowByRowHtml;
- if (!empty($mixedRowContent)) {
- $result .= tr($displayName, $mixedRowContent, 1);
- }
- return $result;
- }
-
-
-
- protected function formatCustomFieldValue(array $customFieldWithValue)
- {
- $result = '';
- $fieldValue = $customFieldWithValue['custom_field_value'];
- switch ($customFieldWithValue['type']) {
- case self::TYPE_TEXT:
- case self::TYPE_TEXTAREA:
- $result .= format_comment($fieldValue);
- break;
- case self::TYPE_IMAGE:
- if (substr($fieldValue, 0, 4) == 'http') {
- $result .= formatImg($fieldValue, true, 700, 0, "attach{$customFieldWithValue['id']}");
- } else {
- $result .= format_comment($fieldValue);
- }
- break;
- case self::TYPE_RADIO:
- case self::TYPE_CHECKBOX:
- case self::TYPE_SELECT;
- $fieldContent = [];
- foreach ((array)$fieldValue as $item) {
- $fieldContent[] = $customFieldWithValue['options'][$item] ?? '';
- }
- $result .= implode(' ', $fieldContent);
- break;
- default:
- break;
- }
- return $result;
- }
-
- public function prepareTorrents(array $torrentIdArr)
- {
- $customFieldValues = $this->listTorrentCustomField($torrentIdArr);
- $result = [];
- foreach ($customFieldValues as $tid => &$customFields) {
- foreach ($customFields as &$field) {
- $field['custom_field_value_formatted'] = $this->formatCustomFieldValue($field);
- $result[$tid][$field['name']] = $field;
- }
- }
- $this->preparedTorrentCustomFieldValues = $result;
- }
-
- public function getPreparedTorrent($torrentId = null, $fieldName = null)
- {
- if (is_null($torrentId)) {
- return $this->preparedTorrentCustomFieldValues;
- }
- if (is_null($fieldName)) {
- return $this->preparedTorrentCustomFieldValues[$torrentId] ?? [];
- }
- return $this->preparedTorrentCustomFieldValues[$torrentId][$fieldName] ?? '';
- }
-
-
-
-
-}
diff --git a/nexus/Install/install/install.php b/nexus/Install/install/install.php
index 352270f7..e8dc9333 100644
--- a/nexus/Install/install/install.php
+++ b/nexus/Install/install/install.php
@@ -167,9 +167,8 @@ if (!empty($error)) {
} elseif ($currentStep == 2) {
echo $install->renderTable($header, $tableRows);
echo $install->renderForm($envFormControls);
-
} elseif ($currentStep == 3) {
- echo 'The following new table will be created
';
+ echo 'The following tables will be created
';
if (empty($shouldCreateTable)) {
echo 'Congratulations, all the required tables have been created!
';
} else {
@@ -181,7 +180,7 @@ if (!empty($error)) {
echo sprintf('This step will merge %s to %s, then insert into database', $tableRows[1]['label'], $tableRows[0]['label']);
echo '';
} elseif ($currentStep == 5) {
- echo $install->renderForm($userFormControls, '1/3', '1/4', '3/4');
+ echo $install->renderForm($userFormControls, '1/2', '1/4', '3/4');
} elseif ($currentStep > $maxStep) {
echo 'Congratulations, everything is ready!
';
echo 'For questions, consult the installation log at: ' . $install->getLogFile() . '
';
diff --git a/public/clients.php b/public/clients.php
deleted file mode 100644
index cf6997f0..00000000
--- a/public/clients.php
+++ /dev/null
@@ -1,58 +0,0 @@
-buildClientTable();
- echo $r;
- stdfoot();
-} elseif ($action == 'add') {
- stdhead($lang_clients['field_management']." - ".$lang_clients['text_add']);
- begin_main_frame();
- echo $client->buildFieldForm();
-} elseif ($action == 'submit') {
- try {
- $result = $client->save($_REQUEST);
- nexus_redirect('clients.php?action=view');
- } catch (\Exception $e) {
- stderr($lang_clients['field_management'], $e->getMessage());
- }
-} elseif ($action == 'edit') {
- $id = intval($_GET['id'] ?? 0);
- if ($id == 0) {
- stderr($lang_clients['field_management'], "Invalid id");
- }
- $sql = "select * from torrents_custom_fields where id = $id";
- $res = sql_query($sql);
- $row = mysql_fetch_assoc($res);
- if (empty($row)) {
- stderr('', 'Invalid id');
- }
- stdhead($lang_clients['field_management']." - ".$lang_clients['text_edit']);
- begin_main_frame();
- echo $client->buildFieldForm($row);
-} elseif ($action == 'del') {
- $id = intval($_GET['id'] ?? 0);
- if ($id == 0) {
- stderr($lang_clients['field_management'], "Invalid id");
- }
- $sql = "delete from torrents_custom_fields where id = $id";
- $res = sql_query($sql);
- nexus_redirect('clients.php?action=view');
-}
-
-
-
diff --git a/public/download.php b/public/download.php
index 26af1b94..cff40831 100644
--- a/public/download.php
+++ b/public/download.php
@@ -80,11 +80,16 @@ $base_announce_url = $trackerSchemaAndHost['base_announce_url'];
$res = sql_query("SELECT torrents.name, torrents.filename, torrents.save_as, torrents.size, torrents.owner, torrents.banned, categories.mode as search_box_id FROM torrents left join categories on torrents.category = categories.id WHERE torrents.id = ".sqlesc($id)) or sqlerr(__FILE__, __LINE__);
$row = mysql_fetch_assoc($res);
-$fn = ROOT_PATH . "$torrent_dir/$id.torrent";
+if (!$row) {
+ do_log("[TORRENT_NOT_EXISTS] $id", 'error');
+ httperr();
+}
+$fn = getFullDirectory("$torrent_dir/$id.torrent");
if ($CURUSER['downloadpos']=="no") {
permissiondenied();
}
-if (!$row || !is_file($fn) || !is_readable($fn)) {
+if (!is_file($fn) || !is_readable($fn)) {
+ do_log("[TORRENT_NOT_READABLE] $fn",'error');
httperr();
}
if (($row['banned'] == 'yes' && get_user_class() < $seebanned_class) || !can_access_torrent($row)) {
diff --git a/public/login.php b/public/login.php
index e1620f69..6f2aa983 100644
--- a/public/login.php
+++ b/public/login.php
@@ -93,13 +93,13 @@ if ($smtptype != 'none'){
-
+
-
| \n");
-print("
\n");
+print("
\n");
print(" |
|
");
diff --git a/public/torrents.php b/public/torrents.php
index eb5cf0c3..b577ee55 100644
--- a/public/torrents.php
+++ b/public/torrents.php
@@ -884,10 +884,10 @@ if ($count)
list($pagertop, $pagerbottom, $limit) = pager($torrentsperpage, $count, "?" . $addparam);
if ($allsec == 1 || $enablespecial != 'yes'){
- $query = "SELECT torrents.id, torrents.sp_state, torrents.promotion_time_type, torrents.promotion_until, torrents.banned, torrents.picktype, torrents.pos_state, torrents.category, torrents.source, torrents.medium, torrents.codec, torrents.standard, torrents.processing, torrents.team, torrents.audiocodec, torrents.leechers, torrents.seeders, torrents.name, torrents.small_descr, torrents.times_completed, torrents.size, torrents.added, torrents.comments,torrents.anonymous,torrents.owner,torrents.url,torrents.cache_stamp,torrents.pt_gen,torrents.tags,torrents.hr FROM torrents ".($search_area == 3 || $column == "owner" ? "LEFT JOIN users ON torrents.owner = users.id " : "")." $tagFilter $where $orderby $limit";
+ $query = "SELECT torrents.id, torrents.sp_state, torrents.promotion_time_type, torrents.promotion_until, torrents.banned, torrents.picktype, torrents.pos_state, torrents.category, torrents.source, torrents.medium, torrents.codec, torrents.standard, torrents.processing, torrents.team, torrents.audiocodec, torrents.leechers, torrents.seeders, torrents.name, torrents.small_descr, torrents.times_completed, torrents.size, torrents.added, torrents.comments,torrents.anonymous,torrents.owner,torrents.url,torrents.cache_stamp,torrents.pt_gen,torrents.hr FROM torrents ".($search_area == 3 || $column == "owner" ? "LEFT JOIN users ON torrents.owner = users.id " : "")." $tagFilter $where $orderby $limit";
}
else{
- $query = "SELECT torrents.id, torrents.sp_state, torrents.promotion_time_type, torrents.promotion_until, torrents.banned, torrents.picktype, torrents.pos_state, torrents.category, torrents.source, torrents.medium, torrents.codec, torrents.standard, torrents.processing, torrents.team, torrents.audiocodec, torrents.leechers, torrents.seeders, torrents.name, torrents.small_descr, torrents.times_completed, torrents.size, torrents.added, torrents.comments,torrents.anonymous,torrents.owner,torrents.url,torrents.cache_stamp,torrents.pt_gen,torrents.tags,torrents.hr FROM torrents ".($search_area == 3 || $column == "owner" ? "LEFT JOIN users ON torrents.owner = users.id " : "")." LEFT JOIN categories ON torrents.category=categories.id $tagFilter $where $orderby $limit";
+ $query = "SELECT torrents.id, torrents.sp_state, torrents.promotion_time_type, torrents.promotion_until, torrents.banned, torrents.picktype, torrents.pos_state, torrents.category, torrents.source, torrents.medium, torrents.codec, torrents.standard, torrents.processing, torrents.team, torrents.audiocodec, torrents.leechers, torrents.seeders, torrents.name, torrents.small_descr, torrents.times_completed, torrents.size, torrents.added, torrents.comments,torrents.anonymous,torrents.owner,torrents.url,torrents.cache_stamp,torrents.pt_gen,torrents.hr FROM torrents ".($search_area == 3 || $column == "owner" ? "LEFT JOIN users ON torrents.owner = users.id " : "")." LEFT JOIN categories ON torrents.category=categories.id $tagFilter $where $orderby $limit";
}
$res = sql_query($query);