<?php namespace HashOver;

// Copyright (C) 2018-2021 Jacob Barkdull
// This file is part of HashOver.
//
// HashOver is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// HashOver is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with HashOver. If not, see <http://www.gnu.org/licenses/>.


try {
// Do some standard HashOver setup work
require (realpath ('../../backend/standard-setup.php'));

// View setup
require (realpath ('../view-setup.php'));

// Default URL Query Pair array
$ignored_queries = array ();

// Ignored URL queries JSON file location
$queries_file = $hashover->setup->getAbsolutePath ('config/ignored-queries.json');

// Check if the form has been submitted
if (!empty ($_POST['names']) and is_array ($_POST['names'])
and !empty ($_POST['values']) and is_array ($_POST['values']))
{
// If so, run through submitted queries
for ($i = 0, $il = count ($_POST['names']); $i < $il; $i++) {
// Add each non-empty query to the pair array
if (!empty ($_POST['names'][$i])) {
// Start the query pair with the query name
$query_pair = $_POST['names'][$i];

// Check if the query has a value
if (!empty ($_POST['values'][$i])) {
// If so, add it to the pair
$query_pair .= '=' . $_POST['values'][$i];
}

// Add the query pair to the URL Query Pair array
$ignored_queries[] = $query_pair;
}
}

// Check if the user login is admin
if ($hashover->login->verifyAdmin () === true) {
// If so, attempt to save the JSON data
$saved = $data_files->saveJSON ($queries_file, $ignored_queries);

// If saved successfully, redirect with success indicator
if ($saved === true) {
redirect ('./?status=success');
}
}

// Otherwise, redirect with failure indicator
redirect ('./?status=failure');
}

// Otherwise, load and parse URL Query Pairs file
$json = $data_files->readJSON ($queries_file);

// Check for JSON parse error
if (is_array ($json)) {
$ignored_queries = $json;
}

// URL Query Pair inputs
$inputs = new HTMLTag ('span');

// Create URL Query Pair inputs
for ($i = 0, $il = max (3, count ($ignored_queries)); $i < $il; $i++) {
// Use URL query pairs from file or blank
$query = Misc::getArrayItem ($ignored_queries, $i) ?: '';

// Split query pair by equals sign
$query_parts = explode ('=', $query);

// Create div tag for name and value inputs
$input = new HTMLTag ('div');

// Add input for query name to input div
$input->appendChild (new HTMLTag ('input', array (
'class' => 'name',
'type' => 'text',
'name' => 'names[]',
'value' => $query_parts[0],
'size' => '15',
'placeholder' => $hashover->locale->text['name'],
'title' => $hashover->locale->text['url-queries-name-tip']
), false, true));

// Add input for query value to input div
$input->appendChild (new HTMLTag ('input', array (
'class' => 'value',
'type' => 'text',
'name' => 'values[]',
'value' => Misc::getArrayItem ($query_parts, 1) ?: '',
'size' => '25',
'placeholder' => $hashover->locale->text['value'],
'title' => $hashover->locale->text['url-queries-value-tip']
), false, true));

// Add input to inputs container
$inputs->appendChild ($input);
}

// Template data
$template = array (
'title' => $hashover->locale->text['url-queries-title'],
'sub-title' => $hashover->locale->text['url-queries-sub'],
'inputs' => $inputs->getInnerHTML ("\t\t"),
'save-button' => $hashover->locale->text['save']
);

// Load and parse HTML template
echo parse_templates ('admin', 'url-queries.html', $template, $hashover);

} catch (
\Exception $error) {
echo Misc::displayException ($error);
}