*/ class admin_plugin_structpublish extends DokuWiki_Admin_Plugin { /** * @return int sort number in admin menu */ public function getMenuSort() { return 555; } /** * @return bool true if only access for superuser, false is for superusers and moderators */ public function forAdminOnly() { return false; } /** * Based on struct pattern assignments */ public function handle() { global $INPUT; global $ID; try { $assignments = Assignments::getInstance(); } catch (Exception $e) { msg($e->getMessage(), -1); return; } if ($INPUT->str('action') && $INPUT->arr('assignment') && checkSecurityToken()) { $assignment = $INPUT->arr('assignment'); if (!blank($assignment['pattern']) && !blank($assignment['status'])) { if ($INPUT->str('action') === 'delete') { $ok = $assignments->removePattern( $assignment['pattern'], $assignment['user'], $assignment['status'] ); if (!$ok) { msg('failed to remove pattern', -1); } } elseif ($INPUT->str('action') === 'add') { if ($assignment['pattern'][0] == '/') { if (@preg_match($assignment['pattern'], null) === false) { msg('Invalid regular expression. Pattern not saved', -1); } else { $ok = $assignments->addPattern( $assignment['pattern'], $assignment['user'], $assignment['status'] ); if (!$ok) { msg('failed to add pattern', -1); } } } else { $ok = $assignments->addPattern( $assignment['pattern'], $assignment['user'], $assignment['status'] ); if (!$ok) { msg('failed to add pattern', -1); } } } } send_redirect(wl($ID, array('do' => 'admin', 'page' => 'structpublish'), true, '&')); } } /** * Render HTML output */ public function html() { ptln('

' . $this->getLang('menu') . '

'); global $ID; try { $assignments = Assignments::getInstance(); } catch (Exception $e) { msg($e->getMessage(), -1); return; } $list = $assignments->getAllPatterns(); echo '
'; echo ''; echo ''; echo ''; echo ''; // header echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; // existing assignments foreach ($list as $assignment) { $pattern = $assignment['pattern']; $status = $assignment['status']; $user = $assignment['user']; $link = wl( $ID, [ 'do' => 'admin', 'page' => 'structpublish', 'action' => 'delete', 'sectok' => getSecurityToken(), 'assignment[status]' => $status, 'assignment[pattern]' => $pattern, 'assignment[user]' => $user, ] ); echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; } // new assignment form echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo '
' . $this->getLang('assign_pattern') . '' . $this->getLang('assign_status') . '' . $this->getLang('assign_user') . '
' . hsc($pattern) . '' . hsc($status) . '' . hsc($user) . '' . $this->getLang('assign_del') . '
'; echo ''; echo '
'; echo '
'; } }