| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493 |
- <?php
- trait OptionsFunction
- {
- public function settingsOptionGroup($options = [])
- {
- $settings = [];
- foreach ($options as $option) {
- $optionType = $option[0] ? $option[0] : false;
- $optionName = $option[1] ? $option[1] : null;
- $optionExtras = $option[2] ? $option[2] : [];
- $setting = $this->settingsOption($optionType, $optionName, $optionExtras);
- array_push($settings, $setting);
- }
- return $settings;
- }
- public function settingsOption($type, $name = null, $extras = null)
- {
- $type = strtolower(str_replace('-', '', $type));
- $setting = [
- 'name' => $name,
- 'value' => $this->config[$name] ?? ''
- ];
- switch ($type) {
- case 'orguser':
- $this->setUserOptionsVariable();
- $settingMerge = [
- 'type' => 'select',
- 'label' => 'Organizr User',
- 'options' => $this->userOptions
- ];
- break;
- case 'enable':
- $settingMerge = [
- 'type' => 'switch',
- 'label' => 'Enable',
- ];
- break;
- case 'auth':
- $this->setGroupOptionsVariable();
- $settingMerge = [
- 'type' => 'select',
- 'label' => 'Minimum Authentication',
- 'options' => $this->groupOptions
- ];
- break;
- case 'refresh':
- $settingMerge = [
- 'type' => 'select',
- 'label' => 'Refresh Seconds',
- 'options' => $this->timeOptions()
- ];
- break;
- case 'combine':
- case 'combine-downloader':
- $settingMerge = [
- 'type' => 'switch',
- 'label' => 'Add to Combined Downloader',
- ];
- break;
- case 'test':
- $settingMerge = [
- 'type' => 'button',
- 'label' => 'Test Connection',
- 'icon' => 'fa fa-flask',
- 'class' => 'pull-right',
- 'text' => 'Test Connection',
- 'attr' => 'onclick="testAPIConnection(\'' . $name . '\')"',
- 'help' => 'Remember! Please save before using the test button!'
- ];
- break;
- case 'url':
- $settingMerge = [
- 'type' => 'input',
- 'label' => 'URL',
- 'help' => 'Please make sure to use local IP address and port - You also may use local dns name too.',
- 'placeholder' => 'http(s)://hostname:port'
- ];
- break;
- case 'multipleurl':
- $settingMerge = [
- 'type' => 'select2',
- 'class' => 'select2-multiple',
- 'id' => $name . '-select-' . $this->random_ascii_string(6),
- 'label' => 'Multiple URL\'s',
- 'help' => 'Please make sure to use local IP address and port - You also may use local dns name too.',
- 'placeholder' => 'http(s)://hostname:port',
- 'options' => $this->makeOptionsFromValues($this->config[$name]),
- 'settings' => '{tags: true, selectOnClose: true, closeOnSelect: true, allowClear: true}',
- ];
- break;
- case 'multiple':
- $settingMerge = [
- 'type' => 'select2',
- 'class' => 'select2-multiple',
- 'id' => $name . '-select-' . $this->random_ascii_string(6),
- 'label' => 'Multiple Values\'s',
- 'options' => $this->makeOptionsFromValues($this->config[$name]),
- 'settings' => '{tags: true, selectOnClose: true, closeOnSelect: true, allowClear: true}',
- ];
- break;
- case 'cron':
- $settingMerge = [
- 'type' => 'cron',
- 'label' => 'Cron Schedule',
- 'help' => 'You may use either Cron format or - @hourly, @daily, @monthly',
- 'placeholder' => '* * * * *'
- ];
- break;
- case 'folder':
- $settingMerge = [
- 'type' => 'folder',
- 'label' => 'Save Path',
- 'help' => 'Folder path',
- 'placeholder' => '/path/to/folder'
- ];
- break;
- case 'cronfile':
- $path = $this->root . DIRECTORY_SEPARATOR . 'cron.php';
- $server = $this->serverIP();
- $installInstruction = ($this->docker) ?
- '<p lang="en">No action needed. Organizr\'s docker image comes with the Cron job built-in</p>' :
- '<p lang="en">Setup a Cron job so it\'s call will originate from either the server\'s IP address or a local IP address. Please use the following information to set up the Cron Job correctly.</p>
- <h5>Cron Information</h5>
- <ul class="list-icons">
- <li><i class="fa fa-caret-right text-info"></i> <b lang="en">Schedule</b> <small>* * * * *</small></li>
- <li><i class="fa fa-caret-right text-info"></i> <b lang="en">File Path</b> <small>' . $path . '</small></li>
- </ul>
- <h5>Command Examples</h5>
- <ul class="list-icons">
- <li><i class="ti-angle-right"></i> * * * * * /path/to/php ' . $path . '</li>
- <li><i class="ti-angle-right"></i> * * * * * curl -XGET -sL "http://' . $server . '/cron.php"</li>
- </ul>
- ';
- $settingMerge = [
- 'type' => 'html',
- 'override' => 12,
- 'label' => '',
- 'html' => '
- <div class="row">
- <div class="col-lg-12">
- <div class="panel panel-info">
- <div class="panel-heading">
- <span lang="en">Organizr Enable Cron Instructions</span>
- </div>
- <div class="panel-wrapper collapse in" aria-expanded="true">
- <div class="panel-body">
- <h3 lang="en">Instructions for your install type</h3>
- <span>' . $installInstruction . '</span>
- <button type="button" onclick="checkCronFile();" class="btn btn-outline btn-info btn-lg btn-block" lang="en">Check Cron Status</button>
- <div class="m-t-15 hidden cron-results-container">
- <div class="well">
- <pre class="cron-results"></pre>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- '
- ];
- break;
- case 'username':
- $settingMerge = [
- 'type' => 'input',
- 'label' => 'Username',
- ];
- break;
- case 'password':
- $settingMerge = [
- 'type' => 'password',
- 'label' => 'Password',
- ];
- break;
- case 'passwordalt':
- $settingMerge = [
- 'type' => 'password-alt',
- 'label' => 'Password',
- ];
- break;
- case 'passwordaltcopy':
- $settingMerge = [
- 'type' => 'password-alt-copy',
- 'label' => 'Password',
- ];
- break;
- case 'apikey':
- case 'token':
- $settingMerge = [
- 'type' => 'password-alt',
- 'label' => 'API Key/Token',
- ];
- break;
- case 'multipleapikey':
- case 'multipletoken':
- $settingMerge = [
- 'type' => 'select2',
- 'class' => 'select2-multiple',
- 'id' => $name . '-select-' . $this->random_ascii_string(6),
- 'label' => 'Multiple API Key/Token\'s',
- 'options' => $this->makeOptionsFromValues($this->config[$name]),
- 'settings' => '{tags: true, theme: "default", selectionCssClass: "password-alt", selectOnClose: true, closeOnSelect: true, allowClear: true}',
- ];
- break;
- case 'notice':
- $settingMerge = [
- 'type' => 'html',
- 'override' => 12,
- 'label' => '',
- 'html' => '
- <div class="row">
- <div class="col-lg-12">
- <div class="panel panel-' . ($extras['notice'] ?? 'info') . '">
- <div class="panel-heading">
- <span lang="en">' . ($extras['title'] ?? 'Attention') . '</span>
- </div>
- <div class="panel-wrapper collapse in" aria-expanded="true">
- <div class="panel-body">
- <span lang="en">' . ($extras['body'] ?? '') . '</span>
- <span>' . ($extras['bodyHTML'] ?? '') . '</span>
- </div>
- </div>
- </div>
- </div>
- </div>
- '
- ];
- break;
- case 'socks':
- $settingMerge = [
- 'type' => 'html',
- 'override' => 12,
- 'label' => '',
- 'html' => '
- <div class="panel panel-default">
- <div class="panel-wrapper collapse in">
- <div class="panel-body">' . $this->socksHeadingHTML($name) . '</div>
- </div>
- </div>'
- ];
- break;
- case 'about':
- $settingMerge = [
- 'type' => 'html',
- 'override' => 12,
- 'label' => '',
- 'html' => '
- <div class="panel panel-default">
- <div class="panel-wrapper collapse in">
- <div class="panel-body">
- <h3 lang="en">' . ucwords($name) . ' Homepage Item</h3>
- <p lang="en">' . $extras["about"] . '</p>
- </div>
- </div>
- </div>'
- ];
- break;
- case 'title':
- $settingMerge = [
- 'type' => 'input',
- 'label' => 'Title',
- 'help' => 'Sets the title of this homepage module',
- ];
- break;
- case 'toggletitle':
- $settingMerge = [
- 'type' => 'switch',
- 'label' => 'Toggle Title',
- 'help' => 'Shows/hides the title of this homepage module'
- ];
- break;
- case 'disablecertcheck':
- $settingMerge = [
- 'type' => 'switch',
- 'label' => 'Disable Certificate Check',
- ];
- break;
- case 'usecustomcertificate':
- $settingMerge = [
- 'type' => 'switch',
- 'label' => 'Use Custom Certificate',
- ];
- break;
- case 'hideseeding':
- $settingMerge = [
- 'type' => 'switch',
- 'label' => 'Hide Seeding',
- ];
- break;
- case 'hidecompleted':
- $settingMerge = [
- 'type' => 'switch',
- 'label' => 'Hide Completed',
- ];
- break;
- case 'hidestatus':
- $settingMerge = [
- 'type' => 'switch',
- 'label' => 'Hide Status',
- ];
- break;
- case 'limit':
- $settingMerge = [
- 'type' => 'number',
- 'label' => 'Item Limit',
- ];
- break;
- case 'mediasearchserver':
- $settingMerge = [
- 'type' => 'select',
- 'label' => 'Media Search Server',
- 'options' => $this->mediaServerOptions()
- ];
- break;
- case 'imagecachequality':
- $settingMerge = [
- 'type' => 'select',
- 'label' => 'Image Cache Quality',
- 'options' => [
- [
- 'name' => 'Low',
- 'value' => '.5'
- ],
- [
- 'name' => '1x',
- 'value' => '1'
- ],
- [
- 'name' => '2x',
- 'value' => '2'
- ],
- [
- 'name' => '3x',
- 'value' => '3'
- ]
- ]
- ];
- break;
- case 'blank':
- $settingMerge = [
- 'type' => 'blank',
- 'label' => '',
- ];
- break;
- case 'plexlibraryexclude':
- $settingMerge = [
- 'type' => 'select2',
- 'class' => 'select2-multiple',
- 'id' => $name . '-exclude-select-' . $this->random_ascii_string(6),
- 'label' => 'Libraries to Exclude',
- 'options' => $extras['options']
- ];
- break;
- case 'plexlibraryinclude':
- $settingMerge = [
- 'type' => 'select2',
- 'class' => 'select2-multiple',
- 'id' => $name . '-include-select-' . $this->random_ascii_string(6),
- 'label' => 'Libraries to Include',
- 'options' => $extras['options']
- ];
- break;
- // HTML ITEMS
- // precodeeditor possibly not needed anymore
- case 'precodeeditor':
- $settingMerge = [
- 'type' => 'textbox',
- 'class' => 'hidden ' . $name . 'Textarea',
- 'label' => '',
- ];
- break;
- case 'codeeditor':
- $mode = strtolower($extras['mode'] ?? 'css');
- switch ($mode) {
- case 'html':
- case 'javascript':
- $mode = 'ace/mode/' . $mode;
- break;
- case 'js':
- $mode = 'ace/mode/javascript';
- break;
- default:
- $mode = 'ace/mode/css';
- break;
- }
- $settingMerge = [
- 'type' => 'html',
- 'override' => 12,
- 'label' => 'Custom Code',
- 'html' => '
- <textarea data-changed="false" class="form-control hidden ' . $name . 'Textarea" name="' . $name . '" data-type="textbox" autocomplete="new-password">' . $this->config[$name] . '</textarea>
- <div id="' . $name . 'Editor" style="height:300px">' . htmlentities($this->config[$name]) . '</div>
- <script>
- let mode = ace.require("' . $mode . '").Mode;
- ' . str_replace('-', '', $name) . ' = ace.edit("' . $name . 'Editor");
- ' . str_replace('-', '', $name) . '.session.setMode(new mode());
- ' . str_replace('-', '', $name) . '.setTheme("ace/theme/idle_fingers");
- ' . str_replace('-', '', $name) . '.setShowPrintMargin(false);
- ' . str_replace('-', '', $name) . '.session.on("change", function(delta) {
- $(".' . $name . 'Textarea").val(' . str_replace('-', '', $name) . '.getValue());
- $(".' . $name . 'Textarea").trigger("change");
- });
- </script>
- '
- ];
- break;
- // CALENDAR ITEMS
- case 'calendarstart':
- $settingMerge = [
- 'type' => 'number',
- 'label' => '# of Days Before'
- ];
- break;
- case 'calendarend':
- $settingMerge = [
- 'type' => 'number',
- 'label' => '# of Days After'
- ];
- break;
- case 'calendarstartingday':
- case 'calendarstartday':
- case 'calendarstart':
- $settingMerge = [
- 'type' => 'select',
- 'label' => 'Start Day',
- 'options' => $this->daysOptions()
- ];
- break;
- case 'calendardefaultview':
- $settingMerge = [
- 'type' => 'select',
- 'label' => 'Default View',
- 'options' => $this->calendarDefaultOptions()
- ];
- break;
- case 'calendartimeformat':
- $settingMerge = [
- 'type' => 'select',
- 'label' => 'Time Format',
- 'options' => $this->timeFormatOptions()
- ];
- break;
- case 'calendarlocale':
- $settingMerge = [
- 'type' => 'select',
- 'label' => 'Locale',
- 'options' => $this->calendarLocaleOptions()
- ];
- break;
- case 'calendarlimit':
- $settingMerge = [
- 'type' => 'select',
- 'label' => 'Items Per Day',
- 'options' => $this->limitOptions()
- ];
- break;
- case 'color':
- $settingMerge = [
- 'type' => 'input',
- 'label' => 'Color',
- 'class' => 'pick-a-color-custom-options',
- 'attr' => 'data-original="' . $this->config[$name] . '"'
- ];
- break;
- case 'calendarlinkurl':
- $settingMerge = [
- 'type' => 'select-input',
- 'label' => 'Target URL',
- 'help' => 'Set the primary URL used when clicking on calendar icon.',
- 'options' => $this->makeOptionsFromValues($this->config[str_replace('CalendarLink', '', $name) . 'URL'], true, 'Use Default'),
- ];
- break;
- case 'calendarframetarget':
- $settingMerge = [
- 'type' => 'select',
- 'label' => 'Target Tab',
- 'help' => 'Set the tab used when clicking on calendar icon. If not set, link will open in new window.',
- 'options' => $this->getIframeTabs($this->config[str_replace('FrameTarget', 'CalendarLink', $name)])
- ];
- break;
- default:
- $settingMerge = [
- 'type' => strtolower($type),
- 'label' => ''
- ];
- break;
- }
- $setting = array_merge($settingMerge, $setting);
- if ($extras) {
- if (gettype($extras) == 'array') {
- $setting = array_merge($setting, $extras);
- }
- }
- return $setting;
- }
- public function getIframeTabs($url = "")
- {
- if (!empty($url)) {
- $response = [
- array(
- 'function' => 'fetchAll',
- 'query' => array(
- "SELECT * FROM tabs WHERE `enabled`='1' AND `type`='1' AND `group_id`>=? AND (`url` = '" . $url . "' OR `url_local` = '" . $url . "') ORDER BY `order` ASC",
- $this->getUserLevel(),
- )
- )
- ];
- } else {
- $response = [
- array(
- 'function' => 'fetchAll',
- 'query' => array(
- "SELECT * FROM tabs WHERE `enabled`='1' AND `type`='1' AND `group_id`>=? ORDER BY `order` ASC",
- $this->getUserLevel()
- )
- )
- ];
- }
- $formattedValues[] = [
- 'name' => 'Open in New Window',
- 'value' => ''
- ];
- foreach ($this->processQueries($response) as $result) {
- $formattedValues[] = [
- 'name' => $result['name'],
- 'value' => $result['id']
- ];
- }
- return $formattedValues;
- }
- public function makeOptionsFromValues($values = null, $appendBlank = null, $blankLabel = null)
- {
- if ($appendBlank === true) {
- $formattedValues[] = [
- 'name' => (!empty($blankLabel)) ? $blankLabel : 'Select option...',
- 'value' => ''
- ];
- } else {
- $formattedValues = [];
- }
- if (strpos($values, ',') !== false) {
- $explode = explode(',', $values);
- foreach ($explode as $item) {
- $formattedValues[] = [
- 'name' => $item,
- 'value' => $item
- ];
- }
- } elseif ($values == '') {
- $formattedValues = '';
- } else {
- $formattedValues[] = [
- 'name' => $values,
- 'value' => $values
- ];
- }
- return $formattedValues;
- }
- public function logLevels()
- {
- return [
- [
- 'name' => 'Debug',
- 'value' => 'DEBUG'
- ],
- [
- 'name' => 'Info',
- 'value' => 'INFO'
- ],
- [
- 'name' => 'Notice',
- 'value' => 'NOTICE'
- ],
- [
- 'name' => 'Warning',
- 'value' => 'WARNING'
- ],
- [
- 'name' => 'Error',
- 'value' => 'ERROR'
- ],
- [
- 'name' => 'Critical',
- 'value' => 'CRITICAL'
- ],
- [
- 'name' => 'Alert',
- 'value' => 'ALERT'
- ],
- [
- 'name' => 'Emergency',
- 'value' => 'EMERGENCY'
- ]
- ];
- }
- public function sandboxOptions()
- {
- return [
- [
- 'name' => 'Allow Presentation',
- 'value' => 'allow-presentation'
- ],
- [
- 'name' => 'Allow Forms',
- 'value' => 'allow-forms'
- ],
- [
- 'name' => 'Allow Same Origin',
- 'value' => 'allow-same-origin'
- ],
- [
- 'name' => 'Allow Orientation Lock',
- 'value' => 'allow-orientation-lock'
- ],
- [
- 'name' => 'Allow Pointer Lock',
- 'value' => 'allow-pointer-lock'
- ],
- [
- 'name' => 'Allow Scripts',
- 'value' => 'allow-scripts'
- ],
- [
- 'name' => 'Allow Popups',
- 'value' => 'allow-popups'
- ],
- [
- 'name' => 'Allow Popups To Escape Sandbox',
- 'value' => 'allow-popups-to-escape-sandbox'
- ],
- [
- 'name' => 'Allow Modals',
- 'value' => 'allow-modals'
- ],
- [
- 'name' => 'Allow Top Navigation',
- 'value' => 'allow-top-navigation'
- ],
- [
- 'name' => 'Allow Top Navigation By User Activation',
- 'value' => 'allow-top-navigation-by-user-activation'
- ],
- [
- 'name' => 'Allow Downloads',
- 'value' => 'allow-downloads'
- ],
- ];
- }
- public function iframeAllowOptions()
- {
- return [
- [
- 'name' => 'Allow Clipboard Read',
- 'value' => 'clipboard-read'
- ],
- [
- 'name' => 'Allow Clipboard Write',
- 'value' => 'clipboard-write'
- ],
- [
- 'name' => 'Allow Camera',
- 'value' => 'camera'
- ],
- [
- 'name' => 'Allow Microphone',
- 'value' => 'microphone'
- ],
- [
- 'name' => 'Allow Speaker Selection',
- 'value' => 'speaker-selection'
- ],
- [
- 'name' => 'Allow Encrypted Media',
- 'value' => 'encrypted-media'
- ],
- [
- 'name' => 'Allow Web Share',
- 'value' => 'web-share'
- ],
- [
- 'name' => 'Allow Capture the Screen',
- 'value' => 'display-capture'
- ],
- [
- 'name' => 'Allow Screen Wake Lock',
- 'value' => 'screen-wake-lock'
- ],
- [
- 'name' => 'Allow Geolocation',
- 'value' => 'geolocation'
- ],
- [
- 'name' => 'Allow Autoplay Media',
- 'value' => 'autoplay'
- ],
- [
- 'name' => 'Allow USB',
- 'value' => 'usb'
- ],
- [
- 'name' => 'Allow MIDI',
- 'value' => 'midi'
- ],
- [
- 'name' => 'Allow Fullscreen',
- 'value' => 'fullscreen'
- ],
- [
- 'name' => 'Allow Payment',
- 'value' => 'payment'
- ],
- [
- 'name' => 'Allow Picture-in-Picture',
- 'value' => 'picture-in-picture'
- ],
- [
- 'name' => 'Allow Gamepad',
- 'value' => 'gamepad'
- ],
- [
- 'name' => 'Allow WebXR Spatial Tracking (VR)',
- 'value' => 'xr-spatial-tracking'
- ],
- [
- 'name' => 'Allow Accelerometer Sensor',
- 'value' => 'accelerometer'
- ],
- [
- 'name' => 'Allow Gyroscope Sensor',
- 'value' => 'gyroscope'
- ],
- [
- 'name' => 'Allow Magnetometer Sensor',
- 'value' => 'magnetometer'
- ],
- [
- 'name' => 'Allow Ambient Light Sensor',
- 'value' => 'ambient-light-sensor'
- ],
- [
- 'name' => 'Allow Battery Status',
- 'value' => 'battery'
- ],
- [
- 'name' => 'Allow Sync XMLHttpRequest',
- 'value' => 'sync-xhr'
- ],
- ];
- }
- public function calendarLocaleOptions()
- {
- return [
- [
- 'name' => 'Arabic (Standard)',
- 'value' => 'ar',
- ],
- [
- 'name' => 'Arabic (Morocco)',
- 'value' => 'ar-ma',
- ],
- [
- 'name' => 'Arabic (Saudi Arabia)',
- 'value' => 'ar-sa'
- ],
- [
- 'value' => 'ar-tn',
- 'name' => 'Arabic (Tunisia)'
- ],
- [
- 'value' => 'bg',
- 'name' => 'Bulgarian'
- ],
- [
- 'value' => 'ca',
- 'name' => 'Catalan'
- ],
- [
- 'value' => 'cs',
- 'name' => 'Czech'
- ],
- [
- 'value' => 'da',
- 'name' => 'Danish'
- ],
- [
- 'value' => 'de',
- 'name' => 'German (Standard)'
- ],
- [
- 'value' => 'de-at',
- 'name' => 'German (Austria)'
- ],
- [
- 'value' => 'el',
- 'name' => 'Greek'
- ],
- [
- 'value' => 'en',
- 'name' => 'English'
- ],
- [
- 'value' => 'en-au',
- 'name' => 'English (Australia)'
- ],
- [
- 'value' => 'en-ca',
- 'name' => 'English (Canada)'
- ],
- [
- 'value' => 'en-gb',
- 'name' => 'English (United Kingdom)'
- ],
- [
- 'value' => 'es',
- 'name' => 'Spanish'
- ],
- [
- 'value' => 'fa',
- 'name' => 'Farsi'
- ],
- [
- 'value' => 'fi',
- 'name' => 'Finnish'
- ],
- [
- 'value' => 'fr',
- 'name' => 'French (Standard)'
- ],
- [
- 'value' => 'fr-ca',
- 'name' => 'French (Canada)'
- ],
- [
- 'value' => 'he',
- 'name' => 'Hebrew'
- ],
- [
- 'value' => 'hi',
- 'name' => 'Hindi'
- ],
- [
- 'value' => 'hr',
- 'name' => 'Croatian'
- ],
- [
- 'value' => 'hu',
- 'name' => 'Hungarian'
- ],
- [
- 'value' => 'id',
- 'name' => 'Indonesian'
- ],
- [
- 'value' => 'is',
- 'name' => 'Icelandic'
- ],
- [
- 'value' => 'it',
- 'name' => 'Italian'
- ],
- [
- 'value' => 'ja',
- 'name' => 'Japanese'
- ],
- [
- 'value' => 'ko',
- 'name' => 'Korean'
- ],
- [
- 'value' => 'lt',
- 'name' => 'Lithuanian'
- ],
- [
- 'value' => 'lv',
- 'name' => 'Latvian'
- ],
- [
- 'value' => 'nb',
- 'name' => 'Norwegian (Bokmal)'
- ],
- [
- 'value' => 'nl',
- 'name' => 'Dutch (Standard)'
- ],
- [
- 'value' => 'pl',
- 'name' => 'Polish'
- ],
- [
- 'value' => 'pt',
- 'name' => 'Portuguese'
- ],
- [
- 'value' => 'pt-br',
- 'name' => 'Portuguese (Brazil)'
- ],
- [
- 'value' => 'ro',
- 'name' => 'Romanian'
- ],
- [
- 'value' => 'ru',
- 'name' => 'Russian'
- ],
- [
- 'value' => 'sk',
- 'name' => 'Slovak'
- ],
- [
- 'value' => 'sl',
- 'name' => 'Slovenian'
- ],
- [
- 'value' => 'sr',
- 'name' => 'Serbian'
- ],
- [
- 'value' => 'sv',
- 'name' => 'Swedish'
- ],
- [
- 'value' => 'th',
- 'name' => 'Thai'
- ],
- [
- 'value' => 'tr',
- 'name' => 'Turkish'
- ],
- [
- 'value' => 'uk',
- 'name' => 'Ukrainian'
- ],
- [
- 'value' => 'vi',
- 'name' => 'Vietnamese'
- ],
- [
- 'value' => 'zh-cn',
- 'name' => 'Chinese (PRC)'
- ],
- [
- 'value' => 'zh-tw',
- 'name' => 'Chinese (Taiwan)'
- ]
- ];
- }
- public function daysOptions()
- {
- return array(
- array(
- 'name' => 'Sunday',
- 'value' => '0'
- ),
- array(
- 'name' => 'Monday',
- 'value' => '1'
- ),
- array(
- 'name' => 'Tueday',
- 'value' => '2'
- ),
- array(
- 'name' => 'Wednesday',
- 'value' => '3'
- ),
- array(
- 'name' => 'Thursday',
- 'value' => '4'
- ),
- array(
- 'name' => 'Friday',
- 'value' => '5'
- ),
- array(
- 'name' => 'Saturday',
- 'value' => '6'
- )
- );
- }
- public function mediaServerOptions()
- {
- return array(
- array(
- 'name' => 'N/A',
- 'value' => ''
- ),
- array(
- 'name' => 'Plex',
- 'value' => 'plex'
- ),
- array(
- 'name' => 'Emby [Not Available]',
- 'value' => 'emby'
- )
- );
- }
- public function requestTvOptions($includeUserOption = false)
- {
- $options = [
- [
- 'name' => 'All Seasons',
- 'value' => 'all'
- ],
- [
- 'name' => 'First Season Only',
- 'value' => 'first'
- ],
- [
- 'name' => 'Last Season Only',
- 'value' => 'last'
- ],
- ];
- $userOption = [
- 'name' => 'Let User Select',
- 'value' => 'user'
- ];
- if ($includeUserOption) {
- array_push($options, $userOption);
- }
- return $options;
- }
- public function requestServiceOptions()
- {
- return [
- [
- 'name' => 'Ombi',
- 'value' => 'ombi'
- ],
- [
- 'name' => 'Overseerr',
- 'value' => 'overseerr'
- ]
- ];
- }
- public function limitOptions()
- {
- return array(
- array(
- 'name' => '1 Item',
- 'value' => '1'
- ),
- array(
- 'name' => '2 Items',
- 'value' => '2'
- ),
- array(
- 'name' => '3 Items',
- 'value' => '3'
- ),
- array(
- 'name' => '4 Items',
- 'value' => '4'
- ),
- array(
- 'name' => '5 Items',
- 'value' => '5'
- ),
- array(
- 'name' => '6 Items',
- 'value' => '6'
- ),
- array(
- 'name' => '7 Items',
- 'value' => '7'
- ),
- array(
- 'name' => '8 Items',
- 'value' => '8'
- ),
- array(
- 'name' => 'Unlimited',
- 'value' => '1000'
- ),
- );
- }
- public function notificationTypesOptions()
- {
- return array(
- array(
- 'name' => 'Toastr',
- 'value' => 'toastr'
- ),
- array(
- 'name' => 'Izi',
- 'value' => 'izi'
- ),
- array(
- 'name' => 'Alertify',
- 'value' => 'alertify'
- ),
- array(
- 'name' => 'Noty',
- 'value' => 'noty'
- ),
- );
- }
- public function notificationPositionsOptions()
- {
- return array(
- array(
- 'name' => 'Bottom Right',
- 'value' => 'br'
- ),
- array(
- 'name' => 'Bottom Left',
- 'value' => 'bl'
- ),
- array(
- 'name' => 'Bottom Center',
- 'value' => 'bc'
- ),
- array(
- 'name' => 'Top Right',
- 'value' => 'tr'
- ),
- array(
- 'name' => 'Top Left',
- 'value' => 'tl'
- ),
- array(
- 'name' => 'Top Center',
- 'value' => 'tc'
- ),
- array(
- 'name' => 'Center',
- 'value' => 'c'
- ),
- );
- }
- public function timeOptions()
- {
- return array(
- array(
- 'name' => '2.5',
- 'value' => '2500'
- ),
- array(
- 'name' => '5',
- 'value' => '5000'
- ),
- array(
- 'name' => '10',
- 'value' => '10000'
- ),
- array(
- 'name' => '15',
- 'value' => '15000'
- ),
- array(
- 'name' => '30',
- 'value' => '30000'
- ),
- array(
- 'name' => '60 [1 Minute]',
- 'value' => '60000'
- ),
- array(
- 'name' => '300 [5 Minutes]',
- 'value' => '300000'
- ),
- array(
- 'name' => '600 [10 Minutes]',
- 'value' => '600000'
- ),
- array(
- 'name' => '900 [15 Minutes]',
- 'value' => '900000'
- ),
- array(
- 'name' => '1800 [30 Minutes]',
- 'value' => '1800000'
- ),
- array(
- 'name' => '3600 [1 Hour]',
- 'value' => '3600000'
- ),
- );
- }
- public function netdataOptions()
- {
- return [
- [
- 'name' => 'Disk Read',
- 'value' => 'disk-read',
- ],
- [
- 'name' => 'Disk Write',
- 'value' => 'disk-write',
- ],
- [
- 'name' => 'CPU',
- 'value' => 'cpu'
- ],
- [
- 'name' => 'Network Inbound',
- 'value' => 'net-in',
- ],
- [
- 'name' => 'Network Outbound',
- 'value' => 'net-out',
- ],
- [
- 'name' => 'Used RAM',
- 'value' => 'ram-used',
- ],
- [
- 'name' => 'Used Swap',
- 'value' => 'swap-used',
- ],
- [
- 'name' => 'Disk space used',
- 'value' => 'disk-used',
- ],
- [
- 'name' => 'Disk space available',
- 'value' => 'disk-avail',
- ],
- [
- 'name' => 'Custom',
- 'value' => 'custom',
- ]
- ];
- }
- public function netdataChartOptions()
- {
- return [
- [
- 'name' => 'Easy Pie Chart',
- 'value' => 'easypiechart',
- ],
- [
- 'name' => 'Gauge',
- 'value' => 'gauge'
- ]
- ];
- }
- public function netdataColourOptions()
- {
- return [
- [
- 'name' => 'Red',
- 'value' => 'fe3912',
- ],
- [
- 'name' => 'Green',
- 'value' => '46e302',
- ],
- [
- 'name' => 'Purple',
- 'value' => 'CC22AA'
- ],
- [
- 'name' => 'Blue',
- 'value' => '5054e6',
- ],
- [
- 'name' => 'Yellow',
- 'value' => 'dddd00',
- ],
- [
- 'name' => 'Orange',
- 'value' => 'd66300',
- ]
- ];
- }
- public function netdataSizeOptions()
- {
- return [
- [
- 'name' => 'Large',
- 'value' => 'lg',
- ],
- [
- 'name' => 'Medium',
- 'value' => 'md',
- ],
- [
- 'name' => 'Small',
- 'value' => 'sm'
- ]
- ];
- }
- public function timeFormatOptions()
- {
- return array(
- array(
- 'name' => '6p',
- 'value' => 'h(:mm)t'
- ),
- array(
- 'name' => '6:00p',
- 'value' => 'h:mmt'
- ),
- array(
- 'name' => '6pm',
- 'value' => 'h(:mm)a'
- ),
- array(
- 'name' => '6:00pm',
- 'value' => 'h:mma'
- ),
- array(
- 'name' => '6:00',
- 'value' => 'h:mm'
- ),
- array(
- 'name' => '18',
- 'value' => 'H(:mm)'
- ),
- array(
- 'name' => '18:00',
- 'value' => 'H:mm'
- )
- );
- }
- public function rTorrentSortOptions()
- {
- return array(
- array(
- 'name' => 'Date Desc',
- 'value' => 'dated'
- ),
- array(
- 'name' => 'Date Asc',
- 'value' => 'datea'
- ),
- array(
- 'name' => 'Hash Desc',
- 'value' => 'hashd'
- ),
- array(
- 'name' => 'Hash Asc',
- 'value' => 'hasha'
- ),
- array(
- 'name' => 'Name Desc',
- 'value' => 'named'
- ),
- array(
- 'name' => 'Name Asc',
- 'value' => 'namea'
- ),
- array(
- 'name' => 'Size Desc',
- 'value' => 'sized'
- ),
- array(
- 'name' => 'Size Asc',
- 'value' => 'sizea'
- ),
- array(
- 'name' => 'Label Desc',
- 'value' => 'labeld'
- ),
- array(
- 'name' => 'Label Asc',
- 'value' => 'labela'
- ),
- array(
- 'name' => 'Status Desc',
- 'value' => 'statusd'
- ),
- array(
- 'name' => 'Status Asc',
- 'value' => 'statusa'
- ),
- );
- }
- public function qBittorrentApiOptions()
- {
- return array(
- array(
- 'name' => 'V1',
- 'value' => '1'
- ),
- array(
- 'name' => 'V2',
- 'value' => '2'
- ),
- );
- }
- public function qBittorrentSortOptions()
- {
- return array(
- array(
- 'name' => 'Hash',
- 'value' => 'hash'
- ),
- array(
- 'name' => 'Name',
- 'value' => 'name'
- ),
- array(
- 'name' => 'Size',
- 'value' => 'size'
- ),
- array(
- 'name' => 'Progress',
- 'value' => 'progress'
- ),
- array(
- 'name' => 'Download Speed',
- 'value' => 'dlspeed'
- ),
- array(
- 'name' => 'Upload Speed',
- 'value' => 'upspeed'
- ),
- array(
- 'name' => 'Priority',
- 'value' => 'priority'
- ),
- array(
- 'name' => 'Number of Seeds',
- 'value' => 'num_seeds'
- ),
- array(
- 'name' => 'Number of Seeds in Swarm',
- 'value' => 'num_complete'
- ),
- array(
- 'name' => 'Number of Leechers',
- 'value' => 'num_leechs'
- ),
- array(
- 'name' => 'Number of Leechers in Swarm',
- 'value' => 'num_incomplete'
- ),
- array(
- 'name' => 'Ratio',
- 'value' => 'ratio'
- ),
- array(
- 'name' => 'ETA',
- 'value' => 'eta'
- ),
- array(
- 'name' => 'State',
- 'value' => 'state'
- ),
- array(
- 'name' => 'Category',
- 'value' => 'category'
- )
- );
- }
- public function calendarDefaultOptions()
- {
- return array(
- array(
- 'name' => 'Month',
- 'value' => 'month'
- ),
- array(
- 'name' => 'Day',
- 'value' => 'basicDay'
- ),
- array(
- 'name' => 'Week',
- 'value' => 'basicWeek'
- ),
- array(
- 'name' => 'List',
- 'value' => 'list'
- )
- );
- }
- }
|