[3609] | 1 | <?php |
---|
| 2 | |
---|
| 3 | if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); |
---|
[9261] | 4 | |
---|
[9264] | 5 | if (!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] | 23 | if (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 =' |
---|
| 35 | SELECT id FROM '.ADD_PAGES_TABLE.' |
---|
| 36 | WHERE 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 | |
---|
[9264] | 61 | if (empty($page['errors'])) |
---|
| 62 | { |
---|
| 63 | if ($page['tab'] == 'edit_page') |
---|
| 64 | { |
---|
| 65 | $query = ' |
---|
| 66 | UPDATE '.ADD_PAGES_TABLE.' |
---|
| 67 | SET lang = '.$language.', |
---|
| 68 | title = "'.$_POST['title'].'", |
---|
| 69 | content = "'.$_POST['ap_content'].'", |
---|
| 70 | users = '.$user_access.', |
---|
| 71 | groups = '.$group_access.', |
---|
[9310] | 72 | level = '.$_POST['level'].', |
---|
[9270] | 73 | permalink = '.$permalink.', |
---|
| 74 | standalone = '.$standalone.' |
---|
[9264] | 75 | WHERE id = '.$edited_page['id'] .' |
---|
| 76 | ;'; |
---|
| 77 | pwg_query($query); |
---|
| 78 | } |
---|
| 79 | else |
---|
| 80 | { |
---|
| 81 | $query = 'SELECT MAX(ABS(pos)) AS pos FROM ' . ADD_PAGES_TABLE . ';'; |
---|
| 82 | list($position) = array_from_query($query, 'pos'); |
---|
[9310] | 83 | |
---|
[9264] | 84 | $query = ' |
---|
[9310] | 85 | INSERT INTO '.ADD_PAGES_TABLE.' ( pos , lang , title , content , users , groups , level , permalink, standalone) |
---|
| 86 | VALUES ( |
---|
| 87 | '.($position+1).', |
---|
| 88 | '.$language.', |
---|
| 89 | "'.$_POST['title'].'", |
---|
| 90 | "'.$_POST['ap_content'].'", |
---|
| 91 | '.$user_access.', |
---|
| 92 | '.$group_access.', |
---|
| 93 | '.$_POST['level'].', |
---|
| 94 | '.$permalink.', |
---|
| 95 | '.$standalone.' |
---|
| 96 | );'; |
---|
[9264] | 97 | pwg_query($query); |
---|
| 98 | $edited_page['id'] = mysql_insert_id(); |
---|
| 99 | } |
---|
| 100 | |
---|
| 101 | // Homepage |
---|
| 102 | if (isset($_POST['homepage']) xor $conf['additional_pages']['homepage'] == $edited_page['id']) |
---|
| 103 | { |
---|
| 104 | $conf['additional_pages']['homepage'] = isset($_POST['homepage']) ? $edited_page['id'] : null; |
---|
[9272] | 105 | conf_update_param('additional_pages', pwg_db_real_escape_string(serialize($conf['additional_pages']))); |
---|
[9264] | 106 | } |
---|
| 107 | |
---|
[9312] | 108 | // Backup file |
---|
[9264] | 109 | mkgetdir($conf['local_data_dir'], MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR); |
---|
[9312] | 110 | mkgetdir($conf['local_data_dir'].'/additional_pages_backup', MKGETDIR_PROTECT_HTACCESS&~MKGETDIR_DIE_ON_ERROR); |
---|
[9264] | 111 | $sav_file = @fopen($conf['local_data_dir'].'/additional_pages_backup/' . $edited_page['id'] . '.txt', "w"); |
---|
[9310] | 112 | @fwrite($sav_file, "Title: ".$_POST['title']."\nPermalink: ".$_POST['permalink']."\nLanguage: ".$_POST['lang']."\n\n" . $_POST['ap_content']); |
---|
[9264] | 113 | @fclose($sav_file); |
---|
| 114 | |
---|
[9312] | 115 | // Redirect to admin pannel or additional page |
---|
[9264] | 116 | if (isset($_GET['redirect'])) |
---|
| 117 | { |
---|
| 118 | redirect(make_index_url() . '/page/' . $edited_page['id']); |
---|
| 119 | } |
---|
| 120 | redirect($my_base_url.'&page_saved='); |
---|
| 121 | } |
---|
| 122 | |
---|
| 123 | $edited_page['title'] = stripslashes($_POST['title']); |
---|
[9310] | 124 | $edited_page['permalink'] = stripslashes($_POST['permalink']); |
---|
[9275] | 125 | $edited_page['lang'] = $_POST['lang']; |
---|
[9264] | 126 | $edited_page['content'] = stripslashes($_POST['ap_content']); |
---|
[9310] | 127 | $edited_page['groups'] = !empty($_POST['groups']) ? $_POST['groups'] : array(); |
---|
| 128 | $edited_page['users'] = !empty($_POST['users']) ? $_POST['users'] : array(); |
---|
| 129 | $edited_page['level'] = $_POST['level']; |
---|
[9264] | 130 | $edited_page['homepage'] = isset($_POST['homepage']); |
---|
[9270] | 131 | $edited_page['standalone'] = isset($_POST['standalone']); |
---|
[9264] | 132 | } |
---|
| 133 | |
---|
[9312] | 134 | // Language options |
---|
[9264] | 135 | $options['ALL'] = l10n('ap_all_lang'); |
---|
| 136 | $selected = 'ALL'; |
---|
| 137 | foreach (get_languages() as $language_code => $language_name) |
---|
| 138 | { |
---|
| 139 | $options[$language_code] = $language_name; |
---|
| 140 | if (isset($edited_page['lang']) and $edited_page['lang'] == $language_code) |
---|
| 141 | { |
---|
| 142 | $selected = $language_code; |
---|
| 143 | } |
---|
| 144 | } |
---|
| 145 | $template->assign('lang', array( |
---|
| 146 | 'OPTIONS' => $options, |
---|
| 147 | 'SELECTED' => $selected)); |
---|
| 148 | |
---|
[9310] | 149 | // Groups options |
---|
[9264] | 150 | if ($conf['additional_pages']['group_perm']) |
---|
| 151 | { |
---|
[9310] | 152 | $query = 'SELECT id, name FROM '.GROUPS_TABLE.' ORDER BY name ASC;'; |
---|
| 153 | $result = pwg_query($query); |
---|
| 154 | $groups = array(); |
---|
| 155 | while ($row = pwg_db_fetch_assoc($result)) |
---|
| 156 | { |
---|
| 157 | $groups[$row['id']] = $row['name']; |
---|
| 158 | } |
---|
| 159 | $template->assign(array( |
---|
| 160 | 'groups' => $groups, |
---|
| 161 | 'selected_groups' => $edited_page['groups'], |
---|
| 162 | ) |
---|
| 163 | ); |
---|
[9264] | 164 | } |
---|
| 165 | |
---|
[9310] | 166 | // Users options |
---|
[9264] | 167 | if ($conf['additional_pages']['user_perm']) |
---|
| 168 | { |
---|
[9310] | 169 | $users_id = array('guest', 'generic', 'normal', 'admin', 'webmaster'); |
---|
| 170 | $users = array(); |
---|
| 171 | foreach ($users_id as $id) |
---|
[9275] | 172 | { |
---|
[9310] | 173 | $users[$id] = l10n('user_status_'.$id); |
---|
[9275] | 174 | } |
---|
[9310] | 175 | $template->assign(array( |
---|
| 176 | 'users' => $users, |
---|
| 177 | 'selected_users' => $edited_page['users'], |
---|
[9275] | 178 | ) |
---|
| 179 | ); |
---|
[9264] | 180 | } |
---|
| 181 | |
---|
[9310] | 182 | // User level options |
---|
| 183 | if ($conf['additional_pages']['level_perm']) |
---|
[9264] | 184 | { |
---|
[9310] | 185 | foreach ($conf['available_permission_levels'] as $level) |
---|
| 186 | { |
---|
| 187 | $level_options[$level] = l10n(sprintf('Level %d', $level)); |
---|
| 188 | } |
---|
[9264] | 189 | $template->assign(array( |
---|
[9310] | 190 | 'level_perm' => $level_options, |
---|
| 191 | 'level_selected' => $edited_page['level'] |
---|
| 192 | ) |
---|
| 193 | ); |
---|
[9264] | 194 | } |
---|
| 195 | |
---|
[9310] | 196 | // template output |
---|
| 197 | $template->assign(array( |
---|
| 198 | 'AP_TITLE' => $page_title, |
---|
| 199 | 'NAME' => $edited_page['title'], |
---|
| 200 | 'PERMALINK' => $edited_page['permalink'], |
---|
| 201 | 'HOMEPAGE' => $edited_page['homepage'], |
---|
| 202 | 'STANDALONE' => $edited_page['standalone'], |
---|
| 203 | 'CONTENT' => $edited_page['content'])); |
---|
[9264] | 204 | |
---|
| 205 | $template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/add_page.tpl'); |
---|
| 206 | $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content'); |
---|
| 207 | |
---|
[3292] | 208 | ?> |
---|