コード例 #1
0
ファイル: TrackedEvents.php プロジェクト: Sywooch/forums
 /**
  * Renders the tracked events list.
  *
  * @param XenForo_View $view View object
  * @param string $fieldPrefix Prefix for the HTML form field name
  * @param array $preparedOption Prepared option info
  * @param boolean $canEdit True if an "edit" link should appear
  *
  * @return XenForo_Template_Abstract Template object
  */
 public static function renderOption(XenForo_View $view, $fieldPrefix, array $preparedOption, $canEdit)
 {
     $preparedOption['extraChoices'] = array();
     $selectable = DigitalPointBetterAnalytics_Helper_Api::check();
     $preparedOption['formatParams'] = array(array('name' => 'options[dpAnalyticsEvents][user_engagement]', 'label' => new XenForo_Phrase('user_engagement'), 'selected' => @$preparedOption['option_value']['user_engagement']), array('name' => 'options[dpAnalyticsEvents][content]', 'label' => new XenForo_Phrase('content_being_created'), 'selected' => @$preparedOption['option_value']['content']), array('name' => 'options[dpAnalyticsEvents][emails]', 'label' => new XenForo_Phrase('emails_sent_opened'), 'selected' => @$preparedOption['option_value']['emails'], 'unselectable' => !$selectable), array('name' => 'options[dpAnalyticsEvents][attachment]', 'label' => new XenForo_Phrase('attachment_views'), 'selected' => @$preparedOption['option_value']['attachment'], 'unselectable' => !$selectable), array('name' => 'options[dpAnalyticsEvents][links]', 'label' => new XenForo_Phrase('clicks_on_external_links'), 'selected' => @$preparedOption['option_value']['links'], 'unselectable' => !$selectable), array('name' => 'options[dpAnalyticsEvents][registration]', 'label' => new XenForo_Phrase('user_registrations'), 'selected' => @$preparedOption['option_value']['registration'], 'unselectable' => !$selectable), array('name' => 'options[dpAnalyticsEvents][moderator]', 'label' => new XenForo_Phrase('moderator_actions'), 'selected' => @$preparedOption['option_value']['moderator'], 'unselectable' => !$selectable), array('name' => 'options[dpAnalyticsEvents][report]', 'label' => new XenForo_Phrase('reports'), 'selected' => @$preparedOption['option_value']['report'], 'unselectable' => !$selectable), array('name' => 'options[dpAnalyticsEvents][warning]', 'label' => new XenForo_Phrase('warnings'), 'selected' => @$preparedOption['option_value']['warning'], 'unselectable' => !$selectable), array('name' => 'options[dpAnalyticsEvents][ajax_requests]', 'label' => new XenForo_Phrase('ajax_requests'), 'selected' => @$preparedOption['option_value']['ajax_requests']), array('name' => 'options[dpAnalyticsEvents][ajax_error]', 'label' => new XenForo_Phrase('js_errors'), 'selected' => @$preparedOption['option_value']['ajax_error'], 'unselectable' => !$selectable), array('name' => 'options[dpAnalyticsEvents][js_error]', 'label' => new XenForo_Phrase('ajax_errors'), 'selected' => @$preparedOption['option_value']['js_error'], 'unselectable' => !$selectable));
     $preparedOption['explain'] = !$selectable ? '<style> .unselectable{opacity:0.5} </style>' . new XenForo_Phrase('some_options_not_available_for_unlicensed') : '';
     return XenForo_ViewAdmin_Helper_Option::renderOptionTemplateInternal('option_list_option_checkbox', $view, $fieldPrefix, $preparedOption, $canEdit);
 }
コード例 #2
0
ファイル: TrackBlocked.php プロジェクト: Sywooch/forums
 /**
  * Renders the radio buttons for the track users with blocking enabled.
  *
  * @param XenForo_View $view View object
  * @param string $fieldPrefix Prefix for the HTML form field name
  * @param array $preparedOption Prepared option info
  * @param boolean $canEdit True if an "edit" link should appear
  *
  * @return XenForo_Template_Abstract Template object
  */
 public static function renderOption(XenForo_View $view, $fieldPrefix, array $preparedOption, $canEdit)
 {
     $preparedOption['extraChoices'] = array();
     $selectable = DigitalPointBetterAnalytics_Helper_Api::check();
     $preparedOption['formatParams'] = array(array('name' => 'options[dpAnalyticsTrackBlocked]', 'value' => 'never', 'label' => new XenForo_Phrase('never'), 'selected' => $preparedOption['option_value'] == 'never', 'unselectable' => false), array('name' => 'options[dpAnalyticsTrackBlocked]', 'value' => 'logged_in', 'label' => new XenForo_Phrase('only_users_logged_in'), 'selected' => $preparedOption['option_value'] == 'logged_in', 'unselectable' => !$selectable), array('name' => 'options[dpAnalyticsTrackBlocked]', 'value' => 'guests', 'label' => new XenForo_Phrase('guests'), 'selected' => $preparedOption['option_value'] == 'guests', 'unselectable' => !$selectable), array('name' => 'options[dpAnalyticsTrackBlocked]', 'value' => 'everyone', 'label' => new XenForo_Phrase('everyone'), 'selected' => $preparedOption['option_value'] == 'everyone', 'unselectable' => !$selectable));
     $preparedOption['explain'] = (!$selectable ? '<style> .unselectable{opacity:0.5} </style>' . new XenForo_Phrase('some_options_not_available_for_unlicensed') . '<br /><br />' : '') . $preparedOption['explain'];
     return XenForo_ViewAdmin_Helper_Option::renderOptionTemplateInternal('option_list_option_radio', $view, $fieldPrefix, $preparedOption, $canEdit);
 }
コード例 #3
0
ファイル: Member.php プロジェクト: Sywooch/forums
 public function actionAnalytics()
 {
     if (!$this->_canViewAnalyticsTab()) {
         return $this->responseNoPermission();
     }
     $userId = $this->_input->filterSingle('user_id', XenForo_Input::UINT);
     $userFetchOptions = array('join' => XenForo_Model_User::FETCH_LAST_ACTIVITY | XenForo_Model_User::FETCH_USER_PERMISSIONS);
     $user = $this->getHelper('UserProfile')->assertUserProfileValidAndViewable($userId, $userFetchOptions);
     $analyticsModel = $this->_getAnalyticsModel();
     $duplicates = $analyticsModel->findUsersSharingComputer(@$user['customFields']['analytics_cid'], $userId);
     $reportData = array();
     $options = XenForo_Application::getOptions();
     if ($options->dpAnalyticsCredentials['client_id'] && $options->dpAnalyticsCredentials['client_secret'] && $options->dpAnalyticsTokens) {
         if (DigitalPointBetterAnalytics_Helper_Api::check() || $user['user_id'] <= 100) {
             $reportData = $analyticsModel->getMemberReportData($userId);
         } else {
             $reportData = false;
         }
     }
     return $this->responseView('DigitalPointBetterAnalytics_ViewPublic_Member_Analytics', 'member_analytics', array('user' => $user, 'users_sharing' => $duplicates, 'report_data' => $reportData, 'canViewRevenue' => $this->_canViewAnalyticsRevenue(), 'userBlocksAnalytics' => substr(@$user['customFields']['analytics_cid'], 0, 3) == 'DP.'));
 }
コード例 #4
0
ファイル: dashboard.php プロジェクト: Vatia13/tofido
<?php

wp_enqueue_script('jsapi', 'https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221.1%22%2C%22packages%22%3A%5B%22corechart%22%2C%22geochart%22%2C%22table%22%5D%7D%5D%7D', array(), null);
wp_enqueue_script('better_analytics_admin_js', BETTER_ANALYTICS_PLUGIN_URL . 'assets/digitalpoint/js/admin.js', array(), BETTER_ANALYTICS_VERSION);
wp_enqueue_style('better_analytics_admin_css', BETTER_ANALYTICS_PLUGIN_URL . 'assets/digitalpoint/css/admin.css', array(), BETTER_ANALYTICS_VERSION);
$betterAnalyticsOptions = get_option('better_analytics');
DigitalPointBetterAnalytics_Helper_Api::check();
if (!DigitalPointBetterAnalytics_Base_Public::getInstance()->getTokens() || !$betterAnalyticsOptions['api']['profile']) {
    printf(esc_html__('%1$sSet up API access%2$s to utilize Better Analytics charts.', 'better-analytics'), '<a href="' . esc_url(menu_page_url('better-analytics', false) . '#top#api') . '">', '</a>');
} else {
    $betterAnalyticsDashboardPick = get_option('ba_dashboard_pick');
    $dimensions = DigitalPointBetterAnalytics_ControllerAdmin_Analytics::getDimensionsForCharts();
    $metrics = DigitalPointBetterAnalytics_ControllerAdmin_Analytics::getMetricsForCharts();
    if (!$betterAnalyticsDashboardPick['dimension']) {
        $betterAnalyticsDashboardPick['dimension'] = 'p:ga:date';
    }
    if (!$betterAnalyticsDashboardPick['metric']) {
        $betterAnalyticsDashboardPick['metric'] = 'ga:pageviews';
    }
    if (!$betterAnalyticsDashboardPick['days']) {
        $betterAnalyticsDashboardPick['days'] = '30';
    }
    echo '<div id="ba_history" style="display: inline; padding-right: 10px;' . ($betterAnalyticsDashboardPick['realtime'] ? 'color=grey;' : '') . '">
		<select id="ba_metric"' . ($betterAnalyticsDashboardPick['realtime'] ? ' disabled="disabled"' : '') . '>';
    foreach ($metrics as $key => $name) {
        echo '<option value="' . $key . '"' . ($key == $betterAnalyticsDashboardPick['metric'] ? ' selected="selected"' : '') . '>' . htmlentities($name) . '</option>';
    }
    echo '</select>';
    echo ' &nbsp; ' . esc_html__('by', 'better-analytics') . ' &nbsp; ';
    echo '<select data-placeholder="Pick chart" id="ba_dimension" class="chosen-select"' . ($betterAnalyticsDashboardPick['realtime'] ? ' disabled="disabled"' : '') . '>';
    foreach ($dimensions as $key => $name) {
コード例 #5
0
ファイル: Public.php プロジェクト: xalgorithm/amcf-wp
 /**
  * Do something on activation?
  * @static
  */
 public static function plugin_activation()
 {
     if (version_compare($GLOBALS['wp_version'], BETTER_ANALYTICS_MINIMUM_WP_VERSION, '<')) {
         $message = sprintf(esc_html__('%1$sBetter Analytics %4$s requires WordPress %5$s or higher.%2$s%3$sPlease %6$supgrade WordPress%7$s to a current version.', 'better-analytics'), '<strong>', '</strong>', '<br />', BETTER_ANALYTICS_VERSION, BETTER_ANALYTICS_MINIMUM_WP_VERSION, '<a href="' . esc_url('https://codex.wordpress.org/Upgrading_WordPress') . '" target="_blank">', '</a>');
         self::_bailOnActivation($message);
     }
     wp_schedule_event(time(), 'minutely', 'better_analytics_cron_minutely');
     wp_schedule_event(time(), 'hourly', 'better_analytics_cron_hourly');
     if (!get_option('better_analytics')) {
         $_defaultOptions = array('property_id' => '', 'track_userid' => 1, 'events' => array('user_registration' => 1, 'create_comment' => 1, 'youtube' => 1, 'email' => 1, 'link_click' => 1, 'downloads' => 1, 'missing_images' => 1, 'error_404' => 1, 'ajax_request' => 1, 'error_js' => 1, 'error_ajax' => 1, 'error_console' => 1, 'error_youtube' => 1), 'demographic_tracking' => 1, 'force_ssl' => 1, 'source_link' => array('rss' => 1, 'email' => 1), 'roles_view_reports' => array('administrator'), 'file_extensions' => array('avi', 'dmg', 'doc', 'exe', 'gz', 'mpg', 'mp3', 'pdf', 'ppt', 'psd', 'rar', 'wmv', 'xls', 'zip'), 'track_blocked' => 'never', 'javascript' => array('location' => 'header', 'run_time' => 'ready'), 'campaign_tracking' => 'anchor', 'sample_rate' => 100, 'engagement_time' => 15);
         update_option('better_analytics', $_defaultOptions);
     }
     DigitalPointBetterAnalytics_Helper_Api::check(true);
 }
コード例 #6
0
ファイル: Analytics.php プロジェクト: Sywooch/forums
 public function actionTestSetup()
 {
     $checks['hasCache'] = XenForo_Application::getCache() ? true : false;
     if (DigitalPointBetterAnalytics_Helper_Reporting::checkAccessToken(false)) {
         $checks['profiles'] = DigitalPointBetterAnalytics_Helper_Reporting::getProfiles();
         $checks['matchingProfile'] = DigitalPointBetterAnalytics_Helper_Reporting::getProfileByPropertyId(XenForo_Application::getOptions()->googleAnalyticsWebPropertyId);
         $checks['siteSearchSetup'] = @$checks['matchingProfile']['siteSearchQueryParameters'] == 'q';
         $checks['ecommerceTracking'] = @$checks['matchingProfile']['eCommerceTracking'];
         $checks['enhancedEcommerceTracking'] = @$checks['matchingProfile']['enhancedECommerceTracking'];
         $property = DigitalPointBetterAnalytics_Helper_Reporting::getPropertyByPropertyId(@$checks['matchingProfile']['accountId'], XenForo_Application::getOptions()->googleAnalyticsWebPropertyId);
         $checks['level'] = @$property['level'];
         $checks['industryVertical'] = @$property['industryVertical'];
         $checks['dimensions'] = DigitalPointBetterAnalytics_Helper_Reporting::getDimensionsByPropertyId(@$checks['matchingProfile']['accountId'], XenForo_Application::getOptions()->googleAnalyticsWebPropertyId, array('User', 'Forum'));
     }
     $checks['licensed'] = DigitalPointBetterAnalytics_Helper_Api::check(true);
     $checks['user_dimension_set'] = XenForo_Application::getOptions()->dpBetterAnalyticsDimensionIndexUser > 0 && @$checks['dimensions']['User']['index'] == XenForo_Application::getOptions()->dpBetterAnalyticsDimensionIndexUser;
     $checks['forum_dimension_set'] = XenForo_Application::getOptions()->dpBetterAnalyticsDimentionIndex > 0 && @$checks['dimensions']['Forum']['index'] == XenForo_Application::getOptions()->dpBetterAnalyticsDimentionIndex;
     $checks['hasCurl'] = function_exists('curl_multi_init');
     return $this->responseView('DigitalPointBetterAnalytics_ViewAdmin_Tools_CheckAnalytics', 'tools_test_analytics', array('checks' => $checks));
 }
コード例 #7
0
ファイル: Analytics.php プロジェクト: Vatia13/tofido
 public function actionAreacharts()
 {
     if (!$this->_assertLinkedAccount()) {
         return;
     }
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         // sanitize
         $_POST['dimension'] = preg_replace('#[^a-z0-9]#i', '', @$_POST['dimension']);
         $_POST['scope'] = preg_replace('#[^a-z0-9]#i', '', @$_POST['scope']);
         $_POST['time_frame'] = absint(@$_POST['time_frame']);
         $_POST['minimum'] = absint(@$_POST['minimum']);
         $_POST['chart_type'] = preg_replace('#[^a-z]#i', '', @$_POST['chart_type']);
         if (!$_POST['chart_type']) {
             $_POST['chart_type'] = false;
         }
         if (empty($_POST['page_path'])) {
             $_POST['page_path'] = false;
         }
         if (!$_POST['time_frame']) {
             wp_send_json(array('error' => __('Invalid number of days.', 'better-analytics')));
         } elseif (!$_POST['dimension']) {
             wp_send_json(array('error' => __('Invalid dimension.', 'better-analytics')));
         } elseif (!DigitalPointBetterAnalytics_Helper_Api::check()) {
             if (array_search($_POST['dimension'], array('browser', 'operatingSystem', 'source', 'medium')) === false) {
                 wp_send_json(array('error' => sprintf(__('Not all dimensions are available for unlicensed copies of the Better Analytics plugin.%1$s%2$sYou can license a copy over here.%3$s%1$sIf this is a valid license, make sure the purchaser of the add-on has verified ownership of this domain %4$sover here%3$s.', 'better-analytics'), '<br /><br />', '<a href="' . esc_url(BETTER_ANALYTICS_PRO_PRODUCT_URL . '#utm_source=admin_reports_ajax&utm_medium=wordpress&utm_campaign=plugin') . '" target="_blank">', '</a>', '<a href="' . esc_url('https://forums.digitalpoint.com/marketplace/domain-verification#utm_source=admin_reports_ajax&utm_medium=wordpress&utm_campaign=plugin') . '" target="_blank">')));
             }
         }
         $dateStart = date("Y-m-d", max(1104580800, time() - 86400 * ($_POST['time_frame'] + 1)));
         $dateEnd = date("Y-m-d", time() - 86400);
         switch ($_POST['scope']) {
             case 'month':
                 $scope = 'yearMonth';
                 break;
             case 'year':
                 $scope = 'year';
                 break;
             default:
                 $scope = 'date';
         }
         $originalDimension = $_POST['dimension'];
         if ($_POST['dimension'] == 'searchNotProvided') {
             $extraFilter = ';ga:medium==organic;ga:keyword==(not provided)';
             $_POST['dimension'] = 'keyword';
         } elseif ($_POST['dimension'] == 'oraganicSearchMarketshare') {
             $extraFilter = ';ga:medium==organic';
             $_POST['dimension'] = 'source,ga:medium';
         } elseif ($_POST['dimension'] == 'mobileOperatingSystem') {
             $extraFilter = ';ga:isMobile==Yes';
             $_POST['dimension'] = 'operatingSystem';
         } else {
             $extraFilter = '';
         }
         if ($_POST['page_path']) {
             $extraFilter .= ';ga:pagePath==' . $_POST['page_path'];
         }
         $cacheKey = DigitalPointBetterAnalytics_Helper_Reporting::getInstance()->getData($dateStart, $dateEnd, 'ga:sessions', 'ga:' . $scope . ',ga:' . $_POST['dimension'], 'ga:' . $scope . ',-ga:sessions', 'ga:sessions>' . $_POST['minimum'] . $extraFilter);
         if ($originalDimension == 'searchNotProvided') {
             $cacheKey2 = DigitalPointBetterAnalytics_Helper_Reporting::getInstance()->getData($dateStart, $dateEnd, 'ga:sessions', 'ga:' . $scope, 'ga:' . $scope . ',-ga:sessions', 'ga:sessions>' . $_POST['minimum'] . ';ga:medium==organic');
         }
         $results = DigitalPointBetterAnalytics_Helper_Reporting::getInstance()->getResults($cacheKey);
         if ($originalDimension == 'searchNotProvided') {
             $resultTotal = DigitalPointBetterAnalytics_Helper_Reporting::getInstance()->getResults($cacheKey2);
             $totalNotProvided = $consolidated = array();
             if (!empty($results['rows'])) {
                 foreach ($results['rows'] as $row) {
                     if ($row[1] == '(not provided)') {
                         $totalNotProvided[$row[0]] = $row[2];
                     }
                 }
                 foreach ($resultTotal['rows'] as $row) {
                     $consolidated[] = array_merge(array($row[0]), array(__('Keywords Provided', 'better-analytics'), $row[1] - @$totalNotProvided[$row[0]]));
                     $consolidated[] = array_merge(array($row[0]), array(__('Keywords Not Provided', 'better-analytics'), @$totalNotProvided[$row[0]] + 0));
                 }
                 $results['rows'] = $consolidated;
             }
         } elseif ($originalDimension == 'oraganicSearchMarketshare') {
             if (!empty($results['rows'])) {
                 foreach ($results['rows'] as &$row) {
                     $row[2] = $row[3];
                     $row[1] = strlen($row[1]) > 3 ? ucwords($row[1]) : strtoupper($row[1]);
                     unset($row[3]);
                 }
             }
         }
         $resultsOrdered = $resultsOutput = $allLabels = array();
         if (!empty($results['rows'])) {
             foreach ($results['rows'] as $row) {
                 $allLabels[$row[1]] = null;
                 $resultsOrdered[$row[0]][$row[1]] = intval($row[2]);
             }
             ksort($allLabels, SORT_STRING);
             foreach ($resultsOrdered as &$labels) {
                 $labels = array_merge($labels, array_diff_key($allLabels, $labels));
                 ksort($labels, SORT_STRING);
             }
             $resultsOutput = array(array_merge(array('Date'), array_keys($allLabels)));
             foreach ($resultsOutput[0] as &$item) {
                 $item = (string) $item;
             }
             foreach ($resultsOrdered as $date => $values) {
                 $resultsOutput[] = array_merge(array($date), array_values($values));
             }
             $title = '';
             $dimensions = DigitalPointBetterAnalytics_Model_Reporting::getDimensions();
             foreach ($dimensions as $group) {
                 foreach ($group as $key => $value) {
                     if ($originalDimension == $key) {
                         $title = $value;
                         break;
                     }
                 }
             }
             wp_send_json(array('chart_data' => $resultsOutput, 'chart_type' => $_POST['chart_type'], 'title' => sprintf('%1$s %2$s', __('History for', 'better-analytics'), esc_html__($title))));
         }
         wp_send_json(array('error' => __('No data for the criteria given', 'better-analytics')));
     }
     $this->_view('reports/area_charts', array('dimensions' => DigitalPointBetterAnalytics_Model_Reporting::getDimensions()));
 }
コード例 #8
0
ファイル: test.php プロジェクト: aaghran/aaghran.com
$hasAccounts = true;
$dimensions = array('Categories', 'Author', 'Tags', 'Year', 'Role', 'User');
$reportingClass = DigitalPointBetterAnalytics_Helper_Reporting::getInstance();
if ($reportingClass->checkAccessToken(false)) {
    $hasTokens = true;
    $checks['profiles'] = $reportingClass->getProfiles();
    $checks['matchingProfile'] = $reportingClass->getProfileByProfileId($betterAnalyticsOptions['api']['profile']);
    $checks['siteSearchSetup'] = @$checks['matchingProfile']['siteSearchQueryParameters'] == 's';
    $checks['ecommerceTracking'] = @$checks['matchingProfile']['eCommerceTracking'];
    $checks['enhancedEcommerceTracking'] = @$checks['matchingProfile']['enhancedECommerceTracking'];
    $property = $reportingClass->getPropertyByPropertyId(@$checks['matchingProfile']['accountId'], $betterAnalyticsOptions['property_id']);
    $checks['level'] = @$property['level'];
    $checks['industryVertical'] = @$property['industryVertical'];
    $checks['dimensions'] = $reportingClass->getDimensionsByPropertyId(@$checks['matchingProfile']['accountId'], $betterAnalyticsOptions['property_id'], $dimensions);
}
$checks['licensed'] = DigitalPointBetterAnalytics_Helper_Api::check(true);
if (@$_REQUEST['action'] == 'config') {
    if (!$hasTokens) {
        esc_html_e('You need to first link a Google Analytics account to auto-configure it.', 'better-analytics');
    } elseif (empty($_REQUEST['vertical'])) {
        wp_enqueue_script('chosen_js', BETTER_ANALYTICS_PLUGIN_URL . 'assets/chosen/chosen.jquery.min.js', array(), BETTER_ANALYTICS_VERSION);
        wp_enqueue_style('chosen_css', BETTER_ANALYTICS_PLUGIN_URL . 'assets/chosen/chosen.min.css', array(), BETTER_ANALYTICS_VERSION);
        wp_enqueue_script('better-analytics_admin_js', BETTER_ANALYTICS_PLUGIN_URL . 'assets/digitalpoint/js/admin.js', array(), BETTER_ANALYTICS_VERSION);
        $verticals = $reportingClass->getIndustryVerticals();
        if (!$checks['matchingProfile']) {
            if ($accounts = $reportingClass->getAccounts()) {
                $accounts = DigitalPointBetterAnalytics_Model_Reporting::parseAccounts($accounts, true);
            }
            if (!$accounts) {
                $hasAccounts = false;
            }