diff --git a/www/admin.php b/www/admin.php index fed532e..d6fc6c0 100644 --- a/www/admin.php +++ b/www/admin.php @@ -7,7 +7,7 @@ send_headers([$style]); try{ $db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME . ';charset=utf8mb4', DBUSER, DBPASS, [PDO::ATTR_ERRMODE=>PDO::ERRMODE_WARNING, PDO::ATTR_PERSISTENT=>PERSISTENT]); }catch(PDOException $e){ - http_send_status(500); + http_response_code(500); die($I['nodb']); } asort($categories); diff --git a/www/onions.php b/www/onions.php index 2310bf7..cb60af9 100644 --- a/www/onions.php +++ b/www/onions.php @@ -25,7 +25,7 @@ require_once(__DIR__.'/../common_config.php'); try{ $db=new PDO('mysql:host=' . DBHOST . ';dbname=' . DBNAME . ';charset=utf8mb4', DBUSER, DBPASS, [PDO::ATTR_ERRMODE=>PDO::ERRMODE_WARNING, PDO::ATTR_PERSISTENT=>PERSISTENT]); }catch(PDOException $e){ - http_send_status(500); + http_response_code(500); } date_default_timezone_set('UTC'); //select output format @@ -65,6 +65,46 @@ function send_html(){ }else{ $_REQUEST['newpg']=0; } + $category=count($categories); + if(isset($_REQUEST['cat']) && $_REQUEST['cat']<(count($categories)+count($special)+1) && $_REQUEST['cat']>=0){ + settype($_REQUEST['cat'], 'int'); + $category=$_REQUEST['cat']; + } + $pages=1; + $admin_approval = ''; + if(REQUIRE_APPROVAL){ + $admin_approval = PREFIX . 'onions.approved = 1 AND'; + } + $category_count = []; + $cat=count($categories); + foreach($special as $name=>$query){ + if($name===$I['lastadded']){ + $category_count[$cat] = PER_PAGE; + }else{ + $category_count[$cat] = $db->query('SELECT COUNT(*) FROM ' . PREFIX . "onions WHERE $admin_approval $query;")->fetch(PDO::FETCH_NUM)[0]; + } + if($category==$cat){ + $pages=ceil($category_count[$cat]/PER_PAGE); + } + ++$cat; + } + $category_count[$cat] = $db->query('SELECT COUNT(*) FROM ' . PREFIX . 'phishing, ' . PREFIX . 'onions WHERE ' . "$admin_approval " . PREFIX . "onions.id=onion_id AND address!='' AND timediff<604800;")->fetch(PDO::FETCH_NUM)[0]; + $category_count['removed'] = $db->query('SELECT COUNT(*) FROM ' . PREFIX . "onions WHERE address='';")->fetch(PDO::FETCH_NUM)[0]; + if(REQUIRE_APPROVAL) { + $category_count['pending'] = $db->query( 'SELECT COUNT(*) FROM ' . PREFIX . "onions WHERE approved = 0 AND address!='';" )->fetch( PDO::FETCH_NUM )[0]; + $category_count['rejected'] = $db->query( 'SELECT COUNT(*) FROM ' . PREFIX . "onions WHERE approved = -1 AND address!='';" )->fetch( PDO::FETCH_NUM )[0]; + } + $stmt=$db->prepare('SELECT COUNT(*) FROM ' . PREFIX . "onions WHERE $admin_approval category=? AND address!='' AND id NOT IN (SELECT onion_id FROM " . PREFIX . 'phishing) AND timediff<604800;'); + foreach($categories as $cat=>$name){ + $stmt->execute([$cat]); + $category_count[$cat] = $stmt->fetch(PDO::FETCH_NUM)[0]; + if($category==$cat){ + $pages=ceil($category_count[$cat]/PER_PAGE); + } + } + if($_REQUEST['pg']>$pages){ + http_response_code(404); + } echo ''; echo "$I[title]"; echo ''; @@ -99,19 +139,11 @@ function send_html(){ $stmt=$db->prepare('SELECT description, category FROM ' . PREFIX . 'onions WHERE md5sum=?;'); $stmt->execute([$md5]); if($desc=$stmt->fetch(PDO::FETCH_ASSOC)){ - $category=$desc['category']; echo str_replace('
', "\n", $desc['description']); } } } echo '

'; - if(isset($_REQUEST['cat']) && $_REQUEST['cat']<(count($categories)+count($special)+1) && $_REQUEST['cat']>=0){ - settype($_REQUEST['cat'], 'int'); - $category=$_REQUEST['cat']; - } - if(!isset($category)){ - $category=count($categories); - } echo "