option-functions.php 20 KB

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