public function init()
 {
     if (self::isMicroPaymentsAvailable()) {
         // Setup backend hooks
         add_filter('cma_settings_pages', function ($pages) {
             $lastVal = end($pages);
             $lastKey = key($pages);
             array_pop($pages);
             $pages['micropayments'] = 'MicroPayments';
             $pages[$lastKey] = $lastVal;
             return $pages;
         });
         add_filter('cma_settings_pages_groups', function ($subcategories) {
             $subcategories['micropayments']['general'] = 'General';
             return $subcategories;
         });
         CMA_Labels::loadLabelFile(dirname(__FILE__) . '/labels.tsv');
         if (self::isMicroPaymentsConfigured()) {
             // Setup frontend hooks
             add_action('cma_question_post_before', array($this, 'questionPostBefore'), 10, 1);
             add_action('cma_answer_post_before', array($this, 'answerPostBefore'), 10, 2);
             add_action('cma_frontend_question_form_bottom', array($this, 'questionFormBottom'));
             add_action('cma_question_post_msg_success', array($this, 'questionPostMessageSuccess'));
             add_action('cma_frontend_answer_form_bottom', array($this, 'answerFormBottom'));
             add_action('cma_answer_post_msg_success', array($this, 'answerPostMessageSuccess'));
             add_action('cma_thread_resolved', array($this, 'threadResolved'), 10, 1);
             add_action('cma_thread_set_best_answer', array($this, 'threadResolved'), 10, 1);
         } else {
             add_action('admin_notices', function () {
                 if (CMA_MicroPayments::instance()->getAnswerPoints() != 0 or CMA_MicroPayments::instance()->getQuestionPoints() != 0) {
                     CMA_MicroPayments::displayAdminWarning();
                 }
             });
         }
     }
 }