option-functions.php 20 KB

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