public function register_locations()
 {
     global $post;
     if (is_admin()) {
         return;
     }
     if ($this->general_options['reset_postdata']) {
         wp_reset_postdata();
     }
     // @since version 3.1 CSS hide of mobile buttons
     $mobile_css_activate = ESSBOptionValuesHelper::options_bool_value($this->options, 'mobile_css_activate');
     if ($mobile_css_activate) {
         essb_resource_builder()->add_css(ESSBResourceBuilderSnippets::css_build_mobile_compatibility(), 'essb-mobile-compatibility');
     }
     $this->list_of_activated_locations = array();
     $current_post_content_locations = $this->general_options['content_position'];
     $current_post_button_position = $this->general_options['button_position'];
     // different button placement by post type is only avaiable in full interface
     if (!defined('ESSB3_LIGHTMODE')) {
         $positions_by_pt = ESSBOptionValuesHelper::options_bool_value($this->options, 'positions_by_pt');
         if ($positions_by_pt && isset($post)) {
             $current_post_type = $post->post_type;
             $content_position_by_pt = ESSBOptionValuesHelper::options_value($this->options, 'content_position_' . $current_post_type);
             $button_position_by_pt = ESSBOptionValuesHelper::options_value($this->options, 'button_position_' . $current_post_type);
             if (!empty($content_position_by_pt)) {
                 $current_post_content_locations = $content_position_by_pt;
                 $this->general_options['content_position'] = $content_position_by_pt;
             }
             if (is_array($button_position_by_pt)) {
                 if (count($button_position_by_pt) > 0) {
                     $current_post_button_position = $button_position_by_pt;
                     $this->general_options['button_position'] = $button_position_by_pt;
                 }
             }
         }
     }
     if ($current_post_content_locations != '' && $current_post_content_locations != 'content_manual') {
         add_filter('the_content', array($this, 'display_inline'), $this->general_options['priority_of_buttons']);
         $this->list_of_activated_locations[] = array("type" => "filter", "hook" => "the_content", "function" => 'display_inline', "priority" => $this->general_options['priority_of_buttons'], 'position' => 'content_position');
     }
     if (is_array($current_post_button_position)) {
         foreach ($current_post_button_position as $position) {
             if (method_exists($this, 'display_' . $position)) {
                 if ($position == "postfloat") {
                     add_filter('the_content', array($this, 'display_postfloat'));
                     add_filter('the_content', array($this, 'trigger_bottom_mark'), 9999);
                     $this->list_of_activated_locations[] = array("type" => "filter", "hook" => "the_content", "function" => 'display_postfloat', "priority" => "", 'position' => 'button_position');
                     $this->list_of_activated_locations[] = array("type" => "filter", "hook" => "the_content", "function" => 'trigger_bottom_mark', "priority" => "9999", 'position' => 'button_position');
                 } else {
                     if ($position == "onmedia") {
                         add_filter('the_content', array($this, 'display_onmedia'), 9999);
                         $this->list_of_activated_locations[] = array("type" => "filter", "hook" => "the_content", "function" => 'display_onmedia', "priority" => "9999", 'position' => 'button_position');
                     } else {
                         if ($position == "popup" && ESSBOptionValuesHelper::options_bool_value($this->options, 'popup_display_comment')) {
                             add_filter('comment_post_redirect', array($this, 'after_comment_trigger'));
                             $this->list_of_activated_locations[] = array("type" => "filter", "hook" => "comment_post_redirect", "function" => 'after_comment_trigger', "priority" => "", 'position' => 'button_position');
                         }
                         if ($position == "flyin" && ESSBOptionValuesHelper::options_bool_value($this->options, 'flyin_display_comment')) {
                             add_filter('comment_post_redirect', array($this, 'after_comment_trigger'));
                             $this->list_of_activated_locations[] = array("type" => "filter", "hook" => "comment_post_redirect", "function" => 'after_comment_trigger', "priority" => "", 'position' => 'button_position');
                         }
                         if ($position == 'postbar') {
                             add_filter('the_content', array($this, 'trigger_postbar_readbar'));
                             $this->list_of_activated_locations[] = array("type" => "filter", "hook" => "the_content", "function" => 'trigger_postbar_readbar', "priority" => "", 'position' => 'button_position');
                         }
                         add_filter('the_content', array($this, 'trigger_bottom_mark'), 9999);
                         add_action('wp_footer', array($this, "display_{$position}"));
                         $this->list_of_activated_locations[] = array("type" => "filter", "hook" => "the_content", "function" => 'trigger_bottom_mark', "priority" => "9999", 'position' => 'button_position');
                         $this->list_of_activated_locations[] = array("type" => "action", "hook" => "wp_footer", "function" => "display_{$position}", "priority" => "", 'position' => 'button_position');
                     }
                 }
             }
         }
     }
     // excerpt display
     if ($this->general_options['display_excerpt']) {
         // @since verion 3.0.4 - build in Avada theme bridge
         if (class_exists('FusionCore_Plugin')) {
             // detected Avada theme
             if ($this->general_options['display_excerpt_pos'] == "top") {
                 add_action('fusion_blog_shortcode_loop_content', array($this, 'display_excerpt_avada'), $this->general_options['priority_of_buttons']);
                 $this->list_of_activated_locations[] = array("type" => "action", "hook" => "fusion_blog_shortcode_loop_content", "function" => 'display_excerpt_avada', "priority" => $this->general_options['priority_of_buttons']);
                 add_action('avada_blog_post_content', array($this, 'display_excerpt_avada'), 1);
                 $this->list_of_activated_locations[] = array("type" => "action", "hook" => "avada_blog_post_content", "function" => 'display_excerpt_avada', "priority" => "1");
             } else {
                 add_action('fusion_blog_shortcode_loop_footer', array($this, 'display_excerpt_avada'), $this->general_options['priority_of_buttons']);
                 $this->list_of_activated_locations[] = array("type" => "action", "hook" => "fusion_blog_shortcode_loop_content", "function" => 'display_excerpt_avada', "priority" => $this->general_options['priority_of_buttons']);
                 add_action('avada_blog_post_content', array($this, 'display_excerpt_avada'), 20);
                 $this->list_of_activated_locations[] = array("type" => "action", "hook" => "avada_blog_post_content", "function" => 'display_excerpt_avada', "priority" => "20");
             }
         } else {
             add_filter('the_excerpt', array($this, 'display_excerpt'), $this->general_options['priority_of_buttons']);
             $this->list_of_activated_locations[] = array("type" => "filter", "hook" => "the_excerpt", "function" => 'display_excerpt', "priority" => $this->general_options['priority_of_buttons']);
         }
     }
     // clean buttons
     if ($this->general_options['apply_clean_buttons']) {
         if ($this->general_options['apply_clean_buttons_method'] == "actionremove") {
             add_filter('get_the_excerpt', array($this, 'remove_buttons_excerpts_method2'), -999);
         } else {
             if ($this->general_options['apply_clean_buttons_method'] == "remove2") {
                 // do nothing
             } else {
                 if ($this->general_options['apply_clean_buttons_method'] == "clean2") {
                     add_filter('get_the_excerpt', array($this, 'remove_buttons_excerpts_method3'));
                 } else {
                     add_filter('get_the_excerpt', array($this, 'remove_buttons_excerpts'));
                 }
             }
         }
     }
     if (!defined('ESSB3_LIGHTMODE')) {
         // additional module integraton hooks
         //-- WooCommerce
         $woocommece_share = ESSBOptionValuesHelper::options_bool_value($this->options, 'woocommece_share');
         $woocommece_beforeprod = ESSBOptionValuesHelper::options_bool_value($this->options, 'woocommece_beforeprod');
         $woocommece_afterprod = ESSBOptionValuesHelper::options_bool_value($this->options, 'woocommece_afterprod');
         if ($woocommece_share) {
             add_action('woocommerce_share', array($this, 'handle_woocommerce_integration'));
         }
         if ($woocommece_beforeprod) {
             add_action('woocommerce_before_single_product', array($this, 'handle_woocommerce_integration'));
         }
         if ($woocommece_afterprod) {
             add_action('woocommerce_after_single_product', array($this, 'handle_woocommerce_integration'));
         }
         //-- WP eCommerce
         $wpec_before_desc = ESSBOptionValuesHelper::options_bool_value($this->options, 'wpec_before_desc');
         $wpec_after_desc = ESSBOptionValuesHelper::options_bool_value($this->options, 'wpec_after_desc');
         $wpec_theme_footer = ESSBOptionValuesHelper::options_bool_value($this->options, 'wpec_theme_footer');
         if ($wpec_before_desc) {
             add_action('wpsc_product_before_description', array($this, 'handle_wpecommerce_integration'));
         }
         if ($wpec_after_desc) {
             add_action('wpsc_product_addons', array($this, 'handle_wpecommerce_integration'));
         }
         if ($wpec_theme_footer) {
             add_action('wpsc_theme_footer', array($this, 'handle_wpecommerce_integration'));
         }
         // JigoShop
         $jigoshop_top = ESSBOptionValuesHelper::options_bool_value($this->options, 'jigoshop_top');
         $jigoshop_bottom = ESSBOptionValuesHelper::options_bool_value($this->options, 'jigoshop_bottom');
         if ($jigoshop_top) {
             add_action('jigoshop_before_single_product_summary', array($this, 'handle_jigoshop_integration'));
         }
         if ($jigoshop_bottom) {
             add_action('jigoshop_after_main_content', array($this, 'handle_jigoshop_integration'));
         }
         // BBPress
         $bbpress_forum = ESSBOptionValuesHelper::options_bool_value($this->options, 'bbpress_forum');
         $bbpress_topic = ESSBOptionValuesHelper::options_bool_value($this->options, 'bbpress_topic');
         if ($bbpress_topic) {
             add_action('bbp_template_before_topics_loop', array($this, 'handle_bbpress_integration'));
         }
         if ($bbpress_forum) {
             add_action('bbp_template_before_replies_loop', array($this, 'handle_bbpress_integration'));
         }
         // iThemes Exchange
         $ithemes_after_title = ESSBOptionValuesHelper::options_bool_value($this->options, 'ithemes_after_title');
         $ithemes_before_desc = ESSBOptionValuesHelper::options_bool_value($this->options, 'ithemes_before_desc');
         $ithemes_after_desc = ESSBOptionValuesHelper::options_bool_value($this->options, 'ithemes_after_desc');
         $ithemes_after_product = ESSBOptionValuesHelper::options_bool_value($this->options, 'ithemes_after_product');
         $ithemes_after_purchase = ESSBOptionValuesHelper::options_bool_value($this->options, 'ithemes_after_purchase');
         if ($ithemes_after_title) {
             add_action('it_exchange_content_product_before_wrap', array($this, 'handle_ithemes_integration'));
         }
         if ($ithemes_before_desc) {
             add_action('it_exchange_content_product_before_description_element', array($this, 'handle_ithemes_integration'));
         }
         if ($ithemes_after_desc) {
             add_action('it_exchange_content_product_after_description_element', array($this, 'handle_ithemes_integration'));
         }
         if ($ithemes_after_product) {
             add_action('it_exchange_content_product_end_wrap', array($this, 'handle_ithemes_integration'));
         }
         if ($ithemes_after_purchase) {
             add_action('it_exchange_content_confirmation_after_product_title', array($this, 'handle_ithemes_purchase_integration'));
         }
         // BuddyPress
         $buddypress_group = ESSBOptionValuesHelper::options_bool_value($this->options, 'buddypress_group');
         $buddypress_activity = ESSBOptionValuesHelper::options_bool_value($this->options, 'buddypress_activity');
         if ($buddypress_group) {
             add_action('bp_before_group_home_content', array($this, 'handle_buddypress_group_integration'));
         }
         if ($buddypress_activity) {
             add_action('bp_activity_entry_meta', array($this, 'handle_buddypress_activity_integration'));
         }
     }
 }