1<?php
2// $Id: admin.php 13591 2003-10-09 06:09:33Z skwashd $
3
4// Don't freak out lib/init.php.
5$document = $categories = $comment = $page = '';
6
7//require('lib/init.php');
8require('parse/html.php');
9//require('parse/transforms.php');
10require('template/admin.php');
11
12if(!$GLOBALS['phpgw_info']['user']['apps']['admin'])
13  { die($ErrorAdminDisabled); }
14
15// Harvest script parameters.
16
17$REMOTE_ADDR = isset($_SERVER['REMOTE_ADDR'])
18               ? $_SERVER['REMOTE_ADDR'] : '';
19
20if(isset($_GET['locking']))
21  { $locking = $_GET['locking']; }
22if(isset($_GET['blocking']))
23  { $blocking = $_GET['blocking']; }
24if(!isset($locking))
25{
26  $locking  = isset($_POST['locking'])
27              ? $_POST['locking'] : '';
28}
29if(!isset($blocking))
30{
31  $blocking = isset($_POST['blocking'])
32              ? $_POST['blocking'] : '';
33}
34
35$Block   = isset($_POST['Block'])
36           ? $_POST['Block'] : '';
37$Unblock = isset($_POST['Unblock'])
38           ? $_POST['Unblock'] : '';
39$Save    = isset($_POST['Save'])
40           ? $_POST['Save'] : '';
41$address = isset($_POST['address'])
42           ? $_POST['address'] : '';
43
44$count = isset($_POST['count']) ? $_POST['count'] : 0;
45
46if($locking && $count > 0)
47{
48  for($i = 1; $i <= $count; $i++)
49  {
50    $var = 'name' + $i;
51    $$var = isset($_POST[$var]) ? $_POST[$var] : '';
52    $var = 'lock' + $i;
53    $$var = isset($_POST[$var]) ? $_POST[$var] : '';
54  }
55}
56
57if($locking)                            // Locking/unlocking pages.
58{
59  if(empty($Save))                      // Not saving results; display form.
60  {
61    $GLOBALS['phpgw']->common->phpgw_header();
62
63    $html = html_lock_start();
64    $pagelist = $pagestore->allpages();
65    foreach($pagelist as $page)
66      { $html = $html . html_lock_page($page[1], $page[6]); }
67    template_admin(array('html' => $html . html_lock_end(count($pagelist))));
68  }
69  else                                  // Lock/unlock pages at admin's request.
70  {
71    $pagestore->lock();                 // Exclusive access to database.
72    for($i = 1; $i <= $count; $i++)
73    {
74      $page = urldecode($_POST['name' . $i]);
75      if(isset($_POST['lock' . $i]))
76        { $lock = $_POST['lock' . $i]; }
77      else
78        { $lock = 0; }
79      $pg = $pagestore->page($page);
80      $pg->read();
81      $pg->version++;
82      $pg->hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
83      $pg->username = $UserName;
84      $pg->comment = '';
85      $pg->text = str_replace('\\', '\\\\', $pg->text);
86      $pg->text = str_replace('\'', '\\\'', $pg->text);
87      if($pg->exists && $pg->mutable && $lock)
88      {
89        $pg->mutable = 0;
90        $pg->write();
91      }
92      else if($pg->exists && !$pg->mutable && !$lock)
93      {
94        $pg->mutable = 1;
95        $pg->write();
96      }
97    }
98
99    $pagestore->unlock();
100    header('Location: ' . $AdminScript);
101  }
102}
103else if($blocking)                      // Blocking/unblocking IP addrs.
104{
105  if(empty($Block) && empty($Unblock))  // Not saving results; display form.
106  {
107    $GLOBALS['phpgw']->common->phpgw_header();
108
109	$html = '';
110    if($RatePeriod == 0)
111    {
112      $html = $html . html_bold_start() .
113              'Rate control / IP blocking disabled' .
114              html_bold_end() . html_newline();
115    }
116
117    $html = $html . html_rate_start();
118    $blocklist = $pagestore->rateBlockList();
119    foreach($blocklist as $block)
120      { $html = $html . html_rate_entry($block); }
121    $html = $html . html_rate_end();
122
123    template_admin(array('html' => $html));
124  }
125  else                                  // Block/unblock an address group.
126  {
127    if(!empty($Block))
128      { $pagestore->rateBlockAdd($address); }
129    else if(!empty($Unblock))
130      { $pagestore->rateBlockRemove($address); }
131
132    header('Location: ' . $AdminScript);
133  }
134}
135else                                    // Display main menu for admin.
136{
137  $GLOBALS['phpgw']->common->phpgw_header();
138
139  template_admin(array('html' => html_url($AdminScript . '&locking=1',
140                                          'Lock / unlock pages') .
141                                 html_newline() .
142                                 html_url($AdminScript . '&blocking=1',
143                                          'Block / unblock hosts') .
144                                 html_newline()));
145}
146
147?>
148