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

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

Last bug corrected!

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