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

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

New administration pannel for additional pages.
Better url.
Add permalinks.

File size: 5.3 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 = '
62INSERT INTO ' . ADD_PAGES_TABLE . ' ( lang , title , content , users , groups , permalink)
63VALUES ('.$language.' , "'.$_POST['title'].'" , "'.$_POST['ap_content'].'" , '.$user_access.' , '.$group_access.' , '.$permalink.');';
64      pwg_query($query);
65      $edited_page['id'] = mysql_insert_id();
66    }
67
68    // Homepage
69    if (isset($_POST['homepage']) xor $conf['additional_pages']['homepage'] == $edited_page['id'])
70    {
71      $conf['additional_pages']['homepage'] = isset($_POST['homepage']) ? $edited_page['id'] : null;
72      pwg_query('UPDATE '.CONFIG_TABLE.' SET value = "'.addslashes(serialize($conf['additional_pages'])).'" WHERE param = "additional_pages";');
73    }
74
75    // Enregistrement du fichier de sauvegarde
76    mkgetdir($conf['local_data_dir'], MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR);
77    mkgetdir($conf['local_data_dir'].'/additional_pages_backup', MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR);
78    $sav_file = @fopen($conf['local_data_dir'].'/additional_pages_backup/' . $edited_page['id'] . '.txt', "w");
79    @fwrite($sav_file, "Title: ".$_POST['title']."
80Permalink: ".$_POST['permalink']."
81Language: ".$_POST['lang']."
82
83" . $_POST['ap_content']);
84    @fclose($sav_file);
85
86    if (isset($_GET['redirect']))
87    {
88      redirect(make_index_url() . '/page/' . $edited_page['id']);
89    }
90    redirect($my_base_url.'&page_saved=');
91  }
92
93  $edited_page['title'] = stripslashes($_POST['title']);
94  $edited_page['permalink'] = $_POST['permalink'];
95  $edited_page['content'] = stripslashes($_POST['ap_content']);
96  $edited_page['groups'] = !empty($_POST['groups']) ? trim($group_access, '"') : '';
97  $edited_page['users'] = !empty($_POST['users']) ? trim($user_access, '"') :  '';
98  $edited_page['homepage'] = isset($_POST['homepage']);
99}
100
101// Selection des langues
102$options['ALL'] = l10n('ap_all_lang');
103$selected = 'ALL';
104foreach (get_languages() as $language_code => $language_name)
105{
106  $options[$language_code] = $language_name;
107  if (isset($edited_page['lang']) and $edited_page['lang'] == $language_code)
108  {
109    $selected = $language_code;
110  }
111}
112$template->assign('lang', array(
113  'OPTIONS' => $options,
114  'SELECTED' => $selected));
115
116// Selection des groupes
117if ($conf['additional_pages']['group_perm'])
118{
119        include_once(AP_PATH . 'admin/functions_groups.php');
120  $groups = !empty($edited_page['groups']) ? explode(',', $edited_page['groups']) : array();
121        $template->assign('GROUPSELECTION', get_html_groups_selection(get_all_groups(), 'groups', $groups));
122}
123
124// Selection des utilisateurs
125if ($conf['additional_pages']['user_perm'])
126{
127  if (isset($_GET['edit']))
128          $selected_users = isset($edited_page['users']) ? explode(',', $edited_page['users']) : array();
129  else
130    $selected_users = array('guest', 'generic', 'normal');
131
132        $template->assign('user_perm', array(
133    'GUEST' => (in_array('guest', $selected_users) ? 'checked="checked"' : ''),
134                'GENERIC' => (in_array('generic', $selected_users) ? 'checked="checked"' : ''),
135                'NORMAL' => (in_array('normal', $selected_users) ? 'checked="checked"' : '')));
136}
137
138// Chargement des données pour l'édition
139if ($page['tab'] == 'edit_page')
140{
141  $template->assign(array(
142    'NAME' => $edited_page['title'],
143    'PERMALINK' => $edited_page['permalink'],
144    'HOMEPAGE' => $edited_page['homepage'],
145    'CONTENT' => $edited_page['content']));
146}
147
148// Parametrage du template
149$template->assign('AP_TITLE', $page_title);
150
151$template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/add_page.tpl');
152$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
153
154?>
Note: See TracBrowser for help on using the repository browser.