Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.51 KB | None | 0 0
  1. <?php
  2.  
  3. require_once("config.php");
  4. require_once(WWW_DIR."/lib/framework/db.php");
  5.  
  6. class Category
  7. {
  8. const CAT_GAME_NDS = 1010;
  9. const CAT_GAME_PSP = 1020;
  10. const CAT_GAME_WII = 1030;
  11. const CAT_GAME_XBOX = 1040;
  12. const CAT_GAME_XBOX360 = 1050;
  13. const CAT_GAME_WIIWARE = 1060;
  14. const CAT_GAME_XBOX360DLC = 1070;
  15. const CAT_GAME_PS3 = 1080;
  16. const CAT_MOVIE_FOREIGN = 2010;
  17. const CAT_MOVIE_OTHER = 2020;
  18. const CAT_MOVIE_SD = 2030;
  19. const CAT_MOVIE_HD = 2040;
  20. const CAT_MUSIC_MP3 = 3010;
  21. const CAT_MUSIC_VIDEO = 3020;
  22. const CAT_MUSIC_AUDIOBOOK = 3030;
  23. const CAT_MUSIC_LOSSLESS = 3040;
  24. const CAT_PC_0DAY = 4010;
  25. const CAT_PC_ISO = 4020;
  26. const CAT_PC_MAC = 4030;
  27. const CAT_PC_PHONE = 4040;
  28. const CAT_PC_GAMES = 4050;
  29. const CAT_TV_FOREIGN = 5020;
  30. const CAT_TV_SD = 5030;
  31. const CAT_TV_HD = 5040;
  32. const CAT_TV_OTHER = 5050;
  33. const CAT_TV_SPORT = 5060;
  34. const CAT_XXX_DVD = 6010;
  35. const CAT_XXX_WMV = 6020;
  36. const CAT_XXX_XVID = 6030;
  37. const CAT_XXX_X264 = 6040;
  38. const CAT_MISC = 7010;
  39. const CAT_MISC_EBOOK = 7020;
  40. const CAT_MISC_COMICS = 7030;
  41.  
  42. const CAT_PARENT_GAME = 1000;
  43. const CAT_PARENT_MOVIE = 2000;
  44. const CAT_PARENT_MUSIC = 3000;
  45. const CAT_PARENT_PC = 4000;
  46. const CAT_PARENT_TV = 5000;
  47. const CAT_PARENT_XXX = 6000;
  48. const CAT_PARENT_MISC = 7000;
  49.  
  50. const STATUS_INACTIVE = 0;
  51. const STATUS_ACTIVE = 1;
  52.  
  53. public function get($activeonly=false, $excludedcats=array())
  54. {
  55. $db = new DB();
  56.  
  57. $exccatlist = "";
  58. if (count($excludedcats) > 0)
  59. $exccatlist = " and c.ID not in (".implode(",", $excludedcats).")";
  60.  
  61. $act = "";
  62. if ($activeonly)
  63. $act = sprintf(" where c.status = %d %s ", Category::STATUS_ACTIVE, $exccatlist ) ;
  64.  
  65. return $db->query("select c.ID, concat(cp.title, ' > ',c.title) as title, cp.ID as parentID, c.status from category c inner join category cp on cp.ID = c.parentID ".$act);
  66. }
  67.  
  68. public function isParent($cid)
  69. {
  70. $db = new DB();
  71. $ret = $db->queryOneRow(sprintf("select * from category where ID = %d and parentID is null", $cid));
  72. if ($ret)
  73. return true;
  74. else
  75. return false;
  76. }
  77.  
  78. public function getFlat($activeonly=false)
  79. {
  80. $db = new DB();
  81. $act = "";
  82. if ($activeonly)
  83. $act = sprintf(" where c.status = %d ", Category::STATUS_ACTIVE ) ;
  84.  
  85. return $db->query("select c.*, (SELECT title FROM category WHERE ID=c.parentID) AS parentName from category c ".$act);
  86. }
  87.  
  88. public function getChildren($cid)
  89. {
  90. $db = new DB();
  91. return $db->query(sprintf("select c.* from category c where parentID = %d", $cid));
  92. }
  93.  
  94. public function getById($id)
  95. {
  96. $db = new DB();
  97. return $db->queryOneRow(sprintf("SELECT c.ID, CONCAT(COALESCE(cp.title,'') , CASE WHEN cp.title IS NULL THEN '' ELSE ' > ' END , c.title) as title, c.status from category c left outer join category cp on cp.ID = c.parentID where c.ID = %d", $id));
  98. }
  99.  
  100. public function getByIds($ids)
  101. {
  102. $db = new DB();
  103. return $db->query(sprintf("SELECT concat(cp.title, ' > ',c.title) as title from category c inner join category cp on cp.ID = c.parentID where c.ID in (%s)", implode(',', $ids)));
  104. }
  105.  
  106. public function update($id, $status, $desc)
  107. {
  108. $db = new DB();
  109. return $db->query(sprintf("update category set status = %d, description = %s where ID = %d", $status, $db->escapeString($desc), $id));
  110. }
  111.  
  112. public function getForMenu($excludedcats=array())
  113. {
  114. $db = new DB();
  115. $ret = array();
  116.  
  117. $exccatlist = "";
  118. if (count($excludedcats) > 0)
  119. $exccatlist = " and ID not in (".implode(",", $excludedcats).")";
  120.  
  121. $arr = $db->query(sprintf("select * from category where status = %d %s", Category::STATUS_ACTIVE, $exccatlist));
  122. foreach ($arr as $a)
  123. if ($a["parentID"] == "")
  124. $ret[] = $a;
  125.  
  126. foreach ($ret as $key => $parent)
  127. {
  128. $subcatlist = array();
  129. $subcatnames = array();
  130. foreach ($arr as $a)
  131. {
  132. if ($a["parentID"] == $parent["ID"])
  133. {
  134. $subcatlist[] = $a;
  135. $subcatnames[] = $a["title"];
  136. }
  137. }
  138.  
  139. if (count($subcatlist) > 0)
  140. {
  141. array_multisort($subcatnames, SORT_ASC, $subcatlist);
  142. $ret[$key]["subcatlist"] = $subcatlist;
  143. }
  144. else
  145. {
  146. unset($ret[$key]);
  147. }
  148. }
  149. return $ret;
  150. }
  151.  
  152. public function getForSelect($blnIncludeNoneSelected = true)
  153. {
  154. $categories = $this->get();
  155. $temp_array = array();
  156.  
  157. if ($blnIncludeNoneSelected)
  158. {
  159. $temp_array[-1] = "--Please Select--";
  160. }
  161.  
  162. foreach($categories as $category)
  163. $temp_array[$category["ID"]] = $category["title"];
  164.  
  165. return $temp_array;
  166. }
  167.  
  168. //
  169. // Work out which category is applicable for either a group or a binary.
  170. // returns -1 if no category is appropriate from the group name.
  171. //
  172. function determineCategory($group, $releasename = "")
  173. {
  174. $ret = Category::CAT_MISC;
  175.  
  176. //
  177. // Try and determine based on group - First Pass
  178. //
  179. if (preg_match('/alt\.binaries\..*?audiobook.*?/i', $group))
  180. return Category::CAT_MUSIC_AUDIOBOOK;
  181.  
  182. if (preg_match('/alt\.binaries\.sounds.*?|alt\.binaries\.mp3.*?/i', $group))
  183. return Category::CAT_MUSIC_MP3;
  184.  
  185. if (preg_match('/alt\.binaries\.console.ps3/i', $group))
  186. return Category::CAT_GAME_PS3;
  187.  
  188. if (preg_match('/alt\.binaries\.games\.xbox*/i', $group))
  189. {
  190. $this->isConsole($releasename);
  191. $this->isTV($releasename);
  192. $this->isMovie($releasename);
  193. }
  194.  
  195. if (preg_match('/alt\.binaries\.dvd.*?/i', $group))
  196. {
  197. $this->isTv($releasename);
  198. $this->isMovie($releasename);
  199. }
  200.  
  201. if (preg_match('/alt\.binaries\.hdtv\.x264|alt\.binaries\.x264/i', $group))
  202. {
  203. $this->isTv($releasename);
  204. $this->isMovie($releasename);
  205. }
  206.  
  207. if (preg_match('/alt\.binaries\.movies\.xvid|alt\.binaries\.movies\.divx/i', $group))
  208. return Category::CAT_MOVIE_SD;
  209.  
  210. if (preg_match('/alt\.binaries\.classic\.tv.*?/i', $group))
  211. return Category::CAT_TV_SD;
  212.  
  213. if (preg_match('/alt\.binaries\.e-book.*?/i', $group))
  214. return Category::CAT_MISC_EBOOK;
  215.  
  216. if (preg_match('/alt\.binaries\.comics.*?/i', $group))
  217. return Category::CAT_MISC_COMICS;
  218.  
  219. if (preg_match('/alt\.binaries\.cd\.image|alt\.binaries\.audio\.warez/i', $group))
  220. {
  221. $this->isPC;
  222. return Category::CAT_PC_ISO;
  223. }
  224.  
  225. if (preg_match('/alt\.binaries\.sony\.psp/i', $group))
  226. return Category::CAT_GAME_PSP;
  227.  
  228. if (preg_match('/alt\.binaries\.nintendo\.ds|alt\.binaries\.games\.nintendods/i', $group))
  229. return Category::CAT_GAME_NDS;
  230.  
  231. if (preg_match('/alt\.binaries\.mpeg\.video\.music/i', $group))
  232. return Category::CAT_MUSIC_VIDEO;
  233.  
  234. if (preg_match('/alt\.binaries\.mac/i', $group))
  235. return Category::CAT_PC_MAC;
  236.  
  237. if (preg_match('/linux/i', $group))
  238. return Category::CAT_PC_ISO;
  239.  
  240. if (preg_match('/alt\.binaries\.ipod\.videos\.tvshows/i', $group))
  241. return Category::CAT_TV_OTHER;
  242.  
  243. if (preg_match('/alt\.binaries\.documentaries/i', $group))
  244. return Category::CAT_TV_SD;
  245.  
  246. if (preg_match('/alt\.binaries\.tv\.swedish/i', $group))
  247. return Category::CAT_TV_FOREIGN;
  248.  
  249. if (preg_match('/alt\.binaries\.erotica\.divx/i', $group))
  250. return Category::CAT_XXX_XVID;
  251.  
  252. if (preg_match('/alt\.binaries\.mma|alt\.binaries\.multimedia\.sports.*?/i', $group))
  253. return Category::CAT_TV_SPORT;
  254.  
  255. if (preg_match('/alt\.binaries\.b4e$/i', $group))
  256. return Category::CAT_PC_0DAY;
  257.  
  258. if (preg_match('/alt\.binaries\.warez\.ibm\-pc\.0\-day|alt\.binaries\.warez/i', $group))
  259. {
  260. $this->isPC($releasename);
  261. $this->isTV($releasename);
  262. return Category::CAT_PC_0DAY;
  263. }
  264.  
  265. if (preg_match('/alt\.binaries\.(teevee|multimedia|tv|tvseries)/i', $group))
  266. {
  267. $this->isTV($releasename);
  268. return Category::CAT_TV_OTHER;
  269. }
  270.  
  271. if (preg_match('/erotica/i', $group))
  272. {
  273. $this->isXxx($releasename);
  274. return Category::CAT_XXX_XVID;
  275. }
  276.  
  277. if (preg_match('/wmvhd/i', $group))
  278. {
  279. $this->isTV($releasename);
  280. $this->isMovie($releasename);
  281. }
  282.  
  283. if (preg_match('/alt\.binaries\.*/i')) //If there are no specific rules for the group, or if it hasn't matched anything yet then try everything and default to Misc Other.
  284. {
  285. $this->isXXX($releasename);
  286. $this->isTV($releasename);
  287. $this->isMovie($releasename);
  288. $this->isPC($releasename);
  289. $this->isConsole($releasename);
  290. $this->isMusic($releasename);
  291. return Category::CAT_MISC_OTHER;
  292. }
  293.  
  294. //
  295. // If no release name provided and the group wasnt determined, then return -1
  296. //
  297.  
  298. if (($releasename == "") && ($ret == Category::CAT_MISC))
  299. $ret = -1;
  300.  
  301. return $ret;
  302. }
  303.  
  304. //
  305. // Beginning of Private Functions
  306. //
  307.  
  308. //
  309. // TV
  310. //
  311.  
  312. private function isTV($releasename)
  313. {
  314. If(preg_match('/(S?(\d{1,2})\.?(?!x264)(E|X|D)(\d{1,3}))|(dsr|pdtv)[\.\-_]/i', $releasename))
  315. {
  316. $this->isForeignTV($releasename);
  317. $this->isSportTV($releasename);
  318. $this->isHDTV($releasename);
  319. $this->isSDTV($releasename);
  320. return Category::CAT_TV_OTHER;
  321. }
  322. Else If (preg_match('/\.S\d{2}\./i', $releasename))
  323. {
  324. $this->isForeignTV($releasename);
  325. $this->isSportTV($releasename);
  326. $this->isHDTV($releasename);
  327. $this->isSDTV($releasename);
  328. return Category::CAT_TV_OTHER;
  329. }
  330. }
  331.  
  332. private function isForeignTV($releasename)
  333. {
  334. If(preg_match('/(danish|flemish|dutch|nl\.?subbed|nl\.?sub|\.NL\.|swedish|swesub|french|german|spanish)[\.\-]/i', $releasename))
  335. {
  336. return Category::CAT_TV_FOREIGN;
  337. }
  338. Else If(preg_match('/NLSubs|NL\-Subs|NLSub|/i', $releasename))
  339. {
  340. return Category::CAT_TV_FOREIGN;
  341. }
  342. }
  343.  
  344. private function isSportTV($releasename)
  345. {
  346. If(preg_match('/motogp|supercup|wtcc|red\.bull.*?race|bundesliga|la\.liga|uefa|epl|ESPN|WWE\.|MMA\.|UFC\.|FIA\.|PGA\.|NFL\.|NCAA\.|Rugby\.|TNA\.|DTM\.|NASCAR|SBK|NBA\.|NHL\.|NRL\.|FIFA\.|netball\.anz|formula1|indycar|Superleague|V8\.Supercars/i', $releasename))
  347. {
  348. return Category::CAT_TV_SPORT;
  349. }
  350. }
  351.  
  352. private function isHDTV($releasename)
  353. {
  354. If (preg_match('/x264|1080|720|h\.?264|web\-?dl|wmvhd|trollhd/i', $releasename))
  355. {
  356. return Category::CAT_TV_HD;
  357. }
  358. }
  359.  
  360. private function isSDTV($releasename)
  361. {
  362. If (preg_match('/dvdr[^ip]|dvd5|dvd9|xvid/i', $releasename))
  363. {
  364. return Category::CAT_TV_SD;
  365. }
  366. }
  367.  
  368.  
  369. //
  370. // Movie
  371. //
  372.  
  373. private function isMovie($releasename)
  374. {
  375. $this->isMovieForeign($releasename);
  376. $this->isMovieHD($releasename);
  377. $this->isMovieSD($releasename);
  378. }
  379.  
  380. private function isMovieForeign($releasename)
  381. {
  382. If(preg_match('/(danish|flemish|dutch|nl\.?subbed|nl\.?sub|\.NL\.|swedish|swesub|french|german|spanish)[\.\-]/i', $releasename))
  383. {
  384. return Category::CAT_MOVIE_FOREIGN;
  385. }
  386. }
  387.  
  388. private function isMovieHD($releasename)
  389. {
  390. If(preg_match('/x264|bluray\-|wmvhd|web\-dl/i', $releasename))
  391. {
  392. return Category::CAT_MOVIE_HD;
  393. }
  394. }
  395.  
  396. private function isMovieSD($releasename)
  397. {
  398. If(preg_match('/xvid|dvdscr|extrascene|dvdrip|r5|\.CAM\.|dvdr|dvd9|dvd5/i', $releasename))
  399. {
  400. return Category::CAT_MOVIE_SD;
  401. }
  402. }
  403.  
  404.  
  405. //
  406. // PC
  407. //
  408.  
  409. private function isPC($releasename)
  410. {
  411. $this->isPhone($releasename);
  412. $this->isMac($releasename);
  413. $this->is0day($releasename);
  414. $this->isPCGame($releasename);
  415. }
  416.  
  417. private function isPhone($releasename)
  418. {
  419. if (preg_match('/[\.\-_](IPHONE|ITOUCH|ANDROID|COREPDA|symbian|xscale|wm5|wm6)[\.\-_]/i', $releasename))
  420. {
  421. return Category::CAT_PC_PHONE;
  422. }
  423. }
  424.  
  425. private function is0day($releasename)
  426. {
  427. if(preg_match('/[\.\-_ ](win64|winnt|win9x|win2k|winxp|winnt2k2003serv|win9xnt|win9xme|winnt2kxp|win2kxp|win2kxp2k3|keygen|regged|keymaker|winall|win32|template|Patch|GAMEGUiDE|unix|irix|solaris|freebsd|hpux|linux|windows|multilingual|software|Pro v\d{1,3})[\.\-_ ]/i', $releasename))
  428. {
  429. return Category::CAT_PC_0DAY
  430. }
  431. else if (preg_match('/\-SUNiSO|Adobe|MULTiLANGUAGE/i', $releasename))
  432. {
  433. return Category::CAT_PC_0DAY;
  434. }
  435. }
  436.  
  437. private function isMac($releasename)
  438. {
  439. If(preg_match('/osx|os\.x|\.mac\./i', $releasename))
  440. {
  441. return Category::CAT_PC_MAC
  442. }
  443. }
  444.  
  445. private function isPCGame($releasename)
  446. {
  447. if (preg_match('/\-RELOADED|\-SKIDROW|PC GAMES/i', $releasename))
  448. {
  449. return Category::CAT_PC_GAMES;
  450. }
  451. }
  452.  
  453.  
  454. //
  455. // XXX
  456. //
  457.  
  458. private function isXxx($releasename)
  459. {
  460. if(preg_match('/xxx/i', $releasename))
  461. {
  462. $this->isXxx264($releasename);
  463. $this->isXxxXvid($releasename);
  464. $this->isXxxWMV($releasename);
  465. $this->isXxxDVD($releasename);
  466. return Category::CAT_XXX_XVID;
  467. }
  468. }
  469.  
  470. private function isXxx264($releasename)
  471. {
  472. if (preg_match('/x264/i', $releasename))
  473. {
  474. return Category::CAT_XXX_X264;
  475. }
  476. }
  477.  
  478. private function isXxxXvid($releasename)
  479. {
  480. if (preg_match('/xvid|dvdrip|bdrip|brrip|pornolation|swe6|nympho|detoxication|tesoro/i', $releasename))
  481. {
  482. return Category::CAT_XXX_Xvid;
  483. }
  484. }
  485.  
  486. private function isXxxWMV($releasename)
  487. {
  488. if (preg_match('/wmv|pack\-|mp4|f4v|flv|mov|mpeg|isom|realmedia|multiformat|(e\d{2,})|(\d{2}\.\d{2}\.\d{2})|uhq|(issue\.\d{2,})/i', $releasename))
  489. {
  490. return Category::CAT_XXX_WMV;
  491. }
  492. }
  493.  
  494. private function isXxxDVD($releasename)
  495. {
  496. if (preg_match('/dvdr[^ip]|dvd5|dvd9/i', $releasename))
  497. {
  498. return Category::CAT_XXX_DVD;
  499. }
  500. }
  501.  
  502. //
  503. // Console
  504. //
  505.  
  506. private function isConsole($releasename)
  507. {
  508. $this->isGameNDS($releasename);
  509. $this->isGamePS3($releasename);
  510. $this->isGamePSP($releasename);
  511. $this->isGameWiiWare($releasename);
  512. $this->isGameWii($releasename);
  513. $this->isGameXBOX360DLC($releasename);
  514. $this->isGameXBOX360($releasename);
  515. $this->isGameXBOX($releasename);
  516. }
  517.  
  518. private function isGameNDS($releasename)
  519. {
  520. if (preg_match('/NDS/i', $releasename))
  521. {
  522. return Category::CAT_GAME_NDS;
  523. }
  524. }
  525.  
  526. private function isGamePS3($releasename)
  527. {
  528. if (preg_match('/PS3\-/', $releasename))
  529. {
  530. return Category::CAT_GAME_PS3;
  531. }
  532. }
  533.  
  534. private function isGamePSP($releasename)
  535. {
  536. if (preg_match('/PSP\-/i', $releasename))
  537. {
  538. return Category::CAT_GAME_PSP;
  539. }
  540. }
  541.  
  542. private function isGameWiiWare($releasename)
  543. {
  544. if (preg_match('/WIIWARE|VC|DLC|CONSOLE/i', $releasename))
  545. {
  546. return Category::CAT_GAME_WIIWARE;
  547. }
  548. }
  549.  
  550. private function isGameWii($releasename)
  551. {
  552. if (preg_match('/WII/i', $releasename))
  553. {
  554. return Category::CAT_GAME_WII;
  555. }
  556. }
  557.  
  558. private function isXBOX360DLC($releasename)
  559. {
  560. if (preg_match('/(DLC.*?xbox360|xbox360.*?DLC|XBLA.*?xbox360|xbox360.*?XBLA)/i', $releasename))
  561. {
  562. return Category::CAT_GAME_XBOX360DLC;
  563. }
  564. }
  565.  
  566. private function isXBOX360($releasename)
  567. {
  568. if (preg_match('/XBOX360/i', $releasename))
  569. {
  570. return Category::CAT_GAME_XBOX360;
  571. }
  572. }
  573.  
  574. private function isXBOX($releasename)
  575. {
  576. if (preg_match('/XBOX/i', $releasename))
  577. {
  578. return Category::CAT_GAME_XBOX;
  579. }
  580. }
  581.  
  582.  
  583. //
  584. // Audio
  585. //
  586.  
  587. private function isMusic($releasename)
  588. {
  589. $this->isMusicMP3($releasename);
  590. $this->isMusicLossless($releasename);
  591. }
  592.  
  593. private function isMusicMP3($releasename)
  594. {
  595. if (preg_match('/Greatest_Hits|VA(\-|_)|WEB\-\d{4}/i', $releasename))
  596. {
  597. return Category::CAT_MUSIC_MP3;
  598. }
  599. }
  600.  
  601. private function isMusicLossless($releasename)
  602. {
  603. if (preg_match('/Lossless|FLAC/i', $releasename))
  604. {
  605. return Category::CAT_MUSIC_LOSSLESS;
  606. }
  607. }
  608.  
  609. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement