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

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

Permalink accept special chars.
Bug correction.

File size: 5.5 KB
Line 
1<?php
2
3if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
4
5if (!isset($edited_page))
6{
7  $edited_page = array();
8  $edited_page['id'] = 0;
9  $edited_page['homepage'] = false;
10  $page_title = l10n('ap_create');
11}
12
13// Enregistrement
14if (isset($_POST['save']))
15{
16  if (empty($_POST['title']))
17  {
18    array_push($page['errors'], l10n('ap_no_name'));
19  }
20  if (!empty($_POST['permalink']))
21  {
22    $permalink = trim($_POST['permalink'], ' /');
23    $permalink = str_replace(array(' ', '/'), '_',$permalink);
24
25    $query ='
26SELECT id FROM '.ADD_PAGES_TABLE.'
27WHERE permalink = "'.$permalink.'"
28  AND id <> '.$edited_page['id'].'
29;';
30    $ids = array_from_query($query, 'id');
31    if (!empty($ids))
32    {
33      array_push($page['errors'], sprintf(l10n('ap_permalink_already_used'), $permalink, $ids[0]));
34    }
35    $permalink = '"'.$permalink.'"';
36  }
37  else
38  {
39    $permalink = 'NULL';
40  }
41
42  $language = $_POST['lang'] != 'ALL' ? '"'.$_POST['lang'].'"' : 'NULL';
43  $group_access = !empty($_POST['groups']) ? '"'.implode(',', $_POST['groups']).'"' : 'NULL';
44  $standalone = isset($_POST['standalone']) ? '"true"' : '"false"';
45
46  $user_access = 'NULL';
47  if ($conf['additional_pages']['user_perm'])
48  {
49    $user_access = !empty($_POST['users']) ? '"'.implode(',', $_POST['users']).'"' : '"admin"';
50  }
51
52  if (empty($page['errors']))
53  {
54    if ($page['tab'] == 'edit_page')
55    {
56      $query = '
57UPDATE '.ADD_PAGES_TABLE.'
58SET lang = '.$language.',
59  title = "'.$_POST['title'].'",
60  content = "'.$_POST['ap_content'].'",
61  users = '.$user_access.',
62  groups = '.$group_access.',
63  permalink = '.$permalink.',
64  standalone = '.$standalone.'
65WHERE id = '.$edited_page['id'] .'
66;';
67      pwg_query($query);
68    }
69    else
70    {
71      $query = 'SELECT MAX(ABS(pos)) AS pos FROM ' . ADD_PAGES_TABLE . ';';
72      list($position) = array_from_query($query, 'pos');
73     
74      $query = '
75INSERT INTO ' . ADD_PAGES_TABLE . ' ( pos , lang , title , content , users , groups , permalink, standalone)
76VALUES ('.($position+1).' , '.$language.' , "'.$_POST['title'].'" , "'.$_POST['ap_content'].'" , '.$user_access.' , '.$group_access.' , '.$permalink.' , '.$standalone.');';
77      pwg_query($query);
78      $edited_page['id'] = mysql_insert_id();
79    }
80
81    // Homepage
82    if (isset($_POST['homepage']) xor $conf['additional_pages']['homepage'] == $edited_page['id'])
83    {
84      $conf['additional_pages']['homepage'] = isset($_POST['homepage']) ? $edited_page['id'] : null;
85      conf_update_param('additional_pages', pwg_db_real_escape_string(serialize($conf['additional_pages'])));
86    }
87
88    // Enregistrement du fichier de sauvegarde
89    mkgetdir($conf['local_data_dir'], MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR);
90    mkgetdir($conf['local_data_dir'].'/additional_pages_backup', MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR);
91    $sav_file = @fopen($conf['local_data_dir'].'/additional_pages_backup/' . $edited_page['id'] . '.txt', "w");
92    @fwrite($sav_file, "Title: ".$_POST['title']."
93Permalink: ".$_POST['permalink']."
94Language: ".$_POST['lang']."
95
96" . $_POST['ap_content']);
97    @fclose($sav_file);
98
99    if (isset($_GET['redirect']))
100    {
101      redirect(make_index_url() . '/page/' . $edited_page['id']);
102    }
103    redirect($my_base_url.'&page_saved=');
104  }
105
106  $edited_page['title'] = stripslashes($_POST['title']);
107  $edited_page['permalink'] = $_POST['permalink'];
108  $edited_page['lang'] = $_POST['lang'];
109  $edited_page['content'] = stripslashes($_POST['ap_content']);
110  $edited_page['groups'] = !empty($_POST['groups']) ? trim($group_access, '"') : '';
111  $edited_page['users'] = !empty($_POST['users']) ? trim($user_access, '"') :  '';
112  $edited_page['homepage'] = isset($_POST['homepage']);
113  $edited_page['standalone'] = isset($_POST['standalone']);
114}
115
116// Selection des langues
117$options['ALL'] = l10n('ap_all_lang');
118$selected = 'ALL';
119foreach (get_languages() as $language_code => $language_name)
120{
121  $options[$language_code] = $language_name;
122  if (isset($edited_page['lang']) and $edited_page['lang'] == $language_code)
123  {
124    $selected = $language_code;
125  }
126}
127$template->assign('lang', array(
128  'OPTIONS' => $options,
129  'SELECTED' => $selected));
130
131// Selection des groupes
132if ($conf['additional_pages']['group_perm'])
133{
134        include_once(AP_PATH . 'admin/functions_groups.php');
135  $groups = !empty($edited_page['groups']) ? explode(',', $edited_page['groups']) : array();
136        $template->assign('GROUPSELECTION', get_html_groups_selection(get_all_groups(), 'groups', $groups));
137}
138
139// Selection des utilisateurs
140if ($conf['additional_pages']['user_perm'])
141{
142  $selected_users = array('guest', 'generic', 'normal');
143  if (isset($_GET['edit']) and isset($edited_page['users']))
144  {
145    $selected_users = explode(',', $edited_page['users']);
146  }
147
148        $template->assign('user_perm', array(
149      'GUEST' => in_array('guest', $selected_users) ? 'checked="checked"' : '',
150      'GENERIC' => in_array('generic', $selected_users) ? 'checked="checked"' : '',
151      'NORMAL' => in_array('normal', $selected_users) ? 'checked="checked"' : ''
152    )
153  );
154}
155
156// Chargement des données pour l'édition
157if ($page['tab'] == 'edit_page')
158{
159  $template->assign(array(
160    'NAME' => $edited_page['title'],
161    'PERMALINK' => $edited_page['permalink'],
162    'HOMEPAGE' => $edited_page['homepage'],
163    'STANDALONE' => $edited_page['standalone'],
164    'CONTENT' => $edited_page['content']));
165}
166
167// Parametrage du template
168$template->assign('AP_TITLE', $page_title);
169
170$template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/add_page.tpl');
171$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
172
173?>
Note: See TracBrowser for help on using the repository browser.