Check if wiki exists and redirect if it does not

This commit is contained in:
Andrew Manning 2016-05-27 20:37:37 -04:00
parent 97e6b7c4ba
commit ca78ebce6d
2 changed files with 19 additions and 1 deletions

View File

@ -26,6 +26,7 @@ class Wiki extends \Zotlabs\Web\Controller {
}
function get() {
require_once('include/wiki.php');
require_once('include/acl_selectors.php');
if(local_channel()) {
$channel = \App::get_channel();
@ -56,6 +57,10 @@ class Wiki extends \Zotlabs\Web\Controller {
} elseif (argc()<4) {
$wikiheader = 'Empty wiki: ' . rawurldecode(argv(2)); // show wiki name
$hide_editor = true;
// Check if wiki exists andr redirect if it does not
if(!wiki_exists_by_name(argv(2))['id']) {
goaway('/'.argv(0).'/'.argv(1));
}
} elseif (argc()<5) {
$wikiheader = rawurldecode(argv(2)) . ': ' . rawurldecode(argv(3)); // show wiki name and page
$hide_editor = false;
@ -112,7 +117,7 @@ class Wiki extends \Zotlabs\Web\Controller {
// then, use webpage permissions
if (!$perms['write_pages']) {
notice(t('Permission denied.') . EOL);
goaway(argv(0).'/'.argv(1).'/'.argv(2));
goaway('/'.argv(0).'/'.argv(1).'/'.argv(2));
}
}
$name = escape_tags(urlencode($_POST['wikiName'])); //Get new wiki name

View File

@ -124,3 +124,16 @@ function wiki_delete_wiki($resource_id) {
return array('item' => $item, 'success' => (($drop === 1 && $pathdel) ? true : false));
}
}
function wiki_exists_by_name($name) {
$item = q("SELECT id FROM item WHERE resource_type = '%s' AND title = '%s' AND item_deleted = 0 limit 1",
dbesc(WIKI_ITEM_RESOURCE_TYPE),
dbesc($name)
);
if (!$item) {
return array('id' => null);
} else {
return array('id' => $item[0]['id']);
}
}