コード例 #1
0
/**
 * Build a link that tracks a page view.
 * 
 * Options can include:
 * 
 *  * track_as:   an internal URI other than the link's href
 *  * is_route:   whether to send the URI through sfRouting
 *  * is_event:   track as an event rather than a page view
 *  * use_linker: use this if you're linking to another domain that tracks on
 *                the same website profile
 * 
 * @param   string $name
 * @param   string $internalUri
 * @param   array $options
 * 
 * @return  string
 */
function google_analytics_link_to($name = null, $internalUri = null, $options = array())
{
    $tracker = sfContext::getInstance()->getRequest()->getTracker();
    $options = _parse_attributes($options);
    $trackerOptions = $tracker->extractViewOptions($options);
    if ($tracker->isEnabled()) {
        $trackAs = isset($trackerOptions['track_as']) ? $trackerOptions['track_as'] : $internalUri;
        if (isset($trackerOptions['use_linker']) && $trackerOptions['use_linker']) {
            $onclick = google_analytics_linker_function($trackAs, $trackerOptions);
        } else {
            $onclick = $tracker->forgePageViewFunction($trackAs, $trackerOptions);
        }
        $options['onclick'] = isset($options['onclick']) ? $onclick . $options['onclick'] : $onclick;
        if (isset($trackerOptions['use_linker']) && $trackerOptions['use_linker']) {
            $options['onclick'] .= 'return false';
        }
    }
    return link_to($name, $internalUri, $options);
}
コード例 #2
0
} catch (sfViewException $e) {
    $t->pass('track_as exception ok');
} catch (Exception $e) {
    $t->fail('track_as exception ok');
}
$t->is(google_analytics_link_to_function('foo', 'alert("bar")', 'track_as=/baz'), '<a href="#" onclick="alert(&quot;bar&quot;); return false;">foo</a>', 'disabled ok');
$t->is(google_analytics_link_to_function('foo', 'alert("bar")', 'track_as=/baz is_event=on'), '<a href="#" onclick="alert(&quot;bar&quot;); return false;">foo</a>', 'disabled event ok');
$urchin->setEnabled(true);
$t->is(google_analytics_link_to_function('foo', 'alert("bar")', 'track_as=/baz'), '<a href="#" onclick="urchinTracker(&quot;\\/baz&quot;); alert(&quot;bar&quot;); return false;">foo</a>', 'enabled ok');
$t->is(google_analytics_link_to_function('foo', 'alert("bar")', 'track_as=/baz is_event=on'), '<a href="#" onclick="urchinTracker(&quot;\\/baz&quot;); alert(&quot;bar&quot;); return false;">foo</a>', 'enabled event ok');
$t->diag('urchin: link_to_remote');
$urchin->setEnabled(false);
$t->is(google_analytics_link_to_remote('foo', 'url=@homepage track_as=/bar'), '<a href="#" onclick="new Ajax.Request(\'/\', {asynchronous:true, evalScripts:false}); return false;">foo</a>', 'disabled ok');
$t->is(google_analytics_link_to_remote('foo', 'url=@homepage track_as=@homepage is_route=on'), '<a href="#" onclick="new Ajax.Request(\'/\', {asynchronous:true, evalScripts:false}); return false;">foo</a>', 'disabled event ok');
$urchin->setEnabled(true);
$t->is(google_analytics_link_to_remote('foo', 'url=@homepage track_as=@homepage is_route=on'), '<a href="#" onclick="urchinTracker(&quot;\\/&quot;); new Ajax.Request(\'/\', {asynchronous:true, evalScripts:false}); return false;">foo</a>', 'enabled ok');
$t->is(google_analytics_link_to_remote('foo', 'url=@homepage track_as=/bar'), '<a href="#" onclick="urchinTracker(&quot;\\/bar&quot;); new Ajax.Request(\'/\', {asynchronous:true, evalScripts:false}); return false;">foo</a>', 'enabled event ok');
$t->diag('urchin: linker');
$urchin->setEnabled(false);
$t->ok(is_null(google_analytics_linker_function('http://www.google.com')), 'disabled ok');
$urchin->setEnabled(true);
$urchin->setDomainName(false);
$urchin->setLinkerPolicy(true);
$t->is(google_analytics_linker_function('http://www.google.com'), '__utmLinker("http:\\/\\/www.google.com");', 'enabled ok');
$t->diag('urchin: post linker');
$urchin->setEnabled(false);
$t->ok(is_null(google_analytics_post_linker_function()), 'disabled ok');
$t->ok(is_null(google_analytics_post_linker_function('document.getElementById("myform")')), 'custom form disabled ok');
$urchin->setEnabled(true);
$t->is(google_analytics_post_linker_function(), '__utmLinkPost(this);', 'enabled ok');
$t->is(google_analytics_post_linker_function('document.getElementById("myform")'), '__utmLinkPost(document.getElementById("myform"));', 'custom form enabled ok');