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

Last change on this file since 9350 was 9350, checked in by patdenice, 9 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.