summaryrefslogtreecommitdiff
path: root/platform/www/lib/plugins/bureaucracy/helper/action.php
diff options
context:
space:
mode:
Diffstat (limited to 'platform/www/lib/plugins/bureaucracy/helper/action.php')
-rw-r--r--platform/www/lib/plugins/bureaucracy/helper/action.php136
1 files changed, 136 insertions, 0 deletions
diff --git a/platform/www/lib/plugins/bureaucracy/helper/action.php b/platform/www/lib/plugins/bureaucracy/helper/action.php
new file mode 100644
index 0000000..5c6dd08
--- /dev/null
+++ b/platform/www/lib/plugins/bureaucracy/helper/action.php
@@ -0,0 +1,136 @@
+<?php
+/**
+ * Base class for bureaucracy actions.
+ *
+ * All bureaucracy actions have to inherit from this class.
+ *
+ * ATM this class is pretty empty but, in the future it could be used to add
+ * helper functions which can be utilized by the different actions.
+ *
+ * @author Michael Klier <chi@chimeric.de>
+ */
+class helper_plugin_bureaucracy_action extends syntax_plugin_bureaucracy {
+
+ /**
+ * Return false to prevent DokuWiki reusing instances of the plugin
+ *
+ * @return bool
+ */
+ public function isSingleton() {
+ return false;
+ }
+
+ /**
+ * Handle the user input [required]
+ *
+ * This function needs to be implemented to accept the user data collected
+ * from the form. Data has to be grabbed from $_POST['bureaucracy'] using
+ * the indicies in the 'idx' members of the $data items.
+ *
+ * @param helper_plugin_bureaucracy_field[] $fields the list of fields in the form
+ * @param string $thanks the thank you message as defined in the form
+ * or default one. Might be modified by the action
+ * before returned
+ * @param array $argv additional arguments passed to the action
+ * @return bool|string false on error, $thanks on success
+ */
+ public function run($fields, $thanks, $argv){
+ msg('ERROR: called action %s did not implement a run() function');
+ return false;
+ }
+
+ /**
+ * Adds some language related replacement patterns
+ */
+ function prepareLanguagePlaceholder() {
+ global $ID;
+ global $conf;
+
+ $this->patterns['__lang__'] = '/@LANG@/';
+ $this->values['__lang__'] = $conf['lang'];
+
+ $this->patterns['__trans__'] = '/@TRANS@/';
+ $this->values['__trans__'] = '';
+
+ /** @var helper_plugin_translation $trans */
+ $trans = plugin_load('helper', 'translation');
+ if (!$trans) return;
+
+ $this->values['__trans__'] = $trans->getLangPart($ID);
+ $this->values['__lang__'] = $trans->realLC('');
+ }
+
+ /**
+ * Adds replacement pattern for fieldlabels (e.g @@Label@@)
+ *
+ * @param helper_plugin_bureaucracy_field $field
+ */
+ function prepareFieldReplacement($field) {
+ $label = $field->getParam('label');
+
+ if(!is_null($label)) {
+ $this->patterns[$label] = $field->getReplacementPattern();
+ $this->values[$label] = $field->getReplacementValue();
+ }
+ }
+
+ /**
+ * Adds <noinclude></noinclude> to replacement patterns
+ */
+ function prepareNoincludeReplacement() {
+ $this->patterns['__noinclude__'] = '/<noinclude>(.*?)<\/noinclude>/is';
+ $this->values['__noinclude__'] = '';
+ }
+
+ /**
+ * Generate field replacements
+ *
+ * @param helper_plugin_bureaucracy_field[] $fields List of field objects
+ * @return array
+ */
+ function prepareFieldReplacements($fields) {
+ foreach ($fields as $field) {
+ //field replacements
+ $this->prepareFieldReplacement($field);
+ }
+ }
+
+ /**
+ * Returns ACL access level of the user or the (virtual) 'runas' user
+ *
+ * @param string $id pageid
+ * @return int
+ */
+ protected function aclcheck($id) {
+ $runas = $this->getConf('runas');
+
+ if($runas) {
+ $auth = auth_aclcheck($id, $runas, array());
+ } else {
+ $auth = auth_quickaclcheck($id);
+ }
+ return $auth;
+
+ }
+
+ /**
+ * Available methods
+ *
+ * @return array
+ */
+ public function getMethods() {
+ $result = array();
+ $result[] = array(
+ 'name' => 'run',
+ 'desc' => 'Handle the user input',
+ 'params' => array(
+ 'fields' => 'helper_plugin_bureaucracy_field[]',
+ 'thanks' => 'string',
+ 'argv' => 'array'
+ ),
+ 'return' => array('false on error, thanks message on success' => 'bool|string')
+ );
+ return $result;
+ }
+
+}