#!/usr/bin/php -q
<?PHP
/* Copyright 2005-2022, Lime Technology
 * Copyright 2012-2022, Bergware International.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License version 2,
 * as published by the Free Software Foundation.
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 */
?>
<?
$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';

require_once "$docroot/webGui/include/Helpers.php";
extract(parse_plugin_cfg('dynamix',true));

// add translations
$_SERVER['REQUEST_URI'] = '';
$login_locale = $display['locale'];
require_once "$docroot/webGui/include/Translations.php";

function write(...$messages){
  $com = curl_init();
  curl_setopt_array($com,[
    CURLOPT_URL => 'http://localhost/pub/feedback?buffer_length=1',
    CURLOPT_UNIX_SOCKET_PATH => '/var/run/nginx.socket',
    CURLOPT_POST => 1,
    CURLOPT_RETURNTRANSFER => true
  ]);
  foreach ($messages as $message) {
    curl_setopt($com, CURLOPT_POSTFIELDS, $message);
    curl_exec($com);
  }
  curl_close($com);
}

$var     = parse_ini_file('state/var.ini');
$unraid  = parse_ini_file('/etc/unraid-version');
$keyfile = trim(base64_encode(@file_get_contents($var['regFILE'])));
$width   = in_array($display['theme'],['azure','gray']) ? '98.4%' : '100%';

$style = ["<style>"];
$style[] = "div.spinner.fixed{z-index:100000}";
$style[] = "div#control_panel{position:absolute;left:0;right:0;top:0;padding-top:8px;line-height:24px;white-space:nowrap}";
$style[] = "div.divide{text-align:center;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}";
$style[] = "div.divide label:first-child{margin-left:0}";
$style[] = "div.divide label{margin-left:2%;cursor:pointer}";
$style[] = "div.allpanels{display:none;position:absolute;left:0;right:0;top:40px;bottom:0;overflow:auto}";
$style[] = "div#footer_panel{position:absolute;left:0;right:0;bottom:0;height:30px;line-height:30px;text-align:center}";
$style[] = "textarea.feedback{width:$width;height:530px;margin:0;resize:none}";
$style[] = "@media (max-width:960px){textarea.feedback{height:330px}}";
$style[] = "@media (max-height:768px){textarea.feedback{height:330px}}";
$style[] = "input.submit[type=button]{margin-right:0;float:right}";
$style[] = "input.submit[type=email]{margin-top:10px;float:left}";
$style[] = "p.note,label.note{font-size:1.1rem!important;display:block}";
$style[] = "p.success{text-align:center!important;margin-top:20px}";
$style[] = "span.spacer{margin:0 4px}";
$style[] = "</style>";

$html = ["<div>"];
$html[] = "<div id='control_panel' class='divide'>";
$html[] = "<label for='optFeatureRequest'><input type='radio' name='mode' id='optFeatureRequest' value='featurerequest' checked='checked'/> "._('Product Suggestion')."</label>";
$html[] = "<label for='optBugReport'><input type='radio' name='mode' id='optBugReport' value='bugreport'/> "._('Bug Report')."</label>";
$html[] = "<label for='optComment'><input type='radio' name='mode' id='optComment' value='comment'/> "._('Other Comment')."</label>";
$html[] = "<hr>";
$html[] = "</div>";
$html[] = "<div id='thanks_panel' class='allpanels'></div>";
$html[] = "<div id='featurerequest_panel' class='allpanels'>";
$html[] = "<textarea id='featureDescription' class='feedback' placeholder=\""._('Please summarize your suggestion here').".\"></textarea>";
$html[] = "<br>";
$html[] = "<input type='email' id='featureEmail' class='submit' autocomplete='off' spellcheck='false' placeholder=\""._('Contact Email Address').' ('._('optional').")\"><input type='button' id='featureSubmit' class='submit' value=\""._('Submit')."\"/>";
$html[] = "</div>";
$html[] = "<div id='bugreport_panel' class='allpanels'>";
$html[] = "<textarea id='bugDescription' class='feedback'></textarea>";
$html[] = "<input type='email' id='bugEmail' class='submit' autocomplete='off' spellcheck='false' placeholder=\""._('Contact Email Address').". ("._('optional').")\"><input type='button' id='bugSubmit' class='submit' value=\""._('Submit')."\"/>";
$html[] = "<label class='note' for='anonymize'><input type='checkbox' id='anonymize' value='1' />"._('Anonymize diagnostics (may make troubleshooting more difficult)')."</label>";
$html[] = "<p class='note'><b>"._('NOTE').":</b> <i>"._('Submission of this bug report will automatically send your system diagnostics to Lime Technology').".</i></p>";
$html[] = "</div>";
$html[] = "<div id='comment_panel' class='allpanels'>";
$html[] = "<textarea id='commentDescription' class='feedback' placeholder=\""._('Type your question or comment to Lime Technology here').".\"></textarea>";
$html[] = "<br>";
$html[] = "<input type='email' id='commentEmail' class='submit' autocomplete='off' spellcheck='false' placeholder=\""._('Contact Email Address')." ("._('optional').")\"><input type='button' id='commentSubmit' class='submit' value=\""._('Submit')."\"/>";
$html[] = "</div>";
$html[] = "<div id='footer_panel'>";
$html[] = "<a href='https://unraid.net' target='_blank'>"._('Website')."</a><span class='spacer blue-text'>|</span>";
$html[] = "<a href='https://forums.unraid.net' target='_blank'>"._('Forum')."</a><span class='spacer blue-text'>|</span>";
$html[] = "<a href='https://wiki.unraid.net/Documentation' target='_blank'>"._('Docs')."</a>";
$html[] = "</div>";
$html[] = "</div>";

$script = ["<script>"];
$script[] = "var inkeyfile = '$keyfile';";
$script[] = "var unraid_osversion = '{$unraid['version']}';";
$script[] = "var unraid_timestamp = ".time().";";
$script[] = "var inpageurl = window.top.location.href;";

$script[] = "function featurerequest_reset() {";
$script[] = "  \$('#featureDescription').val('');";
$script[] = "  \$('#featureEmail').val('');";
$script[] = "}";

$script[] = "function bugreport_reset() {";
$script[] = "  \$('#bugDescription').val(\""._('Bug Description').": \\n\\n\\n\\n"._('How to reproduce').": \\n\\n\\n\\n"._('Expected results').": \\n\\n\\n\\n"._('Actual results').": \\n\\n\\n\\n"._('Other information').": \\n\");";
$script[] = "  \$('#bugEmail').val('');";
$script[] = "}";

$script[] = "function comment_reset() {";
$script[] = "  \$('#commentDescription').val('');";
$script[] = "  \$('#commentEmail').val('');";
$script[] = "}";

$script[] = "function form_submit(url, params, panel, diagnostics) {";
$script[] = "  panel.find('textarea,input').prop('disabled',true);";
$script[] = "  \$('div.spinner.fixed').show();";
$script[] = "  if (diagnostics) {";
$script[] = "    var anonymize = \$('#anonymize').is(':checked') ? '1' : '';";
$script[] = "    \$.get('/webGui/include/Feedback.php',{getdiagnostics:1,anonymize:anonymize},function(data) {";
$script[] = "      params.diagnostics = data;";
$script[] = "      form_submit(url, params, panel);";
$script[] = "    }).fail(function() {";
$script[] = "      \$('div.spinner.fixed').hide();";
$script[] = "      panel.fadeOut('fast').find('textarea,input').prop('disabled', false);";
$script[] = "      var failure_message = \"<p class='red-text' style='text-align:center;'>"._('Sorry, an error occurred')." ("._('Unable to generate system diagnostics')." "._('Please try again later').".</p>\";";
$script[] = "      \$('#thanks_panel').html(failure_message).fadeIn('fast');";
$script[] = "    });";
$script[] = "    return;";
$script[] = "  }";
$script[] = "  params.timestamp = unraid_timestamp;";
$script[] = "  params.osversion = unraid_osversion;";
$script[] = "  params.keyfile = inkeyfile;";
$script[] = "  params.pageurl = inpageurl;";
$script[] = "  \$.post(url,params,function(data) {";
$script[] = "    \$('div.spinner.fixed').hide();";
$script[] = "    if (data.error) {";
$script[] = "      var failure_message = \"<p class='red-text' style='text-align:center;'>"._('Sorry, an error occurred').". "._('Please try again later').".</p>\";";
$script[] = "      \$('#thanks_panel').html(failure_message).fadeIn('fast');";
$script[] = "    } else {";
$script[] = "      data.message = data.message || '';";
$script[] = "      var url_parts = url.split('/');";
$script[] = "      var success_message = '<div style=\"text-align:center\"><h2 style=\"color:#4f8a10!important\">"._("Thank You")."!</h2><img src=\"/webGui/images/feedback_'+url_parts[4]+'.png\"/><p class=\"success\">'+data.message+'</p></div>';";
$script[] = "      \$('#thanks_panel').html(success_message).fadeIn('fast', function() {";
$script[] = "        var resetfunction = window[url_parts[4]+'_reset'];";
$script[] = "        if (typeof resetfunction !== 'undefined' && \$.isFunction(resetfunction)) {";
$script[] = "          resetfunction();";
$script[] = "        }";
$script[] = "      });";
$script[] = "    }";
$script[] = "  }).fail(function(jqXHR, textStatus, errorThrown) {";
$script[] = "    if (jqXHR.responseJSON && jqXHR.responseJSON.error) {";
$script[] = "      errorThrown = jqXHR.responseJSON.error;";
$script[] = "    }";
$script[] = "    var failure_message = \"<p class='red-text' style='text-align:center;'>"._('Sorry, an error occurred').". "._('Please try again later').".</p>\";";
$script[] = "    \$('#thanks_panel').html(failure_message).fadeIn('fast');";
$script[] = "  }).always(function() {";
$script[] = "    \$('#spinner_image').fadeOut('fast');";
$script[] = "    panel.fadeOut('fast').find('textarea,input').prop('disabled', false);";
$script[] = "  });";
$script[] = "}";

$script[] = "\$(function() {";
$script[] = "  \$('#control_panel input[type=radio]').click(function() {";
$script[] = "    var showPanel = '#'+\$('#control_panel input[type=radio]:checked').val()+'_panel';";
$script[] = "    $('.allpanels').not(showPanel).fadeOut('fast');";
$script[] = "    var loadfunction = window[\$('#control_panel input[type=radio]:checked').val()+'_load'];";
$script[] = "    if (typeof loadfunction !== 'undefined' && \$.isFunction(loadfunction)) {";
$script[] = "      loadfunction();";
$script[] = "    } else {";
$script[] = "      \$(showPanel).fadeIn('fast');";
$script[] = "    }";
$script[] = "  });";
$script[] = "  \$('#featureSubmit').click(function featureSubmitClick(){";
$script[] = "    if (\$('#featureDescription').val() === '') return;";
$script[] = "    form_submit('https://keys.lime-technology.com/feedback/featurerequest',{description:\$('#featureDescription').val(),email:\$('#featureEmail').val()},\$('#featurerequest_panel'));";
$script[] = "  });";
$script[] = "  \$('#bugSubmit').click(function bugSubmitClick(){";
$script[] = "    if (\$('#bugDescription').val() === '') return;";
$script[] = "    form_submit('https://keys.lime-technology.com/feedback/bugreport',{description:\$('#bugDescription').val(),email:\$('#bugEmail').val()},\$('#bugreport_panel'),true);";
$script[] = "  });";
$script[] = "  \$('#commentSubmit').click(function commentSubmitClick(){";
$script[] = "    if (\$('#commentDescription').val() === '') return;";
$script[] = "    form_submit('https://keys.lime-technology.com/feedback/comment',{description:\$('#commentDescription').val(),email:\$('#commentEmail').val()},\$('#comment_panel'));";
$script[] = "  });";
$script[] = "  featurerequest_reset();";
$script[] = "  bugreport_reset();";
$script[] = "  comment_reset();";
$script[] = "  \$('#optFeatureRequest').click();";
$script[] = "});";
$script[] = "</script>";

write(implode($style).implode($html).implode($script),'_DONE_','');
?>
