0byt3m1n1
Path:
/
data
/
applications
/
aps.bak
/
webcalendar
/
1.2.3-0
/
standard
/
htdocs
/
[
Home
]
File: edit_report.php
<?php /* Presents a HTML form to add or edit a report. * * Input Parameters: * - <var>report_id</var> (optional) - the report id of the report to edit. If * blank, user is adding a new report. * - <var>public</var> (optional) - If set to '1' and user is an admin user, * then we are creating a report for the public user. * * @author Craig Knudsen <cknudsen@cknudsen.com> * @copyright Craig Knudsen, <cknudsen@cknudsen.com>, http://www.k5n.us/cknudsen * @license http://www.gnu.org/licenses/gpl.html GNU GPL * @version $Id: edit_report.php,v 1.58.2.3 2007/11/12 15:40:31 umcesrjones Exp $ * @package WebCalendar * @subpackage Reports */ /* Security: * If system setting $REPORTS_ENABLED is set to anything other than 'Y', * then don't allow access to this page. * If $ALLOW_VIEW_OTHER is 'N', then do not allow selection of participants. * Only report creator (cal_login in webcal_report), or an admin user, * can edit/delete report. */ include_once 'includes/init.php'; load_user_categories (); $adding_report = false; $charset = ( empty ( $LANGUAGE ) ? 'iso-8859-1' : translate ( 'charset' ) ); $checked = ' checked="checked"'; $error = ( empty ( $REPORTS_ENABLED ) || $REPORTS_ENABLED != 'Y' || $login == '__public__' ? print_not_auth (12) : '' ); $report_id = getValue ( 'report_id', '-?[0-9]+', true ); $selected = ' selected="selected"'; $show_participants = ( $single_user == 'Y' || $DISABLE_PARTICIPANTS_FIELD == 'Y' ? false : true ); $updating_public = ( $is_admin && ! empty ( $public ) && $PUBLIC_ACCESS == 'Y' ); $report_user = ( $updating_public ? '__public__' : ''); if ( empty ( $report_id ) ) { $adding_report = true; $include_header = $report_allow_nav = 'Y'; $report_id = -1; $report_is_global = 'N'; } // Set date range options. $ranges = array ( '0' => translate ( 'Tomorrow' ), '1' => translate ( 'Today' ), '2' => translate ( 'Yesterday' ), '3' => translate ( 'Day before yesterday' ), '10' => translate ( 'Next week' ), '11' => translate ( 'This week' ), '12' => translate ( 'Last week' ), '13' => translate ( 'Week before last' ), '20' => translate ( 'Next week and week after' ), '21' => translate ( 'This week and next week' ), '22' => translate ( 'Last week and this week' ), '23' => translate ( 'Last two weeks' ), '30' => translate ( 'Next month' ), '31' => translate ( 'This month' ), '32' => translate ( 'Last month' ), '33' => translate ( 'Month before last' ), '40' => translate ( 'Next year' ), '41' => translate ( 'This year' ), '42' => translate ( 'Last year' ), '43' => translate ( 'Year before last' ), '50' => translate ( 'Next 14 days' ), '51' => translate ( 'Next 30 days' ), '52' => translate ( 'Next 60 days' ), '53' => translate ( 'Next 90 days' ), '54' => translate ( 'Next 180 days' ), '55' => translate ( 'Next 365 days' ), ); // Get list of users visible to the current user. if ( empty ( $error ) && $show_participants ) { $userlist = get_my_users ( '', 'view' ); if ( $NONUSER_ENABLED == 'Y' ) { // Restrict NUC list if groups are enabled. $nonusers = get_my_nonusers ( $login, true, 'view' ); $userlist = ( $NONUSER_AT_TOP == 'Y' ? array_merge ( $nonusers, $userlist ) : array_merge ( $userlist, $nonusers ) ); } $userlistcnt = count ( $userlist ); } // Default values. $day_template = '<dt><b>${date}</b></dt> <dd><dl>${events}</dl></dd>'; $event_template = '<dt>${name}</dt> <dd><b>' . translate ( 'Date' ) . ':</b> ${date}<br /> <b>' . translate ( 'Time' ) . ':</b> ${time}<br /> ${description}</dd> '; $page_template = '<dl>${days}</dl>'; // Setup option arrays. $day_options = array ( 'events', 'date', 'fulldate', 'report_id' ); $event_options = array ( 'name', 'description', 'date', 'fulldate', 'time', 'starttime', 'endtime', 'duration', 'location', 'url', 'priority', 'href', 'user', 'fullname', 'report_id' ); $page_options = array ( 'days', 'report_id' ); /* Generate clickable option lists. */ function print_options ( $textarea, $option ) { // Use ASCII values for ${}. echo ' <a onclick="addMe( \'' . $textarea . '\', \'${' . $option . '}\' )">${' . $option . '}</a><br />'; } if ( empty ( $error ) && $report_id >= 0 ) { $res = dbi_execute ( 'SELECT cal_login, cal_report_id, cal_is_global, cal_report_type, cal_include_header, cal_report_name, cal_time_range, cal_user, cal_allow_nav, cal_cat_id, cal_include_empty, cal_show_in_trailer, cal_update_date FROM webcal_report WHERE cal_report_id = ?', array ( $report_id ) ); if ( $res ) { if ( $row = dbi_fetch_row ( $res ) ) { $i = 0; $report_login = $row[$i++]; $report_id = $row[$i++]; $report_is_global = $row[$i++]; $report_type = $row[$i++]; $report_include_header = $row[$i++]; $report_name = $row[$i++]; $report_time_range = $row[$i++]; $report_user = $row[$i++]; $report_allow_nav = $row[$i++]; $report_cat_id = $row[$i++]; $report_include_empty = $row[$i++]; $report_show_in_menu = $row[$i++]; $report_update_date = $row[$i++]; // Check permissions. if ( $show_participants && ! empty ( $report_user ) ) { $user_is_in_list = false; for ( $i = 0; $i < $userlistcnt; $i++ ) { if ( $report_user == $userlist[$i]['cal_login'] ) $user_is_in_list = true; } if ( ! $user_is_in_list && $report_login != $login && ! $is_admin ) $error = print_not_auth (13); } if ( ! $is_admin && $login != $report_login ) // Only creator or an admin can edit/delete the event. $error = print_not_auth (3); // If we are editing a public user report we need to set $updating_public. if ( $is_admin && $report_login == '__public__' ) $updating_public = true; } else // translate ( 'Invalid report id.' ) $error = str_replace ( 'XXX', $report_id, translate ( 'Invalid report id XXX.' ) ); dbi_free_result ( $res ); } else $error = db_error (); $res = dbi_execute ( 'SELECT cal_template_type, cal_template_text FROM webcal_report_template WHERE cal_report_id = ?', array ( $report_id ) ); if ( $res ) { while ( $row = dbi_fetch_row ( $res ) ) { if ( $row[0] == 'D' ) $day_template = $row[1]; elseif ( $row[0] == 'E' ) $event_template = $row[1]; elseif ( $row[0] == 'P' ) $page_template = $row[1]; } dbi_free_result ( $res ); } } else { // Default values for new report. $report_allow_nav = $report_include_header = 'Y'; $report_cat_id = $report_update_date = ''; $report_id = -1; $report_include_empty = $report_is_global = $report_show_in_menu = 'N'; $report_login = $login; $report_name = translate ( 'Unnamed Report' ); $report_time_range = 11; // Current week. $report_type = 'html'; // $report_user already set. } print_header (); if ( ! empty ( $error ) ) { echo $error . print_trailer ( false ); exit; } ob_start (); echo ' <h2>' . ( $updating_public ? translate ( $PUBLIC_ACCESS_FULLNAME ) . ' ' : '' ) . ( $adding_report ? translate ( 'Add Report' ) : translate ( 'Edit Report' ) ) . '</h2> <form action="edit_report_handler.php" method="post" name="reportform">' . ( $updating_public ? ' <input type="hidden" name="public" value="1" />' : '' ) . ( ! $adding_report ? ' <input type="hidden" name="report_id" value="' . $report_id . '" />' : '' ) . ' <table> <tr> <td><label for="rpt_name">' . translate ( 'Report name' ) . ':</label></td> <td><input type="text" name="report_name" id="rpt_name" size="40" ' . 'maxlength="50" value="' . $report_name . '" /></td> </tr>'; if ( $show_participants ) { echo ' <tr> <td><label for="rpt_user">' . translate ( 'User' ) . ':</label></td> <td> <select name="report_user" id="rpt_user" size="1"> <option value=""' . ( empty ( $report_user ) ? $selected : '' ) . '>' . translate ( 'Current User' ) . '</option>'; for ( $i = 0; $i < $userlistcnt; $i++ ) { echo ' <option value="' . $userlist[$i]['cal_login'] . '"' . ( ! empty ( $report_user ) && $report_user == $userlist[$i]['cal_login'] ? $selected : '' ) . '>' . $userlist[$i]['cal_fullname'] . '</option>'; } echo ' </select> </td> </tr>'; } echo ( $is_admin ? ' <tr> <td><label>' . translate ( 'Global' ) . ':</label></td> <td>' . print_radio ( 'is_global', '', '', ( ! empty ( $report_is_global ) && ( $report_is_global == 'Y' ? 'Y' : 'N' ) ) ) . '</td> </tr>' // The report will always be shown in the menu for the creator of the report. // For admin users who create a global report, // allow option of adding to all users menu. . ' <tr> <td><label>' . translate ( 'Include link in menu' ) . ':</label></td> <td>' . print_radio ( 'show_in_trailer', '', '', ( ! empty ( $report_show_in_menu ) && ( $report_show_in_menu == 'Y' ? 'Y' : 'N' ) ) ) . '</td> </tr>' : '' ) . ' <tr> <td><label>' . translate ( 'Include standard header/trailer' ) . ':</label></td> <td>' . print_radio ( 'include_header', '', '', ( ! empty ( $report_include_header ) && ( $report_include_header == 'Y' ? 'Y' : 'N' ) ) ) . '</td> </tr> <tr> <td><label>' . translate ( 'Include previous/next links' ) . ':</label></td> <td>' . print_radio ( 'allow_nav', '', '', ( ! empty ( $report_allow_nav ) && ( $report_allow_nav == 'Y' ? 'Y' : 'N' ) ) ) . '</td> </tr> <tr> <td><label>' . translate ( 'Include empty dates' ) . ':</label></td> <td>' . print_radio ( 'include_empty', '', '', ( ! empty ( $report_include_empty ) && ( $report_include_empty == 'Y' ? 'Y' : 'N' ) ) ) . '</td> </tr> <tr> <td><label for="rpt_time_range">' . translate ( 'Date range' ) . ':</label></td> <td> <select name="time_range" id="rpt_time_range">'; while ( list ( $num, $descr ) = each ( $ranges ) ) { echo ' <option value="' . $num . '"' . ( $report_time_range == $num ? $selected : '' ) . '>' . $descr . '</option>'; } echo ' </select> </td> </tr>'; if ( $CATEGORIES_ENABLED == 'Y' ) { echo ' <tr> <td><label for="rpt_cat_id">' . translate ( 'Category' ) . ':</label></td> <td> <select name="cat_id" id="rpt_cat_id"> <option value="">' . translate ( 'None' ) . '</option>'; while ( list ( $K, $V ) = each ( $categories ) ) { echo ' <option value="' . $K . '"' . ( $report_cat_id == $K ? $selected : '' ) . '>' . $V['cat_name'] . '</option>'; } echo ' </select> </td> </tr>'; } //end $CATEGORIES_ENABLED test echo ' </table> <table> <tr> <td> </td> <td> </td> <td colspan="2"><label>' . translate ( 'Template variables' ) . '</label></td> </tr> <tr> <td valign="top"><label>' . translate ( 'Page template' ) . ':</label></td> <td><textarea rows="12" cols="60" name="page_template">' . htmlentities ( $page_template, ENT_COMPAT, $charset ) . '</textarea></td> <td class="aligntop cursoradd" colspan="2">'; foreach ( $page_options as $option ) { print_options ( 'page_template', $option ); } echo ' </td> </tr> <tr> <td valign="top"><label>' . translate ( 'Day template' ) . ':</label></td> <td><textarea rows="12" cols="60" name="day_template">' . htmlentities ( $day_template, ENT_COMPAT, $charset ) . '</textarea></td> <td class="aligntop cursoradd" colspan="2">'; foreach ( $day_options as $option ) { print_options ( 'day_template', $option ); } echo ' </td> </tr> <tr> <td valign="top"><label>' . translate ( 'Event template' ) . ':</label></td> <td><textarea rows="12" cols="60" name="event_template" id="event_template">' . htmlentities ( $event_template, ENT_COMPAT, $charset ) . '</textarea></td> <td class="aligntop cursoradd" width="150px">'; foreach ( $event_options as $option ) { print_options ( 'event_template', $option ); } echo ' </td> <td class="aligntop cursoradd">'; $extra_names = get_site_extras_names( EXTRA_DISPLAY_REPORT ); if ( count ( $extra_names ) > 0 ) echo ' <label>' . translate ( 'Site Extras' ) . '</label><br />'; foreach ( $extra_names as $name ) { print_options ( 'event_template', 'extra:' . $name ); } echo ' </td> </tr> <tr> <td colspan="4"> <input type="submit" value="' . translate ( 'Save' ) . '" />' . ( $adding_report ? '' : ' <input type="submit" name="delete" value="' . translate ( 'Delete' ) . '" onclick="return confirm( \'' . str_replace ( 'XXX', translate ( 'report' ), translate ( 'Are you sure you want to delete this XXX?' ) ) . '\');" />' ); ob_end_flush (); ?> </td> </tr> </table> </form> <script type="text/javascript" language="javascript"> <!-- <![CDATA[ // This script borrowed from phpMyAdmin with some mofification. function addMe ( areaname, myValue ) { var textarea = document.reportform.elements[areaname]; // IE support. if ( document.selection ) { textarea.focus (); sel = document.selection.createRange (); sel.text = myValue; } // MOZILLA/NETSCAPE support. else if ( textarea.selectionStart || textarea.selectionStart == '0' ) { var startPos = textarea.selectionStart, endPos = textarea.selectionEnd; textarea.value = textarea.value.substring ( 0, startPos ) + myValue + textarea.value.substring ( endPos, textarea.value.length ); } else { textarea.value += myValue; } } //]]> --> </script> <?php echo print_trailer (); ?>