webcalendar

Hex Artifact Content
Login

Artifact 40fc8b422308418d8c79ac010cdc462ea9691104636b154a8a77f3ff81ff1b47:


0000: 3c 3f 70 68 70 0a 2f 2a 20 24 49 64 3a 20 6e 6f  <?php./* $Id: no
0010: 6e 75 73 65 72 73 5f 68 61 6e 64 6c 65 72 2e 70  nusers_handler.p
0020: 68 70 2c 76 20 31 2e 32 33 2e 32 2e 35 20 32 30  hp,v 1.23.2.5 20
0030: 31 32 2f 30 32 2f 32 38 20 30 32 3a 30 37 3a 34  12/02/28 02:07:4
0040: 35 20 63 6b 6e 75 64 73 65 6e 20 45 78 70 20 24  5 cknudsen Exp $
0050: 20 2a 2f 0a 69 6e 63 6c 75 64 65 5f 6f 6e 63 65   */.include_once
0060: 20 27 69 6e 63 6c 75 64 65 73 2f 69 6e 69 74 2e   'includes/init.
0070: 70 68 70 27 3b 0a 72 65 71 75 69 72 65 5f 76 61  php';.require_va
0080: 6c 69 64 65 5f 72 65 66 65 72 72 69 6e 67 5f 75  lide_referring_u
0090: 72 6c 20 28 29 3b 0a 6c 6f 61 64 5f 75 73 65 72  rl ();.load_user
00a0: 5f 6c 61 79 65 72 73 20 28 29 3b 0a 0a 24 6e 69  _layers ();..$ni
00b0: 64 20 3d 20 67 65 74 56 61 6c 75 65 20 28 20 27  d = getValue ( '
00c0: 6e 69 64 27 20 29 3b 0a 24 6f 6c 64 5f 61 64 6d  nid' );.$old_adm
00d0: 69 6e 20 3d 20 67 65 74 56 61 6c 75 65 20 28 20  in = getValue ( 
00e0: 27 6f 6c 64 5f 61 64 6d 69 6e 27 20 29 3b 0a 24  'old_admin' );.$
00f0: 6e 66 69 72 73 74 6e 61 6d 65 20 3d 20 67 65 74  nfirstname = get
0100: 56 61 6c 75 65 20 28 20 27 6e 66 69 72 73 74 6e  Value ( 'nfirstn
0110: 61 6d 65 27 20 29 3b 0a 24 6e 6c 61 73 74 6e 61  ame' );.$nlastna
0120: 6d 65 20 3d 20 67 65 74 56 61 6c 75 65 20 28 20  me = getValue ( 
0130: 27 6e 6c 61 73 74 6e 61 6d 65 27 20 29 3b 0a 24  'nlastname' );.$
0140: 6e 61 64 6d 69 6e 20 3d 20 67 65 74 56 61 6c 75  nadmin = getValu
0150: 65 20 28 20 27 6e 61 64 6d 69 6e 27 20 29 3b 0a  e ( 'nadmin' );.
0160: 24 69 73 70 75 62 6c 69 63 20 3d 20 67 65 74 56  $ispublic = getV
0170: 61 6c 75 65 20 28 20 27 69 73 70 75 62 6c 69 63  alue ( 'ispublic
0180: 27 20 29 3b 0a 24 61 63 74 69 6f 6e 20 3d 20 67  ' );.$action = g
0190: 65 74 56 61 6c 75 65 20 28 20 27 61 63 74 69 6f  etValue ( 'actio
01a0: 6e 27 20 29 3b 0a 24 64 65 6c 65 74 65 20 3d 20  n' );.$delete = 
01b0: 67 65 74 56 61 6c 75 65 20 28 20 27 64 65 6c 65  getValue ( 'dele
01c0: 74 65 27 20 29 3b 0a 0a 69 66 20 28 20 21 20 24  te' );..if ( ! $
01d0: 69 73 5f 61 64 6d 69 6e 20 29 20 7b 0a 20 20 65  is_admin ) {.  e
01e0: 63 68 6f 20 70 72 69 6e 74 5f 6e 6f 74 5f 61 75  cho print_not_au
01f0: 74 68 20 28 20 33 2c 20 74 72 75 65 20 29 20 2e  th ( 3, true ) .
0200: 20 70 72 69 6e 74 5f 74 72 61 69 6c 65 72 20 28   print_trailer (
0210: 29 3b 0a 20 20 65 78 69 74 3b 0a 7d 0a 24 65 72  );.  exit;.}.$er
0220: 72 6f 72 20 3d 20 27 27 3b 0a 0a 69 66 20 28 20  ror = '';..if ( 
0230: 24 61 63 74 69 6f 6e 20 3d 3d 20 27 44 65 6c 65  $action == 'Dele
0240: 74 65 27 20 7c 7c 20 24 61 63 74 69 6f 6e 20 3d  te' || $action =
0250: 3d 20 74 72 61 6e 73 6c 61 74 65 20 28 20 27 44  = translate ( 'D
0260: 65 6c 65 74 65 27 20 29 20 29 20 7b 0a 20 20 2f  elete' ) ) {.  /
0270: 2f 20 64 65 6c 65 74 65 20 74 68 69 73 20 6e 6f  / delete this no
0280: 6e 75 73 65 72 20 63 61 6c 65 6e 64 61 72 0a 20  nuser calendar. 
0290: 20 24 75 73 65 72 20 3d 20 24 6e 69 64 3b 0a 0a   $user = $nid;..
02a0: 20 20 2f 2f 20 47 65 74 20 65 76 65 6e 74 20 69    // Get event i
02b0: 64 73 20 66 6f 72 20 61 6c 6c 20 65 76 65 6e 74  ds for all event
02c0: 73 20 74 68 69 73 20 75 73 65 72 20 69 73 20 61  s this user is a
02d0: 20 70 61 72 74 69 63 69 70 61 6e 74 2e 0a 20 20   participant..  
02e0: 24 65 76 65 6e 74 73 20 3d 20 67 65 74 5f 75 73  $events = get_us
02f0: 65 72 73 5f 65 76 65 6e 74 5f 69 64 73 20 28 20  ers_event_ids ( 
0300: 24 75 73 65 72 20 29 3b 0a 0a 20 20 2f 2f 20 4e  $user );..  // N
0310: 6f 77 20 63 6f 75 6e 74 20 6e 75 6d 62 65 72 20  ow count number 
0320: 6f 66 20 70 61 72 74 69 63 69 70 61 6e 74 73 20  of participants 
0330: 69 6e 20 65 61 63 68 20 65 76 65 6e 74 2e 2e 2e  in each event...
0340: 0a 20 20 2f 2f 20 49 66 20 6a 75 73 74 20 31 2c  .  // If just 1,
0350: 20 74 68 65 6e 20 73 61 76 65 20 69 64 20 74 6f   then save id to
0360: 20 62 65 20 64 65 6c 65 74 65 64 2e 0a 20 20 24   be deleted..  $
0370: 64 65 6c 65 74 65 5f 65 6d 20 3d 20 61 72 72 61  delete_em = arra
0380: 79 20 28 29 3b 0a 20 20 66 6f 72 20 28 20 24 69  y ();.  for ( $i
0390: 20 3d 20 30 2c 20 24 63 6e 74 20 3d 20 63 6f 75   = 0, $cnt = cou
03a0: 6e 74 20 28 20 24 65 76 65 6e 74 73 20 29 3b 20  nt ( $events ); 
03b0: 24 69 20 3c 20 24 63 6e 74 3b 20 24 69 2b 2b 20  $i < $cnt; $i++ 
03c0: 29 20 7b 0a 20 20 20 20 24 72 65 73 20 3d 20 64  ) {.    $res = d
03d0: 62 69 5f 65 78 65 63 75 74 65 20 28 20 27 53 45  bi_execute ( 'SE
03e0: 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20  LECT COUNT( * ) 
03f0: 46 52 4f 4d 20 77 65 62 63 61 6c 5f 65 6e 74 72  FROM webcal_entr
0400: 79 5f 75 73 65 72 0a 20 20 20 20 20 20 57 48 45  y_user.      WHE
0410: 52 45 20 63 61 6c 5f 69 64 20 3d 20 3f 27 2c 20  RE cal_id = ?', 
0420: 61 72 72 61 79 20 28 20 24 65 76 65 6e 74 73 5b  array ( $events[
0430: 24 69 5d 20 29 20 29 3b 0a 20 20 20 20 69 66 20  $i] ) );.    if 
0440: 28 20 24 72 65 73 20 29 20 7b 0a 20 20 20 20 20  ( $res ) {.     
0450: 20 69 66 20 28 20 24 72 6f 77 20 3d 20 64 62 69   if ( $row = dbi
0460: 5f 66 65 74 63 68 5f 72 6f 77 20 28 20 24 72 65  _fetch_row ( $re
0470: 73 20 29 20 26 26 20 24 72 6f 77 5b 30 5d 20 3d  s ) && $row[0] =
0480: 3d 20 31 20 29 0a 20 20 20 20 20 20 20 20 24 64  = 1 ).        $d
0490: 65 6c 65 74 65 5f 65 6d 5b 5d 20 3d 20 24 65 76  elete_em[] = $ev
04a0: 65 6e 74 73 5b 24 69 5d 3b 0a 0a 20 20 20 20 20  ents[$i];..     
04b0: 20 64 62 69 5f 66 72 65 65 5f 72 65 73 75 6c 74   dbi_free_result
04c0: 20 28 20 24 72 65 73 20 29 3b 0a 20 20 20 20 7d   ( $res );.    }
04d0: 0a 20 20 7d 0a 20 20 2f 2f 20 4e 6f 77 20 64 65  .  }.  // Now de
04e0: 6c 65 74 65 20 65 76 65 6e 74 73 20 74 68 61 74  lete events that
04f0: 20 77 65 72 65 20 6a 75 73 74 20 66 6f 72 20 74   were just for t
0500: 68 69 73 20 75 73 65 72 0a 20 20 66 6f 72 20 28  his user.  for (
0510: 20 24 69 20 3d 20 30 2c 20 24 63 6e 74 20 3d 20   $i = 0, $cnt = 
0520: 63 6f 75 6e 74 20 28 20 24 64 65 6c 65 74 65 5f  count ( $delete_
0530: 65 6d 20 29 3b 20 24 69 20 3c 20 24 63 6e 74 3b  em ); $i < $cnt;
0540: 20 24 69 2b 2b 20 29 20 7b 0a 20 20 20 20 64 62   $i++ ) {.    db
0550: 69 5f 65 78 65 63 75 74 65 20 28 20 27 44 45 4c  i_execute ( 'DEL
0560: 45 54 45 20 46 52 4f 4d 20 77 65 62 63 61 6c 5f  ETE FROM webcal_
0570: 65 6e 74 72 79 20 57 48 45 52 45 20 63 61 6c 5f  entry WHERE cal_
0580: 69 64 20 3d 20 3f 27 2c 0a 20 20 20 20 20 20 61  id = ?',.      a
0590: 72 72 61 79 20 28 20 24 64 65 6c 65 74 65 5f 65  rray ( $delete_e
05a0: 6d 5b 24 69 5d 20 29 20 29 3b 0a 20 20 7d 0a 0a  m[$i] ) );.  }..
05b0: 20 20 2f 2f 20 44 65 6c 65 74 65 20 75 73 65 72    // Delete user
05c0: 20 70 61 72 74 69 63 69 70 61 74 69 6f 6e 20 66   participation f
05d0: 72 6f 6d 20 65 76 65 6e 74 73 0a 20 20 64 62 69  rom events.  dbi
05e0: 5f 65 78 65 63 75 74 65 20 28 20 27 44 45 4c 45  _execute ( 'DELE
05f0: 54 45 20 46 52 4f 4d 20 77 65 62 63 61 6c 5f 65  TE FROM webcal_e
0600: 6e 74 72 79 5f 75 73 65 72 20 57 48 45 52 45 20  ntry_user WHERE 
0610: 63 61 6c 5f 6c 6f 67 69 6e 20 3d 20 3f 27 2c 0a  cal_login = ?',.
0620: 20 20 20 20 61 72 72 61 79 20 28 20 24 75 73 65      array ( $use
0630: 72 20 29 20 29 3b 0a 20 20 2f 2f 20 44 65 6c 65  r ) );.  // Dele
0640: 74 65 20 61 6e 79 20 6c 61 79 65 72 73 20 6f 74  te any layers ot
0650: 68 65 72 20 75 73 65 72 73 20 6d 61 79 20 68 61  her users may ha
0660: 76 65 20 74 68 61 74 20 70 6f 69 6e 74 20 74 6f  ve that point to
0670: 20 74 68 69 73 20 75 73 65 72 2e 0a 20 20 64 62   this user..  db
0680: 69 5f 65 78 65 63 75 74 65 20 28 20 27 44 45 4c  i_execute ( 'DEL
0690: 45 54 45 20 46 52 4f 4d 20 77 65 62 63 61 6c 5f  ETE FROM webcal_
06a0: 75 73 65 72 5f 6c 61 79 65 72 73 20 57 48 45 52  user_layers WHER
06b0: 45 20 63 61 6c 5f 6c 61 79 65 72 75 73 65 72 20  E cal_layeruser 
06c0: 3d 20 3f 27 2c 0a 20 20 20 20 61 72 72 61 79 20  = ?',.    array 
06d0: 28 20 24 75 73 65 72 20 29 20 29 3b 0a 0a 20 20  ( $user ) );..  
06e0: 2f 2f 20 44 65 6c 65 74 65 20 75 73 65 72 0a 20  // Delete user. 
06f0: 20 69 66 20 28 20 21 20 64 62 69 5f 65 78 65 63   if ( ! dbi_exec
0700: 75 74 65 20 28 20 27 44 45 4c 45 54 45 20 46 52  ute ( 'DELETE FR
0710: 4f 4d 20 77 65 62 63 61 6c 5f 6e 6f 6e 75 73 65  OM webcal_nonuse
0720: 72 5f 63 61 6c 73 20 57 48 45 52 45 20 63 61 6c  r_cals WHERE cal
0730: 5f 6c 6f 67 69 6e 20 3d 20 3f 27 2c 0a 20 20 20  _login = ?',.   
0740: 20 20 20 61 72 72 61 79 20 28 20 24 75 73 65 72     array ( $user
0750: 20 29 20 29 20 29 0a 20 20 20 20 24 65 72 72 6f   ) ) ).    $erro
0760: 72 20 3d 20 64 62 5f 65 72 72 6f 72 20 28 29 3b  r = db_error ();
0770: 0a 7d 20 65 6c 73 65 20 7b 0a 20 20 69 66 20 28  .} else {.  if (
0780: 20 24 61 63 74 69 6f 6e 20 3d 3d 20 27 53 61 76   $action == 'Sav
0790: 65 27 20 7c 7c 20 24 61 63 74 69 6f 6e 20 3d 3d  e' || $action ==
07a0: 20 74 72 61 6e 73 6c 61 74 65 20 28 20 27 53 61   translate ( 'Sa
07b0: 76 65 27 20 29 20 29 20 7b 0a 20 20 20 20 2f 2f  ve' ) ) {.    //
07c0: 20 55 70 64 61 74 69 6e 67 0a 20 20 20 20 24 73   Updating.    $s
07d0: 71 6c 5f 70 61 72 61 6d 73 20 3d 20 61 72 72 61  ql_params = arra
07e0: 79 20 28 29 3b 0a 20 20 20 20 24 73 71 6c 20 3d  y ();.    $sql =
07f0: 20 27 55 50 44 41 54 45 20 77 65 62 63 61 6c 5f   'UPDATE webcal_
0800: 6e 6f 6e 75 73 65 72 5f 63 61 6c 73 20 53 45 54  nonuser_cals SET
0810: 27 3b 0a 20 20 20 20 69 66 20 28 20 24 6e 6c 61  ';.    if ( $nla
0820: 73 74 6e 61 6d 65 20 29 20 7b 0a 20 20 20 20 20  stname ) {.     
0830: 20 24 73 71 6c 20 2e 3d 20 27 20 63 61 6c 5f 6c   $sql .= ' cal_l
0840: 61 73 74 6e 61 6d 65 20 3d 20 3f 2c 27 3b 0a 20  astname = ?,';. 
0850: 20 20 20 20 20 24 73 71 6c 5f 70 61 72 61 6d 73       $sql_params
0860: 5b 5d 20 3d 20 24 6e 6c 61 73 74 6e 61 6d 65 3b  [] = $nlastname;
0870: 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 20  .    }.    if ( 
0880: 24 6e 66 69 72 73 74 6e 61 6d 65 20 29 20 7b 0a  $nfirstname ) {.
0890: 20 20 20 20 20 20 24 73 71 6c 20 2e 3d 20 27 20        $sql .= ' 
08a0: 63 61 6c 5f 66 69 72 73 74 6e 61 6d 65 20 3d 20  cal_firstname = 
08b0: 3f 2c 27 3b 0a 20 20 20 20 20 20 24 73 71 6c 5f  ?,';.      $sql_
08c0: 70 61 72 61 6d 73 5b 5d 20 3d 20 24 6e 66 69 72  params[] = $nfir
08d0: 73 74 6e 61 6d 65 3b 0a 20 20 20 20 7d 0a 20 20  stname;.    }.  
08e0: 20 20 24 73 71 6c 5f 70 61 72 61 6d 73 5b 5d 20    $sql_params[] 
08f0: 3d 20 24 6e 61 64 6d 69 6e 3b 0a 20 20 20 20 24  = $nadmin;.    $
0900: 73 71 6c 5f 70 61 72 61 6d 73 5b 5d 20 3d 20 24  sql_params[] = $
0910: 6e 69 64 3b 0a 20 20 20 20 69 66 20 28 20 21 20  nid;.    if ( ! 
0920: 64 62 69 5f 65 78 65 63 75 74 65 20 28 20 24 73  dbi_execute ( $s
0930: 71 6c 20 2e 20 27 20 63 61 6c 5f 61 64 6d 69 6e  ql . ' cal_admin
0940: 20 3d 20 3f 20 57 48 45 52 45 20 63 61 6c 5f 6c   = ? WHERE cal_l
0950: 6f 67 69 6e 20 3d 20 3f 27 2c 0a 20 20 20 20 20  ogin = ?',.     
0960: 20 20 20 24 73 71 6c 5f 70 61 72 61 6d 73 20 29     $sql_params )
0970: 20 29 0a 20 20 20 20 20 20 24 65 72 72 6f 72 20   ).      $error 
0980: 3d 20 64 62 5f 65 72 72 6f 72 20 28 29 3b 0a 20  = db_error ();. 
0990: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 2f 2f   } else {.    //
09a0: 20 41 64 64 69 6e 67 0a 20 20 20 20 69 66 20 28   Adding.    if (
09b0: 20 70 72 65 67 5f 6d 61 74 63 68 20 28 20 27 2f   preg_match ( '/
09c0: 5e 5b 5c 77 5d 2b 24 2f 27 2c 20 24 6e 69 64 20  ^[\w]+$/', $nid 
09d0: 29 20 29 20 7b 0a 20 20 20 20 20 20 24 6e 69 64  ) ) {.      $nid
09e0: 20 3d 20 24 4e 4f 4e 55 53 45 52 5f 50 52 45 46   = $NONUSER_PREF
09f0: 49 58 20 2e 20 24 6e 69 64 3b 0a 20 20 20 20 20  IX . $nid;.     
0a00: 20 69 66 20 28 20 21 20 64 62 69 5f 65 78 65 63   if ( ! dbi_exec
0a10: 75 74 65 20 28 20 27 49 4e 53 45 52 54 20 49 4e  ute ( 'INSERT IN
0a20: 54 4f 20 77 65 62 63 61 6c 5f 6e 6f 6e 75 73 65  TO webcal_nonuse
0a30: 72 5f 63 61 6c 73 20 28 20 63 61 6c 5f 6c 6f 67  r_cals ( cal_log
0a40: 69 6e 2c 0a 20 20 20 20 20 20 20 20 63 61 6c 5f  in,.        cal_
0a50: 66 69 72 73 74 6e 61 6d 65 2c 20 63 61 6c 5f 6c  firstname, cal_l
0a60: 61 73 74 6e 61 6d 65 2c 20 63 61 6c 5f 61 64 6d  astname, cal_adm
0a70: 69 6e 20 29 20 56 41 4c 55 45 53 20 28 20 3f 2c  in ) VALUES ( ?,
0a80: 20 3f 2c 20 3f 2c 20 3f 20 29 27 2c 0a 20 20 20   ?, ?, ? )',.   
0a90: 20 20 20 20 20 20 20 61 72 72 61 79 20 28 20 24         array ( $
0aa0: 6e 69 64 2c 20 24 6e 66 69 72 73 74 6e 61 6d 65  nid, $nfirstname
0ab0: 2c 20 24 6e 6c 61 73 74 6e 61 6d 65 2c 20 24 6e  , $nlastname, $n
0ac0: 61 64 6d 69 6e 20 29 20 29 20 29 0a 20 20 20 20  admin ) ) ).    
0ad0: 20 20 20 20 24 65 72 72 6f 72 20 3d 20 64 62 5f      $error = db_
0ae0: 65 72 72 6f 72 20 28 29 3b 0a 20 20 20 20 7d 20  error ();.    } 
0af0: 65 6c 73 65 0a 20 20 20 20 20 20 24 65 72 72 6f  else.      $erro
0b00: 72 20 3d 20 74 72 61 6e 73 6c 61 74 65 20 28 20  r = translate ( 
0b10: 27 43 61 6c 65 6e 64 61 72 20 49 44 27 20 29 20  'Calendar ID' ) 
0b20: 2e 20 27 20 27 0a 20 20 20 20 20 20 20 2e 20 74  . ' '.       . t
0b30: 72 61 6e 73 6c 61 74 65 20 28 20 27 77 6f 72 64  ranslate ( 'word
0b40: 20 63 68 61 72 61 63 74 65 72 73 20 6f 6e 6c 79   characters only
0b50: 27 20 29 20 2e 20 27 2e 27 3b 0a 20 20 7d 0a 7d  ' ) . '.';.  }.}
0b60: 0a 69 66 20 28 20 65 6d 70 74 79 20 28 20 24 65  .if ( empty ( $e
0b70: 72 72 6f 72 20 29 20 29 0a 20 20 64 6f 5f 72 65  rror ) ).  do_re
0b80: 64 69 72 65 63 74 20 28 20 27 6e 6f 6e 75 73 65  direct ( 'nonuse
0b90: 72 73 2e 70 68 70 27 20 29 3b 0a 0a 70 72 69 6e  rs.php' );..prin
0ba0: 74 5f 68 65 61 64 65 72 20 28 29 3b 0a 65 63 68  t_header ();.ech
0bb0: 6f 20 70 72 69 6e 74 5f 65 72 72 6f 72 20 28 20  o print_error ( 
0bc0: 24 65 72 72 6f 72 20 29 20 2e 20 70 72 69 6e 74  $error ) . print
0bd0: 5f 74 72 61 69 6c 65 72 20 28 29 3b 0a 0a 3f 3e  _trailer ();..?>
0be0: 0a                                               .