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

Last change on this file since 9350 was 9350, checked in by patdenice, 13 years ago

Extended description now work on page title.
Language restriction is now optionnal.

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