$page ), admin_url('admin.php') ); $return_url = wp_nonce_url( $return_url, 'wpos_anylc_act' ); } // Getting data according to type if( $analy_product['type'] == 'theme' ) { $product_name = $theme_data->get( 'Name' ); $product_version = $theme_data->get( 'Version' ); } else { if( !function_exists('get_plugin_data') ) { require_once(ABSPATH . 'wp-admin/includes/plugin.php'); } $plugin_data = get_plugin_data( trailingslashit(WP_PLUGIN_DIR) . $analy_product['file'] ); $product_name = !empty( $plugin_data['Name'] ) ? $plugin_data['Name'] : ''; $product_version = !empty( $plugin_data['Version'] ) ? $plugin_data['Version'] : ''; } } $optin_data = array( 'site_url' => untrailingslashit( get_bloginfo('wpurl') ), 'site_name' => get_bloginfo( 'name' ), 'wp_version' => get_bloginfo( 'version' ), 'language' => get_bloginfo( 'language' ), 'is_rtl' => is_rtl() ? 1 : 0, 'php_version' => phpversion(), 'sdk_version' => WPOS_ANYLC_VERSION, 'product_name' => isset( $product_name ) ? $product_name : '', 'product_version' => isset( $product_version ) ? $product_version : '', 'product_id' => !empty( $analy_product['id'] ) ? $analy_product['id'] : 0, 'product_type' => !empty( $analy_product['type'] ) ? $analy_product['type'] : '', 'theme_name' => $theme_data->get( 'Name' ), 'theme_uri' => $theme_data->get( 'ThemeURI' ), 'theme_author' => $theme_data->get( 'Author' ), 'theme_author_uri' => $theme_data->get( 'AuthorURI' ), 'theme_version' => $theme_data->get( 'Version' ), 'user_firstname' => $current_user->user_firstname, 'user_lastname' => $current_user->user_lastname, 'user_nickname' => $current_user->user_nicename, 'user_email' => get_bloginfo( 'admin_email' ), 'ip_address' => wpos_anylc_get_ip_address(), 'site_uid' => wpos_anylc_site_uid(), 'return_url' => $return_url, ); return $optin_data; } /** * Get IP Address * * @package Wpos Analytic * @since 1.0.0 */ function wpos_anylc_get_ip_address() { if ( isset( $_SERVER['HTTP_X_REAL_IP'] ) ) { // WPCS: input var ok, CSRF ok. return sanitize_text_field( wp_unslash( $_SERVER['HTTP_X_REAL_IP'] ) ); // WPCS: input var ok, CSRF ok. } elseif ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) { // WPCS: input var ok, CSRF ok. // Proxy servers can send through this header like this: X-Forwarded-For: client1, proxy1, proxy2 // Make sure we always only send through the first IP in the list which should always be the client IP. return (string) rest_is_ip_address( trim( current( preg_split( '/[,:]/', sanitize_text_field( wp_unslash( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) ) ) ) ); // WPCS: input var ok, CSRF ok. } elseif ( isset( $_SERVER['REMOTE_ADDR'] ) ) { // @codingStandardsIgnoreLine return sanitize_text_field( wp_unslash( $_SERVER['REMOTE_ADDR'] ) ); // @codingStandardsIgnoreLine } return '127.0.0.1'; } /** * Get Product Optin Data * * @package Wpos Analytic * @since 1.0.0 */ function wpos_anylc_get_option( $key = '' ) { $opt_in_data = array(); if( !empty( $key ) ) { $opt_in_data = get_option( $key ); $opt_in_data = ( !empty($opt_in_data) && is_array($opt_in_data) ) ? $opt_in_data : array(); } return $opt_in_data; } /** * Get Product Optin Data * * @package Wpos Analytic * @since 1.0.0 */ function wpos_anylc_update_option( $key = '', $data = array() ) { $opt_in_data = array(); if( !empty( $key ) ) { $opt_in_data = wpos_anylc_get_option( $key ); if( is_array($data) ) { $opt_in_data = array_merge( $opt_in_data, $data ); update_option( $key, $opt_in_data ); } } return $opt_in_data; } /** * Get Analytic Product Optin URL * * @package Wpos Analytic * @since 1.0.0 */ function wpos_anylc_optin_url( $module_data = '', $optin_status = null ) { $optin_url = false; // Optin Status if( ! isset( $optin_status ) ) { $opt_in_data = get_option( $module_data['anylc_optin'] ); $optin_status = isset( $opt_in_data['status'] ) ? $opt_in_data['status'] : null; } if( !empty( $module_data['menu'] ) && !empty( $module_data['slug'] ) ) { $url_data = parse_url( $module_data['menu'], PHP_URL_QUERY ); $query_data = !empty( $url_data ) ? parse_str( $url_data, $query_arr ) : array(); if( !empty( $query_arr['post_type'] ) && $optin_status >= 0 ) { // If Optin is done and post type menu $optin_url = add_query_arg( array( 'post_type' => $query_arr['post_type'], 'page' => $module_data['slug'], 'anylc_optin_menu' => true ), admin_url('edit.php') ); } else if( empty( $query_arr['post_type'] ) && $optin_status >= 0 ) { // If Optin is done and simple admin menu $optin_url = add_query_arg( array( 'page' => $module_data['slug'], 'anylc_optin_menu' => true ), admin_url('admin.php') ); } else { $optin_url = add_query_arg( array( 'page' => $module_data['slug'] ), admin_url('admin.php') ); } } return $optin_url; } /** * Get Analytic Product Opt Out URL * * @package Wpos Analytic * @since 1.0.0 */ function wpos_anylc_optout_url( $module_data = '', $optin_status = null, $redirect_url = false ) { $opt_out_link = false; // Optin Status if( !isset( $optin_status ) ) { $opt_in_data = get_option( $module_data['anylc_optin'] ); $optin_status = isset( $opt_in_data['status'] ) ? $opt_in_data['status'] : null; } if( $optin_status == 1 ) { if( ! $redirect_url ) { $plugin_status = isset( $_GET['plugin_status'] ) ? sanitize_text_field( $_GET['plugin_status'] ) : false; $paged = isset( $_GET['paged'] ) ? sanitize_text_field( $_GET['paged'] ) : false; $s = isset( $_GET['s'] ) ? sanitize_text_field( $_GET['s'] ) : false; $redirect_url = add_query_arg( array( 'plugin_status' => $plugin_status, 'paged' => $paged, 's' => $s ), admin_url( 'plugins.php' ) ); } $opt_out_link = add_query_arg( array( 'wpos_anylc_action' => 'optout', 'wpos_anylc_pdt' => $module_data['slug'], 'redirect' => $redirect_url ), $redirect_url ); $opt_out_link = wp_nonce_url( $opt_out_link, 'wpos_anylc_act'.'|'.$module_data['slug'] ); } return $opt_out_link; } /** * Get Analytic Product URL * * @package Wpos Analytic * @since 1.0.0 */ function wpos_anylc_pdt_url( $module_data = '', $type = false ) { $redirect_url = false; $redirect_page = ! empty( $module_data['redirect_page'] ) ? $module_data['redirect_page'] : $module_data['menu']; if( ! empty( $redirect_page ) ) { $pos = strpos( $redirect_page, '?post_type' ); $redirect_url = ( $pos !== false ) ? admin_url( $redirect_page ) : add_query_arg( array( 'page' => $redirect_page ), admin_url('admin.php') ); switch ( $type ) { case 'promotion': $promotion = !empty( $_GET['promotion'] ) ? wpos_anylc_clean( $_GET['promotion'] ) : ''; if( !empty( $promotion ) ) { $promotion = is_array( $promotion ) ? implode( ',', $promotion ) : $promotion; $redirect_url = add_query_arg( array( 'message' => 'wpos_anylc_promotion', 'wpos_anylc_pdt' => $module_data['slug'], 'wpos_anylc_promo_pdt' => $promotion ), $redirect_url ); } break; case 'offer': if( !empty( $module_data['offers'] ) ) { $redirect_url = add_query_arg( array( 'page' => $module_data['slug'].'-offers' ), $redirect_url ); } break; case 'offer-promotion': $promotion = !empty( $_GET['promotion'] ) ? wpos_anylc_clean( $_GET['promotion'] ) : ''; if( !empty( $module_data['offers'] ) ) { $redirect_url = add_query_arg( array( 'page' => $module_data['slug'].'-offers' ), $redirect_url ); } if( !empty( $promotion ) ) { $promotion = is_array( $promotion ) ? implode( ',', $promotion ) : $promotion; $redirect_url = add_query_arg( array( 'message' => 'wpos_anylc_promotion', 'wpos_anylc_pdt' => $module_data['slug'], 'wpos_anylc_promo_pdt' => $promotion ), $redirect_url ); } break; } } return $redirect_url; }