Merge branch 'feature/identification_wizard' into pandora_6.0

Conflicts:
	pandora_console/godmode/update_manager/update_manager.setup.php
This commit is contained in:
fermin831 2016-06-13 18:36:35 +02:00
commit 27cebafd02
23 changed files with 1540 additions and 10 deletions

View File

@ -72,6 +72,17 @@ config_check();
$table->styleTable = 'margin: auto; margin-top: 0px;';
$table->rowclass[0] = '';
//UM messages
if (is_user_admin ($config['id_user'])) {
include_once ("include/functions_update_manager.php");
$number_unread_messages = update_manager_get_unread_messages ();
if ($number_unread_messages > 0) {
$um_messages = html_print_image("images/header_email.png", true,
array("alt" => 'cross', "class" => 'bot', 'title' => __('UM unread messages').': ' . $number_unread_messages));
$table->data[0]['um'] = '<a href="index.php?sec=gsetup&amp;sec2=godmode/update_manager/update_manager&amp;tab=messages">' . $um_messages . "</a>";
}
}
// Search bar
$search_bar = '<form method="get" style="display: inline;" name="quicksearch" action="">';
if (!isset($config['search_keywords'])) {

View File

@ -0,0 +1,60 @@
<?php
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2016 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; 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.
/**
* @package General
*/
global $config;
include_once("include/functions_update_manager.php");
$last_message = update_manger_get_last_message ();
if ($last_message === false) return false;
update_manger_set_read_message($last_message["svn_version"], 1);
update_manager_remote_read_messages ($last_message["svn_version"]);
// Prints first step pandora registration
echo '<div id="message_id_dialog" title="' .
'[' . $last_message["svn_version"] . '] ' . $last_message['db_field_value'] . '">';
echo '<div>';
echo $last_message["data"];
echo '</div>';
echo '</div>';
?>
<script type="text/javascript" language="javascript">
/* <![CDATA[ */
$(document).ready (function () {
$("#message_id_dialog").dialog({
resizable: true,
draggable: true,
modal: true,
width: 850
});
$(".ui-widget-overlay").css("background", "#000");
$(".ui-widget-overlay").css("opacity", 0.6);
});
/* ]]> */
</script>

View File

@ -0,0 +1,385 @@
<?php
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2011 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; 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.
/**
* @package General
*/
global $config;
function display_register ($data) {
if ($data['instance_registered'] == 1) return false;
if ($data['force_register'] == 1) return true;
if ($data['force_register'] == 0) return false;
if ($data['identification_reminder'] == 0) return false;
if (!isset ($data['identification_reminder_timestamp'])) return true;
if ($data['identification_reminder_timestamp'] < time()) return true;
return false;
}
function display_newsletter ($data) {
if ($data['newsletter_subscribed'] == 1) return false;
if ($data['force_newsletter'] == 1) return true;
if ($data['force_newsletter'] == 0) return false;
if ($data['newsletter_reminder'] === 0) return false;
if (!isset ($data['newsletter_reminder_timestamp'])) return true;
if (!is_numeric ($data['newsletter_reminder_timestamp'])) return true;
if ($data['newsletter_reminder_timestamp'] < time()) return true;
return false;
}
if (is_ajax()) {
include_once($config['homedir'] . "/include/functions_update_manager.php");
$open_wizard = get_parameter ('open_wizard', 0);
$not_return = get_parameter ('not_return', 0);
if ($open_wizard) {
$register_pandora = get_parameter ('register_pandora', 0);
$newsletter = get_parameter ('newsletter', 0);
$forced = get_parameter ('forced', 0);
$future_8_days = time() + 8 * SECONDS_1DAY;
$ui_feedback = array('status' => true, 'message' => '');
if ($register_pandora) {
// Pandora register update
$um_message = update_manager_register_instance ();
$ui_feedback['message'] .= $um_message['message'] . '<br><br>';
if ($um_message['success']) {
config_update_value ('instance_registered', 1);
$ui_feedback['status'] = true && $ui_feedback['status'];
} else {
$ui_feedback['status'] = false;
}
} elseif (!$forced) {
config_update_value ('identification_reminder_timestamp', $future_8_days);
}
if ($newsletter) {
// Pandora newsletter update
$email = get_parameter ('email', '');
$um_message = update_manager_insert_newsletter ($email);
$ui_feedback['message'] .= $um_message['message'];
if ($um_message['success']) {
db_process_sql_update ('tusuario', array ('middlename' => 1), array('id_user' => $config['id_user']));
$ui_feedback['status'] = true && $ui_feedback['status'];
} else {
$ui_feedback['status'] = false;
}
} elseif (!$forced) {
db_process_sql_update ('tusuario', array ('lastname' => $future_8_days), array('id_user' => $config['id_user']));
}
// Form answer JSON
$ui_feedback['status'] = $ui_feedback['status'] ? 1 : 0;
echo io_json_mb_encode($ui_feedback);
}
if (!$not_return) {
return;
}
}
//Check if user is admin
if (!license_free()) return;
if (!users_is_admin ($config['id_user'])) return;
// Get data to display properly the wizard
$wizard_data = array ();
$wizard_data['newsletter_subscribed'] = db_get_value ('middlename', 'tusuario', 'id_user', $config['id_user']);
// force_* = 1 -> force show
// force_* = 0 -> force hide
// force_* = -1 -> show or hide depends reminder and timestamp
$wizard_data['force_newsletter'] = get_parameter ('force_newsletter', -1);
$wizard_data['newsletter_reminder'] = db_get_value ('firstname', 'tusuario', 'id_user', $config['id_user']);
$wizard_data['newsletter_reminder_timestamp'] = db_get_value ('lastname', 'tusuario', 'id_user', $config['id_user']);
$wizard_data['instance_registered'] = $config['instance_registered'];
$wizard_data['force_register'] = get_parameter ('force_register', -1);
$wizard_data['identification_reminder'] = $config['identification_reminder'];
$wizard_data['identification_reminder_timestamp'] = $config['identification_reminder_timestamp'];
$display_newsletter = display_newsletter ($wizard_data);
$display_register = display_register ($wizard_data);
$display_forced = ($wizard_data['force_newsletter'] != -1) || ($wizard_data['force_register'] != -1);
// Return if it is fully completed
if ((!$display_register) && (!$display_newsletter)) return false;
$return_button = get_parameter ('return_button', 0) == 1;
$email = db_get_value ('email', 'tusuario', 'id_user', $config['id_user']);
//Avoid to show default email
if ($email == 'admin@example.com') $email = '';
// Prints accept register license
echo '<div id="login_accept_register" title="' .
__('Pandora FMS instance identification wizard') . '" style="">';
echo '<div style="margin: 20px 0; float: left; padding-left: 15px;">';
echo html_print_image ('images/pandora_circle_big.png', true);
echo '</div>';
echo '<div style="font-size: 12pt; margin: 25px 20px; float: left;">';
echo __('KEEP UPDATED!');
echo '</div>';
echo '<div id="license_newsletter">';
$license_text = file('license.lic');
foreach ($license_text as $paragraph) {
echo '<p>' . $paragraph . "</p>";
}
echo '</div>';
echo '<div style="position:absolute; margin: 0 auto; bottom: 0px; padding-top:10px; position:relative; border: 1px solid #FFF;">';
echo '<div style="float: right;">';
html_print_submit_button("Finish", 'finish_dialog_button', false, 'class="ui-button-dialog ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok" style="width:100px;"');
echo '</div>';
$display_status_return = $return_button ? 'block' : 'none';
echo '<div style="float: right; width: 20%; display: ' . $display_status_return . ';">';
html_print_submit_button("Return", 'return_dialog_button', false, 'class="ui-button-dialog ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd" style="width:100px;"');
echo '</div>';
echo '<div style="float: left; margin-left: 0px; width: 50%; text-align: left;">';
html_print_checkbox('register', 1, false, false, false, 'cursor: \'pointer\'');
echo '&nbsp;<span style="font-size: 12px;" id="label-register">' .__("Accept register Pandora") . '</span><br>';
html_print_checkbox('newsletter', 1, false, false, false, 'cursor: \'pointer\'');
echo '&nbsp;<span style="font-size: 12px;" id="label-newsletter">' .__("Subscribe to newsletter") . '</span>';
echo "<br>";
echo '<div id="email_container">';
echo '&nbsp;<span id="label-email-newsletter"style="font-size: 12px; display: none">' .__("Email") . ': </span>';
html_print_input_text_extended ('email-newsletter', $email, 'text-email-newsletter', '', 30, 255, false, '', array ("style" => "display:none; ")); echo '&nbsp;<span id="label-email-newsletter"style="font-size: 12px; display: none">' .__("Email") . ': </span>';
echo '&nbsp;<span id="required-email-newsletter">*'.__("Required") .' </span>';
echo '</div>';
echo '</div>';
echo '</div>';
echo '</div>';
// Print yes or not dialog
echo '<div id="login_registration_yesno" title="' .
__('Pandora FMS instance identification wizard') . '" style="">';
echo '<div style="font-size: 12pt; margin: 20px;">';
echo __("Do you want to continue without any registration") . "?";
echo '</div>';
echo '<div style="float: left; padding-left: 15px; padding-top: 20px;">';
html_print_submit_button("No", 'no_registration', false, 'class="ui-button-dialog ui-widget ui-state-default ui-corner-all ui-button-text-only sub cancel" style="width:100px;"');
echo '</div>';
echo '<div style="float: right; padding-right: 15px; padding-top: 20px;">';
html_print_submit_button("Yes", 'yes_registration', false, 'class="ui-button-dialog ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd" style="width:100px;"');
echo '</div>';
echo '</div>';
// Print feedback user dialog
echo '<div id="ui_messages_feedback" style="">';
echo '<div style="float: left; margin: 15px; margin-left: 5px;">';
echo html_print_image ('images/success_circle_big.png', true);
echo '</div>';
echo '<div id="feedback_message" style="font-size: 13pt; margin: 15px 20px; padding-left:80px;"></div>';
echo '</div>';
?>
<script type="text/javascript" language="javascript">
/* <![CDATA[ */
//Show newsletter and register checkboxes
var display_register = <?php echo json_encode($display_register); ?>;
var display_newsletter = <?php echo json_encode($display_newsletter); ?>;
var display_forced = <?php echo json_encode($display_forced); ?>;
var return_button = <?php echo json_encode($return_button); ?>;
////////////////////////////////////////////////////////////////////////
//HELPER FUNCTIONS
function submit_open_wizard (register, newsletter, email, forced) {
register = register;
newsletter = newsletter ? 1 : 0;
forced = forced ? 1 : 0;
var feedback_message = '';
var feedback_status = 1;
jQuery.post ("ajax.php",
{"page": "general/login_identification_wizard",
"open_wizard": 1,
"register_pandora": register,
"newsletter": newsletter,
"email": email,
"forced": forced},
function (data) {
var feedback_message = '';
var feedback_status = 1;
jQuery.each (data, function (i, val) {
if (i == 'message') feedback_message = val;
if (i == 'status') feedback_status = val;
});
if (feedback_status == 0) {
$("#ui_messages_feedback img").attr("src", "images/fail_circle_big.png");
} else {
$("#ui_messages_feedback img").attr("src", "images/success_circle_big.png");
}
$("#feedback_message").html(feedback_message);
},
"json"
);
}
////////////////////////////////////////////////////////////////////////
//EVENT FUNCTIONS
$("#submit-return_dialog_button").click (function () {
$("#login_accept_register" ).dialog('close');
$("#all-required").hide();
$("#login_id_dialog" ).dialog('open');
});
$("#submit-finish_dialog_button").click (function () {
var newsletter = $("#checkbox-newsletter").is(':checked') ? 1 : 0;
var register = $("#checkbox-register").is(':checked');
var email = $("#text-email-newsletter").val();
if (email == '' && newsletter) {
$("#label-email-newsletter").show();
$("#text-email-newsletter").show();
$("#required-email-newsletter").show();
return;
}
if (!register && display_register && !display_forced) {
$("#login_registration_yesno").dialog('open');
} else {
var register_forced = register ? 1 : 0;
submit_open_wizard (register_forced, newsletter, email, display_forced);
$("#login_accept_register" ).dialog('close');
if (register || newsletter) {
$("#ui_messages_feedback").dialog('open');
}
}
});
$("#submit-no_registration").click (function () {
$("#login_registration_yesno").dialog('close');
});
$("#submit-yes_registration").click (function () {
var newsletter = $("#checkbox-newsletter").is(':checked') ? 1 : 0;
var email = $("#text-email-newsletter").val();
submit_open_wizard (0, newsletter, email, display_forced);
$("#login_registration_yesno").dialog('close');
$("#login_accept_register" ).dialog('close');
});
$("#checkbox-newsletter").click (function () {
if (!return_button) {
$("#label-email-newsletter").show();
$("#text-email-newsletter").show();
}
});
////////////////////////////////////////////////////////////////////////
//DISPLAY
$(document).ready (function () {
$("#login_accept_register").dialog({
resizable: false,
draggable: true,
modal: true,
height: 350,
width: 570
});
$("#login_registration_yesno").dialog({
resizable: false,
draggable: true,
modal: true,
width: 320,
overlay: {
opacity: 1,
background: "black"
},
autoOpen: false
});
$("#ui_messages_feedback").dialog({
resizable: false,
draggable: true,
modal: true,
width: 300,
overlay: {
opacity: 1,
background: "black"
},
autoOpen: false
});
//Display return button if required
if (return_button) {
$("#submit-return_dialog_button").show ();
}
// Remove the completed parts
if (!display_register) {
$("#checkbox-register").attr ('style', 'display: none !important');
$("#label-register").hide ();
}
if (!display_newsletter) {
$("#checkbox-newsletter").attr ('style', 'display: none !important');
$("#label-newsletter").hide ();
}
});
/* ]]> */
</script>
<style type="text/css">
#required-email-newsletter{
font-size : 9px;
color: red;
float:right;
left: -26px;
top: 3px;
position: relative;
display: none;
}
#email_container{
margin-top: 3px;
}
#license_newsletter {
height: 100px;
width: 100%;
overflow-y: scroll;
border: 1px solid #E4E4E4;
border-radius: 3px;
}
#license_newsletter p{
padding: 0 3px;
}
.ui-widget-overlay {
background: #000;
opacity: .6;
}
</style>

View File

@ -0,0 +1,188 @@
<?php
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2011 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; 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.
/**
* @package General
*/
global $config;
if (is_ajax()) {
$save_identification = get_parameter ('save_required_wizard', 0);
// Updates the values get on the identification wizard
if ($save_identification) {
$email = get_parameter ('email', false);
$timezone = get_parameter ('timezone', false);
$language = get_parameter ('language', false);
if ($email !== false) config_update_value ('language', $language);
if ($timezone !== false) config_update_value ('timezone', $timezone);
if ($email !== false) db_process_sql_update ('tusuario',
array ('email' => $email), array('id_user' => $config['id_user']));
config_update_value ('initial_wizard', 1);
}
return;
}
$email = db_get_value ('email', 'tusuario', 'id_user', $config['id_user']);
//Avoid to show default email
if ($email == 'admin@example.com') $email = '';
// Prints first step pandora registration
echo '<div id="login_id_dialog" title="' .
__('Pandora FMS instance identification wizard') . '" style="display: none;">';
echo '<div style="font-size: 10pt; margin: 20px;">';
echo __('Pandora FMS requires an identification of each administrator. Please, fill next information:');
echo '</div>';
echo '<div style="">';
$table = new StdClass();
$table->class = 'databox filters';
$table->width = '100%';
$table->data = array ();
$table->size = array();
$table->size[0] = '40%';
$table->style[0] = 'font-weight:bold';
$table->size[1] = '60%';
$table->border = '5px solid';
$table->data[0][0] = __('Language code for Pandora');
$table->data[0][1] = html_print_select_from_sql (
'SELECT id_language, name FROM tlanguage',
'language', $config['language'] , '', '', '', true);
$zone_name = array('Africa' => __('Africa'), 'America' => __('America'), 'Antarctica' => __('Antarctica'), 'Arctic' => __('Arctic'), 'Asia' => __('Asia'), 'Atlantic' => __('Atlantic'), 'Australia' => __('Australia'), 'Europe' => __('Europe'), 'Indian' => __('Indian'), 'Pacific' => __('Pacific'), 'UTC' => __('UTC'));
if ($zone_selected == "") {
if ($config["timezone"] != "") {
list($zone) = explode("/", $config["timezone"]);
$zone_selected = $zone;
}
else {
$zone_selected = 'Europe';
}
}
$timezones = timezone_identifiers_list();
foreach ($timezones as $timezone) {
if (strpos($timezone, $zone_selected) !== false) {
$timezone_n[$timezone] = $timezone;
}
}
$table->data[2][0] = __('Timezone setup'). ' ' . ui_print_help_tip(
__('Must have the same time zone as the system or database to avoid mismatches of time.'), true);
$table->data[2][1] = html_print_select($zone_name, 'zone', $zone_selected, 'show_timezone()', '', '', true);
$table->data[2][1] .= "&nbsp;&nbsp;". html_print_select($timezone_n, 'timezone', $config["timezone"], '', '', '', true);
$table->data[4][0] = __('E-mail');
$table->data[4][1] = html_print_input_text ('email', $email, '', 50, 255, true);
html_print_table ($table);
echo '</div>';
echo '<div style="position:absolute; margin: 0 auto; bottom: 0px; right: 10px; border: 1px solid #FFF; width: 570px">';
echo '<div style="float: right; width: 20%;">';
html_print_submit_button("Register", 'id_dialog_button', false, 'class="ui-button-dialog ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok" style="width:100px;"');
echo '</div>';
echo '<div id="all-required" style="float: right; margin-right: 30px; display: none; color: red;">';
echo __("All fields required");
echo '</div>';
echo '</div>';
echo '</div>';
?>
<script type="text/javascript" language="javascript">
/* <![CDATA[ */
////////////////////////////////////////////////////////////////////////
//HELPER FUNCTIONS
function show_timezone () {
zone = $("#zone").val();
$.ajax({
type: "POST",
url: "ajax.php",
data: "page=godmode/setup/setup&select_timezone=1&zone=" + zone,
dataType: "json",
success: function(data) {
$("#timezone").empty();
jQuery.each (data, function (id, value) {
timezone = value;
$("select[name='timezone']").append($("<option>").val(timezone).html(timezone));
});
}
});
}
////////////////////////////////////////////////////////////////////////
//EVENT FUNCTIONS
$("#submit-id_dialog_button").click (function () {
//All fields required
if ($("#text-email").val() == '') {
$("#all-required").show();
} else {
var timezone = $("#timezone").val();
var language = $("#language").val();
var email_identification = $("#text-email").val();
jQuery.post ("ajax.php",
{"page": "general/login_required",
"save_required_wizard": 1,
"email": email_identification,
"language": language,
"timezone": timezone},
function (data) {}
);
$("#login_id_dialog").dialog('close');
first_time_identification ();
}
});
////////////////////////////////////////////////////////////////////////
//DISPLAY
$(document).ready (function () {
$("#login_id_dialog").dialog({
resizable: true,
draggable: true,
modal: true,
height: 280,
width: 630,
overlay: {
opacity: 0.5,
background: "black"
},
closeOnEscape: false,
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
});
$(".ui-widget-overlay").css("background", "#000");
$(".ui-widget-overlay").css("opacity", 0.6);
});
/* ]]> */
</script>

View File

@ -270,8 +270,6 @@ if (check_acl ($config['id_user'], 0, "PM")) {
$sub["godmode/admin_access_logs"]["id"] = 'System audit log';
$sub["godmode/setup/links"]["text"] = __('Links');
$sub["godmode/setup/links"]["id"] = 'Links';
$sub["godmode/update_manager/update_manager"]["text"] = __('Update manager');
$sub["godmode/update_manager/update_manager"]["id"] = 'Update manager';
$sub["godmode/extensions"]["sub2"] = $sub2;
@ -404,6 +402,36 @@ foreach ($rows as $row) {
$menu_godmode["links"]["sub"] = $sub;
// Update Manager
$menu_godmode["messages"]["text"] = __('Update manager');
$menu_godmode["messages"]["sec2"] = "";
$menu_godmode["messages"]["id"] = "god-um_messages";
$sub = array ();
$sub["godmode/update_manager/update_manager&tab=offline"]["text"] = __('Offline');
$sub["godmode/update_manager/update_manager&tab=offline"]["id"] = 'Offline';
$sub["godmode/update_manager/update_manager&tab=online"]["text"] = __('Online');
$sub["godmode/update_manager/update_manager&tab=online"]["id"] = 'Online';
$sub["godmode/update_manager/update_manager&tab=setup"]["text"] = __('Options');
$sub["godmode/update_manager/update_manager&tab=setup"]["id"] = 'Options';
if (license_free() && is_user_admin ($config['id_user'])) {
include_once ("include/functions_update_manager.php");
//If there are unread messages, display the notification icon
$number_total_messages;
$number_unread_messages = update_manager_get_unread_messages ();
if ($number_unread_messages > 0) {
$menu_godmode["messages"]["notification"] = $number_unread_messages;
}
$sub["godmode/update_manager/update_manager&tab=messages"]["text"] = __('Messages');
$sub["godmode/update_manager/update_manager&tab=messages"]["id"] = 'Messages';
}
$menu_godmode["messages"]["sub"] = $sub;
if (!$config['pure']) {
menu_print_menu ($menu_godmode);
}

View File

@ -0,0 +1,335 @@
<?php
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2011 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; 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.
global $config;
include_once ("include/functions_update_manager.php");
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");
require ("general/noaccess.php");
return;
}
if (is_ajax()) {
$charge_message = get_parameter ('charge_message', 0);
$not_read_single = get_parameter ('not_read_single', 0);
if ($charge_message) {
$message_id = get_parameter ('message_id', 0);
if ($message_id == 0) return;
$message_html = db_get_value ('data', 'tupdate', 'svn_version', $message_id);
echo $message_html;
}
if ($not_read_single) {
$message_id = get_parameter ('message_id', 0);
update_manger_set_read_message ($message_id, 1);
update_manager_remote_read_messages ($message_id);
}
return;
}
$not_read_action = get_parameter('not_read_button', false);
$read_action = get_parameter('read_button', false);
$delete_action = get_parameter ('delete_button', false);
if ($not_read_action !== false) {
$selected = get_parameter ('select_multiple', false);
foreach ($selected as $k => $message_id) {
update_manger_set_read_message ($message_id, 0);
}
}
if ($read_action !== false) {
$selected = get_parameter ('select_multiple', false);
foreach ($selected as $k => $message_id) {
update_manger_set_read_message ($message_id, 1);
}
}
if ($delete_action !== false) {
$selected = get_parameter ('select_multiple', false);
foreach ($selected as $k => $message_id) {
update_manger_set_deleted_message ($message_id);
}
}
$offset = (int) get_parameter ('offset', 0);
$total_messages = update_manager_get_not_deleted_messages ();
if ($total_messages){
// Get all messages
$sql = 'SELECT data, svn_version, filename, data_rollback, db_field_value FROM tupdate ';
$sql .= 'WHERE description NOT LIKE \'%"' . $config['id_user'] . '":1%\' ';
$sql .= 'OR description IS NULL ';
$sql .= 'ORDER BY svn_version DESC ';
$sql .= 'LIMIT ' . $offset . ',' . $config['block_size'] . ' ';
$um_messages = array ();
$um_messages = db_get_all_rows_sql ($sql);
echo '<form method="post" action="index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=setup">';
html_print_input_hidden ('tab', 'messages');
html_print_input_hidden ('offset', $offset);
echo '<div class="action-buttons" style="float:right; padding: 10px 5px">';
html_print_submit_button (__('Delete'), 'delete_button', false,
'class="sub delete"');
echo '</div>';
echo '<div class="action-buttons" style="float:right; padding: 10px 5px">';
html_print_submit_button (__('Mark as not read'), 'not_read_button', false,
'class="sub wand"');
echo '</div>';
echo '<div class="action-buttons" style="float:right; padding: 10px 5px">';
html_print_submit_button (__('Mark as read'), 'read_button', false,
'class="sub upd"');
echo '</div>';
if ($total_messages > $config['block_size']) {
ui_pagination (update_manager_get_total_messages (), false, 0);
}
$table = new stdClass();
$table->width = '100%';
$table->class = 'databox data';
$table->cellpadding = 4;
$table->cellspacing = 4;
$table->head = array ();
$table->data = array ();
$table->align = array ();
$table->size = array ();
$table->id = 'um_messages_table';
$table->align[0] = "left";
$table->align[1] = "left";
$table->align[2] = "left";
$table->align[3] = "left";
$table->align[4] = "left";
$table->size[0] = "30px";
$table->size[1] = "100px";
$table->size[3] = "80px";
$table->size[4] = "60px";
$table->style[0] = "padding-left: 20px";
$table->head[0] = html_print_checkbox_extended('all_selection[]', 0, false, false, '', '', true);
$table->head[1] = __('Message Id');
$table->head[2] = __('Subject');
$table->head[3] = __('Expiration date');
$i = 0;
foreach ($um_messages as $message) {
$data[0] = html_print_checkbox_extended('select_multiple[]', $message['svn_version'], false, false, '', 'class="check_selection"', true);
$table->cellclass[count($table->data)][0] = 'um_individual_check';
$data[1] = $message['svn_version'];
$table->cellclass[count($table->data)][1] = 'um_individual_info';
$data[2] = $message['db_field_value'];
$table->cellclass[count($table->data)][2] = 'um_individual_subject';
$data[3] = $message['filename'];
$table->cellclass[count($table->data)][3] = 'um_individual_info';
// Change row class if message is read or not by this user
if (update_manger_get_read_message ($message['svn_version'], $message['data_rollback'])) {
$table->rowclass[count($table->data)] = "um_read_message";
} else {
$table->rowclass[count($table->data)] = "um_not_read_message";
}
array_push ($table->data, $data);
// Insert an empty row too. Here the message will be displayed
$empty[0] = "";
$table->colspan[count($table->data)][0] = 4;
$table->cellclass[count($table->data)][0] = "um_message_" . $i;
$table->cellstyle[count($table->data)][0] = "display: none;";
array_push ($table->data, $empty);
$i++;
}
html_print_table($table);
echo '<div class="action-buttons" style="float:right; padding: 0 5px;">';
html_print_submit_button (__('Delete'), 'delete_button', false,
'class="sub delete"');
echo '</div>';
echo '<div class="action-buttons" style="float:right; padding: 0 5px;">';
html_print_submit_button (__('Mark as not read'), 'not_read_button', false,
'class="sub wand"');
echo '</div>';
echo '<div class="action-buttons" style="float:right; padding: 0 5px;">';
html_print_submit_button (__('Mark as read'), 'read_button', false,
'class="sub upd"');
echo '</div>';
echo '</form>';
} else {
ui_print_info_message ( array ( 'no_close' => true, 'message' => __('There is not any update manager messages.') ) );
}
?>
<script type="text/javascript">
$("#checkbox-all_selection").click( function() {
if ($("#checkbox-all_selection").is(':checked')) {
$(".check_selection").prop('checked', true);
$(".check_selection").parent().parent().css('background', "#FFFFEE");
} else {
$(".check_selection").prop('checked', false);
$(".check_selection").parent().parent().css('background', "inherit");
}
});
$("#um_messages_table").click( function (event) {
//Get all position information required
var target = (event.target.id);
//If header is clicked, return
if (target == '') return;
var raw_position = (event.target.id).replace(/.*table-/ig,"");
var row = raw_position.replace(/-.*/ig, "");
var column = raw_position.replace(/.*-/ig, "");
// Delete and mark as not read column will do not open the message
if (column == 0) return;
if (row%2 == 0) {
// Clicking a tittle
// Class where object will be displayed
var current_class = ".um_message_" + row/2;
var message_id = $("#"+target).parent().find(":nth-child(2)").html();
var div_id = 'um_individual_message' + row/2;
// Get the message via Ajax (only if it is not checked now
$(current_class).append('<div class="' + div_id + '"></div>');
if ($("." + div_id).length == 1) {
jQuery.get ("ajax.php",
{"page": "godmode/update_manager/update_manager.messages",
"charge_message": 1,
"message_id": message_id},
function (data) {
$("." + div_id).hide ()
.empty ()
.append (data)
.show ();
},
"html"
);
// Update message if it is not readed
var className = $("#"+target).parent().attr('class');
if (className == 'um_not_read_message'){
jQuery.post ("ajax.php",
{"page": "godmode/update_manager/update_manager.messages",
"not_read_single": 1,
"message_id": message_id},
function (data) {}
);
$("#"+target).parent().children().each(function(){
var full_class = $(this).attr('class');
full_class = full_class.replace (/um_not_read_message/g, "um_read_message");
$(this).attr('class', full_class);
});
}
}
// Display message
$(current_class).toggle ();
}
});
$(".check_selection").click(function (event) {
if ($("#" + event.target.id).is(':checked')) {
$("#" + event.target.id).parent().parent().css('background', "#FFFFEE");
} else {
$("#" + event.target.id).parent().parent().css('background', 'inherit');
}
});
$(".um_individual_info, .um_individual_subject").hover(
function () {
$(this).parent().css('background', '#F2F2F2');
},
function () {
if ($(this).parent().find(":first-child").is(':checked')) {
$(this).parent().css('background', "#FFFFEE");
} else {
$(this).parent().css('background', 'inherit');
}
}
);
</script>
<style type="text/css">
.um_not_read_message{
font-weight: 900;
}
.um_read_message{
font-weight: 500;
color: #909090;
}
.um_individual_info, .um_individual_subject {
cursor: pointer;
}
.databox td {
padding-top: 15px;
padding-bottom: 15px;
}
td input[type=checkbox] {
ms-transform: scale(1);
moz-transform: scale(1);
o-transform: scale(1);
webkit-transform: scale(1);
transform: scale(1);
}
.c0 {
padding-left: 17px !important;
}
</style>

View File

@ -42,6 +42,13 @@ $buttons = array(
'text' => '<a href="index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=online">' .
html_print_image("images/op_gis.png", true, array ("title" => __('Online update manager'))) .'</a>')
);
if (license_free()) {
$buttons['messages'] = array(
'active' => ($tab == 'messages') ? true : false,
'text' => '<a href="index.php?sec=gsetup&sec2=godmode/update_manager/update_manager&tab=messages">' .
html_print_image("images/email_mc.png", true, array ("title" => __('Update manager messages'))) .'</a>');
}
switch ($tab) {
case 'setup':
@ -53,6 +60,9 @@ switch ($tab) {
case 'online':
$title = __('Update manager » Online');
break;
case 'messages':
$title = __('Update manager » Messages');
break;
}
ui_print_page_header($title,
@ -65,6 +75,9 @@ switch ($tab) {
case 'offline':
require($config['homedir'] . "/godmode/update_manager/update_manager.offline.php");
break;
case 'messages':
require($config['homedir'] . "/godmode/update_manager/update_manager.messages.php");
break;
case 'online':
default:
require($config['homedir'] . "/godmode/update_manager/update_manager.online.php");

View File

@ -32,7 +32,7 @@ $update_manager_proxy_server = get_parameter('update_manager_proxy_server');
$update_manager_proxy_port = get_parameter('update_manager_proxy_port');
$update_manager_proxy_user = get_parameter('update_manager_proxy_user');
$update_manager_proxy_password = get_parameter('update_manager_proxy_password');
$identification_reminder = get_parameter('identification_reminder', 1);
if ($action_update_url_update_manager) {
$result = config_update_value('url_update_manager',
@ -49,7 +49,9 @@ if ($action_update_url_update_manager) {
if ($result)
$result = config_update_value('update_manager_proxy_password',
$update_manager_proxy_password);
if ($result && license_free())
$result = config_update_value('identification_reminder',
$identification_reminder);
ui_print_result_message($result,
__('Succesful Update the url config vars.'),
__('Unsuccesful Update the url config vars.'));
@ -83,6 +85,14 @@ $table->data[4][0] = __('Proxy password:');
$table->data[4][1] = html_print_input_password('update_manager_proxy_password',
$update_manager_proxy_password, __('Proxy password'), 40, 60, true);
if (license_free()) {
$config["identification_reminder"] = isset($config["identification_reminder"]) ? $config["identification_reminder"] : 1;
$table->data[6][0] = __('Remember registration to admins') .
ui_print_help_tip(__('Every 8 days, a message is displayed to admin to remember Pandora is not registered'), true);
$table->data[6][1] = __('Yes').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button ('identification_reminder', 1, '', $config["identification_reminder"], true).'&nbsp;&nbsp;';
$table->data[6][1] .= __('No').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button ('identification_reminder', 0, '', $config["identification_reminder"], true);
}
html_print_input_hidden('action_update_url_update_manager', 1);
html_print_table($table);

Binary file not shown.

After

(image error) Size: 1.5 KiB

Binary file not shown.

After

(image error) Size: 2.1 KiB

Binary file not shown.

After

(image error) Size: 1.6 KiB

Binary file not shown.

After

(image error) Size: 474 B

View File

@ -1195,6 +1195,20 @@ function enterprise_installed() {
return $return;
}
/**
* Check if the license is PANDORA-FREE.
*
* @return boolean.
*/
function license_free() {
$return = true;
$pandora_license = db_get_value ('value', 'tupdate_settings', '`key`', 'customer_key');
if ($pandora_license !== 'PANDORA-FREE') $return = false;
return $return;
}
/**
* TODO: Document enterprise functions
*/

View File

@ -201,6 +201,8 @@ function config_update_config () {
$error_update[] = __('Allow create planned downtimes in the past');
if (!config_update_value ('limit_parameters_massive', get_parameter('limit_parameters_massive')))
$error_update[] = __('Limit parameters massive');
if (!config_update_value ('identification_reminder', get_parameter('identification_reminder')))
$error_update[] = __('Identification_reminder');
break;
case 'enterprise':
if (isset($config['enterprise_installed']) && $config['enterprise_installed'] == 1) {
@ -1442,6 +1444,22 @@ function config_process_config () {
config_update_value ('max_file_size', "2M");
}
if (!isset ($config["initial_wizard"])) {
config_update_value ('initial_wizard', 0);
}
if (!isset ($config["identification_reminder"])) {
config_update_value ('identification_reminder', 1);
}
if (!isset ($config["identification_reminder_timestamp"])) {
config_update_value ('identification_reminder_timestamp', 0);
}
if (!isset ($config["instance_registered"])) {
config_update_value ('instance_registered', 0);
}
/* Finally, check if any value was overwritten in a form */
@ -1454,6 +1472,25 @@ function config_check () {
// At this first version I'm passing errors using session variables, because the error management
// is done by an AJAX request. Better solutions could be implemented in the future :-)
if (license_free() && users_is_admin($config['id_user'])) {
$login = get_parameter ('login', false);
//Registration advice
if ((!isset ($config['instance_registered']) || ($config['instance_registered'] != 1)) && ($login === false)) {
set_pandora_error_for_header(
__('Click <a style="font-weight:bold; text-decoration:underline" href="javascript: force_run_register();"> here</a> to start the registration process'),
__("This instance is not registered in the Update manager"));
}
//Newsletter advice
$newsletter = db_get_value ('middlename', 'tusuario', 'id_user', $config['id_user']);
if ($newsletter != 1 && $login === false) {
set_pandora_error_for_header(
__('Click <a style="font-weight:bold; text-decoration:underline" href="javascript: force_run_newsletter();"> here</a> to start the newsletter subscription process'),
__("Missing user in newsletter"));
}
}
// Check default password for "admin"
$is_admin = db_get_value('is_admin', 'tusuario', 'id_user', $config['id_user']);
if ($is_admin) {
@ -1618,6 +1655,7 @@ function config_check () {
__("Variable disable_functions containts functions system() or exec(), in PHP configuration file (php.ini)"). '<br /><br />' .
__('Please, change it on your PHP configuration file (php.ini) or contact with administrator (Dont forget restart apache process after changes)'), __("Problems with disable functions in PHP.INI"));
}
}
function config_return_in_bytes($val) {

View File

@ -403,6 +403,10 @@ function menu_print_menu (&$menu) {
$padding_top = ( $length >= 18) ? 6 : 12;
$output .= '<div id="title_menu" style="color:#FFF; padding-top:'. $padding_top . 'px; display:none;">' . $main["text"] . '</div>';
// Add the notification ball if defined
if (isset($main["notification"])) {
$output .= '<div class="notification_ball">' . $main["notification"] . '</div>';
}
$padding_top = 0;
$length = 0;
//$output .= html_print_image("include/styles/images/toggle.png", true, array("class" => "toggle", "alt" => "toogle"));

View File

@ -368,6 +368,227 @@ function update_manager_check_online_free_packages ($is_ajax=true) {
}
function update_manager_curl_request ($action, $additional_params = false) {
global $config;
$error_array = array ('success' => true, 'update_message' => '');
$update_message = "";
$um_config_values = update_manager_get_config_values();
$params = array(
'license' => $um_config_values['license'],
'limit_count' => $um_config_values['limit_count'],
'current_package' => $um_config_values['current_update'],
'version' => $um_config_values['version'],
'build' => $um_config_values['build']
);
if ($additional_params !== false) {
$params = array_merge ($params, $additional_params);
}
$params['action'] = $action;
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, $config['url_update_manager']);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_POST, true);
curl_setopt($curlObj, CURLOPT_POSTFIELDS, $params);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, false);
if (isset($config['update_manager_proxy_server'])) {
curl_setopt($curlObj, CURLOPT_PROXY, $config['update_manager_proxy_server']);
}
if (isset($config['update_manager_proxy_port'])) {
curl_setopt($curlObj, CURLOPT_PROXYPORT, $config['update_manager_proxy_port']);
}
if (isset($config['update_manager_proxy_user'])) {
curl_setopt($curlObj, CURLOPT_PROXYUSERPWD, $config['update_manager_proxy_user'] . ':' . $config['update_manager_proxy_password']);
}
$result = curl_exec($curlObj);
$http_status = curl_getinfo($curlObj, CURLINFO_HTTP_CODE);
curl_close($curlObj);
$error_array['http_status'] = $http_status;
//~ html_debug_print("=============", true);
//~ html_debug_print($params, true);
//~ html_debug_print($http_status, true);
//~ html_debug_print($result, true);
if ($result === false) {
$error_array['success'] = false;
if ($is_ajax) {
echo __("Could not connect to internet");
return $error_array;
}
else {
$error_array['update_message'] = __("Could not connect to internet");
return $error_array;
}
}
else if ($http_status >= 400 && $http_status < 500) {
$error_array['success'] = false;
if ($is_ajax) {
echo __("Server not found.");
return $error_array;
}
else {
$error_array['update_message'] = __("Server not found.");
return $error_array;
}
}
elseif ($http_status >= 500) {
$error_array['success'] = false;
if ($is_ajax) {
echo $result;
return $error_array;
}
else {
$error_array['update_message'] = $result;
return $error_array;
}
}
$error_array['update_message'] = $result;
return $error_array;
}
function update_manager_insert_newsletter ($email) {
global $config;
if ($email === '') return false;
$params = array(
'email' => $email,
'language' => $config['language']
);
$result = update_manager_curl_request ('new_newsletter', $params);
if (!$result['success']) {
return false;
}
switch ($result['http_status']) {
case 200:
$message = json_decode($result['update_message'], true);
if ($message['success'] == 1) {
return array('success' => true, 'message' => __('E-mail successfully subscribed to newsletter.'));
}
return array('success' => false, 'message' => __('E-mail has already subscribed to newsletter.'));
default:
return array('success' => false, 'message' => __('Update manager returns error code: ') . $result['http_status'] . '.');
break;
}
}
function update_manager_register_instance () {
global $config;
$email = db_get_value ('email', 'tusuario', 'id_user', $config['id_user']);
$params = array(
'language' => $config['language'],
'timezone' => $config['timezone'],
'email' => $email
);
$result = update_manager_curl_request ('new_register', $params);
if (!$result['success']) {
return array('success' => false, 'message' => $result['update_message']);
}
switch ($result['http_status']) {
case 200:
//Retrieve the PUID
$message = json_decode($result['update_message'], true);
if ($message['success'] == 1) {
$puid = $message['pandora_uid'];
config_update_value ('pandora_uid', $puid);
//The tupdate table is reused to display messages. A specific entry to tupdate_package is required.
//Then, this tupdate_package id is saved in tconfig
db_process_sql_insert ('tupdate_package', array ('description' => '__UMMESSAGES__'));
$id_um_package_messages = db_get_value('id', 'tupdate_package', 'description', '__UMMESSAGES__');
config_update_value ('id_um_package_messages', $id_um_package_messages);
return array('success' => true, 'message' => __('Pandora successfully subscribed with UID: ') . $puid . '.');
}
return array('success' => false, 'message' => __('Unsuccessful subscription.'));
break;
default:
return array('success' => false, 'message' => __('Update manager returns error code: ') . $result['http_status'] . '.');
break;
}
}
function update_manager_download_messages () {
global $config;
//Do not ask in next 2 hours
config_update_value ('last_um_check', time() + 2 * SECONDS_1HOUR);
if (!isset ($config['pandora_uid'])) return;
// Delete old messages
db_get_sql('DELETE FROM tupdate WHERE UNIX_TIMESTAMP(filename) < UNIX_TIMESTAMP(NOW())');
// Build the curl request
$params = array(
'pandora_uid' => $config['pandora_uid'],
'timezone' => $config['timezone']
);
$result = update_manager_curl_request ('get_messages', $params);
if (!$result['success']) {
return ($result['update_message']);
}
switch ($result['http_status']) {
case 200:
$message = json_decode($result['update_message'], true);
if ($message['success'] == 1) {
foreach ($message['messages'] as $single_message) {
// Convert subject -> db_field_value; message_html -> data; expiration -> filename; message_id -> svn_version
$single_message['db_field_value'] = $single_message['subject'];
unset ($single_message['subject']);
$single_message['data'] = $single_message['message_html'];
unset ($single_message['message_html']);
$single_message['filename'] = $single_message['expiration'];
unset ($single_message['expiration']);
$single_message['svn_version'] = $single_message['message_id'];
unset ($single_message['message_id']);
// Add common tconfig id_update_package
$single_message['id_update_package'] = $config['id_um_package_messages'];
$result = db_process_sql_insert('tupdate', $single_message);
}
}
break;
default:
break;
}
}
function update_manager_remote_read_messages ($id_message) {
global $config;
$params = array(
'pandora_uid' => $config['pandora_uid'],
'message_id' => $id_message
);
$result = update_manager_curl_request ('mark_as_read', $params);
//if (!$result['success']) {
// html_debug ($result['update_message'], true);
//}
return $result['success'];
}
/**
* The update copy entirire the tgz or fail (leave some parts copies and some part not).
@ -523,4 +744,72 @@ function update_manager_get_current_package() {
return $current_update;
}
// Set the read or not read status message of current user
function update_manger_set_read_message ($message_id, $status) {
global $config;
$rollback = db_get_value('data_rollback', 'tupdate', 'svn_version', $message_id);
$users_read = json_decode ($rollback, true);
$users_read[$config['id_user']] = $status;
$rollback = json_encode ($users_read);
db_process_sql_update('tupdate', array('data_rollback' => $rollback), array('svn_version' => $message_id));
}
// Get the read or not read status message
function update_manger_get_read_message ($message_id, $rollback = false) {
global $config;
if ($rollback === false) {
$rollback = db_get_value('data_rollback', 'tupdate', 'svn_version', $message_id);
}
$users_read = json_decode ($rollback, true);
if (isset ($users_read[$config['id_user']]) && ($users_read[$config['id_user']] == 1)) {
return true;
}
return false;
}
function update_manager_get_total_messages () {
global $config;
$sql = 'SELECT COUNT(*) FROM tupdate';
return (int) db_get_sql ($sql);
}
function update_manager_get_unread_messages () {
global $config;
$total = update_manager_get_total_messages ();
$sql = 'SELECT COUNT(*) FROM tupdate WHERE data_rollback LIKE \'%"' . $config['id_user'] . '":1%\'';
$read = (int) db_get_sql ($sql);
return $total - $read;
}
function update_manager_get_not_deleted_messages () {
global $config;
$total = update_manager_get_total_messages ();
$sql = 'SELECT COUNT(*) FROM tupdate WHERE description LIKE \'%"' . $config['id_user'] . '":1%\'';
$read = (int) db_get_sql ($sql);
return $total - $read;
}
function update_manger_set_deleted_message ($message_id) {
global $config;
$rollback = db_get_value('description', 'tupdate', 'svn_version', $message_id);
$users_read = json_decode ($rollback, true);
$users_read[$config['id_user']] = 1;
$rollback = json_encode ($users_read);
db_process_sql_update('tupdate', array('description' => $rollback, ), array('svn_version' => $message_id));
//Mark as read too
update_manger_set_read_message ($message_id, 1);
}
?>

View File

@ -196,6 +196,10 @@ li:hover ul { display: block; }
border-color: #777;
background: url(../../images/links.menu.png) no-repeat 50% 50%;
}
#icon_god-um_messages {
border-color: #777;
background: url(../../images/um_messages.menu.png) no-repeat 50% 50%;
}
#subicon_god-setup {
top: -140px;
@ -215,6 +219,10 @@ li:hover ul { display: block; }
top: -130px;
}
#subicon_god-um_messages {
top: -300px;
}
#menu_container {
z-index: 3;
position: absolute;
@ -222,6 +230,22 @@ li:hover ul { display: block; }
background-color: #AAA;
}
.notification_ball {
margin-top: 2px;
margin-left: 29px;
font-size: 6pt;
font-weight: 900;
background: red;
height: 12px;
width: 12px;
border-radius: 50px;
position: absolute;
text-align: center;
color: white;
padding-top: 1px;
font-family: sans-serif;
}
ul {
margin: 0;
padding: 0;

View File

@ -78,6 +78,7 @@ if(session_id() == '') {
session_start ();
}
require_once ("include/config.php");
require_once ("include/functions_config.php");
// If metaconsole activated, redirect to it
@ -533,6 +534,14 @@ clear_pandora_error_for_header();
$config['logged'] = false;
extensions_load_extensions ($process_login);
// Check for update manager messages
if (license_free() && is_user_admin ($config['id_user']) && $config['last_um_check'] > (time() + 2 * SECONDS_1HOUR)) {
require_once("include/functions_update_manager.php");
update_manager_download_messages ();
}
if ($process_login) {
/* Call all extensions login function */
extensions_call_login_function ();
@ -602,18 +611,33 @@ if ($old_global_counter_chat != $now_global_counter_chat) {
$_SESSION['new_chat'] = true;
}
// Pop-ups display order:
// 1) login_required (timezone and email)
// 2) identification (newsletter and register)
// 3) last_message (update manager message popup
// 4) login_help (online help, enterpirse version, forums, documentation)
if (!isset($config['initial_wizard']) || $config['initial_wizard'] != 1) {
include_once ("general/login_required.php");
}
if (get_parameter ('login', 0) !== 0) {
// Display news dialog
include_once("general/news_dialog.php");
// Display login help info dialog
// If it's configured to not skip this
if (!isset($config['skip_login_help_dialog']) ||
$config['skip_login_help_dialog'] == 0) {
$display_previous_popup = false;
if (license_free() && is_user_admin ($config['id_user']) && $config['initial_wizard'] == 1) {
$display_previous_popup = include_once("general/login_identification_wizard.php");
if ($display_previous_popup === false) {
$display_previous_popup = include_once("general/last_message.php");
}
}
if ((!isset($config['skip_login_help_dialog']) || $config['skip_login_help_dialog'] == 0) &&
$display_previous_popup === false &&
$config['initial_wizard'] == 1) {
include_once("general/login_help_dialog.php");
}
}
// Header
@ -779,7 +803,6 @@ else {
echo "</div>"; // main_pure
}
if ($config["pure"] == 0) {
echo '</div>'; //container div
echo '<div style="clear:both"></div>';
@ -830,6 +853,70 @@ require('include/php_to_js_values.php');
};
})();
function force_run_register () {
run_identification_wizard (1, 0, 0);
}
function force_run_newsletter () {
run_identification_wizard (0, 1, 0);
}
function first_time_identification () {
run_identification_wizard (-1, -1, 1);
}
var times_fired_register_wizard = 0;
function run_identification_wizard (register, newsletter , return_button) {
if (times_fired_register_wizard) {
$(".ui-dialog-titlebar-close").show();
//Reset some values
$("#label-email-newsletter").hide();
$("#text-email-newsletter").hide();
$("#required-email-newsletter").hide();
$("#checkbox-register").removeAttr('checked');
$("#checkbox-newsletter").removeAttr('checked');
// Hide or show parts
if (register == 1) {
$("#checkbox-register").show();
$("#label-register").show ();
}
if (register == 0) {
$("#checkbox-register").attr ('style', 'display: none !important');
$("#label-register").hide ();
}
if (newsletter == 1) {
$("#checkbox-newsletter").show();
$("#label-newsletter").show ();
}
if (newsletter == 0) {
$("#checkbox-newsletter").attr ('style', 'display: none !important');
$("#label-newsletter").hide ();
}
$("#login_accept_register").dialog('open');
}
else {
$(".ui-dialog-titlebar-close").show();
$("#container").append('<div class="id_wizard"></div>');
jQuery.get ("ajax.php",
{"page": "general/login_identification_wizard",
"not_return": 1,
"force_register": register,
"force_newsletter": newsletter,
"return_button": return_button},
function (data) {
$(".id_wizard").hide ()
.empty ()
.append (data);
},
"html"
);
}
times_fired_register_wizard++;
return false;
}
//Dynamically assign footer position and width.
function adjustFooter() {
/*

View File

@ -0,0 +1,19 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis malesuada ante et nibh bibendum vehicula sed a nulla. Vivamus volutpat elit dictum dui mollis lacinia. Cras ac nibh cursus dui dignissim faucibus. Vivamus felis nisi, vulputate eget ipsum ac, tristique volutpat nisi. Curabitur lacinia maximus purus, a gravida purus tempor at. Nullam nec metus quis ligula laoreet consectetur vitae ut massa. Ut commodo nunc in pellentesque imperdiet. Nam justo ex, eleifend sed justo in, rhoncus auctor ex. Nullam commodo nulla in sodales faucibus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;
Proin suscipit a quam sed auctor. Fusce commodo, ex vitae congue molestie, lacus leo maximus risus, quis lobortis sem lacus in velit. Sed a egestas nisi. Aenean nec gravida enim, id venenatis enim. Nunc imperdiet porttitor posuere. Nunc tempor at quam ut suscipit. Aenean at bibendum erat, nec pretium sem. Etiam congue eu risus et accumsan. Ut viverra nisl augue, in rutrum nibh tincidunt sit amet. Nunc ac felis auctor, interdum nibh ac, gravida eros. In lacinia, metus pharetra maximus ultricies, diam risus ultrices enim, in posuere nibh nulla a libero. Aenean cursus interdum metus id bibendum.
Proin vulputate leo sed iaculis ultricies. Nunc et dapibus libero. Aenean vitae mauris sit amet nisl fringilla elementum. Maecenas iaculis ipsum vitae enim vulputate, aliquam sodales dui iaculis. Sed elementum urna at lectus consequat, sed vestibulum arcu mollis. Sed non magna malesuada, condimentum elit et, feugiat ante. Pellentesque a consectetur eros. Fusce aliquet sit amet sem ac fringilla. Praesent sagittis convallis tincidunt. Aliquam et pellentesque neque. Sed consectetur, neque sollicitudin feugiat tincidunt, libero odio tempus ligula, mollis fringilla dui mauris nec sem. Pellentesque pulvinar mauris ac enim consequat, vel pulvinar neque imperdiet.
Vivamus varius consequat lacus. Sed gravida est a molestie congue. In iaculis lacus magna, a malesuada enim finibus at. Nullam auctor nunc vitae diam vestibulum convallis. Curabitur gravida, metus nec sodales ultrices, leo libero consectetur orci, at rhoncus turpis tortor eget felis. Fusce tempor, leo sed rutrum rhoncus, nisl augue pellentesque purus, et facilisis leo nisi non leo. Nam sed congue erat, vitae sagittis orci. Integer luctus nibh arcu, eu viverra est mollis ac. Sed in tempor dui. Proin a pretium nisi. Sed felis neque, mattis eu nisi fermentum, efficitur semper nulla. Quisque lacinia tellus et odio aliquet eleifend.
Aliquam gravida ligula in massa blandit, eu semper magna vulputate. Suspendisse potenti. In vitae fringilla metus. Mauris iaculis, ex non condimentum semper, felis lectus rhoncus quam, at consectetur turpis sem vitae sem. Quisque sed turpis diam. In a nunc faucibus, accumsan tellus ut, rhoncus elit. Nulla consequat magna non massa cursus pulvinar.
Etiam tincidunt sed odio sit amet placerat. Duis mattis dui a placerat aliquet. Etiam finibus orci nec mi dignissim euismod. Suspendisse ac metus sit amet ex lobortis iaculis at vel eros. In finibus lectus non interdum sagittis. Nulla non efficitur odio. Aliquam tempus sagittis gravida. Nam vel magna et leo molestie faucibus a sit amet ipsum. Duis ultricies, enim et rhoncus maximus, est ipsum ornare arcu, ut tempus diam lacus ac dolor.
In vel condimentum lacus, elementum sodales magna. Etiam porta, neque ac sodales tincidunt, diam mi semper quam, a molestie massa ligula eget ligula. Praesent et sodales enim. Donec in ultrices enim. Etiam dapibus, sem at faucibus vehicula, metus ipsum tempus dolor, id tincidunt neque erat vel nulla. Sed in justo eu ipsum accumsan tempor. Vestibulum blandit metus quam, ac condimentum magna vehicula nec. Integer sagittis ante non sapien efficitur porttitor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vestibulum ut justo volutpat, venenatis nisi quis, imperdiet lorem. Quisque nec justo id urna convallis rutrum sit amet vitae quam. Nullam scelerisque, sem et egestas bibendum, ipsum nunc lacinia orci, et feugiat ex purus vitae magna.
Quisque suscipit auctor nisi, nec mattis nisi cursus a. Proin nec turpis ut libero condimentum aliquam eget eleifend arcu. Aliquam commodo sed ante in efficitur. Fusce sollicitudin sit amet felis at ultricies. Praesent pulvinar aliquam malesuada. Praesent vel dolor feugiat, eleifend metus in, molestie arcu. Nunc efficitur, orci eget tristique congue, metus arcu tempor sapien, non ultricies mauris massa vel mauris. Praesent tristique ornare felis, a laoreet tellus varius pharetra. Phasellus ex eros, faucibus quis orci laoreet, commodo mattis magna. Morbi nec nisl finibus, vulputate erat et, fringilla justo.
Suspendisse semper scelerisque mi, vel faucibus ante hendrerit non. Praesent auctor quam at purus elementum, venenatis faucibus erat mollis. Morbi consequat eu mi a imperdiet. Sed volutpat nunc eget euismod condimentum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus cursus, enim in eleifend egestas, nunc libero congue dui, eget vehicula nulla erat eu nisl. Pellentesque ipsum velit, condimentum non risus nec, hendrerit accumsan arcu. Praesent maximus, augue et tristique rhoncus, est tortor ullamcorper nisl, ut pharetra elit lectus ac nulla. Sed ultricies dignissim arcu. In consequat lectus a aliquet sagittis. Curabitur sit amet arcu ante. Etiam finibus velit tellus, sed consectetur felis euismod nec. Etiam a dui sed sem iaculis molestie. Duis auctor augue nec condimentum cursus. Aliquam volutpat erat urna, eget accumsan tellus dictum tincidunt. Proin nec convallis lorem.
Donec pulvinar interdum odio. Interdum et malesuada fames ac ante ipsum primis in faucibus. Vestibulum fermentum gravida purus, et dictum elit fermentum id. Sed elementum, neque lobortis consequat sodales, nisi diam efficitur lectus, et blandit enim justo non tortor. Maecenas lacus libero, efficitur ut commodo sit amet, vulputate in felis. Nulla in ullamcorper turpis, vel pellentesque urna. In tempus, nulla eget laoreet maximus, urna velit porttitor est, sed egestas lectus dui vel lectus. Fusce et dictum nibh, iaculis rutrum enim. Vestibulum in consequat augue. Phasellus at sem eget diam suscipit scelerisque nec et justo. Aliquam erat volutpat.

View File

@ -102,6 +102,7 @@ if (isset ($_GET["modified"]) && !$view_mode) {
$upd_info["language"] = get_parameter_post ("language", $user_info["language"]);
$upd_info["id_skin"] = get_parameter ("skin", $user_info["id_skin"]);
$upd_info["block_size"] = get_parameter ("block_size", $config["block_size"]);
$upd_info["firstname"] = get_parameter ("newsletter_reminder", $user_info["first_name"]);
$default_block_size = get_parameter ("default_block_size", 0);
if($default_block_size) {
$upd_info["block_size"] = 0;
@ -355,7 +356,25 @@ if ($double_auth_enabled) {
}
// Dialog
$data[0] .= "<div id=\"dialog-double_auth\"><div id=\"dialog-double_auth-container\"></div></div>";
$table->colspan[count($table->data)][0] = 3;
// Newsletter
if (license_free()) {
$data[1] = __('Newsletter Subscribed');
$data[1] .= $jump . ui_print_help_tip(__('Subs news'), true);
if ($user_info["middlename"]) {
$data[1] .= $jump . '<span style="font-weight:initial;">' . __('You are subscribed to PandoraFMS newsletter') . "</span>";
}
else {
$data[1] .= $jump . '<span style="font-weight:initial;">' . __('Click <a style="text-decoration:underline; font-weight:bold;" href="javascript: force_run_newsletter();"> here </a> to init the newsletter subscription process') . "</span>";
}
$data[2] = __('Newsletter Reminder');
$data[2] .= ui_print_help_tip(__('Remind news'), true);
if ($user_info["firstname"] != 0) $user_info["firstname"] = 1;
$data[2] .= html_print_checkbox('newsletter_reminder', 1, $user_info["firstname"], true);
} else {
$table->colspan[count($table->data)][0] = 3;
}
$table->rowclass[] = '';
$table->rowstyle[] = 'font-weight: bold;';
$table->data[] = $data;

View File

@ -132,6 +132,8 @@ INSERT INTO tconfig (token, value) VALUES ('custom_report_front_font', 'FreeSans
INSERT INTO tconfig (token, value) VALUES ('custom_report_front_logo', 'images/pandora_logo_white.jpg');
INSERT INTO tconfig (token, value) VALUES ('custom_report_front_header', '');
INSERT INTO tconfig (token, value) VALUES ('custom_report_front_footer', '');
INSERT INTO tconfig (token, value) VALUES ('identification_reminder', 1);
INSERT INTO tconfig (token, value) VALUES ('identification_reminder_timestamp', 0);
INSERT INTO tconfig (token, value) VALUES ('post_process_custom_values', '{"0.00000038580247":"Seconds&#x20;to&#x20;months","0.00000165343915":"Seconds&#x20;to&#x20;weeks","0.00001157407407":"Seconds&#x20;to&#x20;days","0.01666666666667":"Seconds&#x20;to&#x20;minutes","0.00000000093132":"Bytes&#x20;to&#x20;Gigabytes","0.00000095367432":"Bytes&#x20;to&#x20;Megabytes","0.0009765625":"Bytes&#x20;to&#x20;Kilobytes","0.00000001653439":"Timeticks&#x20;to&#x20;weeks","0.00000011574074":"Timeticks&#x20;to&#x20;days"}');
COMMIT;

View File

@ -119,6 +119,8 @@ INSERT INTO "tconfig" ("token", "value") VALUES
('custom_report_front_logo', 'images/pandora_logo_white.jpg'),
('custom_report_front_header', ''),
('custom_report_front_footer', '');
('identification_reminder', 1);
('identification_reminder_timestamp', 0);
COMMIT WORK;

View File

@ -106,6 +106,8 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
('custom_report_front_logo', 'images/pandora_logo_white.jpg'),
('custom_report_front_header', ''),
('custom_report_front_footer', ''),
('identification_reminder', 1),
('identification_reminder_timestamp', 0),
('post_process_custom_values', '{"0.00000038580247":"Seconds&#x20;to&#x20;months","0.00000165343915":"Seconds&#x20;to&#x20;weeks","0.00001157407407":"Seconds&#x20;to&#x20;days","0.01666666666667":"Seconds&#x20;to&#x20;minutes","0.00000000093132":"Bytes&#x20;to&#x20;Gigabytes","0.00000095367432":"Bytes&#x20;to&#x20;Megabytes","0.0009765625":"Bytes&#x20;to&#x20;Kilobytes","0.00000001653439":"Timeticks&#x20;to&#x20;weeks","0.00000011574074":"Timeticks&#x20;to&#x20;days"}');
UNLOCK TABLES;