option-functions.php 22 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193
  1. <?php
  2. trait OptionsFunction
  3. {
  4. public function settingsOptionGroup($options = [])
  5. {
  6. $settings = [];
  7. foreach ($options as $option) {
  8. $optionType = $option[0] ? $option[0] : false;
  9. $optionName = $option[1] ? $option[1] : null;
  10. $optionExtras = $option[2] ? $option[2] : [];
  11. $setting = $this->settingsOption($optionType, $optionName, $optionExtras);
  12. array_push($settings, $setting);
  13. }
  14. return $settings;
  15. }
  16. public function settingsOption($type, $name = null, $extras = null)
  17. {
  18. $type = strtolower(str_replace('-', '', $type));
  19. $setting = [
  20. 'name' => $name,
  21. 'value' => $this->config[$name] ?? ''
  22. ];
  23. switch ($type) {
  24. case 'enable':
  25. $settingMerge = [
  26. 'type' => 'switch',
  27. 'label' => 'Enable',
  28. ];
  29. break;
  30. case 'auth':
  31. $this->setGroupOptionsVariable();
  32. $settingMerge = [
  33. 'type' => 'select',
  34. 'label' => 'Minimum Authentication',
  35. 'options' => $this->groupOptions
  36. ];
  37. break;
  38. case 'refresh':
  39. $settingMerge = [
  40. 'type' => 'select',
  41. 'label' => 'Refresh Seconds',
  42. 'options' => $this->timeOptions()
  43. ];
  44. break;
  45. case 'combine':
  46. case 'combine-downloader':
  47. $settingMerge = [
  48. 'type' => 'switch',
  49. 'label' => 'Add to Combined Downloader',
  50. ];
  51. break;
  52. case 'test':
  53. $settingMerge = [
  54. 'type' => 'button',
  55. 'label' => '',
  56. 'icon' => 'fa fa-flask',
  57. 'class' => 'pull-right',
  58. 'text' => 'Test Connection',
  59. 'attr' => 'onclick="testAPIConnection(\'' . $name . '\')"'
  60. ];
  61. break;
  62. case 'url':
  63. $settingMerge = [
  64. 'type' => 'input',
  65. 'label' => 'URL',
  66. 'help' => 'Please make sure to use local IP address and port - You also may use local dns name too.',
  67. 'placeholder' => 'http(s)://hostname:port'
  68. ];
  69. break;
  70. case 'multipleurl':
  71. $settingMerge = [
  72. 'type' => 'select2',
  73. 'class' => 'select2-multiple',
  74. 'id' => $name . '-select-' . $this->random_ascii_string(6),
  75. 'label' => 'Multiple URL\'s',
  76. 'help' => 'Please make sure to use local IP address and port - You also may use local dns name too.',
  77. 'placeholder' => 'http(s)://hostname:port',
  78. 'options' => $this->makeOptionsFromValues($this->config[$name]),
  79. 'settings' => '{tags: true, selectOnClose: true, closeOnSelect: true, allowClear: true}',
  80. ];
  81. break;
  82. case 'multiple':
  83. $settingMerge = [
  84. 'type' => 'select2',
  85. 'class' => 'select2-multiple',
  86. 'id' => $name . '-select-' . $this->random_ascii_string(6),
  87. 'label' => 'Multiple Values\'s',
  88. 'options' => $this->makeOptionsFromValues($this->config[$name]),
  89. 'settings' => '{tags: true, selectOnClose: true, closeOnSelect: true, allowClear: true}',
  90. ];
  91. break;
  92. case 'username':
  93. $settingMerge = [
  94. 'type' => 'input',
  95. 'label' => 'Username',
  96. ];
  97. break;
  98. case 'password':
  99. $settingMerge = [
  100. 'type' => 'password',
  101. 'label' => 'Password',
  102. ];
  103. break;
  104. case 'passwordalt':
  105. $settingMerge = [
  106. 'type' => 'password-alt',
  107. 'label' => 'Password',
  108. ];
  109. break;
  110. case 'apikey':
  111. case 'token':
  112. $settingMerge = [
  113. 'type' => 'password-alt',
  114. 'label' => 'API Key/Token',
  115. ];
  116. break;
  117. case 'multipleapikey':
  118. case 'multipletoken':
  119. $settingMerge = [
  120. 'type' => 'select2',
  121. 'class' => 'select2-multiple',
  122. 'id' => $name . '-select-' . $this->random_ascii_string(6),
  123. 'label' => 'Multiple API Key/Token\'s',
  124. 'options' => $this->makeOptionsFromValues($this->config[$name]),
  125. 'settings' => '{tags: true, theme: "default", selectionCssClass: "password-alt", selectOnClose: true, closeOnSelect: true, allowClear: true}',
  126. ];
  127. break;
  128. case 'notice':
  129. $settingMerge = [
  130. 'type' => 'html',
  131. 'override' => 12,
  132. 'label' => '',
  133. 'html' => '
  134. <div class="row">
  135. <div class="col-lg-12">
  136. <div class="panel panel-' . ($extras['notice'] ?? 'info') . '">
  137. <div class="panel-heading">
  138. <span lang="en">' . ($extras['title'] ?? 'Attention') . '</span>
  139. </div>
  140. <div class="panel-wrapper collapse in" aria-expanded="true">
  141. <div class="panel-body">
  142. <span lang="en">' . ($extras['body'] ?? '') . '</span>
  143. <span>' . ($extras['bodyHTML'] ?? '') . '</span>
  144. </div>
  145. </div>
  146. </div>
  147. </div>
  148. </div>
  149. '
  150. ];
  151. break;
  152. case 'socks':
  153. $settingMerge = [
  154. 'type' => 'html',
  155. 'override' => 12,
  156. 'label' => '',
  157. 'html' => '
  158. <div class="panel panel-default">
  159. <div class="panel-wrapper collapse in">
  160. <div class="panel-body">' . $this->socksHeadingHTML($name) . '</div>
  161. </div>
  162. </div>'
  163. ];
  164. break;
  165. case 'about':
  166. $settingMerge = [
  167. 'type' => 'html',
  168. 'override' => 12,
  169. 'label' => '',
  170. 'html' => '
  171. <div class="panel panel-default">
  172. <div class="panel-wrapper collapse in">
  173. <div class="panel-body">
  174. <h3 lang="en">' . ucwords($name) . ' Homepage Item</h3>
  175. <p lang="en">' . $extras["about"] . '</p>
  176. </div>
  177. </div>
  178. </div>'
  179. ];
  180. break;
  181. case 'title':
  182. $settingMerge = [
  183. 'type' => 'input',
  184. 'label' => 'Title',
  185. 'help' => 'Sets the title of this homepage module',
  186. ];
  187. break;
  188. case 'toggletitle':
  189. $settingMerge = [
  190. 'type' => 'switch',
  191. 'label' => 'Toggle Title',
  192. 'help' => 'Shows/hides the title of this homepage module'
  193. ];
  194. break;
  195. case 'disablecertcheck':
  196. $settingMerge = [
  197. 'type' => 'switch',
  198. 'label' => 'Disable Certificate Check',
  199. ];
  200. break;
  201. case 'usecustomcertificate':
  202. $settingMerge = [
  203. 'type' => 'switch',
  204. 'label' => 'Use Custom Certificate',
  205. ];
  206. break;
  207. case 'hideseeding':
  208. $settingMerge = [
  209. 'type' => 'switch',
  210. 'label' => 'Hide Seeding',
  211. ];
  212. case 'hidecompleted':
  213. $settingMerge = [
  214. 'type' => 'switch',
  215. 'label' => 'Hide Completed',
  216. ];
  217. break;
  218. case 'limit':
  219. $settingMerge = [
  220. 'type' => 'number',
  221. 'label' => 'Item Limit',
  222. ];
  223. break;
  224. case 'mediasearchserver':
  225. $settingMerge = [
  226. 'type' => 'select',
  227. 'label' => 'Media Search Server',
  228. 'options' => $this->mediaServerOptions()
  229. ];
  230. break;
  231. case 'imagecachequality':
  232. $settingMerge = [
  233. 'type' => 'select',
  234. 'label' => 'Image Cache Quality',
  235. 'options' => [
  236. [
  237. 'name' => 'Low',
  238. 'value' => '.5'
  239. ],
  240. [
  241. 'name' => '1x',
  242. 'value' => '1'
  243. ],
  244. [
  245. 'name' => '2x',
  246. 'value' => '2'
  247. ],
  248. [
  249. 'name' => '3x',
  250. 'value' => '3'
  251. ]
  252. ]
  253. ];
  254. break;
  255. case 'blank':
  256. $settingMerge = [
  257. 'type' => 'blank',
  258. 'label' => '',
  259. ];
  260. break;
  261. case 'plexlibraryexclude':
  262. $settingMerge = [
  263. 'type' => 'select2',
  264. 'class' => 'select2-multiple',
  265. 'id' => $name . '-exclude-select-' . $this->random_ascii_string(6),
  266. 'label' => 'Libraries to Exclude',
  267. 'options' => $extras['options']
  268. ];
  269. break;
  270. case 'plexlibraryinclude':
  271. $settingMerge = [
  272. 'type' => 'select2',
  273. 'class' => 'select2-multiple',
  274. 'id' => $name . '-include-select-' . $this->random_ascii_string(6),
  275. 'label' => 'Libraries to Include',
  276. 'options' => $extras['options']
  277. ];
  278. break;
  279. // HTML ITEMS
  280. // precodeeditor possibly not needed anymore
  281. case 'precodeeditor':
  282. $settingMerge = [
  283. 'type' => 'textbox',
  284. 'class' => 'hidden ' . $name . 'Textarea',
  285. 'label' => '',
  286. ];
  287. break;
  288. case 'codeeditor':
  289. $mode = strtolower($extras['mode'] ?? 'css');
  290. switch ($mode) {
  291. case 'html':
  292. case 'javascript':
  293. $mode = 'ace/mode/' . $mode;
  294. break;
  295. case 'js':
  296. $mode = 'ace/mode/javascript';
  297. break;
  298. default:
  299. $mode = 'ace/mode/css';
  300. break;
  301. }
  302. $settingMerge = [
  303. 'type' => 'html',
  304. 'override' => 12,
  305. 'label' => 'Custom Code',
  306. 'html' => '
  307. <textarea data-changed="false" class="form-control hidden ' . $name . 'Textarea" name="' . $name . '" data-type="textbox" autocomplete="new-password">' . $this->config[$name] . '</textarea>
  308. <div id="' . $name . 'Editor" style="height:300px">' . htmlentities($this->config[$name]) . '</div>
  309. <script>
  310. let mode = ace.require("' . $mode . '").Mode;
  311. ' . $name . ' = ace.edit("' . $name . 'Editor");
  312. ' . $name . '.session.setMode(new mode());
  313. ' . $name . '.setTheme("ace/theme/idle_fingers");
  314. ' . $name . '.setShowPrintMargin(false);
  315. ' . $name . '.session.on("change", function(delta) { $(".' . $name . 'Textarea").val(' . $name . '.getValue()) });
  316. </script>
  317. '
  318. ];
  319. break;
  320. // CALENDAR ITEMS
  321. case 'calendarstart':
  322. $settingMerge = [
  323. 'type' => 'number',
  324. 'label' => '# of Days Before'
  325. ];
  326. break;
  327. case 'calendarend':
  328. $settingMerge = [
  329. 'type' => 'number',
  330. 'label' => '# of Days After'
  331. ];
  332. break;
  333. case 'calendarstartingday':
  334. case 'calendarstartday':
  335. case 'calendarstart':
  336. $settingMerge = [
  337. 'type' => 'select',
  338. 'label' => 'Start Day',
  339. 'options' => $this->daysOptions()
  340. ];
  341. break;
  342. case 'calendardefaultview':
  343. $settingMerge = [
  344. 'type' => 'select',
  345. 'label' => 'Default View',
  346. 'options' => $this->calendarDefaultOptions()
  347. ];
  348. break;
  349. case 'calendartimeformat':
  350. $settingMerge = [
  351. 'type' => 'select',
  352. 'label' => 'Time Format',
  353. 'options' => $this->timeFormatOptions()
  354. ];
  355. break;
  356. case 'calendarlocale':
  357. $settingMerge = [
  358. 'type' => 'select',
  359. 'label' => 'Locale',
  360. 'options' => $this->calendarLocaleOptions()
  361. ];
  362. break;
  363. case 'calendarlimit':
  364. $settingMerge = [
  365. 'type' => 'select',
  366. 'label' => 'Items Per Day',
  367. 'options' => $this->limitOptions()
  368. ];
  369. break;
  370. case 'color':
  371. $settingMerge = [
  372. 'type' => 'input',
  373. 'label' => 'Color',
  374. 'class' => 'pick-a-color-custom-options',
  375. 'attr' => 'data-original="' . $this->config[$name] . '"'
  376. ];
  377. break;
  378. default:
  379. $settingMerge = [
  380. 'type' => strtolower($type),
  381. 'label' => ''
  382. ];
  383. break;
  384. }
  385. $setting = array_merge($settingMerge, $setting);
  386. if ($extras) {
  387. if (gettype($extras) == 'array') {
  388. $setting = array_merge($setting, $extras);
  389. }
  390. }
  391. return $setting;
  392. }
  393. public function makeOptionsFromValues($values = null)
  394. {
  395. $formattedValues = [];
  396. if (strpos($values, ',') !== false) {
  397. $explode = explode(',', $values);
  398. foreach ($explode as $item) {
  399. $formattedValues[] = [
  400. 'name' => $item,
  401. 'value' => $item
  402. ];
  403. }
  404. } elseif ($values == '') {
  405. $formattedValues = '';
  406. } else {
  407. $formattedValues[] = [
  408. 'name' => $values,
  409. 'value' => $values
  410. ];
  411. }
  412. return $formattedValues;
  413. }
  414. public function logLevels()
  415. {
  416. return [
  417. [
  418. 'name' => 'Debug',
  419. 'value' => 'DEBUG'
  420. ],
  421. [
  422. 'name' => 'Info',
  423. 'value' => 'INFO'
  424. ],
  425. [
  426. 'name' => 'Notice',
  427. 'value' => 'NOTICE'
  428. ],
  429. [
  430. 'name' => 'Warning',
  431. 'value' => 'WARNING'
  432. ],
  433. [
  434. 'name' => 'Error',
  435. 'value' => 'ERROR'
  436. ],
  437. [
  438. 'name' => 'Critical',
  439. 'value' => 'CRITICAL'
  440. ],
  441. [
  442. 'name' => 'Alert',
  443. 'value' => 'ALERT'
  444. ],
  445. [
  446. 'name' => 'Emergency',
  447. 'value' => 'EMERGENCY'
  448. ]
  449. ];
  450. }
  451. public function calendarLocaleOptions()
  452. {
  453. return [
  454. [
  455. 'name' => 'Arabic (Standard)',
  456. 'value' => 'ar',
  457. ],
  458. [
  459. 'name' => 'Arabic (Morocco)',
  460. 'value' => 'ar-ma',
  461. ],
  462. [
  463. 'name' => 'Arabic (Saudi Arabia)',
  464. 'value' => 'ar-sa'
  465. ],
  466. [
  467. 'value' => 'ar-tn',
  468. 'name' => 'Arabic (Tunisia)'
  469. ],
  470. [
  471. 'value' => 'bg',
  472. 'name' => 'Bulgarian'
  473. ],
  474. [
  475. 'value' => 'ca',
  476. 'name' => 'Catalan'
  477. ],
  478. [
  479. 'value' => 'cs',
  480. 'name' => 'Czech'
  481. ],
  482. [
  483. 'value' => 'da',
  484. 'name' => 'Danish'
  485. ],
  486. [
  487. 'value' => 'de',
  488. 'name' => 'German (Standard)'
  489. ],
  490. [
  491. 'value' => 'de-at',
  492. 'name' => 'German (Austria)'
  493. ],
  494. [
  495. 'value' => 'el',
  496. 'name' => 'Greek'
  497. ],
  498. [
  499. 'value' => 'en',
  500. 'name' => 'English'
  501. ],
  502. [
  503. 'value' => 'en-au',
  504. 'name' => 'English (Australia)'
  505. ],
  506. [
  507. 'value' => 'en-ca',
  508. 'name' => 'English (Canada)'
  509. ],
  510. [
  511. 'value' => 'en-gb',
  512. 'name' => 'English (United Kingdom)'
  513. ],
  514. [
  515. 'value' => 'es',
  516. 'name' => 'Spanish'
  517. ],
  518. [
  519. 'value' => 'fa',
  520. 'name' => 'Farsi'
  521. ],
  522. [
  523. 'value' => 'fi',
  524. 'name' => 'Finnish'
  525. ],
  526. [
  527. 'value' => 'fr',
  528. 'name' => 'French (Standard)'
  529. ],
  530. [
  531. 'value' => 'fr-ca',
  532. 'name' => 'French (Canada)'
  533. ],
  534. [
  535. 'value' => 'he',
  536. 'name' => 'Hebrew'
  537. ],
  538. [
  539. 'value' => 'hi',
  540. 'name' => 'Hindi'
  541. ],
  542. [
  543. 'value' => 'hr',
  544. 'name' => 'Croatian'
  545. ],
  546. [
  547. 'value' => 'hu',
  548. 'name' => 'Hungarian'
  549. ],
  550. [
  551. 'value' => 'id',
  552. 'name' => 'Indonesian'
  553. ],
  554. [
  555. 'value' => 'is',
  556. 'name' => 'Icelandic'
  557. ],
  558. [
  559. 'value' => 'it',
  560. 'name' => 'Italian'
  561. ],
  562. [
  563. 'value' => 'ja',
  564. 'name' => 'Japanese'
  565. ],
  566. [
  567. 'value' => 'ko',
  568. 'name' => 'Korean'
  569. ],
  570. [
  571. 'value' => 'lt',
  572. 'name' => 'Lithuanian'
  573. ],
  574. [
  575. 'value' => 'lv',
  576. 'name' => 'Latvian'
  577. ],
  578. [
  579. 'value' => 'nb',
  580. 'name' => 'Norwegian (Bokmal)'
  581. ],
  582. [
  583. 'value' => 'nl',
  584. 'name' => 'Dutch (Standard)'
  585. ],
  586. [
  587. 'value' => 'pl',
  588. 'name' => 'Polish'
  589. ],
  590. [
  591. 'value' => 'pt',
  592. 'name' => 'Portuguese'
  593. ],
  594. [
  595. 'value' => 'pt-br',
  596. 'name' => 'Portuguese (Brazil)'
  597. ],
  598. [
  599. 'value' => 'ro',
  600. 'name' => 'Romanian'
  601. ],
  602. [
  603. 'value' => 'ru',
  604. 'name' => 'Russian'
  605. ],
  606. [
  607. 'value' => 'sk',
  608. 'name' => 'Slovak'
  609. ],
  610. [
  611. 'value' => 'sl',
  612. 'name' => 'Slovenian'
  613. ],
  614. [
  615. 'value' => 'sr',
  616. 'name' => 'Serbian'
  617. ],
  618. [
  619. 'value' => 'sv',
  620. 'name' => 'Swedish'
  621. ],
  622. [
  623. 'value' => 'th',
  624. 'name' => 'Thai'
  625. ],
  626. [
  627. 'value' => 'tr',
  628. 'name' => 'Turkish'
  629. ],
  630. [
  631. 'value' => 'uk',
  632. 'name' => 'Ukrainian'
  633. ],
  634. [
  635. 'value' => 'vi',
  636. 'name' => 'Vietnamese'
  637. ],
  638. [
  639. 'value' => 'zh-cn',
  640. 'name' => 'Chinese (PRC)'
  641. ],
  642. [
  643. 'value' => 'zh-tw',
  644. 'name' => 'Chinese (Taiwan)'
  645. ]
  646. ];
  647. }
  648. public function daysOptions()
  649. {
  650. return array(
  651. array(
  652. 'name' => 'Sunday',
  653. 'value' => '0'
  654. ),
  655. array(
  656. 'name' => 'Monday',
  657. 'value' => '1'
  658. ),
  659. array(
  660. 'name' => 'Tueday',
  661. 'value' => '2'
  662. ),
  663. array(
  664. 'name' => 'Wednesday',
  665. 'value' => '3'
  666. ),
  667. array(
  668. 'name' => 'Thursday',
  669. 'value' => '4'
  670. ),
  671. array(
  672. 'name' => 'Friday',
  673. 'value' => '5'
  674. ),
  675. array(
  676. 'name' => 'Saturday',
  677. 'value' => '6'
  678. )
  679. );
  680. }
  681. public function mediaServerOptions()
  682. {
  683. return array(
  684. array(
  685. 'name' => 'N/A',
  686. 'value' => ''
  687. ),
  688. array(
  689. 'name' => 'Plex',
  690. 'value' => 'plex'
  691. ),
  692. array(
  693. 'name' => 'Emby [Not Available]',
  694. 'value' => 'emby'
  695. )
  696. );
  697. }
  698. public function requestTvOptions($includeUserOption = false)
  699. {
  700. $options = [
  701. [
  702. 'name' => 'All Seasons',
  703. 'value' => 'all'
  704. ],
  705. [
  706. 'name' => 'First Season Only',
  707. 'value' => 'first'
  708. ],
  709. [
  710. 'name' => 'Last Season Only',
  711. 'value' => 'last'
  712. ],
  713. ];
  714. $userOption = [
  715. 'name' => 'Let User Select',
  716. 'value' => 'user'
  717. ];
  718. if ($includeUserOption) {
  719. array_push($options, $userOption);
  720. }
  721. return $options;
  722. }
  723. public function requestServiceOptions()
  724. {
  725. return [
  726. [
  727. 'name' => 'Ombi',
  728. 'value' => 'ombi'
  729. ],
  730. [
  731. 'name' => 'Overseerr',
  732. 'value' => 'overseerr'
  733. ]
  734. ];
  735. }
  736. public function limitOptions()
  737. {
  738. return array(
  739. array(
  740. 'name' => '1 Item',
  741. 'value' => '1'
  742. ),
  743. array(
  744. 'name' => '2 Items',
  745. 'value' => '2'
  746. ),
  747. array(
  748. 'name' => '3 Items',
  749. 'value' => '3'
  750. ),
  751. array(
  752. 'name' => '4 Items',
  753. 'value' => '4'
  754. ),
  755. array(
  756. 'name' => '5 Items',
  757. 'value' => '5'
  758. ),
  759. array(
  760. 'name' => '6 Items',
  761. 'value' => '6'
  762. ),
  763. array(
  764. 'name' => '7 Items',
  765. 'value' => '7'
  766. ),
  767. array(
  768. 'name' => '8 Items',
  769. 'value' => '8'
  770. ),
  771. array(
  772. 'name' => 'Unlimited',
  773. 'value' => '1000'
  774. ),
  775. );
  776. }
  777. public function notificationTypesOptions()
  778. {
  779. return array(
  780. array(
  781. 'name' => 'Toastr',
  782. 'value' => 'toastr'
  783. ),
  784. array(
  785. 'name' => 'Izi',
  786. 'value' => 'izi'
  787. ),
  788. array(
  789. 'name' => 'Alertify',
  790. 'value' => 'alertify'
  791. ),
  792. array(
  793. 'name' => 'Noty',
  794. 'value' => 'noty'
  795. ),
  796. );
  797. }
  798. public function notificationPositionsOptions()
  799. {
  800. return array(
  801. array(
  802. 'name' => 'Bottom Right',
  803. 'value' => 'br'
  804. ),
  805. array(
  806. 'name' => 'Bottom Left',
  807. 'value' => 'bl'
  808. ),
  809. array(
  810. 'name' => 'Bottom Center',
  811. 'value' => 'bc'
  812. ),
  813. array(
  814. 'name' => 'Top Right',
  815. 'value' => 'tr'
  816. ),
  817. array(
  818. 'name' => 'Top Left',
  819. 'value' => 'tl'
  820. ),
  821. array(
  822. 'name' => 'Top Center',
  823. 'value' => 'tc'
  824. ),
  825. array(
  826. 'name' => 'Center',
  827. 'value' => 'c'
  828. ),
  829. );
  830. }
  831. public function timeOptions()
  832. {
  833. return array(
  834. array(
  835. 'name' => '2.5',
  836. 'value' => '2500'
  837. ),
  838. array(
  839. 'name' => '5',
  840. 'value' => '5000'
  841. ),
  842. array(
  843. 'name' => '10',
  844. 'value' => '10000'
  845. ),
  846. array(
  847. 'name' => '15',
  848. 'value' => '15000'
  849. ),
  850. array(
  851. 'name' => '30',
  852. 'value' => '30000'
  853. ),
  854. array(
  855. 'name' => '60 [1 Minute]',
  856. 'value' => '60000'
  857. ),
  858. array(
  859. 'name' => '300 [5 Minutes]',
  860. 'value' => '300000'
  861. ),
  862. array(
  863. 'name' => '600 [10 Minutes]',
  864. 'value' => '600000'
  865. ),
  866. array(
  867. 'name' => '900 [15 Minutes]',
  868. 'value' => '900000'
  869. ),
  870. array(
  871. 'name' => '1800 [30 Minutes]',
  872. 'value' => '1800000'
  873. ),
  874. array(
  875. 'name' => '3600 [1 Hour]',
  876. 'value' => '3600000'
  877. ),
  878. );
  879. }
  880. public function netdataOptions()
  881. {
  882. return [
  883. [
  884. 'name' => 'Disk Read',
  885. 'value' => 'disk-read',
  886. ],
  887. [
  888. 'name' => 'Disk Write',
  889. 'value' => 'disk-write',
  890. ],
  891. [
  892. 'name' => 'CPU',
  893. 'value' => 'cpu'
  894. ],
  895. [
  896. 'name' => 'Network Inbound',
  897. 'value' => 'net-in',
  898. ],
  899. [
  900. 'name' => 'Network Outbound',
  901. 'value' => 'net-out',
  902. ],
  903. [
  904. 'name' => 'Used RAM',
  905. 'value' => 'ram-used',
  906. ],
  907. [
  908. 'name' => 'Used Swap',
  909. 'value' => 'swap-used',
  910. ],
  911. [
  912. 'name' => 'Disk space used',
  913. 'value' => 'disk-used',
  914. ],
  915. [
  916. 'name' => 'Disk space available',
  917. 'value' => 'disk-avail',
  918. ],
  919. [
  920. 'name' => 'Custom',
  921. 'value' => 'custom',
  922. ]
  923. ];
  924. }
  925. public function netdataChartOptions()
  926. {
  927. return [
  928. [
  929. 'name' => 'Easy Pie Chart',
  930. 'value' => 'easypiechart',
  931. ],
  932. [
  933. 'name' => 'Gauge',
  934. 'value' => 'gauge'
  935. ]
  936. ];
  937. }
  938. public function netdataColourOptions()
  939. {
  940. return [
  941. [
  942. 'name' => 'Red',
  943. 'value' => 'fe3912',
  944. ],
  945. [
  946. 'name' => 'Green',
  947. 'value' => '46e302',
  948. ],
  949. [
  950. 'name' => 'Purple',
  951. 'value' => 'CC22AA'
  952. ],
  953. [
  954. 'name' => 'Blue',
  955. 'value' => '5054e6',
  956. ],
  957. [
  958. 'name' => 'Yellow',
  959. 'value' => 'dddd00',
  960. ],
  961. [
  962. 'name' => 'Orange',
  963. 'value' => 'd66300',
  964. ]
  965. ];
  966. }
  967. public function netdataSizeOptions()
  968. {
  969. return [
  970. [
  971. 'name' => 'Large',
  972. 'value' => 'lg',
  973. ],
  974. [
  975. 'name' => 'Medium',
  976. 'value' => 'md',
  977. ],
  978. [
  979. 'name' => 'Small',
  980. 'value' => 'sm'
  981. ]
  982. ];
  983. }
  984. public function timeFormatOptions()
  985. {
  986. return array(
  987. array(
  988. 'name' => '6p',
  989. 'value' => 'h(:mm)t'
  990. ),
  991. array(
  992. 'name' => '6:00p',
  993. 'value' => 'h:mmt'
  994. ),
  995. array(
  996. 'name' => '6pm',
  997. 'value' => 'h(:mm)a'
  998. ),
  999. array(
  1000. 'name' => '6:00pm',
  1001. 'value' => 'h:mma'
  1002. ),
  1003. array(
  1004. 'name' => '6:00',
  1005. 'value' => 'h:mm'
  1006. ),
  1007. array(
  1008. 'name' => '18',
  1009. 'value' => 'H(:mm)'
  1010. ),
  1011. array(
  1012. 'name' => '18:00',
  1013. 'value' => 'H:mm'
  1014. )
  1015. );
  1016. }
  1017. public function rTorrentSortOptions()
  1018. {
  1019. return array(
  1020. array(
  1021. 'name' => 'Date Desc',
  1022. 'value' => 'dated'
  1023. ),
  1024. array(
  1025. 'name' => 'Date Asc',
  1026. 'value' => 'datea'
  1027. ),
  1028. array(
  1029. 'name' => 'Hash Desc',
  1030. 'value' => 'hashd'
  1031. ),
  1032. array(
  1033. 'name' => 'Hash Asc',
  1034. 'value' => 'hasha'
  1035. ),
  1036. array(
  1037. 'name' => 'Name Desc',
  1038. 'value' => 'named'
  1039. ),
  1040. array(
  1041. 'name' => 'Name Asc',
  1042. 'value' => 'namea'
  1043. ),
  1044. array(
  1045. 'name' => 'Size Desc',
  1046. 'value' => 'sized'
  1047. ),
  1048. array(
  1049. 'name' => 'Size Asc',
  1050. 'value' => 'sizea'
  1051. ),
  1052. array(
  1053. 'name' => 'Label Desc',
  1054. 'value' => 'labeld'
  1055. ),
  1056. array(
  1057. 'name' => 'Label Asc',
  1058. 'value' => 'labela'
  1059. ),
  1060. array(
  1061. 'name' => 'Status Desc',
  1062. 'value' => 'statusd'
  1063. ),
  1064. array(
  1065. 'name' => 'Status Asc',
  1066. 'value' => 'statusa'
  1067. ),
  1068. );
  1069. }
  1070. public function qBittorrentApiOptions()
  1071. {
  1072. return array(
  1073. array(
  1074. 'name' => 'V1',
  1075. 'value' => '1'
  1076. ),
  1077. array(
  1078. 'name' => 'V2',
  1079. 'value' => '2'
  1080. ),
  1081. );
  1082. }
  1083. public function qBittorrentSortOptions()
  1084. {
  1085. return array(
  1086. array(
  1087. 'name' => 'Hash',
  1088. 'value' => 'hash'
  1089. ),
  1090. array(
  1091. 'name' => 'Name',
  1092. 'value' => 'name'
  1093. ),
  1094. array(
  1095. 'name' => 'Size',
  1096. 'value' => 'size'
  1097. ),
  1098. array(
  1099. 'name' => 'Progress',
  1100. 'value' => 'progress'
  1101. ),
  1102. array(
  1103. 'name' => 'Download Speed',
  1104. 'value' => 'dlspeed'
  1105. ),
  1106. array(
  1107. 'name' => 'Upload Speed',
  1108. 'value' => 'upspeed'
  1109. ),
  1110. array(
  1111. 'name' => 'Priority',
  1112. 'value' => 'priority'
  1113. ),
  1114. array(
  1115. 'name' => 'Number of Seeds',
  1116. 'value' => 'num_seeds'
  1117. ),
  1118. array(
  1119. 'name' => 'Number of Seeds in Swarm',
  1120. 'value' => 'num_complete'
  1121. ),
  1122. array(
  1123. 'name' => 'Number of Leechers',
  1124. 'value' => 'num_leechs'
  1125. ),
  1126. array(
  1127. 'name' => 'Number of Leechers in Swarm',
  1128. 'value' => 'num_incomplete'
  1129. ),
  1130. array(
  1131. 'name' => 'Ratio',
  1132. 'value' => 'ratio'
  1133. ),
  1134. array(
  1135. 'name' => 'ETA',
  1136. 'value' => 'eta'
  1137. ),
  1138. array(
  1139. 'name' => 'State',
  1140. 'value' => 'state'
  1141. ),
  1142. array(
  1143. 'name' => 'Category',
  1144. 'value' => 'category'
  1145. )
  1146. );
  1147. }
  1148. public function calendarDefaultOptions()
  1149. {
  1150. return array(
  1151. array(
  1152. 'name' => 'Month',
  1153. 'value' => 'month'
  1154. ),
  1155. array(
  1156. 'name' => 'Day',
  1157. 'value' => 'basicDay'
  1158. ),
  1159. array(
  1160. 'name' => 'Week',
  1161. 'value' => 'basicWeek'
  1162. ),
  1163. array(
  1164. 'name' => 'List',
  1165. 'value' => 'list'
  1166. )
  1167. );
  1168. }
  1169. }