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

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

Extended description now work on page title.
Language restriction is now optionnal.

File size: 6.1 KB
RevLine 
[3609]1<?php
2
3if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
[9261]4
[9314]5$default_user = get_default_user_info(true);
6
[9264]7if (!isset($edited_page))
8{
9  $page_title = l10n('ap_create');
[9314]10
[9310]11  $edited_page = array(
12    'id'         => 0,
13    'title'      => '',
14    'permalink'  => '',
[9350]15    'lang'       => 'ALL',
[9310]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  );
[9264]23}
[3609]24
[9312]25// Submit form
[9264]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  {
[9275]34    $permalink = trim($_POST['permalink'], ' /');
35    $permalink = str_replace(array(' ', '/'), '_',$permalink);
36
[9264]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    {
[9273]45      array_push($page['errors'], sprintf(l10n('ap_permalink_already_used'), $permalink, $ids[0]));
[9264]46    }
47    $permalink = '"'.$permalink.'"';
48  }
49  else
50  {
51    $permalink = 'NULL';
52  }
[3609]53
[9350]54  $language = (empty($_POST['lang']) or $_POST['lang'] == 'ALL') ? 'NULL' : '"'.$_POST['lang'].'"';
[9264]55  $group_access = !empty($_POST['groups']) ? '"'.implode(',', $_POST['groups']).'"' : 'NULL';
[9270]56  $standalone = isset($_POST['standalone']) ? '"true"' : '"false"';
[9264]57
[9275]58  $user_access = 'NULL';
[9323]59  if ($conf['AP']['user_perm'])
[9275]60  {
[9310]61    $user_access = !empty($_POST['users']) ? '"'.implode(',', $_POST['users']).'"' : '""';
[9275]62  }
63
[9314]64  $level_access = !empty($_POST['level']) ? $_POST['level'] : $default_user['level'];
[9313]65
[9264]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.',
[9313]77  level = '.$level_access.',
[9270]78  permalink = '.$permalink.',
79  standalone = '.$standalone.'
[9264]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');
[9310]88
[9264]89      $query = '
[9310]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.',
[9313]98  '.$level_access.',
[9310]99  '.$permalink.',
100  '.$standalone.'
101);';
[9264]102      pwg_query($query);
[9314]103      $edited_page['id'] = pwg_db_insert_id(ADD_PAGES_TABLE, 'id');
[9264]104    }
105
106    // Homepage
[9323]107    if (isset($_POST['homepage']) xor $conf['AP']['homepage'] == $edited_page['id'])
[9264]108    {
[9323]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'])));
[9264]111    }
112
[9312]113    // Backup file
[9264]114    mkgetdir($conf['local_data_dir'], MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR);
[9312]115    mkgetdir($conf['local_data_dir'].'/additional_pages_backup', MKGETDIR_PROTECT_HTACCESS&~MKGETDIR_DIE_ON_ERROR);
[9264]116    $sav_file = @fopen($conf['local_data_dir'].'/additional_pages_backup/' . $edited_page['id'] . '.txt', "w");
[9350]117    @fwrite($sav_file, "Title: ".stripslashes($_POST['title'])."\nPermalink: ".stripslashes($_POST['permalink'])."\n\n".stripslashes($_POST['ap_content']));
[9264]118    @fclose($sav_file);
119
[9312]120    // Redirect to admin pannel or additional page
[9264]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']);
[9310]129  $edited_page['permalink'] = stripslashes($_POST['permalink']);
[9264]130  $edited_page['content'] = stripslashes($_POST['ap_content']);
[9350]131  $edited_page['lang'] = !empty($_POST['lang']) ? $_POST['lang'] : 'ALL';
[9310]132  $edited_page['groups'] = !empty($_POST['groups']) ? $_POST['groups'] : array();
133  $edited_page['users'] = !empty($_POST['users']) ? $_POST['users'] :  array();
[9314]134  $edited_page['level'] = !empty($_POST['level']) ? $_POST['level'] :  $default_user['level'];
[9264]135  $edited_page['homepage'] = isset($_POST['homepage']);
[9270]136  $edited_page['standalone'] = isset($_POST['standalone']);
[9264]137}
138
[9312]139// Language options
[9350]140if ($conf['AP']['language_perm'])
[9264]141{
[9350]142  $languages = get_languages();
143  $options = array('ALL' => l10n('ap_all_lang'));
144  foreach ($languages as $language_code => $language_name)
[9264]145  {
[9350]146    $options[$language_code] = $language_name;
[9264]147  }
[9350]148  $template->assign(array(
149    'lang' => $options,
150    'selected_lang' => $edited_page['lang'],
151    )
152  );
[9264]153}
154
[9310]155// Groups options
[9323]156if ($conf['AP']['group_perm'])
[9264]157{
[9310]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  );
[9264]170}
171
[9310]172// Users options
[9323]173if ($conf['AP']['user_perm'])
[9264]174{
[9310]175  $users_id = array('guest', 'generic', 'normal', 'admin', 'webmaster');
176  $users = array();
177  foreach ($users_id as $id)
[9275]178  {
[9310]179    $users[$id] = l10n('user_status_'.$id);
[9275]180  }
[9310]181  $template->assign(array(
182    'users' => $users,
183    'selected_users' => $edited_page['users'],
[9275]184    )
185  );
[9264]186}
187
[9310]188// User level options
[9323]189if ($conf['AP']['level_perm'])
[9264]190{
[9310]191  foreach ($conf['available_permission_levels'] as $level)
192  {
193    $level_options[$level] = l10n(sprintf('Level %d', $level));
194  }
[9264]195  $template->assign(array(
[9310]196    'level_perm' => $level_options,
197    'level_selected' => $edited_page['level']
198    )
199  );
[9264]200}
201
[9310]202// template output
203$template->assign(array(
204  'AP_TITLE' => $page_title,
[9323]205  'NAME' => htmlspecialchars($edited_page['title']),
206  'PERMALINK' => htmlspecialchars($edited_page['permalink']),
[9310]207  'HOMEPAGE' => $edited_page['homepage'],
208  'STANDALONE' => $edited_page['standalone'],
[9323]209  'CONTENT' => htmlspecialchars($edited_page['content'])
210  )
211);
[9264]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
[3292]216?>
Note: See TracBrowser for help on using the repository browser.