/**
  * Registers a callback function for a given event
  *
  * @param Doku_Event_Handler $controller DokuWiki's event controller object
  * @return void
  */
 public function register(Doku_Event_Handler $controller)
 {
     // ensure a page revision is created when struct data changes:
     $controller->register_hook('COMMON_WIKIPAGE_SAVE', 'BEFORE', $this, 'handle_pagesave_before');
     // save struct data after page has been saved:
     $controller->register_hook('COMMON_WIKIPAGE_SAVE', 'AFTER', $this, 'handle_pagesave_after');
 }
 /**
  * Registers a callback function for a given event
  *
  * @param Doku_Event_Handler $controller
  */
 function register(Doku_Event_Handler $controller)
 {
     $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'check', array());
     $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, 'handle_act_render', array());
     $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'handle_metaheader_output', array());
     $controller->register_hook('ACTION_HEADERS_SEND', 'BEFORE', $this, 'handle_headers_send', array());
 }
Exemple #3
0
 /**
  * Registers a callback function for a given event
  *
  * @param Doku_Event_Handler $controller the DokuWiki event controller object
  * @return void
  */
 public function register(Doku_Event_Handler $controller)
 {
     $controller->register_hook('TPL_ACT_RENDER', 'AFTER', $this, 'load_pagetools_script');
     $controller->register_hook('TEMPLATE_PAGETOOLS_DISPLAY', 'BEFORE', $this, 'add_button');
     Door43_Ajax_Helper::register_handler($controller, 'get_obs_doc_export_dlg', array($this, 'get_obs_doc_export_dlg'));
     Door43_Ajax_Helper::register_handler($controller, 'download_obs_template_docx', array($this, 'download_obs_template_docx'));
 }
 function register(Doku_Event_Handler $controller)
 {
     global $conf;
     if ($conf['allowdebug']) {
         $controller->register_hook('TPL_ACT_RENDER', 'AFTER', $this, 'debug', array());
     }
 }
 /**
  * Registers a callback function for a given event
  *
  * @param Doku_Event_Handler $controller
  */
 function register(Doku_Event_Handler $controller)
 {
     $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, '_handle_tpl_act', array());
     $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, 'bookbar', array());
     $controller->register_hook('DOKUWIKI_STARTED', 'AFTER', $this, '_extendJSINFO');
     $controller->register_hook('TEMPLATE_PAGETOOLS_DISPLAY', 'BEFORE', $this, 'addbutton');
 }
 function register(Doku_Event_Handler $controller)
 {
     // Support given via AJAX
     $controller->register_hook('TOOLBAR_DEFINE', 'AFTER', $this, 'toolbar_add_button', array());
     $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'metaheader_add_images', array());
     $controller->register_hook('POPUPVIEWER_DOKUWIKI_STARTED', 'BEFORE', $this, 'popupviewer_metaheader_add_images', array());
 }
 /**
  * Register the events
  */
 function register(Doku_Event_Handler $controller)
 {
     $scriptName = basename($_SERVER['PHP_SELF']);
     // should the lang be applied to UI?
     if ($this->getConf('translateui')) {
         switch ($scriptName) {
             case 'js.php':
                 $controller->register_hook('INIT_LANG_LOAD', 'BEFORE', $this, 'translation_js');
                 $controller->register_hook('JS_CACHE_USE', 'BEFORE', $this, 'translation_jscache');
                 break;
             case 'ajax.php':
                 $controller->register_hook('INIT_LANG_LOAD', 'BEFORE', $this, 'translate_media_manager');
                 break;
             case 'mediamanager.php':
                 $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'setJsCacheKey');
                 break;
             default:
                 $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'setJsCacheKey');
         }
     }
     if ($scriptName !== 'js.php' && $scriptName !== 'ajax.php') {
         $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'translation_hook');
         $controller->register_hook('MEDIAMANAGER_STARTED', 'BEFORE', $this, 'translation_hook');
     }
     $controller->register_hook('SEARCH_QUERY_PAGELOOKUP', 'AFTER', $this, 'translation_search');
     $controller->register_hook('COMMON_PAGETPL_LOAD', 'AFTER', $this, 'page_template_replacement');
 }
 public function register(Doku_Event_Handler &$controller)
 {
     $controller->register_hook('IO_WIKIPAGE_WRITE', 'AFTER', $this, 'handle_io_wikipage_write');
     $controller->register_hook('MEDIA_UPLOAD_FINISH', 'AFTER', $this, 'handle_media_upload');
     $controller->register_hook('MEDIA_DELETE_FILE', 'AFTER', $this, 'handle_media_deletion');
     $controller->register_hook('DOKUWIKI_DONE', 'AFTER', $this, 'handle_periodic_pull');
 }
 /**
  * register the eventhandlers
  */
 function register(Doku_Event_Handler $controller)
 {
     $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handle_before', array());
     // allow other plugins to emit logging events
     $controller->register_hook('PLUGIN_LOGLOG_LOG', 'BEFORE', $this, 'handle_custom', array());
     // autologout plugin
     $controller->register_hook('ACTION_AUTH_AUTOLOGOUT', 'BEFORE', $this, 'handle_autologout', array());
 }
 public function register(Doku_Event_Handler $controller)
 {
     $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'RenderMeta');
     $controller->register_hook('TPL_ACT_UNKNOWN', 'BEFORE', $this, 'tplMetaDataForm');
     //$controller->register_hook('TPL_ACT_RENDER','BEFORE',$this,'tplMetaDataButton');
     $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'ActPreprocessMeta');
     $controller->register_hook('TEMPLATE_PAGETOOLS_DISPLAY', 'BEFORE', $this, 'tplMetaDataMenuButton');
 }
 public function register(Doku_Event_Handler $controller)
 {
     //add to right menu
     $controller->register_hook('TEMPLATE_PAGETOOLS_DISPLAY', 'BEFORE', null, function (Doku_Event $event) {
         $event->data['items'][] = self::my_current_link_tpl(['do' => 'delete'], 'yk-delete', 'delete [D]', 'd', 'delete');
     });
     // ajax request
     $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'onAjaxCallUnknown', 'delete');
 }
 public function register(Doku_Event_Handler &$controller)
 {
     if ($this->getConf(self::CONF_LOGIN_DS) === true) {
         $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, '_hookcss');
     } else {
         $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'redirectToLoginHandler');
     }
     $controller->register_hook('HTML_LOGINFORM_OUTPUT', 'BEFORE', $this, 'handleLoginForm');
 }
Exemple #13
0
 /**
  * Register its handlers with the DokuWiki's event controller
  */
 function register(Doku_Event_Handler $controller)
 {
     // register custom edit buttons
     $controller->register_hook('HTML_SECEDIT_BUTTON', 'BEFORE', $this, 'secedit_button');
     // register our editor
     $controller->register_hook('HTML_EDIT_FORMSELECTION', 'BEFORE', $this, 'editform');
     // register preprocessing for accepting editor data
     // $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handle_table_post');
     $controller->register_hook('PLUGIN_EDITTABLE_PREPROCESS_EDITOR', 'BEFORE', $this, 'handle_table_post');
 }
 /**
  * Register the events
  *
  * @param Doku_Event_Handler $controller
  */
 public function register(Doku_Event_Handler $controller)
 {
     /**
      * Submission button in top user menu bar
      */
     $controller->register_hook('TEMPLATE_USERTOOLS_DISPLAY', 'BEFORE', $this, 'addButton');
     /**
      * Submissions page content
      */
     $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'submissionsPageAction');
     $controller->register_hook('TPL_ACT_UNKNOWN', 'BEFORE', $this, 'submissionsPageContent');
     /**
      * Remove page cache after login
      */
     $controller->register_hook('AUTH_LOGIN_CHECK', 'AFTER', $this, 'removePageCache');
     /**
      * export to csv icon in submissions page
      */
     $controller->register_hook('TEMPLATE_PAGETOOLS_DISPLAY', 'BEFORE', $this, 'addCsvButton', array());
     $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'exportToCSV');
     /**
      * Ajax calls
      */
     $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'ajaxHandler');
 }
Exemple #15
0
 /**
  * Register callback functions
  *
  * @param {Doku_Event_Handler} $controller DokuWiki's event controller object
  */
 public function register(Doku_Event_Handler $controller)
 {
     $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'handle_start');
     $controller->register_hook('DOKUWIKI_STARTED', 'AFTER', $this, 'override_loadskin');
     $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handle_action_before');
     $controller->register_hook('ACTION_ACT_PREPROCESS', 'AFTER', $this, 'handle_action');
     $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, 'pre_render');
     $controller->register_hook('TPL_ACT_UNKNOWN', 'BEFORE', $this, 'unknown_action');
     $controller->register_hook('ACTION_SHOW_REDIRECT', 'BEFORE', $this, 'handle_redirect');
     $controller->register_hook('ACTION_HEADERS_SEND', 'BEFORE', $this, 'block_headers');
 }
Exemple #16
0
 /**
  * Register function called by DokuWiki to allow us
  * to register events we're interested in.
  *
  * @param controller object the controller to register with
  */
 public function register(Doku_Event_Handler &$controller)
 {
     $controller->register_hook('IO_WIKIPAGE_WRITE', 'BEFORE', $this, '_io_page_write');
     $controller->register_hook('PARSER_METADATA_RENDER', 'BEFORE', $this, '_parser_metadata_render_before');
     $controller->register_hook('STRATA_PREVIEW_METADATA_RENDER', 'BEFORE', $this, '_parser_metadata_render_before');
     $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, '_preview_before');
     $controller->register_hook('TPL_ACT_RENDER', 'AFTER', $this, '_preview_after');
     $controller->register_hook('PARSER_METADATA_RENDER', 'AFTER', $this, '_parser_metadata_render_after');
     $controller->register_hook('STRATA_PREVIEW_METADATA_RENDER', 'AFTER', $this, '_parser_metadata_render_after');
 }
Exemple #17
0
 function register(Doku_Event_Handler $controller)
 {
     if ($this->helper->is_outOfScope()) {
         return;
     }
     $controller->register_hook('TPL_METAHEADER_OUTPUT', 'AFTER', $this, 'loadScript');
     $controller->register_hook('HTML_EDITFORM_INJECTION', 'AFTER', $this, 'preprocess');
     $controller->register_hook('HTML_EDITFORM_OUTPUT', 'BEFORE', $this, 'insertFormElement');
     $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'file_type');
     $controller->register_hook('TPL_CONTENT_DISPLAY', 'AFTER', $this, 'setupDWEdit');
     $controller->register_hook('DOKUWIKI_STARTED', 'AFTER', $this, 'reset_user_rewrite_check');
     $controller->register_hook('DOKUWIKI_DONE', 'BEFORE', $this, 'restore_conf');
     $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, '_ajax_call');
 }
 /**
  * Registers a callback function for a given event
  *
  * @param Doku_Event_Handler $controller DokuWiki's event controller object
  * @return void
  */
 public function register(Doku_Event_Handler $controller)
 {
     /* @see action_plugin_pageredirect::handle_dokuwiki_started() */
     $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'handle_dokuwiki_started');
     /* @see action_plugin_pageredirect::handle_parser_metadata_render() */
     $controller->register_hook('PARSER_METADATA_RENDER', 'BEFORE', $this, 'handle_parser_metadata_render');
     // This plugin goes first
     // After PR#555
     /* @see action_plugin_pageredirect::handle_tpl_act_render() */
     $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, 'handle_tpl_act_render', null, -PHP_INT_MAX);
     // Before PR#555, i.e 2013-12-08 release
     if (isset($controller->_hook)) {
         $hooks =& $controller->_hooks[TPL_ACT_RENDER_BEFORE];
         if ($hooks[0][0] != $this) {
             array_unshift($hooks, array_pop($hooks));
         }
     }
 }
Exemple #19
0
  /**
   * Register event handlers.
   *
   * @param Doku_Event_Handler $controller The plugin controller
   */
  public function register(Doku_Event_Handler $controller) {
      $controller->register_hook('IO_WIKIPAGE_READ', 'AFTER', $this, 'handle_read', array());
      $controller->register_hook('PARSER_CACHE_USE', 'BEFORE', $this, 'handle_cache', array());
      $controller->register_hook('INDEXER_VERSION_GET', 'BEFORE', $this, 'handle_index_version');
      $controller->register_hook('INDEXER_PAGE_ADD', 'BEFORE', $this, 'index_media_use');
      $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'handle_ajax_call');
 }
Exemple #20
0
 /**
  * register the eventhandlers
  *
  * @param Doku_Event_Handler $contr
  */
 function register(&$contr)
 {
     $contr->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, '_handle_act', array());
     $contr->register_hook('TPL_ACT_UNKNOWN', 'BEFORE', $this, '_handle_tpl_act', array());
     $contr->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, '_handle_keywords', array());
     if ($this->getConf('toolbar_icon')) {
         $contr->register_hook('TOOLBAR_DEFINE', 'AFTER', $this, 'insert_toolbar_button', array());
     }
     $contr->register_hook('INDEXER_VERSION_GET', 'BEFORE', $this, '_indexer_version', array());
     $contr->register_hook('INDEXER_PAGE_ADD', 'BEFORE', $this, '_indexer_index_tags', array());
 }
Exemple #21
0
 function register(Doku_Event_Handler $controller)
 {
     $version = explode('.', phpversion());
     define('PHP_VERSION_NUM', $version[0] * 10 + $version[1]);
     if ($this->helper->is_outOfScope()) {
         return;
     }
     global $FCKG_show_preview;
     $FCKG_show_preview = true;
     if (isset($_REQUEST['mode']) && $_REQUEST['mode'] == 'dwiki') {
         $FCKG_show_preview = true;
         return;
     } elseif (isset($_COOKIE['FCKG_USE'])) {
         preg_match('/_\\w+_/', $_COOKIE['FCKG_USE'], $matches);
         if ($matches[0] == '_false_') {
             $FCKG_show_preview = true;
             return;
         }
     }
     $Fck_NmSp = "!!NONSET!!";
     if (isset($_COOKIE['FCK_NmSp'])) {
         $Fck_NmSp = $_COOKIE['FCK_NmSp'];
     }
     $dwedit_ns = @$this->getConf('dwedit_ns');
     if (isset($dwedit_ns) && $dwedit_ns) {
         $ns_choices = explode(',', $dwedit_ns);
         foreach ($ns_choices as $ns) {
             $ns = trim($ns);
             if (preg_match("/{$ns}/", $_REQUEST['id']) || preg_match("/{$ns}/", $Fck_NmSp)) {
                 $FCKG_show_preview = true;
                 return;
             }
         }
     }
     $controller->register_hook('COMMON_PAGE_FROMTEMPLATE', 'AFTER', $this, 'pagefromtemplate', array());
     $controller->register_hook('COMMON_PAGETPL_LOAD', 'AFTER', $this, 'pagefromtemplate', array());
     $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, 'ckgedit_edit');
     $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'ckgedit_edit_meta');
 }
 function register(Doku_Event_Handler $controller)
 {
     $controller->register_hook('DOKUWIKI_STARTED', 'AFTER', $this, 'set_admin');
     $controller->register_hook('TPL_ACT_RENDER', 'AFTER', $this, 'print_overlay', array('after'));
     $controller->register_hook('TEMPLATE_PAGETOOLS_DISPLAY', 'BEFORE', $this, 'action_link', array('page'));
     $controller->register_hook('TEMPLATE_SITETOOLS_DISPLAY', 'BEFORE', $this, 'action_link', array('site'));
     $controller->register_hook('TEMPLATE_USERTOOLS_DISPLAY', 'BEFORE', $this, 'action_link', array('user'));
 }
 /**
  * Registers a callback function for a given event
  */
 function register(Doku_Event_Handler $controller)
 {
     $controller->register_hook('IO_WIKIPAGE_WRITE', 'BEFORE', $this, '_handle');
     $controller->register_hook('HTML_SECEDIT_BUTTON', 'BEFORE', $this, '_editbutton');
     $controller->register_hook('HTML_EDIT_FORMSELECTION', 'BEFORE', $this, '_editform');
     $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, '_handle_edit_post');
     $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, '_handle_ajax');
 }
 function register(Doku_Event_Handler $controller)
 {
     $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, handle_approve, array());
     $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, handle_viewer, array());
     $controller->register_hook('TPL_ACT_RENDER', 'AFTER', $this, handle_diff_accept, array());
     $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, handle_display_banner, array());
     $controller->register_hook('HTML_SHOWREV_OUTPUT', 'BEFORE', $this, handle_showrev, array());
 }
Exemple #25
0
 function register(Doku_Event_Handler $controller)
 {
     $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, '_ajax_call');
     $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handle_tpl_act', array());
     $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, 'compile_merge_data', array());
     $controller->register_hook('TPL_CONTENT_DISPLAY', 'BEFORE', $this, 'render_merge_interface', array());
     $controller->register_hook('TEMPLATE_PAGETOOLS_DISPLAY', 'BEFORE', $this, 'handle_add_merge_button');
 }
 /**
  * register the eventhandlers and initialize some options
  */
 function register(Doku_Event_Handler $controller)
 {
     global $JSINFO;
     global $ACT;
     $JSINFO['act'] = $ACT;
     $controller->register_hook('IO_WIKIPAGE_WRITE', 'BEFORE', $this, 'logedits', array());
     $controller->register_hook('SEARCH_QUERY_FULLPAGE', 'AFTER', $this, 'logsearch', array());
     $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'loglogins', array());
     $controller->register_hook('AUTH_USER_CHANGE', 'AFTER', $this, 'logregistration', array());
     $controller->register_hook('FETCH_MEDIA_STATUS', 'BEFORE', $this, 'logmedia', array());
     $controller->register_hook('INDEXER_TASKS_RUN', 'AFTER', $this, 'loghistory', array());
 }
Exemple #27
0
 /**
  * Install hooks for interesting events
  *
  * @param Doku_Event_Handler $controller DokuWiki's event controller object
  * @return void
  */
 public function register(Doku_Event_Handler $controller)
 {
     $this->sphinx = new SphinxSearch();
     $this->searchResults = new searchResults();
     if ($this->sphinx->isConnected === false) {
         $controller->register_hook('TPL_CONTENT_DISPLAY', 'BEFORE', $this, 'handle_no_connection');
     } else {
         $controller->register_hook('ACTION_HEADERS_SEND', 'BEFORE', $this, 'handle_headers_send');
         $controller->register_hook('IO_WIKIPAGE_WRITE', 'BEFORE', $this, 'handle_wikipage_write', 0);
         $controller->register_hook('IO_WIKIPAGE_WRITE', 'AFTER', $this, 'handle_wikipage_write', 1);
         $controller->register_hook('INDEXER_PAGE_ADD', 'AFTER', $this, 'handle_indexer_page_add');
         $controller->register_hook('TPL_CONTENT_DISPLAY', 'BEFORE', $this, 'handle_tpl_content_display');
     }
 }
Exemple #28
0
 /**
  * plugin should use this method to register its handlers with the dokuwiki's event controller
  *
  * @param Doku_Event_Handler $controller DokuWiki's event controller object.
  */
 function register(Doku_Event_Handler $controller)
 {
     if ($this->getConf('only_admins')) {
         $controller->register_hook('IO_WIKIPAGE_WRITE', 'BEFORE', $this, '_checkperm');
     }
     if ($this->getConf('page_index') != '') {
         $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, '_loadindex');
     }
     $controller->register_hook('DOKUWIKI_STARTED', 'AFTER', $this, '_extendJSINFO');
     $controller->register_hook('PARSER_CACHE_USE', 'BEFORE', $this, '_purgecache');
     if ($this->getConf('show_sort')) {
         $controller->register_hook('TPL_CONTENT_DISPLAY', 'BEFORE', $this, '_showsort');
     }
     $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, '_ajax_call');
 }
 /**
  * register the eventhandlers
  */
 public function register(Doku_Event_Handler $controller)
 {
     // check CAPTCHA success
     $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handle_captcha_input', array());
     // inject in edit form
     $controller->register_hook('HTML_EDITFORM_OUTPUT', 'BEFORE', $this, 'handle_form_output', array());
     // inject in user registration
     $controller->register_hook('HTML_REGISTERFORM_OUTPUT', 'BEFORE', $this, 'handle_form_output', array());
     // inject in password reset
     $controller->register_hook('HTML_RESENDPWDFORM_OUTPUT', 'BEFORE', $this, 'handle_form_output', array());
     if ($this->getConf('loginprotect')) {
         // inject in login form
         $controller->register_hook('HTML_LOGINFORM_OUTPUT', 'BEFORE', $this, 'handle_form_output', array());
         // check on login
         $controller->register_hook('AUTH_LOGIN_CHECK', 'BEFORE', $this, 'handle_login', array());
     }
 }
 /**
  * Registers a callback function for a given event
  *
  * @param Doku_Event_Handler $controller DokuWiki's event controller object
  * @return void
  */
 public function register(Doku_Event_Handler $controller)
 {
     global $conf;
     if ($conf['authtype'] != 'oauth') {
         return;
     }
     $conf['profileconfirm'] = false;
     // password confirmation doesn't work with oauth only users
     $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'handle_start');
     $controller->register_hook('HTML_LOGINFORM_OUTPUT', 'BEFORE', $this, 'handle_loginform');
     $controller->register_hook('HTML_UPDATEPROFILEFORM_OUTPUT', 'BEFORE', $this, 'handle_profileform');
     $controller->register_hook('AUTH_USER_CHANGE', 'BEFORE', $this, 'handle_usermod');
     $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handle_dologin');
 }