<?php

// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2010 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation for version 2.
// This program 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 General Public License for more details.
// Load global vars
global $config;

check_login();

if (! check_acl($config['id_user'], 0, 'PM') && ! is_user_admin($config['id_user'])) {
    db_pandora_audit('ACL Violation', 'Trying to access Setup Management');
    include 'general/noaccess.php';
    return;
}

$action = get_parameter('action', 'new');
$idOS = get_parameter('id_os', 0);
$id_message = get_parameter('message', 0);
if (is_metaconsole()) {
    $tab = get_parameter('tab2', 'list');
} else {
    $tab = get_parameter('tab', 'list');
}

if ($idOS) {
    $os = db_get_row_filter('tconfig_os', ['id_os' => $idOS]);
    $name = $os['name'];
    $description = $os['description'];
    $icon = $os['icon_name'];
} else {
    $name = io_safe_input(strip_tags(io_safe_output((string) get_parameter('name'))));
    $description = io_safe_input(strip_tags(io_safe_output((string) get_parameter('description'))));
    $icon = get_parameter('icon', 0);
}

$message = '';

switch ($action) {
    default:
    case 'new':
        $actionHidden = 'save';
        $textButton = __('Create');
        $classButton = 'class="sub next"';
    break;

    case 'edit':
        $actionHidden = 'update';
        $textButton = __('Update');
        $classButton = 'class="sub upd"';
    break;

    case 'save':
        $values = [];
        $values['name'] = $name;
        $values['description'] = $description;

        if (($icon !== 0) && ($icon != '')) {
            $values['icon_name'] = $icon;
        }

        $resultOrId = false;
        if ($name != '') {
            $resultOrId = db_process_sql_insert('tconfig_os', $values);
        }

        if ($resultOrId === false) {
            $message = 2;
            $tab = 'builder';
            $actionHidden = 'save';
            $textButton = __('Create');
            $classButton = 'class="sub next"';
        } else {
            $tab = 'list';
            $message = 1;
        }

        if (is_metaconsole()) {
            header('Location:'.$config['homeurl'].'index.php?sec=advanced&sec2=advanced/component_management&tab=os_manage&tab2='.$tab.'&message='.$message);
        } else {
            header('Location:'.$config['homeurl'].'index.php?sec=gsetup&sec2=godmode/setup/os&tab='.$tab.'&message='.$message);
        }
    break;

    case 'update':
        $name = io_safe_input(strip_tags(io_safe_output((string) get_parameter('name'))));
        $description = io_safe_input(strip_tags(io_safe_output((string) get_parameter('description'))));
        $icon = get_parameter('icon', 0);

        $values = [];
        $values['name'] = $name;
        $values['description'] = $description;
        // Only for Metaconsole. Save the previous name for synchronizing.
        if (is_metaconsole()) {
            $values['previous_name'] = db_get_value('name', 'tconfig_os', 'id_os', $idOS);
        }

        if (($icon !== 0) && ($icon != '')) {
            $values['icon_name'] = $icon;
        }

        $result = false;
        if ($name != '') {
            $result = db_process_sql_update('tconfig_os', $values, ['id_os' => $idOS]);
        }

        if ($result !== false) {
            $message = 3;
            $tab = 'list';
        } else {
            $message = 4;
            $tab = 'builder';
            $os = db_get_row_filter('tconfig_os', ['id_os' => $idOS]);
            $name = $os['name'];
        }

        $actionHidden = 'update';
        $textButton = __('Update');
        $classButton = 'class="sub upd"';
        if (is_metaconsole()) {
            header('Location:'.$config['homeurl'].'index.php?sec=advanced&sec2=advanced/component_management&tab=os_manage&tab2='.$tab.'&message='.$message);
        } else {
            header('Location:'.$config['homeurl'].'index.php?sec=gsetup&sec2=godmode/setup/os&tab='.$tab.'&message='.$message);
        }
    break;

    case 'delete':
        $sql = 'SELECT COUNT(id_os) AS count FROM tagente WHERE id_os = '.$idOS;
        $count = db_get_all_rows_sql($sql);
        $count = $count[0]['count'];

        if ($count > 0) {
            $message = 5;
        } else {
            $result = (bool) db_process_sql_delete('tconfig_os', ['id_os' => $idOS]);
            if ($result) {
                $message = 6;
            } else {
                $message = 7;
            }
        }

        if (is_metaconsole()) {
            header('Location:'.$config['homeurl'].'index.php?sec=advanced&sec2=advanced/component_management&tab=os_manage&tab2='.$tab.'&message='.$message);
        } else {
            header('Location:'.$config['homeurl'].'index.php?sec=gsetup&sec2=godmode/setup/os&tab='.$tab.'&message='.$message);
        }
    break;
}

$buttons = [
    'list'    => [
        'active' => false,
        'text'   => '<a href="index.php?sec=gsetup&sec2=godmode/setup/os&tab=list">'.html_print_image('images/list.png', true, ['title' => __('List OS')]).'</a>',
    ],
    'builder' => [
        'active' => false,
        'text'   => '<a href="index.php?sec=gsetup&sec2=godmode/setup/os&tab=builder">'.html_print_image('images/builder.png', true, ['title' => __('Builder OS')]).'</a>',
    ],
];

$buttons[$tab]['active'] = true;

if (!is_metaconsole()) {
    // Header.
    ui_print_page_header(__('Edit OS'), '', false, '', true, $buttons);
}

if (!empty($id_message)) {
    switch ($id_message) {
        case 1:
            echo ui_print_success_message(__('Success creating OS'), '', true);
        break;

        case 2:
            echo ui_print_error_message(__('Fail creating OS'), '', true);
        break;

        case 3:
            echo ui_print_success_message(__('Success updating OS'), '', true);
        break;

        case 4:
            echo ui_print_error_message(__('Error updating OS'), '', true);
        break;

        case 5:
            echo ui_print_error_message(__('There are agents with this OS.'), '', true);
        break;

        case 6:
            echo ui_print_success_message(__('Success deleting'), '', true);
        break;

        case 7:
            echo ui_print_error_message(__('Error deleting'), '', true);
        break;

        default:
            // Default.
        break;
    }
}

switch ($tab) {
    case 'list':
        include_once $config['homedir'].'/godmode/setup/os.list.php';
    return;

        break;
    case 'builder':
        include_once $config['homedir'].'/godmode/setup/os.builder.php';
    return;

        break;
}