source: extensions/AdditionalPages/admin/page_form.inc.php @ 9263

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

Bugs corrected

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