0byt3m1n1
Path:
/
data
/
applications
/
aps.bak
/
webcalendar
/
1.2.3-0
/
standard
/
htdocs
/
[
Home
]
File: edit_nonusers_handler.php
<?php /* $Id: edit_nonusers_handler.php,v 1.28.2.6 2008/03/04 01:19:05 cknudsen Exp $ */ include_once 'includes/init.php'; load_user_layers (); if ( ! $is_admin ) { echo print_not_auth ( 3, true ); echo "</body>\n</html>"; exit; } $error = ''; $save = getPostValue ( 'Save' ); $add = getPostValue ( 'Add' ); $delete = getPostValue ( 'delete' ); $nid = getPostValue ( 'nid' ); $nfirstname = getPostValue ( 'nfirstname' ); $nlastname = getPostValue ( 'nlastname' ); $nadmin = getPostValue ( 'nadmin' ); $old_admin = getPostValue ( 'old_admin' ); $ispublic = getPostValue ( 'ispublic' ); if ( empty ( $ispublic ) ) $ispublic = 'N'; if ( ! empty ( $delete ) ) { // delete this nonuser calendar // Get event ids for all events this user is a participant $events = get_users_event_ids ( $nid ); // Now count number of participants in each event... // If just 1, then save id to be deleted $delete_em = array (); for ( $i = 0, $cnt = count ( $events ); $i < $cnt; $i++ ) { $res = dbi_execute ( 'SELECT COUNT( * ) FROM webcal_entry_user WHERE cal_id = ?', array ( $events[$i] ) ); if ( $res ) { if ( $row = dbi_fetch_row ( $res ) ) { if ( $row[0] == 1 ) $delete_em[] = $events[$i]; } dbi_free_result ( $res ); } } // Now delete events that were just for this user for ( $i = 0, $cnt = count ( $delete_em ); $i < $cnt; $i++ ) { dbi_execute ( 'DELETE FROM webcal_entry_repeats WHERE cal_id = ?', array ( $delete_em[$i] ) ); dbi_execute ( 'DELETE FROM webcal_entry_repeats_not WHERE cal_id = ?', array ( $delete_em[$i] ) ); dbi_execute ( 'DELETE FROM webcal_entry_log WHERE cal_entry_id = ?', array ( $delete_em[$i] ) ); dbi_execute ( 'DELETE FROM webcal_import_data WHERE cal_id = ?', array ( $delete_em[$i] ) ); dbi_execute ( 'DELETE FROM webcal_site_extras WHERE cal_id = ?', array ( $delete_em[$i] ) ); dbi_execute ( 'DELETE FROM webcal_entry_ext_user WHERE cal_id = ?', array ( $delete_em[$i] ) ); dbi_execute ( 'DELETE FROM webcal_reminders WHERE cal_id =? ', array ( $delete_em[$i] ) ); dbi_execute ( 'DELETE FROM webcal_blob WHERE cal_id = ?', array ( $delete_em[$i] ) ); dbi_execute ( 'DELETE FROM webcal_entry WHERE cal_id = ?', array ( $delete_em[$i] ) ); } // Delete user participation from events dbi_execute ( 'DELETE FROM webcal_entry_user WHERE cal_login = ?', array ( $nid ) ); // Delete any layers other users may have that point to this user. dbi_execute ( 'DELETE FROM webcal_user_layers WHERE cal_layeruser = ?', array ( $nid ) ); // Delete any UAC calendar access entries for this user. dbi_execute ( 'DELETE FROM webcal_access_user WHERE cal_login = ? OR cal_other_user = ?', array ( $nid, $nid ) ); // Delete any UAC function access entries for this user. dbi_execute ( 'DELETE FROM webcal_access_function WHERE cal_login = ?', array ( $nid ) ); // Delete user if ( ! dbi_execute ( 'DELETE FROM webcal_nonuser_cals WHERE cal_login = ?', array ( $nid ) ) ) $error = db_error (); } else if ( ! empty ( $save ) ) { // Updating $query_params = array (); $sql = 'UPDATE webcal_nonuser_cals SET '; if ($nlastname) { $sql .= ' cal_lastname = ?, '; $query_params[] = $nlastname; } if ($nfirstname) { $sql .= ' cal_firstname = ?, '; $query_params[] = $nfirstname; } if ( $ispublic ) { $sql .= ' cal_is_public = ?, '; $query_params[] = $ispublic; } $query_params[] = $nadmin; $query_params[] = $nid; if ( ! dbi_execute ( $sql . 'cal_admin = ? WHERE cal_login = ?', $query_params ) ) $error = db_error (); } else if ( ! empty ( $add ) ){ // Adding if ( preg_match ( '/^[\w]+$/', $nid ) ) { $nid = $NONUSER_PREFIX.$nid; if ( ! dbi_execute ( 'INSERT INTO webcal_nonuser_cals ( cal_login, cal_firstname, cal_lastname, cal_admin, cal_is_public ) VALUES ( ?, ?, ?, ?, ? )', array ( $nid, $nfirstname, $nlastname, $nadmin, $ispublic ) ) ) { $error = db_error (); } } else { $error = translate ( 'Calendar ID' ).' '.translate ( 'word characters only' ).'.'; } //Add entry in UAC access table for new admin and remove for of admin //first delete any record for this user/nuc combo dbi_execute ( 'DELETE FROM webcal_access_user WHERE cal_login = ? AND cal_other_user = ?', array ( $nadmin, $nid ) ); if ( ! dbi_execute ( 'INSERT INTO webcal_access_user ( cal_login, cal_other_user, cal_can_view, cal_can_edit, cal_can_approve, cal_can_invite, cal_can_email, cal_see_time_only ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ? )', array ( $nadmin, $nid, 511, 511, 511, 'Y', 'Y', 'N' ) ) ) { die_miserable_death ( translate ( 'Database error' ) . ': ' . dbi_error () ); } // Delete old admin... //TODO Make this an optional step if ( ! empty ( $old_admin ) ) dbi_execute ( 'DELETE FROM webcal_access_user WHERE cal_login = ? AND cal_other_user = ?', array ( $old_admin, $nid ) ); } echo error_check('users.php?tab=nonusers', false); ?>