key = 'dfrapi_networks'; $this->all_networks = dfrapi_api_get_all_networks(); add_action( 'init', array( $this, 'load_settings' ) ); add_action( 'admin_init', array( $this, 'register_settings' ) ); add_action( 'admin_notices', array( $this, 'admin_notice' ) ); add_action( 'admin_notices', array( $this, 'api_errors' ) ); } function api_errors() { if ( array_key_exists( 'dfrapi_api_error', $this->all_networks ) ) { echo '
'; dfrapi_output_api_error( $this->all_networks ); echo '
'; } } function admin_notice() { if ( isset( $_GET['settings-updated'] ) && $_GET['settings-updated'] == true && isset( $_GET['page'] ) && $this->key == $_GET['page'] ) { dfrapi_admin_notice( __( 'Networks successfully updated!', 'datafeedr-api' ), 'success' ); } } function load_settings() { $this->options = (array) get_option( $this->key ); $this->options = array_merge( array( 'ids' => array(), ), $this->options ); } function register_settings() { register_setting( $this->page, $this->key, array( $this, 'validate' ) ); add_settings_section( 'networks', __( 'Select Networks', 'datafeedr-api' ), array( &$this, 'section_networks_desc' ), $this->page ); add_settings_field( 'ids', __( 'Networks', 'datafeedr-api' ), array( &$this, 'field_network_ids' ), $this->page, 'networks', array( 'label_for' => 'DFRAPI_HIDE_LABEL' ) ); } function section_networks_desc() { echo __( 'Select the affiliate networks you belong to, enter your affiliate ID for each then click [Save Changes].', 'datafeedr-api' ); } function field_network_ids() { $groups = $this->get_network_group_names(); foreach ( $groups as $group ) { $num_networks_checked_in_group = $this->num_networks_checked_in_group( $group ); $active = ( $num_networks_checked_in_group != '' ) ? 'active' : ''; $group_name = ( 'AffiliateWindow' == $group ) ? 'Awin' : $group; echo '
' . esc_html( $group_name ) . ' ' . $this->num_missing_affiliate_ids_in_group( $group ) . ' ' . $num_networks_checked_in_group . ' ' . $this->num_networks_in_group( $group ) . ' ' . $this->num_merchants_in_group( $group ) . ' ' . $this->num_products_in_group( $group ) . '
' . $this->get_groups_networks( $group ) . '
'; } } function get_groups_networks( $group_name ) { $html = ' '; return $html; } function get_network_group_names() { $networks = $this->all_networks; $groups = array(); foreach ( $networks as $network ) { $groups[] = $network['group']; } return array_unique( $groups ); } function num_missing_affiliate_ids_in_group( $group_name ) { $count = 0; foreach ( $this->all_networks as $network ) { if ( $network['group_id'] == dfrapi_get_partnerize_group_id() ) { continue; } if ( $network['group_id'] == dfrapi_get_effiliation_group_id() ) { continue; } if ( $network['group'] == $group_name ) { if ( array_key_exists( $network['_id'], (array) $this->options['ids'] ) ) { if ( dfrapi_get_affiliate_id_by_network_id( (int) $network['_id'] ) === false ) { $count ++; } } } } if ( $count > 0 ) { $messages = $this->messages(); return '' . sprintf( translate_nooped_plural( $messages['num_missing'], $count, 'datafeedr-api' ), number_format( $count ) ) . ' / '; } return ''; } function num_networks_checked_in_group( $group_name ) { $count = 0; foreach ( $this->all_networks as $network ) { if ( $network['group'] == $group_name ) { if ( array_key_exists( $network['_id'], (array) $this->options['ids'] ) ) { $count ++; } } } if ( $count > 0 ) { $messages = $this->messages(); return '' . sprintf( translate_nooped_plural( $messages['num_checked'], $count, 'datafeedr-api' ), number_format( $count ) ) . ' / '; } } function num_networks_in_group( $group_name ) { $count = 0; foreach ( $this->all_networks as $network ) { if ( $network['group'] == $group_name ) { $count ++; } } if ( $count > 0 ) { $messages = $this->messages(); return '' . sprintf( translate_nooped_plural( $messages['num_networks'], $count, 'datafeedr-api' ), number_format( $count ) ) . ' / '; } } function num_merchants_in_group( $group_name ) { $count = 0; foreach ( $this->all_networks as $network ) { if ( $network['group'] == $group_name ) { $count += $network['merchant_count']; } } if ( $count > 0 ) { $messages = $this->messages(); return '' . sprintf( translate_nooped_plural( $messages['num_merchants'], $count, 'datafeedr-api' ), number_format( $count ) ) . ' / '; } } function num_products_in_group( $group_name ) { $count = 0; foreach ( $this->all_networks as $network ) { if ( $network['group'] == $group_name ) { $count += $network['product_count']; } } if ( $count > 0 ) { $messages = $this->messages(); return '' . sprintf( translate_nooped_plural( $messages['num_products'], $count, 'datafeedr-api' ), number_format( $count ) ) . ''; } } function messages() { return array( 'num_missing' => _n_noop( '%s missing affiliate ID', '%s missing affiliate IDs' ), 'num_checked' => _n_noop( '%s network selected', '%s networks selected' ), 'num_networks' => _n_noop( '%s network', '%s networks' ), 'num_merchants' => _n_noop( '%s merchant', '%s merchants' ), 'num_products' => _n_noop( '%s product', '%s products' ), ); } function map_link( $name ): string { $links = [ '2Performant' => 'https://datafeedrapi.helpscoutdocs.com/article/240-how-to-find-your-2performant-affiliate-id', 'Admitad' => 'https://datafeedrapi.helpscoutdocs.com/article/241-how-to-find-your-admitad-affiliate-id', 'ADCELL' => 'https://datafeedrapi.helpscoutdocs.com/article/235-how-to-find-your-adcell-affiliate-id', 'Addrevenue' => 'https://datafeedrapi.helpscoutdocs.com/article/259-how-to-find-your-addrevenue-affiliate-id', 'Adrecord' => 'https://datafeedrapi.helpscoutdocs.com/article/115-how-to-find-your-adrecord-affiliate-id', 'Adservice' => 'https://datafeedrapi.helpscoutdocs.com/article/251-how-to-find-your-adservice-affiliate-id-and-media-id', 'Adtraction' => 'https://datafeedrapi.helpscoutdocs.com/article/116-how-to-find-your-adtraction-affiliate-id', 'Affiliate4You' => 'http://www.datafeedr.com/docs/item/265', 'Awin' => 'https://datafeedrapi.helpscoutdocs.com/article/120-how-to-find-your-affiliate-window-affiliate-id', 'Affiliator' => 'http://www.datafeedr.com/docs/item/270', 'Affilinet' => 'https://datafeedrapi.helpscoutdocs.com/article/121-how-to-find-your-affilinet-affiliate-id', 'Amazon Local' => 'http://www.datafeedr.com/docs/item/275', 'APD' => 'https://datafeedrapi.helpscoutdocs.com/article/133-how-to-find-your-apd-affiliate-id', 'Avangate' => 'https://datafeedrapi.helpscoutdocs.com/article/122-how-to-find-your-avangate-affiliate-id', 'AvantLink' => 'https://datafeedrapi.helpscoutdocs.com/article/123-how-to-find-your-avantlink-affiliate-id', 'Belboon' => 'https://datafeedrapi.helpscoutdocs.com/article/125-how-to-find-your-belboon-affiliate-id', 'BettyMills' => 'https://datafeedrapi.helpscoutdocs.com/article/129-how-to-find-your-betty-mills-affiliate-id', 'bol.com' => 'https://datafeedrapi.helpscoutdocs.com/article/186-how-to-find-your-bol-com-affiliate-id', 'ClickBank' => 'https://datafeedrapi.helpscoutdocs.com/article/130-how-to-find-your-clickbank-affiliate-id', 'ClixGalore' => 'https://datafeedrapi.helpscoutdocs.com/article/131-how-to-find-your-clixgalore-affiliate-id', 'Commission Factory' => 'https://datafeedrapi.helpscoutdocs.com/article/132-how-to-find-your-commission-factory-affiliate-id', 'Commission Junction' => 'https://datafeedrapi.helpscoutdocs.com/article/128-how-to-find-your-cj-affiliate-id', 'Commission Monster' => 'http://www.datafeedr.com/docs/item/109', 'Connexity' => 'https://datafeedrapi.helpscoutdocs.com/article/178-how-to-find-your-connexity-affiliate-id', 'Daisycon' => 'https://datafeedrapi.helpscoutdocs.com/article/135-how-to-find-your-daisycon-affiliate-id', 'DGM' => 'http://www.datafeedr.com/docs/item/263', 'Digital Advisor' => 'https://datafeedrapi.helpscoutdocs.com/article/250-how-to-find-your-digital-advisor-affiliate-id', 'Double.net' => 'https://datafeedrapi.helpscoutdocs.com/article/136-how-to-find-your-double-net-affiliate-id', 'Effiliation' => 'https://datafeedrapi.helpscoutdocs.com/article/211-how-to-find-your-effiliation-api-key', 'FamilyBlend' => 'https://datafeedrapi.helpscoutdocs.com/article/117-how-to-find-your-familyblend-affiliate-id', 'FlexOffers' => 'https://datafeedrapi.helpscoutdocs.com/article/209-how-to-find-your-flexoffers-affiliate-id', 'FlipKart' => 'https://datafeedrapi.helpscoutdocs.com/article/137-how-to-find-your-flipkart-affiliate-id', 'GoAffPro' => 'https://datafeedrapi.helpscoutdocs.com/article/249-how-to-find-your-goaffpro-affiliate-id', 'Impact' => 'https://datafeedrapi.helpscoutdocs.com/article/134-how-to-find-your-impact-radius-affiliate-id', 'LinkConnector' => 'https://datafeedrapi.helpscoutdocs.com/article/138-how-to-find-your-linkconnector-affiliate-id', 'Rakuten' => 'https://datafeedrapi.helpscoutdocs.com/article/139-how-to-find-your-rakuten-affiliate-id', 'M4N' => 'http://www.datafeedr.com/docs/item/198', 'MyCommerce' => 'http://www.datafeedr.com/docs/item/111', 'OneNetworkDirect' => 'https://datafeedrapi.helpscoutdocs.com/article/140-how-to-find-your-onenetworkdirect-affiliate-id', 'Optimise' => 'https://datafeedrapi.helpscoutdocs.com/article/141-how-to-find-your-optimise-affiliate-id', 'Paid on Results' => 'https://datafeedrapi.helpscoutdocs.com/article/142-how-to-find-your-paid-on-results-affiliate-id', 'Partner-ads' => 'https://datafeedrapi.helpscoutdocs.com/article/143-how-to-find-your-partner-ads-affiliate-id', 'Partnerize' => 'https://datafeedrapi.helpscoutdocs.com/article/195-how-to-find-your-partnerize-publisher-id-and-api-keys', 'PepperJam' => 'https://datafeedrapi.helpscoutdocs.com/article/127-how-to-find-your-ebay-enterprise-affiliate-network-affiliate-id', 'PerformanceHorizon' => 'https://datafeedrapi.helpscoutdocs.com/article/195-how-to-find-your-performance-horizon-publisher-id-and-api-keys', 'Profitshare' => 'https://datafeedrapi.helpscoutdocs.com/article/242-how-to-find-your-profitshare-affiliate-id', 'RegNow' => 'http://www.datafeedr.com/docs/item/111', 'RevResponse' => 'https://datafeedrapi.helpscoutdocs.com/article/144-how-to-find-your-revresponse-affiliate-id', 'ShareASale' => 'https://datafeedrapi.helpscoutdocs.com/article/126-how-to-find-your-shareasale-affiliate-id', 'Shopello' => 'https://datafeedrapi.helpscoutdocs.com/article/171-how-to-find-your-shopello-affiliate-id', 'Snapdeal' => 'https://datafeedrapi.helpscoutdocs.com/article/172-how-to-find-your-snapdeal-affiliate-id', 'SuperClix' => 'https://datafeedrapi.helpscoutdocs.com/article/145-how-to-find-your-superclix-affiliate-id', 'The Affiliate Gateway' => 'https://datafeedrapi.helpscoutdocs.com/article/225-how-to-find-your-affiliate-gateway-affiliate-id', 'TimeOne' => 'https://datafeedrapi.helpscoutdocs.com/article/262-how-to-find-your-timeone-affiliate-id', 'TradeDoubler' => 'https://datafeedrapi.helpscoutdocs.com/article/146-how-to-find-your-tradedoubler-affiliate-id', 'TradeTracker' => 'https://datafeedrapi.helpscoutdocs.com/article/148-how-to-find-your-tradetracker-affiliate-id', 'Webgains' => 'https://datafeedrapi.helpscoutdocs.com/article/147-how-to-find-your-webgains-affiliate-id', 'Zanox' => 'https://datafeedrapi.helpscoutdocs.com/article/149-how-to-find-your-zanox-api-keys', ]; return $links[ $name ] ?? ( DFRAPI_DOCS_SEARCH_URL . sanitize_title( $name ) ); } function validate( $input ) { return dfrapi_sanitize_networks_option( $input ); } } // class Dfrapi_Networks } // class_exists check