PageRenderTime 43ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/www/lib/category.php

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