source: extensions/AdditionalPages/admin/add_page.inc.php @ 9323

Last change on this file since 9323 was 9323, checked in by patdenice, 10 years ago

Use another $conf parameter to avoid conflicts.
Add htmlspecialchars in admin page.

File size: 6.1 KB
Line 
1<?php
2
3if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
4
5$default_user = get_default_user_info(true);
6
7if (!isset($edited_page))
8{
9  $page_title = l10n('ap_create');
10
11  $edited_page = array(
12    'id'         => 0,
13    'title'      => '',
14    'permalink'  => '',
15    'homepage'   => false,
16    'standalone' => false,
17    'level'      => $default_user['level'],
18    'users'      => array('guest', 'generic', 'normal', 'admin', 'webmaster'),
19    'groups'     => array(),
20    'content'    => '',
21  );
22}
23
24// Submit form
25if (isset($_POST['save']))
26{
27  if (empty($_POST['title']))
28  {
29    array_push($page['errors'], l10n('ap_no_name'));
30  }
31  if (!empty($_POST['permalink']))
32  {
33    $permalink = trim($_POST['permalink'], ' /');
34    $permalink = str_replace(array(' ', '/'), '_',$permalink);
35
36    $query ='
37SELECT id FROM '.ADD_PAGES_TABLE.'
38WHERE permalink = "'.$permalink.'"
39  AND id <> '.$edited_page['id'].'
40;';
41    $ids = array_from_query($query, 'id');
42    if (!empty($ids))
43    {
44      array_push($page['errors'], sprintf(l10n('ap_permalink_already_used'), $permalink, $ids[0]));
45    }
46    $permalink = '"'.$permalink.'"';
47  }
48  else
49  {
50    $permalink = 'NULL';
51  }
52
53  $language = $_POST['lang'] != 'ALL' ? '"'.$_POST['lang'].'"' : 'NULL';
54  $group_access = !empty($_POST['groups']) ? '"'.implode(',', $_POST['groups']).'"' : 'NULL';
55  $standalone = isset($_POST['standalone']) ? '"true"' : '"false"';
56
57  $user_access = 'NULL';
58  if ($conf['AP']['user_perm'])
59  {
60    $user_access = !empty($_POST['users']) ? '"'.implode(',', $_POST['users']).'"' : '""';
61  }
62
63  $level_access = !empty($_POST['level']) ? $_POST['level'] : $default_user['level'];
64
65  if (empty($page['errors']))
66  {
67    if ($page['tab'] == 'edit_page')
68    {
69      $query = '
70UPDATE '.ADD_PAGES_TABLE.'
71SET lang = '.$language.',
72  title = "'.$_POST['title'].'",
73  content = "'.$_POST['ap_content'].'",
74  users = '.$user_access.',
75  groups = '.$group_access.',
76  level = '.$level_access.',
77  permalink = '.$permalink.',
78  standalone = '.$standalone.'
79WHERE id = '.$edited_page['id'] .'
80;';
81      pwg_query($query);
82    }
83    else
84    {
85      $query = 'SELECT MAX(ABS(pos)) AS pos FROM ' . ADD_PAGES_TABLE . ';';
86      list($position) = array_from_query($query, 'pos');
87
88      $query = '
89INSERT INTO '.ADD_PAGES_TABLE.' ( pos , lang , title , content , users , groups , level , permalink, standalone)
90VALUES (
91  '.($position+1).',
92  '.$language.',
93  "'.$_POST['title'].'",
94  "'.$_POST['ap_content'].'",
95  '.$user_access.',
96  '.$group_access.',
97  '.$level_access.',
98  '.$permalink.',
99  '.$standalone.'
100);';
101      pwg_query($query);
102      $edited_page['id'] = pwg_db_insert_id(ADD_PAGES_TABLE, 'id');
103    }
104
105    // Homepage
106    if (isset($_POST['homepage']) xor $conf['AP']['homepage'] == $edited_page['id'])
107    {
108      $conf['AP']['homepage'] = isset($_POST['homepage']) ? $edited_page['id'] : null;
109      conf_update_param('additional_pages', pwg_db_real_escape_string(serialize($conf['AP'])));
110    }
111
112    // Backup file
113    mkgetdir($conf['local_data_dir'], MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR);
114    mkgetdir($conf['local_data_dir'].'/additional_pages_backup', MKGETDIR_PROTECT_HTACCESS&~MKGETDIR_DIE_ON_ERROR);
115    $sav_file = @fopen($conf['local_data_dir'].'/additional_pages_backup/' . $edited_page['id'] . '.txt', "w");
116    @fwrite($sav_file, "Title: ".$_POST['title']."\nPermalink: ".$_POST['permalink']."\nLanguage: ".$_POST['lang']."\n\n" . $_POST['ap_content']);
117    @fclose($sav_file);
118
119    // Redirect to admin pannel or additional page
120    if (isset($_GET['redirect']))
121    {
122      redirect(make_index_url() . '/page/' . $edited_page['id']);
123    }
124    redirect($my_base_url.'&page_saved=');
125  }
126
127  $edited_page['title'] = stripslashes($_POST['title']);
128  $edited_page['permalink'] = stripslashes($_POST['permalink']);
129  $edited_page['lang'] = $_POST['lang'];
130  $edited_page['content'] = stripslashes($_POST['ap_content']);
131  $edited_page['groups'] = !empty($_POST['groups']) ? $_POST['groups'] : array();
132  $edited_page['users'] = !empty($_POST['users']) ? $_POST['users'] :  array();
133  $edited_page['level'] = !empty($_POST['level']) ? $_POST['level'] :  $default_user['level'];
134  $edited_page['homepage'] = isset($_POST['homepage']);
135  $edited_page['standalone'] = isset($_POST['standalone']);
136}
137
138// Language options
139$options['ALL'] = l10n('ap_all_lang');
140$selected = 'ALL';
141foreach (get_languages() as $language_code => $language_name)
142{
143  $options[$language_code] = $language_name;
144  if (isset($edited_page['lang']) and $edited_page['lang'] == $language_code)
145  {
146    $selected = $language_code;
147  }
148}
149$template->assign('lang', array(
150  'OPTIONS' => $options,
151  'SELECTED' => $selected));
152
153// Groups options
154if ($conf['AP']['group_perm'])
155{
156        $query = 'SELECT id, name FROM '.GROUPS_TABLE.' ORDER BY name ASC;';
157  $result = pwg_query($query);
158  $groups = array();
159  while ($row = pwg_db_fetch_assoc($result))
160  {
161    $groups[$row['id']] = $row['name'];
162  }
163  $template->assign(array(
164    'groups' => $groups,
165    'selected_groups' => $edited_page['groups'],
166    )
167  );
168}
169
170// Users options
171if ($conf['AP']['user_perm'])
172{
173  $users_id = array('guest', 'generic', 'normal', 'admin', 'webmaster');
174  $users = array();
175  foreach ($users_id as $id)
176  {
177    $users[$id] = l10n('user_status_'.$id);
178  }
179  $template->assign(array(
180    'users' => $users,
181    'selected_users' => $edited_page['users'],
182    )
183  );
184}
185
186// User level options
187if ($conf['AP']['level_perm'])
188{
189  foreach ($conf['available_permission_levels'] as $level)
190  {
191    $level_options[$level] = l10n(sprintf('Level %d', $level));
192  }
193  $template->assign(array(
194    'level_perm' => $level_options,
195    'level_selected' => $edited_page['level']
196    )
197  );
198}
199
200// template output
201$template->assign(array(
202  'AP_TITLE' => $page_title,
203  'NAME' => htmlspecialchars($edited_page['title']),
204  'PERMALINK' => htmlspecialchars($edited_page['permalink']),
205  'HOMEPAGE' => $edited_page['homepage'],
206  'STANDALONE' => $edited_page['standalone'],
207  'CONTENT' => htmlspecialchars($edited_page['content'])
208  )
209);
210
211$template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/add_page.tpl');
212$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
213
214?>
Note: See TracBrowser for help on using the repository browser.