Minion_Task_Report_GoogleAnalytics   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 6
lcom 0
cbo 1
dl 0
loc 57
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A build_validation() 0 10 1
B execute() 0 30 5
1
<?php defined('SYSPATH') OR die('No direct script access.');
2
3
/**
4
 * Get a report for googleanalytics events
5
 *
6
 * @param string metrics the name of the metrics to get (e.g. ga:visits)
7
 * @param string start_date the starting date, any strtotime format, defaults to yesterday
8
 * @param string end_date the end of the range date, any strtotime format, defaults to today
9
 * @param string sort the sorting direction (e.g. -ga:visits)
10
 * @param integer max_results the maximum results to return
11
 * @param integer start_index starting index (pagination)
12
 * @param string dimensions the dimensions (y column)
13
 * @param string filters filters
14
 * @param string segment segment
15
 *
16
 */
17
class Minion_Task_Report_GoogleAnalytics extends Minion_Task
18
{
19
	protected $_config = array(
20
		'metrics' => FALSE,
21
		'start_date' => 'yesterday',
22
		'end_date' => 'today',
23
		'sort' => FALSE,
24
		'max_results' => FALSE,
25
		'dimensions' => FALSE,
26
		'filters' => FALSE,
27
		'segment' => FALSE,
28
		'result' => 'total',
29
		'start_index' => FALSE,
30
	);
31
32
	public function build_validation(Validation $validation)
33
	{
34
		return parent::build_validation($validation)
35
			->rule('metrics', 'not_empty')
36
			->rule('start_date', 'strtotime')
37
			->rule('end_date', 'strtotime')
38
			->rule('start_index', 'digit')
39
			->rule('result', "in_array", array(':value', array('total', 'rows')))
40
			->rule('max_results', 'digit');
41
	}
42
43
	public function execute(array $options)
44
	{
45
		$options['start_date'] = date('Y-m-d', strtotime($options['start_date']));
46
		$options['end_date'] = date('Y-m-d', strtotime($options['end_date']));
47
48
		$result = $options['result'];
49
		unset($options['result']);
50
51
		$report = Report::factory('googleanalytics');
52
53
		$report_params = array();
54
		foreach ($options as $key => $value)
55
		{
56
			if ($value)
57
			{
58
				$report->$key($value);
59
				$report_params[] = "$key: $value";
60
			}
61
		}
62
63
		switch ($result)
64
		{
65
			case 'total':
66
				Minion_CLI::write('Total: '.$report->total().' For '.join(', ', $report_params));
67
			break;
68
			case 'rows':
69
				Minion_CLI::write('For '.join(', ', $report_params).' Rows: '.print_r($report->rows(), TRUE));
70
			break;
71
		}
72
	}
73
}
74
75