[3609] | 1 | <?php |
---|
| 2 | |
---|
| 3 | if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); |
---|
[9261] | 4 | |
---|
[9314] | 5 | $default_user = get_default_user_info(true); |
---|
| 6 | |
---|
[9264] | 7 | if (!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] | 26 | if (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 =' |
---|
| 38 | SELECT id FROM '.ADD_PAGES_TABLE.' |
---|
| 39 | WHERE 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 = ' |
---|
| 71 | UPDATE '.ADD_PAGES_TABLE.' |
---|
| 72 | SET 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] | 80 | WHERE 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] | 90 | INSERT INTO '.ADD_PAGES_TABLE.' ( pos , lang , title , content , users , groups , level , permalink, standalone) |
---|
| 91 | VALUES ( |
---|
| 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] | 140 | if ($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] | 156 | if ($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] | 173 | if ($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] | 189 | if ($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 | ?> |
---|