コード例 #1
0
 /**
  * Fetch object based on array of properties.
  *
  * @param array $params
  *   (reference ) an assoc array of name/value pairs.
  * @param array $defaults
  *   (reference ) an assoc array to hold the flattened values.
  *
  * @return CRM_Core_BAO_WebTracking
  */
 public static function retrieve(&$params, &$defaults)
 {
     $webtracking = new CRM_WebTracking_BAO_WebTracking();
     $webtracking->copyValues($params);
     if ($webtracking->find(TRUE)) {
         CRM_Core_DAO::storeValues($webtracking, $defaults);
         return $webtracking;
     }
     return NULL;
 }
コード例 #2
0
 /**
  * Process the form submission.
  *
  * @return void
  */
 public function postProcess()
 {
     // TODO:: is this required?
     $params = $this->controller->exportValues($this->_name);
     $existParams['page_id'] = $this->_id;
     $existParams['page_category'] = "civicrm_event";
     $existingEnrty = array();
     CRM_WebTracking_BAO_WebTracking::retrieve($existParams, $existingEnrty);
     // Setting up the params array with the values obtained from the form
     if (!empty($existingEnrty)) {
         $params['id'] = $existingEnrty['id'];
     }
     $params['page_id'] = $this->_id;
     $params['page_category'] = "civicrm_event";
     $params['enable_tracking'] = CRM_Utils_Array::value('enable_tracking', $params, FALSE);
     $params['tracking_id'] = CRM_Utils_Array::value('tracking_id', $params, NULL);
     $params['ga_event_tracking'] = CRM_Utils_Array::value('ga_event_tracking', $params, FALSE);
     $params['track_info'] = CRM_Utils_Array::value('track_info', $params, FALSE);
     $params['track_register'] = CRM_Utils_Array::value('track_register', $params, FALSE);
     $params['track_confirm_register'] = CRM_Utils_Array::value('track_confirm_register', $params, FALSE);
     $params['track_thank_you'] = CRM_Utils_Array::value('track_thank_you', $params, FALSE);
     $params['track_price_change'] = CRM_Utils_Array::value('track_price_change', $params, FALSE);
     $params['track_ecommerce'] = CRM_Utils_Array::value('track_ecommerce', $params, FALSE);
     $params['is_experiment'] = CRM_Utils_Array::value('is_experiment', $params, FALSE);
     $params['experiment_id'] = CRM_Utils_Array::value('experiment_id', $params, NULL);
     // Updating the database with the new entry
     $event = CRM_WebTracking_BAO_WebTracking::add($params);
     parent::endPostProcess();
 }
コード例 #3
0
/**
* This hook is invoked when the 'confirm register' and 'thank you' form is rendered
* Based on the web tracking parameters it invokes certain javascript/jquery functions which talk to google analytics
*/
function webtracking_civicrm_buildForm($formName, &$form)
{
    $contribFormNames = array('CRM_Contribute_Form_Contribution_Main', 'CRM_Contribute_Form_Contribution_ThankYou', 'CRM_Contribute_Form_Contribution_Confirm');
    $eventFormNames = array('CRM_Event_Form_Registration_Register', 'CRM_Event_Form_Registration_ThankYou', 'CRM_Event_Form_Registration_Confirm');
    $category = 'None';
    if (in_array($formName, $eventFormNames)) {
        $category = 'Event';
    } else {
        if (in_array($formName, $contribFormNames)) {
            $category = 'Contribution';
        }
    }
    if ($category == 'Event') {
        $trackingParams = array('page_id' => $form->_eventId, 'page_category' => "civicrm_event");
        CRM_WebTracking_BAO_WebTracking::retrieve($trackingParams, $trackingValues);
        if ($trackingValues['enable_tracking'] == 1) {
            // General script for web tracking
            CRM_Core_Resources::singleton()->addVars('WebTracking', array('tracking_id' => $trackingValues['tracking_id']));
            CRM_Core_Resources::singleton()->addScriptFile('org.civicrm.webtracking', 'js/WebTracking.js', 10, 'html-header');
            // Script for event tracking
            CRM_Core_Resources::singleton()->addScriptFile('org.civicrm.webtracking', 'js/EventTracking.js');
        } else {
            return;
        }
        if ($formName == 'CRM_Event_Form_Registration_Register' && $trackingValues['ga_event_tracking'] == 1) {
            if ($trackingValues['track_register'] == 1) {
                CRM_Core_Resources::singleton()->addScript('trackViewRegistration();');
            }
            if ($form->_values['event']['is_monetary'] == 1 && $trackingValues['track_price_change'] == 1) {
                CRM_Core_Resources::singleton()->addScript('trackPriceChange();');
            }
        } else {
            if ($formName == 'CRM_Event_Form_Registration_ThankYou') {
                if ($trackingValues['track_ecommerce'] == 1) {
                    CRM_Core_Resources::singleton()->addVars('WebTracking', array('trnx_id' => $form->_trxnId, 'totalAmount' => $form->_totalAmount));
                    // Fetching the source from the session and adding it as a variable.
                    $session = CRM_Core_Session::singleton();
                    CRM_Core_Resources::singleton()->addVars('WebTracking', array('utm_source' => $session->get('utm_source')));
                    if ($form->_trxnId && $trackingValues['ga_event_tracking'] == 1) {
                        CRM_Core_Resources::singleton()->addScript('trackEcommerce();');
                    }
                }
                if ($trackingValues['track_thank_you'] == 1 && $trackingValues['ga_event_tracking'] == 1) {
                    CRM_Core_Resources::singleton()->addScript("ga('send', 'event', 'Thank You Page', 'Viewed')");
                }
            } else {
                if ($formName == 'CRM_Event_Form_Registration_Confirm') {
                    if ($trackingValues['track_confirm_register'] == 1) {
                        CRM_Core_Resources::singleton()->addScript("ga('send', 'event', 'Confirmation Page', 'Viewed')");
                    }
                }
            }
        }
    } else {
        if ($category == 'Contribution') {
            $trackingParams = array('page_id' => $form->_id, 'page_category' => "civicrm_contribution");
            CRM_WebTracking_BAO_WebTracking::retrieve($trackingParams, $trackingValues);
            if ($trackingValues['enable_tracking'] == 1) {
                // General script for web tracking
                CRM_Core_Resources::singleton()->addVars('WebTracking', array('tracking_id' => $trackingValues['tracking_id']));
                CRM_Core_Resources::singleton()->addScriptFile('org.civicrm.webtracking', 'js/WebTracking.js', 10, 'html-header');
                $form->assign('enable_tracking', 1);
                if ($formName == 'CRM_Contribute_Form_Contribution_Main') {
                    if ($trackingValues['is_experiment'] == 1) {
                        // Script for the experiment
                        CRM_Core_Resources::singleton()->addVars('WebTracking', array('experiment_id' => $trackingValues['experiment_id']));
                        CRM_Core_Resources::singleton()->addScriptFile('org.civicrm.webtracking', 'js/Experiment.js', 11, 'html-header');
                        CRM_Core_Resources::singleton()->addScript("utmx('url','A/B');", 12, 'html-header');
                        CRM_Core_Resources::singleton()->addScript("ga('send', 'pageview');", 13, 'html-header');
                    } else {
                        CRM_Core_Resources::singleton()->addScript("ga('send', 'pageview');", 11, 'html-header');
                        // Script for event tracking
                        CRM_Core_Resources::singleton()->addScriptFile('org.civicrm.webtracking', 'js/EventTracking.js');
                        if ($trackingValues['track_register'] == 1 && $trackingValues['ga_event_tracking'] == 1) {
                            CRM_Core_Resources::singleton()->addScript('trackViewRegistration();');
                        }
                        if ($form->_values['is_monetary'] == 1 && $trackingValues['track_price_change'] == 1 && $trackingValues['ga_event_tracking'] == 1) {
                            CRM_Core_Resources::singleton()->addScript('trackPriceChange();');
                        }
                    }
                    // Saving the utm source in the session variable if track_ecommerce is enabled
                    if ($trackingValues['track_ecommerce'] == 1) {
                        $session = CRM_Core_Session::singleton();
                        if (isset($_GET['utm_source'])) {
                            $session->set('utm_source', $_GET['utm_source']);
                        } else {
                            $session->set('utm_source', 'general');
                        }
                    }
                } else {
                    if ($formName == 'CRM_Contribute_Form_Contribution_Confirm' && $trackingValues['ga_event_tracking'] == 1) {
                        CRM_Core_Resources::singleton()->addScriptFile('org.civicrm.webtracking', 'js/EventTracking.js');
                        if ($trackingValues['track_confirm_register'] == 1) {
                            CRM_Core_Resources::singleton()->addScript("ga('send', 'event', 'Confirmation Page', 'Viewed')");
                        }
                    } else {
                        if ($formName == 'CRM_Contribute_Form_Contribution_ThankYou') {
                            CRM_Core_Resources::singleton()->addScriptFile('org.civicrm.webtracking', 'js/EventTracking.js');
                            if ($trackingValues['track_ecommerce'] == 1) {
                                CRM_Core_Resources::singleton()->addVars('WebTracking', array('trnx_id' => rand(), 'totalAmount' => $form->_amount));
                                // Fetching the source from the session and adding it as a variable.
                                $session = CRM_Core_Session::singleton();
                                CRM_Core_Resources::singleton()->addVars('WebTracking', array('utm_source' => $session->get('utm_source')));
                                if ($trackingValues['ga_event_tracking'] == 1) {
                                    CRM_Core_Resources::singleton()->addScript('trackEcommerce();');
                                }
                            }
                            if ($trackingValues['track_thank_you'] == 1 && $trackingValues['ga_event_tracking'] == 1) {
                                CRM_Core_Resources::singleton()->addScript("ga('send', 'event', 'Thank You Page', 'Viewed')");
                            }
                        }
                    }
                }
            } else {
                $form->assign('enable_tracking', 0);
            }
        }
    }
}