/** * Generate tracked link */ public static function analytics_track_links($params = array()) { /* Merge POST & GET & @param vars into array variable */ $params = array_merge($params, $_REQUEST); /* lead email or lead id required */ if (!isset($params['id']) && !isset($params['email']) && !isset($params['cta_id'])) { $error['error'] = __('This endpoint requires either the \'id\' or the \'email\' or the \'cta_id\' parameter be set.', INBOUNDNOW_TEXT_DOMAIN); self::$data = $error; self::output(401); } /* a link to mask is required */ if (!isset($params['url']) && !isset($params['url'])) { $error['error'] = __('This endpoint requires the \'url\' parameter be set.', INBOUNDNOW_TEXT_DOMAIN); self::$data = $error; self::output(401); } /* a tracking_id is required */ if (!isset($params['tracking_id'])) { $error['error'] = __('This endpoint requires the \'tracking_id\' parameter be set.', INBOUNDNOW_TEXT_DOMAIN); self::$data = $error; self::output(401); } $args = $params; unset($args['token']); unset($args['key']); /* Set custom_data */ if (isset($params['custom_data'])) { self::validate_parameter($params['custom_data'], 'custom_data', 'array'); $args = array_merge($args, $params['custom_data']); } /* Set datetime */ if (!isset($args['cta_id'])) { $args['datetime'] = current_time('mysql'); } /* get tracked link */ $tracked_link = self::analytics_get_tracking_code($args); return array('url' => $tracked_link); }
/** * Loop through cta varaition html and create masked links * @param HTML $varaition_html html of variation being processed * @param ARRAY $selected_cta dataset of parent call to action * @param INT $vid id of variation being processed */ public static function prepare_tracked_links($variation_html, $selected_cta, $vid) { $doc = new DOMDocument(); @$doc->loadHTML($variation_html); foreach ($doc->getElementsByTagName('a') as $anchor) { /* skip links with do-not-track in class */ $class = $anchor->getAttribute('class'); if (strstr($class, 'do-not-track')) { continue; } $href = $anchor->getAttribute('href'); $link = Inbound_API::analytics_track_links(array('cta_id' => $selected_cta['id'], 'id' => isset($_COOKIE['wp_lead_id']) ? $_COOKIE['wp_lead_id'] : null, 'vid' => $vid, 'url' => $href, 'tracking_id' => __(sprintf('Call to Action Click (cta_id:%s) (vid:%s)', $selected_cta['id'], $vid), 'cta'))); $variation_html = str_replace($href, $link['url'], $variation_html); } return $variation_html; }