Current Path : /home/church/public_html/wp-content/plugins/ninja-forms/includes/ |
Current File : /home/church/public_html/wp-content/plugins/ninja-forms/includes/PromotionManager.php |
<?php if ( ! defined( 'ABSPATH' ) ) exit; class NF_PromotionManager { public $promotions; /** * Accepts a string of location to tell let us know where in the app we are sending promotions to. * Then will return an array of promotions to run in the location. */ public function __construct() { $this->set_promotions(); $this->maybe_remove_personal(); $this->maybe_remove_sendwp(); $this->sort_active_promotions_by_locations(); } public function get_promotions() { return $this->promotions; } /** * Set our promtions array to our promotions property. */ private function set_promotions() { if ( apply_filters( 'ninja_forms_disable_marketing', false ) ) { $this->promotions = array(); } else { $this->promotions = Ninja_Forms()->config( 'DashboardPromotions' ); } } /************************************************************************** * Membership Checks * * These funcitons all check to see if the individual add-ons that make up * our personal membership are active. ****************************************************************************/ private function is_layout_styles_active() { return class_exists( 'NF_Layouts', false ); } private function is_conditional_logic_active() { return class_exists( 'NF_ConditionalLogic', false ); } private function is_multi_part_active() { return class_exists( 'NF_MultiPart', false ); } private function is_file_uploads_active() { return class_exists( 'NF_FU_File_Uploads', false ); } /** * Utilizes the helper methods above to determine if a * a Membership is active on a site. */ private function is_personal_active() { if( $this->is_conditional_logic_active() && $this->is_file_uploads_active() && $this->is_layout_styles_active() && $this->is_multi_part_active() ) { return true; } return false; } /************************************************************************** * Promotion Removal Methods * * These funcitons all check for different add-ons/products and remove * promotions for them if they are in use. ****************************************************************************/ private function maybe_remove_sendwp() { if( phpversion() < '5.6.0' ) { $this->remove_promotion( 'sendwp' ); return; } if( $this->is_sendwp_active() ) { $this->remove_promotion( 'sendwp' ); } elseif( $this->is_ninja_mail_active() ) { $this->remove_promotion( 'sendwp' ); } } private function maybe_remove_personal() { if( $this->is_personal_active() ) { $this->remove_promotion( 'personal' ); } } /*************************************************************************** * Helper Methods ****************************************************************************/ /** * Pass in a promotion type to have it removed from * the list of active promotions. * * @return void */ private function remove_promotion( $type ) { // Loops over promotions and removes unused types of promotions. foreach( $this->promotions as $promotion ) { if( $type == $promotion[ 'type' ] ) { unset( $this->promotions[ $promotion[ 'id' ] ] ); } } } /** * Sorts our promotions by where they will appear in app. * * @return void */ private function sort_active_promotions_by_locations() { $sorted_locations = array(); foreach( $this->promotions as $promotion ) { $sorted_locations[ $promotion[ 'location' ] ][] = $promotion; } $this->promotions = $sorted_locations; } private function is_sendwp_active() { if( class_exists( '\SendWP\Mailer', FALSE ) ) { return true; } return false; } private function is_ninja_mail_active() { if( class_exists('\NinjaMail\Plugin', FALSE ) ) { return true; } return false; } }