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