/** * Handle the match */ function handle($match, $state, $pos, &$handler) { set_media_file_revision_limit($this->getConf('media file revision limit')); if ($state != DOKU_LEXER_SPECIAL) { return NULL; } global $ID; $path = explode(":", $ID); $name = array_pop($path); $this->project_file = FileDefinition::parse($name, $match); $this->project_file->position = $pos; $this->project_file->end = $pos + strlen($match) - 1; return $this->project_file; }
/** * an action has been called * */ function filter(&$event, $param) { global $ACT; global $ID; global $TEXT; global $PRE; $perm = auth_quickaclcheck($ID); if ($event->data == 'manage_files') { $event->preventDefault(); return; } $project = Project::project(); if ($project == NULL) { return; } switch ($event->data) { case 'change_use': if ($perm <= AUTH_READ) { msg('You do not have permission to change this file', -1); $event->data = 'show'; } else { $range = $_REQUEST['range']; $name = $_REQUEST['use']; $slices = rawWikiSlices($range, $ID); $TEXT = $slices[0] . '<use name="' . $name . '"/>' . $slices[2]; } $event->data = 'save'; break; case 'create': if ($perm < AUTH_CREATE) { msg('You do not have permission to create a file', -1); if ($perm < AUTH_READ) { $event->data = 'show'; break; } $event->data = 'manage_files'; $event->preventDefault(); break; } $text = $this->wikitext($_REQUEST['Type']); $name = $_REQUEST['File_name']; $ID = $project->name() . ':' . $name; if ($text == NULL) { return; } $TEXT = $text; $event->data = 'save'; break; case 'remake': if ($perm <= AUTH_READ) { msg('You do not have permission to change this file', -1); if ($perm < AUTH_READ) { $event->data = 'show'; break; } $event->data = 'manage_files'; $event->preventDefault(); } else { set_media_file_revision_limit($this->getConf('media file revision limit')); global $ID; $id = $_REQUEST['id']; if (getNS($name)) { $ID = $id; } $id = noNS($id); $project->remake(array($id)); $ID = $project->id($id); $event->data = 'show'; } $event->preventDefault(); break; case "create_subproject": if ($perm < AUTH_CREATE) { msg('You do not have permission to create a subproject'); if ($perm < AUTH_READ) { $event->data = 'show'; break; } } else { $name = $_REQUEST['Project_name']; $project = Project::project($project->name() . ':' . $name, true); $ID = $project->name() . ':' . $name . ':manage_files'; } $event->data = 'manage_files'; $event->preventDefault(); break; case 'clean': if ($perm <= AUTH_READ) { msg('You do not have permission to clean this project', -1); if ($perm < AUTH_READ) { $event->data = 'show'; break; } } else { $recursive = $_REQUEST['Recursive']; if (!$project->clean($recursive)) { msg('Other users are updating the project. Please clean later.'); } } $event->data = 'manage_files'; $event->preventDefault(); break; case 'rebuild': $event->preventDefault(); if ($perm <= AUTH_READ) { msg('You do not have permission to rebuild this project', -1); if ($perm < AUTH_READ) { $event->data = 'show'; break; } } else { if ($project == NULL) { $project = Project::project(NULL, true); } if (!$project->rebuild()) { msg('Other users are updating the project. Please rebuild later.'); } } $event->data = 'manage_files'; $event->preventDefault(); break; case 'media': $file_id = $_REQUEST['image']; if (!$file_id) { return; } $project = Project::project(getNS($file_id)); if ($project === NULL) { return; } $file = $project->path() . noNS($file_id); if (file_exists($file)) { $event->preventDefault(); send_redirect(ml($file_id)); break; } return; case 'remove_tag': $tag = $_REQUEST['tag']; if ($perm < AUTH_EDIT) { msg("You do not have permission to edit this file", -1); $event->data = 'show'; $event->preventDefault(); break; } $range = $_REQUEST['range']; $slices = rawWikiSlices($range, $ID); if (substr(strtoupper($slices[1]), 0, strlen($tag) + 1) != '<' . strtoupper($tag)) { msg("Missing the {$tag} tag?", -1); $event->data = 'show'; $event->preventDefault(); break; } $text = $slices[0] . $slices[2]; saveWikiText($ID, $slices[0] . $slices[2], "Remove {$tag}", FALSE); $event->data = 'show'; break; case 'add_tag': if ($perm < AUTH_EDIT) { msg("You do not have permission to edit this file", -1); $event->data = 'show'; $event->preventDefault(); break; } $tag = $_REQUEST['tag']; if (isset($_REQUEST['name'])) { $name = $_REQUEST['name']; $name = "name=\"{$name}\""; } else { $name = ''; } $text = rawWiki($ID) . "<{$tag} {$name}"; if (strtoupper($tag) == 'USE') { $text .= '/>'; } else { $text = "></{$tag}>"; } saveWikiText($ID, $text, "Add {$tag}", FALSE); $event->data = 'show'; break; default: return; } $ACT = $event->data; }