phpOpenTracker/phpOpenTracker/API/plugins access_statistics.php,1.7,1.8 clickpath_analysis.php,1.46,1.47 plot_access_statistics.php,1.20,1.21 plot_top.php,1.17,1.18 returning_visitors.php,1.35,1.36 top.php,1.50,1.51 visitors_online.php,1.24,1.25
Sebastian Bergmann <[email protected]>
| Newsgroups | gmane.comp.web.phpopentracker.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/phpopencounter/phpOpenTracker/phpOpenTracker/API/plugins
In directory sc8-pr-cvs1:/tmp/cvs-serv16743/phpOpenTracker/API/plugins
Modified Files:
access_statistics.php clickpath_analysis.php
plot_access_statistics.php plot_top.php returning_visitors.php
top.php visitors_online.php
Log Message:
HEAD is 2.0.0-dev now.
Index: access_statistics.php
===================================================================
RCS file: /cvsroot/phpopencounter/phpOpenTracker/phpOpenTracker/API/plugins/access_statistics.php,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** access_statistics.php 19 Sep 2003 07:17:26 -0000 1.7
--- access_statistics.php 22 Nov 2003 08:47:43 -0000 1.8
***************
*** 22,210 ****
* @since phpOpenTracker 1.2.0
*/
! class phpOpenTracker_API_access_statistics extends phpOpenTracker_API_Plugin {
! /**
! * API Calls
! *
! * @var array $apiCalls
! */
! var $apiCalls = array(
! 'page_impressions',
! 'visits'
! );
!
! /**
! * API Type
! *
! * @var string $apiType
! */
! var $apiType = 'get';
!
! /**
! * Runs the phpOpenTracker API call.
! *
! * @param array $parameters
! * @return mixed
! * @access public
! */
! function run($parameters) {
! $parameters['interval'] = isset($parameters['interval']) ? $parameters['interval'] : false;
!
! $intervalStrings = array();
! $timestamps = array();
! $values = array();
!
! switch ($parameters['result_format']) {
! case 'csv': {
! if ($parameters['api_call'] == 'page_impressions') {
! $csv = "Interval;Page Impressions\n";
! } else {
! $csv = "Interval;Visits\n";
! }
! }
! break;
!
! case 'xml':
! case 'xml_object': {
! $tree = new XML_Tree;
!
! if ($parameters['api_call'] == 'page_impressions') {
! $root = &$tree->addRoot('pageimpressions');
! } else {
! $root = &$tree->addRoot('visits');
! }
! }
! break;
!
! default: {
! $result = array();
! }
! }
!
! if ($parameters['interval'] != false) {
! $start = $parameters['start'] ? $parameters['start'] : 0;
! $end = $parameters['end'] ? $parameters['end'] : time();
!
! for ($i = $parameters['start']; $i < $parameters['end']; $i += $parameters['interval']) {
! $correct = ((mktime(0, 0, 0, date('m', $i), date('d', $i) + 1, date('Y', $i))
! - mktime(0, 0, 0, date('m', $i), date('d', $i), date('Y', $i)))
! * ($parameters['interval'] / 86400))
! - $parameters['interval'];
!
! $intervalStrings[] = sprintf(
! '%s - %s',
!
! date('d-m-Y', $i),
! date('d-m-Y', $i + $parameters['interval'] + $correct)
! );
!
! $values[] = phpOpenTracker::get(
! array(
! 'client_id' => $parameters['client_id'],
! 'api_call' => $parameters['api_call'],
! 'start' => $i,
! 'end' => $i + $parameters['interval'] + $correct,
! 'constraints' => $parameters['constraints']
! )
! );
!
! $timestamps[] = $i;
!
! $i += $correct;
! }
! } else {
! $this->db->query(
! sprintf(
! "SELECT %s AS result
! FROM %s accesslog,
! %s visitors
! WHERE visitors.client_id = '%d'
! AND visitors.accesslog_id = accesslog.accesslog_id
! %s
! %s",
!
! ($parameters['api_call'] == 'page_impressions') ? 'COUNT(*)' : 'COUNT(DISTINCT(visitors.accesslog_id))',
! $this->config['accesslog_table'],
! $this->config['visitors_table'],
! $parameters['client_id'],
! $this->_constraint($parameters['constraints']),
! $this->_whereTimerange(
! $parameters['start'],
! $parameters['end'],
! 'accesslog'
! )
! )
! );
!
! if ($row = $this->db->fetchRow()) {
! $values = array(intval($row['result']));
! } else {
! $values = array(0);
! }
!
! if ($parameters['start'] != false &&
! $parameters['end'] != false) {
! $intervalStrings = array(
! sprintf(
! '%s - %s',
!
! date('d-m-Y', $parameters['start']),
! date('d-m-Y', $parameters['end'])
! )
! );
! } else {
! $intervalStrings = array('');
! }
! }
!
! switch ($parameters['result_format']) {
! case 'csv': {
! for ($i = 0; $i < sizeof($values); $i++) {
! $csv .= sprintf(
! "%s;%d\n",
!
! $intervalStrings[$i],
! $values[$i]
! );
! }
!
! return $csv;
! }
! break;
!
! case 'xml':
! case 'xml_object': {
! for ($i = 0; $i < sizeof($values); $i++) {
! $intervalChild = &$root->addChild('interval');
!
! $intervalChild->addChild('interval', $intervalStrings[$i]);
! $intervalChild->addChild('value', $values[$i]);
! }
!
! if ($parameters['result_format'] == 'xml') {
! return $root->get();
! } else {
! return $root;
! }
! }
! break;
!
! default: {
! if (sizeof($values) == 1) {
! return $values[0];
! } else {
! $result = array();
! for ($i = 0; $i < sizeof($values); $i++) {
! $result[] = array(
! 'timestamp' => $timestamps[$i],
! 'value' => $values[$i]
! );
! }
! }
! return $result;
! }
}
- }
}
--- 22,52 ----
* @since phpOpenTracker 1.2.0
*/
! class phpOpenTracker_API_Plugin_access_statistics extends phpOpenTracker_API_Plugin {
! /**
! * API Calls
! *
! * @var array $apiCalls
! */
! public $apiCalls = array(
! 'page_impressions',
! 'visits'
! );
! /**
! * API Type
! *
! * @var string $apiType
! */
! public $apiType = 'get';
! /**
! * Runs the phpOpenTracker API call.
! *
! * @param array $parameters
! * @return mixed
! * @access public
! */
! public function run($parameters) {
}
}
Index: plot_access_statistics.php
===================================================================
RCS file: /cvsroot/phpopencounter/phpOpenTracker/phpOpenTracker/API/plugins/plot_access_statistics.php,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** plot_access_statistics.php 19 Sep 2003 07:17:27 -0000 1.20
--- plot_access_statistics.php 22 Nov 2003 08:47:43 -0000 1.21
***************
*** 22,222 ****
* @since phpOpenTracker 1.0.0
*/
! class phpOpenTracker_API_plot_access_statistics extends phpOpenTracker_API_Plugin {
! /**
! * API Calls
! *
! * @var array $apiCalls
! */
! var $apiCalls = array('access_statistics');
!
! /**
! * API Type
! *
! * @var string $apiType
! */
! var $apiType = 'plot';
!
! /**
! * Runs the phpOpenTracker API call.
! *
! * @param array $parameters
! * @return mixed
! * @access public
! */
! function run($parameters) {
! $parameters['interval'] = isset($parameters['interval']) ? $parameters['interval'] : false;
! $parameters['month_names'] = isset($parameters['month_names']) ? $parameters['month_names'] : false;
!
! if (!$parameters['month_names']) {
! $parameters['month_names'] = array(
! 'January',
! 'February',
! 'March',
! 'April',
! 'May',
! 'June',
! 'July',
! 'August',
! 'September',
! 'October',
! 'November',
! 'December'
! );
! }
!
! $timestamp = time();
!
! $steps = array(
! 'hour' => 3600,
! 'day' => 86400,
! 'month' => 2592000,
! 'year' => 31536000
! );
!
! $starttitle = '';
! $endtitle = '';
!
! switch ($parameters['interval']) {
! case 'hour': {
! $starthour = $hour = date('H', $parameters['start']);
! $endhour = date('H', $parameters['end']);
! $starttitle .= $starthour . ':00 ';
! $endtitle .= $endhour . ':00 ';
! }
!
! case 'day': {
! $startday = $day = date('d', $parameters['start']);
! $endday = date('d', $parameters['end']);
! $starttitle .= $startday . '. ';
! $endtitle .= $endday . '. ';
! }
!
! case 'month': {
! $startmonth = $month = date('m', $parameters['start']);
! $endmonth = date('m', $parameters['end']);
! $starttitle .= $parameters['month_names'][$startmonth-1] . ' ';
! $endtitle .= $parameters['month_names'][$endmonth-1] . ' ';
! }
!
! case 'year': {
! $startyear = $year = date('Y', $parameters['start']);
! $endyear = date('Y', $parameters['end']);
! $starttitle .= $startyear;
! $endtitle .= $endyear;
! }
! }
!
! $title = $starttitle . ' - ' . $endtitle;
!
! for ($start = $parameters['start']; $start < $parameters['end']; $start += $steps[$parameters['interval']]) {
! if ($parameters['interval'] == 'month') {
! $steps['month'] = $steps['day'] * date('t', $_start);
! }
!
! $end = $start + $steps[$parameters['interval']] - 1;
!
! if ($start <= $timestamp) {
! $apiCallParameters = array(
! 'client_id' => $parameters['client_id'],
! 'start' => $start,
! 'end' => $end,
! 'constraints' => $parameters['constraints']
! );
!
! $y_pi[] = phpOpenTracker::get(
! array_merge(
! array(
! 'api_call' => 'page_impressions'
! ),
! $apiCallParameters
! )
! );
!
! $y_visits[] = phpOpenTracker::get(
! array_merge(
! array(
! 'api_call' => 'visits'
! ),
! $apiCallParameters
! )
! );
! } else {
! $y_pi[] = 0;
! $y_visits[] = 0;
! }
!
! switch ($parameters['interval']) {
! case 'hour': {
! $x_label[] = date('H', mktime($hour, 0, 0, $startmonth, $startday, $startyear)) . ':00';
! $hour++;
! }
! break;
!
! case 'day': {
! $x_label[] = date('d', mktime(0, 0, 0, $startmonth, $day, $startyear));
! $day++;
! }
! break;
!
! case 'month': {
! $x_label[] = date('m', mktime(0, 0, 0, $month, 1, $startyear));
! $month++;
! }
! break;
! case 'year': {
! $x_label[] = date('Y', mktime(0, 0, 0, 1, 1, $year));
! $year++;
! }
! break;
! }
! }
! if ($parameters['interval'] == 'hour') {
! $angle = 50;
! $xasisFontSize = $parameters['font_size'] - 2;
! } else {
! $angle = 0;
! $xasisFontSize = $parameters['font_size'];
}
-
- $graph = new Graph($parameters['width'], $parameters['height'], 'auto');
-
- $graph->img->SetMargin(40, 40, 20, 40);
- $graph->SetScale('textlin');
- $graph->SetY2Scale('lin');
- $graph->SetShadow();
-
- $pi_plot = new LinePlot($y_pi);
- $pi_plot->SetColor($parameters['color1']);
- $pi_plot->SetLegend('Page Impressions');
- $pi_plot->SetWeight(2);
-
- $visits_plot = new LinePlot($y_visits);
- $visits_plot->SetColor($parameters['color2']);
- $visits_plot->SetLegend('Visits');
- $visits_plot->SetWeight(2);
-
- $graph->Add($pi_plot);
- $graph->AddY2($visits_plot);
-
- $graph->xaxis->SetTickLabels($x_label);
- $graph->xaxis->SetLabelAngle($angle);
- $graph->xaxis->SetFont($parameters['font'], $parameters['font_style'], $xasisFontSize);
- $graph->xaxis->title->SetFont($parameters['font'], $parameters['font_style'], $parameters['font_size']);
-
- $graph->yaxis->SetColor('black');
- $graph->yaxis->SetFont($parameters['font'], $parameters['font_style'], $parameters['font_size']);
- $graph->yaxis->title->SetFont($parameters['font'], $parameters['font_style'], $parameters['font_size']);
-
- $graph->y2axis->SetColor('black');
- $graph->y2axis->SetFont($parameters['font'], $parameters['font_style'], $parameters['font_size']);
- $graph->y2axis->title->SetFont($parameters['font'], $parameters['font_style'], $parameters['font_size']);
-
- $graph->title->Set($title);
- $graph->title->SetFont($parameters['font'], $parameters['font_style'], $parameters['font_size']);
-
- $graph->Stroke();
- }
}
--- 22,49 ----
* @since phpOpenTracker 1.0.0
*/
! class phpOpenTracker_API_Plugin_plot_access_statistics extends phpOpenTracker_API_Plugin {
! /**
! * API Calls
! *
! * @var array $apiCalls
! */
! public $apiCalls = array('access_statistics');
! /**
! * API Type
! *
! * @var string $apiType
! */
! public $apiType = 'plot';
! /**
! * Runs the phpOpenTracker API call.
! *
! * @param array $parameters
! * @return mixed
! * @access public
! */
! public function run($parameters) {
}
}
Index: clickpath_analysis.php
===================================================================
RCS file: /cvsroot/phpopencounter/phpOpenTracker/phpOpenTracker/API/plugins/clickpath_analysis.php,v
retrieving revision 1.46
retrieving revision 1.47
diff -C2 -d -r1.46 -r1.47
*** clickpath_analysis.php 19 Sep 2003 07:17:27 -0000 1.46
--- clickpath_analysis.php 22 Nov 2003 08:47:43 -0000 1.47
***************
*** 25,683 ****
* @since phpOpenTracker 1.0.0
*/
! class phpOpenTracker_API_clickpath_analysis extends phpOpenTracker_API_Plugin {
! /**
! * API Calls
! *
! * @var array $apiCalls
! */
! var $apiCalls = array(
! 'all_paths',
! 'average_clickpath_length',
! 'individual_clickpath',
! 'top_paths',
! 'longest_paths',
! 'shortest_paths'
! );
!
! /**
! * API Type
! *
! * @var string $apiType
! */
! var $apiType = 'get';
!
! /**
! * Runs the phpOpenTracker API call.
! *
! * @param array $parameters
! * @return mixed
! * @access public
! */
! function run($parameters) {
! switch ($parameters['api_call']) {
! case 'average_clickpath_length': {
! return $this->_averageClickpathLength($parameters);
! }
! break;
!
! case 'individual_clickpath': {
! return $this->_individualClickpath($parameters);
! }
! break;
!
! case 'all_paths':
! case 'top_paths':
! case 'longest_paths':
! case 'shortest_paths': {
! return $this->_clickpathAnalysis($parameters);
! }
! break;
! }
! }
!
! /**
! * @param array $parameters
! * @return mixed
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! function _clickpathAnalysis($parameters) {
! if (!@include_once('Image/GraphViz.php')) {
! phpOpenTracker::handleError(
! 'Could not find PEAR Image_GraphViz package, exiting.',
! E_USER_ERROR
! );
! }
!
! $parameters['document_color'] = isset($parameters['document_color']) ? $parameters['document_color'] : 'black';
! $parameters['exit_targets'] = isset($parameters['exit_targets']) ? $parameters['exit_targets'] : false;
! $parameters['exit_target_color'] = isset($parameters['exit_target_color']) ? $parameters['exit_target_color'] : 'red';
! $parameters['from'] = isset($parameters['from']) ? crc32($parameters['from']) : 0;
! $parameters['length'] = isset($parameters['length']) ? $parameters['length'] : false;
! $parameters['referers'] = isset($parameters['referers']) ? $parameters['referers'] : false;
! $parameters['referer_color'] = isset($parameters['referer_color']) ? $parameters['referer_color'] : 'green';
! $parameters['result_format'] = isset($parameters['result_format']) ? $parameters['result_format'] : 'graphviz';
! $parameters['subpaths'] = isset($parameters['subpaths']) ? $parameters['subpaths'] : false;
! $parameters['to'] = isset($parameters['to']) ? crc32($parameters['to']) : 0;
!
! if ($parameters['api_call'] == 'all_paths') {
! $parameters['subpaths'] = true;
! }
!
! $data['documents'] = array();
! $data['paths'] = array();
! $data['subpathStatistics'] = array();
!
! switch ($parameters['result_format']) {
! case 'graphviz':
! case 'graphviz_object': {
! $result = new Image_GraphViz;
!
! if ($parameters['exit_targets']) {
! $result->addCluster('exit_targets', 'Exit Targets');
! }
!
! if ($parameters['referers']) {
! $result->addCluster('referers', 'Referers');
! }
! }
! break;
!
! default: {
! $result = array();
! }
! }
!
! $accesslogID = 0;
! $visitor = -1;
!
! $this->db->query(
! sprintf(
! "SELECT accesslog.accesslog_id AS accesslog_id,
! accesslog.document_id AS document_id,
! accesslog.timestamp AS timestamp,
! documents.string AS document,
! documents.document_url AS document_url
! FROM %s accesslog,
! %s visitors,
! %s documents
! WHERE visitors.client_id = '%d'
! AND visitors.accesslog_id = accesslog.accesslog_id
! AND accesslog.document_id = documents.data_id
! %s
! %s
! ORDER BY accesslog.accesslog_id,
! accesslog.timestamp",
!
! $this->config['accesslog_table'],
! $this->config['visitors_table'],
! $this->config['documents_table'],
! $parameters['client_id'],
! $this->_constraint($parameters['constraints']),
! $this->_whereTimerange(
! $parameters['start'],
! $parameters['end'],
! 'accesslog'
! )
! )
);
! while ($row = $this->db->fetchRow()) {
! if (!isset($data['documents'][$row['document_id']])) {
! $data['documents'][$row['document_id']] = array(
! $row['document'],
! $row['document_url'],
! 'document'
! );
! }
!
! if ($accesslogID != $row['accesslog_id']) {
! $accesslogID = $row['accesslog_id'];
! $node = 0;
! $visitor++;
!
! unset($previousTimestamp);
!
! $accesslog_ids[$visitor] = $row['accesslog_id'];
! }
!
! $clickpaths[$visitor][$node]['document'] = $row['document_id'];
! $clickpaths[$visitor][$node]['time_spent'] = 1;
!
! if (isset($previousTimestamp)) {
! $clickpaths[$visitor][$node-1]['time_spent'] = $row['timestamp'] - $previousTimestamp;
! }
!
! $previousTimestamp = $row['timestamp'];
! $node++;
! }
!
! if (!isset($clickpaths)) {
! return $result;
! }
!
! $numClickpaths = sizeof($clickpaths) - 1;
!
! if ($parameters['exit_targets']) {
! for ($i = 0; $i <= $numClickpaths; $i++) {
! $this->db->query(
! sprintf(
! "SELECT accesslog.document_id AS document_id,
! accesslog.exit_target_id AS exit_target_id,
! exit_targets.string AS exit_target
! FROM %s accesslog,
! %s exit_targets
! WHERE accesslog.accesslog_id = '%d'
! AND accesslog.exit_target_id = exit_targets.data_id",
!
! $this->config['accesslog_table'],
! $this->config['exit_targets_table'],
! $accesslog_ids[$i]
! )
! );
!
! while ($row = $this->db->fetchRow()) {
! $data['documents'][$row['exit_target_id']] = array(
! $row['exit_target'],
! 'http://' . $row['exit_target'],
! 'exit_target'
! );
!
! $visitor = sizeof($clickpaths);
!
! $clickpaths[$visitor][0]['document'] = $row['document_id'];
! $clickpaths[$visitor][0]['time_spent'] = 0;
!
! $clickpaths[$visitor][1]['document'] = $row['exit_target_id'];
! $clickpaths[$visitor][1]['time_spent'] = 0;
! }
! }
! }
!
! for ($i = 0; $i < sizeof($clickpaths) - 1; $i++) {
! $pathLength = sizeof($clickpaths[$i]);
!
! if ($parameters['referers'] && $i <= $numClickpaths) {
! $this->db->query(
! sprintf(
! "SELECT referers.string AS referer,
! visitors.referer_id AS referer_id
! FROM %s visitors,
! %s referers
! WHERE visitors.accesslog_id = '%d'
! AND visitors.referer_id = referers.data_id",
!
! $this->config['visitors_table'],
! $this->config['referers_table'],
! $accesslog_ids[$i]
! )
! );
!
! if ($row = $this->db->fetchRow()) {
! $data['documents'][$row['referer_id']] = array(
! $row['referer'],
! 'http://' . $row['referer'],
! 'referer'
! );
!
! array_unshift(
! $clickpaths[$i],
! array(
! 'document' => $row['referer_id'],
! 'time_spent' => 0,
! )
! );
! }
! }
!
! if (!$parameters['subpaths']) {
! $this->_processPath(
! $data,
! $clickpaths[$i],
! $parameters['from'],
! $parameters['to'],
! $parameters['length']
! );
! } else {
! for ($j = 2; $j <= $pathLength; $j++) {
! $subpath = array_slice($clickpaths[$i], 0, $j);
! $subpathLength = sizeof($subpath);
!
! for ($k = 2; $k <= $subpathLength; $k++) {
! $this->_processPath(
! $data,
! array_slice($subpath, (0 - $k)),
! $parameters['from'],
! $parameters['to'],
! $parameters['length']
! );
! }
! }
! }
! }
!
! if (empty($data['paths'])) {
! return $result;
! }
!
! foreach ($data['subpathStatistics'] as $fromNode => $toNodes) {
! foreach ($toNodes as $toNode => $data) {
! if ($parameters['api_call'] == 'all_paths') {
! $fromColor = $parameters['document_color'];
! $fromGroup = 'default';
! $fromID = $data['documents'][$fromNode][0];
! $fromRank = 'same';
!
! $toColor = $parameters['document_color'];
! $toGroup = 'default';
! $toID = $data['documents'][$toNode][0];
! $toRank = 'same';
!
! $edgeColor = $parameters['document_color'];
!
! if ($data['documents'][$toNode][2] == 'exit_target') {
! $toColor = $parameters['exit_target_color'];
! $toGroup = 'exit_targets';
! $toID = 'exit_target_' . $toID;
! $toRank = 'sink';
!
! $edgeColor = $parameters['exit_target_color'];
! }
!
! if ($data['documents'][$fromNode][2] == 'referer') {
! $fromColor = $parameters['referer_color'];
! $fromGroup = 'referers';
! $fromID = 'referer_' . $fromID;
! $fromRank = 'source';
!
! $edgeColor = $parameters['referer_color'];
! }
!
! $result->addNode(
! $fromID,
! array(
! 'label' => $data['documents'][$fromNode][0],
! 'url' => $data['documents'][$fromNode][1],
! 'color' => $fromColor,
! 'rank' => $fromRank,
! 'shape' => 'box'
! ),
! $fromGroup
! );
!
! $result->addNode(
! $toID,
! array(
! 'label' => $data['documents'][$toNode][0],
! 'url' => $data['documents'][$toNode][1],
! 'color' => $toColor,
! 'rank' => $toRank,
! 'shape' => 'box'
! ),
! $toGroup
! );
!
! $result->addEdge(
! array(
! $fromID => $toID
! ),
! array(
! 'color' => $edgeColor,
! 'label' => $data['count']
! )
! );
! }
!
! else if (isset($data['count'])) {
! $data['subpathStatistics'][$fromNode][$toNode]['time_spent'] = floor($data['time_spent'] / $data['count']);
! }
! }
! }
!
! if ($parameters['api_call'] != 'all_paths') {
! switch ($parameters['api_call']) {
! case 'shortest_paths': {
! $field = 'length';
! $sort = SORT_ASC;
! }
! break;
!
! case 'longest_paths': {
! $field = 'length';
! $sort = SORT_DESC;
! }
! break;
!
! case 'top_paths': {
! $field = 'count';
! $sort = SORT_DESC;
! }
! break;
! }
!
! foreach($data['paths'] as $path) $tmp[] = $path[$field];
! array_multisort($tmp, $sort, $data['paths']);
!
! if ($parameters['limit'] && sizeof($data['paths']) > $parameters['limit']) {
! $data['paths'] = array_slice($data['paths'], 0, $parameters['limit']);
! }
!
! $rank = 1;
!
! foreach ($data['paths'] as $path => $statistics) {
! $documents = array();
! $documentURLs = array();
! $path = explode(':', $path);
! $pathLength = sizeof($path);
! $where = '';
!
! if ($parameters['subpaths']) {
! $subpathStatistics = array();
!
! for ($i = 0; $i < $pathLength - 1; $i++) {
! $subpathStatistics[] = array(
! 'count' => intval($data['subpathStatistics'][$path[$i]][$path[$i+1]]['count']),
! 'time_spent' => intval($data['subpathStatistics'][$path[$i]][$path[$i+1]]['time_spent'])
! );
! }
! } else {
! $subpathStatistics = false;
! }
!
! for ($i = 0; $i < $pathLength; $i++) {
! $documents[$i] = $data['documents'][$path[$i]][0];
! $documentURLs[$i] = $data['documents'][$path[$i]][1];
! }
!
! if ($parameters['result_format'] == 'array') {
! $result[] = new phpOpenTracker_Clickpath(
! $documents,
! $documentURLs,
! $subpathStatistics,
! intval($statistics['count'])
! );
! } else {
! $result->addCluster(
! $rank,
! sprintf(
! '%s. Taken by %s visitors.',
!
! $rank,
! $statistics['count']
! )
! );
!
! for ($i = 0; $i < $pathLength - 1; $i++) {
! $fromID = $rank . '_' . $documents[$i];
! $toID = $rank . '_' . $documents[$i+1];
! $result->addNode(
! $fromID,
! array(
! 'label' => $documents[$i],
! 'url' => $documentURLs[$i],
! 'color' => $parameters['document_color'],
! 'shape' => 'box'
! ),
! $rank
! );
! $result->addNode(
! $toID,
! array(
! 'label' => $documents[$i+1],
! 'url' => $documentURLs[$i+1],
! 'color' => $parameters['document_color'],
! 'shape' => 'box'
! ),
! $rank
! );
! $result->addEdge(
! array(
! $fromID => $toID
! ),
! array(
! 'color' => $parameters['document_color']
! )
! );
! }
}
-
- $rank++;
- }
- }
-
- if ($parameters['result_format'] == 'graphviz') {
- return $result->parse();
- } else {
- return $result;
}
- }
-
- /**
- * Returns the average clickpath length.
- *
- * @param array $parameters
- * @return integer
- * @access private
- * @author Sven Weih <[email protected]>
- * @since phpOpenTracker 1.3.0
- */
- function _averageClickpathLength($parameters) {
- $pageImpressionsParameters = $parameters;
- $pageImpressionsParameters['api_call'] = 'page_impressions';
! $visitsParameters = $parameters;
! $visitsParameters['api_call'] = 'visits';
!
! $pageImpressions = phpOpenTracker::get($pageImpressionsParameters);
! $visits = phpOpenTracker::get($visitsParameters);
!
! if (is_array($pageImpressions)) {
! for ($i = 0; $i < sizeof($pageImpressions); $i++) {
! $result[$i] = array(
! 'timestamp' => $pageImpressions[$i]['timestamp'],
! 'value' => ($pageImpressions[$i]['value'] / (($visits[$i]['value'] ==0 ) ? 1 : $visits[$i]['value']))
! );
! }
! } else {
! if ($visits != 0) {
! return $pageImpressions / $visits;
! } else {
! return 0;
! }
! }
!
! return $result;
! }
!
! /**
! * Returns an individual clickpath.
! *
! * @param array $parameters
! * @return mixed
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! function _individualClickpath($parameters) {
! if (!isset($parameters['accesslog_id'])) {
! return phpOpenTracker::handleError(
! 'Required parameter "accesslog_id" missing.'
! );
! }
!
! $parameters['resolve_ids'] = isset($parameters['resolve_ids']) ? $parameters['resolve_ids'] : true;
!
! if ($parameters['resolve_ids']) {
! $this->db->query(
! sprintf(
! "SELECT data_values.string AS document,
! data_values.document_url AS document_url,
! accesslog.timestamp AS timestamp
! FROM %s accesslog,
! %s data_values
! WHERE accesslog.accesslog_id = '%d'
! AND accesslog.document_id = data_values.data_id
! ORDER BY timestamp",
!
! $this->config['accesslog_table'],
! $this->config['documents_table'],
! $parameters['accesslog_id']
! )
! );
! } else {
! $this->db->query(
! sprintf(
! "SELECT accesslog.document_id AS document,
! accesslog.timestamp
! FROM %s accesslog
! WHERE accesslog.accesslog_id = '%d'
! ORDER BY timestamp",
!
! $this->config['accesslog_table'],
! $parameters['accesslog_id']
! )
! );
! }
!
! $i = 0;
!
! while ($row = $this->db->fetchRow()) {
! $documents[$i] = $row['document'];
! $documentURLs[$i] = $row['document_url'];
!
! if (isset($previousTimestamp)) {
! $timeSpent[$i-1] = $row['timestamp'] - $previousTimestamp;
! }
!
! $previousTimestamp = $row['timestamp'];
! $i++;
! }
!
! if (!isset($documents)) {
! return new phpOpenTracker_Clickpath(array());
}
! $timeSpent[sizeof($documents)-1] = 1;
!
! $clickpath = new phpOpenTracker_Clickpath(
! $documents,
! $documentURLs,
! $timeSpent
! );
!
! switch ($parameters['result_format']) {
! case 'graphviz': {
! return $clickpath->toGraph();
! }
! break;
!
! case 'graphviz_object': {
! return $clickpath->toGraph(true);
! }
! break;
!
! case 'xml': {
! return $clickpath->toXML();
! }
! break;
!
! case 'xml_object': {
! return $clickpath->toXML(true);
! }
! break;
!
! default: {
! return $clickpath;
! }
}
- }
-
- /**
- * @param array $data
- * @param string $path
- * @param integer $from
- * @param integer $to
- * @param integer $length
- * @access private
- */
- function _processPath(&$data, $path, $from, $to, $length) {
- $pathLength = sizeof($path);
-
- $first = $path[0]['document'];
- $last = $path[$pathLength - 1]['document'];
-
- if ($pathLength > 1 &&
- (( $from == false && $to == false) ||
- ( $from != false && $from == $first && $to == false) ||
- ( $from == false && $to != false && $to == $last) ||
- ( $from != false && $from == $first && $to != false && $to == $last)) &&
- ($length == false || $length == $pathLength)) {
- $id = '';
-
- for ($i = 0; $i < $pathLength; $i++) {
- $separator = empty($id) ? '' : ':';
- $id .= $separator . $path[$i]['document'];
- }
-
- if (!isset($data['paths'][$id])) {
- $data['paths'][$id]['count'] = 1;
- $data['paths'][$id]['length'] = $pathLength;
! if ($pathLength == 2) {
! $data['subpathStatistics'][$first][$last]['count'] = 1;
! $data['subpathStatistics'][$first][$last]['time_spent'] = $path[0]['time_spent'];
! }
! } else {
! $data['paths'][$id]['count']++;
!
! if ($pathLength == 2) {
! $data['subpathStatistics'][$first][$last]['count']++;
! $data['subpathStatistics'][$first][$last]['time_spent'] += $path[0]['time_spent'];
! }
! }
}
- }
}
--- 25,110 ----
* @since phpOpenTracker 1.0.0
*/
! class phpOpenTracker_API_Plugin_clickpath_analysis extends phpOpenTracker_API_Plugin {
! /**
! * API Calls
! *
! * @var array $apiCalls
! */
! public $apiCalls = array(
! 'all_paths',
! 'average_clickpath_length',
! 'individual_clickpath',
! 'top_paths',
! 'longest_paths',
! 'shortest_paths'
);
! /**
! * API Type
! *
! * @var string $apiType
! */
! public $apiType = 'get';
! /**
! * Runs the phpOpenTracker API call.
! *
! * @param array $parameters
! * @return mixed
! * @access public
! */
! public function run($parameters) {
! switch ($parameters['api_call']) {
! case 'average_clickpath_length': {
! return $this->averageClickpathLength($parameters);
! }
! break;
! case 'individual_clickpath': {
! return $this->individualClickpath($parameters);
! }
! break;
! case 'all_paths':
! case 'top_paths':
! case 'longest_paths':
! case 'shortest_paths': {
! return $this->clickpathAnalysis($parameters);
! }
! break;
}
}
! /**
! * @param array $parameters
! * @return mixed
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! private function clickpathAnalysis($parameters) {
}
! /**
! * Returns the average clickpath length.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @author Sven Weih <[email protected]>
! * @since phpOpenTracker 1.3.0
! */
! private function averageClickpathLength($parameters) {
}
! /**
! * Returns an individual clickpath.
! *
! * @param array $parameters
! * @return mixed
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! private function individualClickpath($parameters) {
}
}
Index: top.php
===================================================================
RCS file: /cvsroot/phpopencounter/phpOpenTracker/phpOpenTracker/API/plugins/top.php,v
retrieving revision 1.50
retrieving revision 1.51
diff -C2 -d -r1.50 -r1.51
*** top.php 12 Oct 2003 17:25:51 -0000 1.50
--- top.php 22 Nov 2003 08:47:43 -0000 1.51
***************
*** 22,414 ****
* @since phpOpenTracker 1.0.0
*/
! class phpOpenTracker_API_top extends phpOpenTracker_API_Plugin {
! /**
! * API Calls
! *
! * @var array $apiCalls
! */
! var $apiCalls = array('top');
!
! /**
! * API Type
! *
! * @var string $apiType
! */
! var $apiType = 'get';
!
! /**
! * Runs the phpOpenTracker API call.
! *
! * @param array $parameters
! * @return mixed
! * @access public
! */
! function run($parameters) {
! if (!isset($parameters['what'])) {
! return phpOpenTracker::handleError(
! 'Required parameter "what" missing.'
! );
! }
!
! list($constraint, $selfJoin) = $this->_constraint(
! $parameters['constraints'],
! true
! );
!
! if ($selfJoin) {
! $selfJoinConstraint = 'AND accesslog.accesslog_id = accesslog2.accesslog_id';
!
! $selfJoinTable = sprintf(
! '%s accesslog2,',
!
! $this->config['accesslog_table']
! );
! } else {
! $selfJoinConstraint = '';
! $selfJoinTable = '';
! }
!
! $timerange = $this->_whereTimerange(
! $parameters['start'],
! $parameters['end']
! );
!
! switch ($parameters['result_format']) {
! case 'csv': {
! $csv = "Rank;Item;Count;Percent\n";
! }
! break;
!
! case 'xml':
! case 'xml_object': {
! $tree = new XML_Tree;
! $root = &$tree->addRoot('top');
! }
! break;
!
! case 'separate_result_arrays': {
! $names = array();
! $values = array();
! $percent = array();
! }
! break;
!
! default: {
! $topItems = array();
! }
! }
!
! switch ($parameters['what']) {
! case 'document':
! case 'exit_target':
! case 'host':
! case 'operating_system':
! case 'referer':
! case 'user_agent':
! case 'entry_document':
! case 'exit_document': {
! $dataConstraint = '';
!
! switch ($parameters['what']) {
! case 'document': {
! $column = 'accesslog.document_id';
! $dataTable = $this->config['documents_table'];
! }
! break;
!
! case 'entry_document': {
! $column = 'accesslog.document_id';
! $dataConstraint = "AND accesslog.entry_document = '1'";
! $dataTable = $this->config['documents_table'];
! }
! break;
!
! case 'exit_document': {
! $column = 'accesslog.document_id';
! $dataConstraint = "AND accesslog.exit_target_id <> '0'";
! $dataTable = $this->config['documents_table'];
! }
! break;
!
! case 'exit_target': {
! $column = 'accesslog.exit_target_id';
! $dataConstraint = "AND accesslog.exit_target_id <> '0'";
! $dataTable = $this->config['exit_targets_table'];
! }
! break;
!
! case 'host': {
! $column = 'visitors.host_id';
! $dataTable = $this->config['hostnames_table'];
! }
! break;
!
! case 'operating_system': {
! $column = 'visitors.operating_system_id';
! $dataTable = $this->config['operating_systems_table'];
! }
! break;
!
! case 'referer': {
! $column = 'visitors.referer_id';
! $dataTable = $this->config['referers_table'];
! }
! break;
!
! case 'user_agent': {
! $column = 'visitors.user_agent_id';
! $dataTable = $this->config['user_agents_table'];
! }
! break;
! }
!
! $nestedQuery = sprintf(
! "SELECT data_table.string AS item
! FROM %s accesslog,
! %s
! %s visitors,
! %s data_table
! WHERE visitors.client_id = '%d'
! AND visitors.accesslog_id = accesslog.accesslog_id
! AND data_table.data_id = %s
! %s
! %s
! %s
! %s
! GROUP BY visitors.accesslog_id,
! data_table.string",
!
! $this->config['accesslog_table'],
! $selfJoinTable,
! $this->config['visitors_table'],
! $dataTable,
! $parameters['client_id'],
! $column,
! $selfJoinConstraint,
! $dataConstraint,
! $constraint,
! $timerange
! );
! }
! break;
!
! default: {
! $nestedQuery = sprintf(
! "SELECT add_data.data_value AS item
! FROM %s accesslog,
! %s
! %s visitors,
! %s add_data
! WHERE visitors.client_id = '%d'
! AND visitors.accesslog_id = accesslog.accesslog_id
! AND accesslog.accesslog_id = add_data.accesslog_id
! AND add_data.data_field = '%s'
! %s
! %s
! %s
! GROUP BY visitors.accesslog_id,
! add_data.data_value",
!
! $this->config['accesslog_table'],
! $selfJoinTable,
! $this->config['visitors_table'],
! $this->config['additional_data_table'],
! $parameters['client_id'],
! $parameters['what'],
! $selfJoinConstraint,
! $constraint,
! $timerange
! );
! }
! }
!
! if ($this->db->supportsNestedQueries()) {
! $queryTotalUnique = sprintf(
! 'SELECT COUNT(item) AS total_items,
! COUNT(DISTINCT(item)) AS unique_items
! FROM (%s) items',
!
! $nestedQuery
! );
!
! $queryItems = sprintf(
! 'SELECT COUNT(item) AS item_count,
! item
! FROM (%s) items
! GROUP BY item
! ORDER BY item_count %s,
! item',
!
! $nestedQuery,
! $parameters['order']
! );
!
! if ($parameters['result_format'] == 'sql') {
! return $queryItems;
! }
! } else {
! if ($this->config['db_type'] == 'mysql' ||
! $this->config['db_type'] == 'mysql_merge') {
! $queryCreateTemporaryTable = sprintf(
! 'CREATE TEMPORARY TABLE pot_temporary_table %s',
!
! $nestedQuery
! );
!
! $queryTotalUnique = sprintf(
! 'SELECT COUNT(item) AS total_items,
! COUNT(DISTINCT(item)) AS unique_items
! FROM pot_temporary_table',
!
! $nestedQuery
! );
!
! $queryItems = sprintf(
! 'SELECT COUNT(item) AS item_count,
! item
! FROM pot_temporary_table
! GROUP BY item
! ORDER BY item_count %s,
! item',
!
! $parameters['order']
! );
!
! if ($parameters['result_format'] != 'sql') {
! $dropTemporaryTable = true;
!
! $this->db->query($queryCreateTemporaryTable);
! } else {
! return $queryCreateTemporaryTable . ';' . $queryItems;
! }
! } else {
! return phpOpenTracker::handleError(
! 'You need a database system capable of nested queries.',
! E_USER_ERROR
! );
! }
! }
!
! $this->db->query($queryTotalUnique);
!
! if ($row = $this->db->fetchRow()) {
! $totalItems = intval($row['total_items']);
! $uniqueItems = intval($row['unique_items']);
! } else {
! return phpOpenTracker::handleError(
! 'Database query failed.'
! );
! }
!
! if ($totalItems > 0) {
! $this->db->query($queryItems, $parameters['limit']);
!
! $i = 0;
!
! while ($row = $this->db->fetchRow()) {
! $percentValue = doubleval(
! number_format(
! ((100 * $row['item_count']) / $totalItems),
! 2
! )
! );
!
! switch ($parameters['result_format']) {
! case 'csv': {
! $csv .= sprintf(
! "%d;%s;%d;%d\n",
!
! $i+1,
! $row['item'],
! intval($row['item_count']),
! $percentValue
! );
! }
! break;
!
! case 'xml':
! case 'xml_object': {
! $itemChild = &$root->addChild('item');
!
! $itemChild->addChild('rank', $i+1);
! $itemChild->addChild('string', $row['item']);
! $itemChild->addChild('count', intval($row['item_count']));
! $itemChild->addChild('percent', $percentValue);
!
! if (isset($row['document_url'])) {
! $itemChild->addChild('url', $row['document_url']);
! }
! }
! break;
!
! case 'separate_result_arrays': {
! $names[$i] = $row['item'];
! $values[$i] = intval($row['item_count']);
! $percent[$i] = $percentValue;
! }
! break;
!
! default: {
! $topItems[$i]['count' ] = intval($row['item_count']);
! $topItems[$i]['string' ] = $row['item'];
! $topItems[$i]['percent'] = $percentValue;
!
! if (isset($row['document_url'])) {
! $topItems[$i]['url' ] = $row['document_url'];
! }
! }
! }
!
! $i++;
! }
! }
!
! if (isset($dropTemporaryTable)) {
! $this->db->query('DROP TABLE pot_temporary_table');
! }
!
! switch ($parameters['result_format']) {
! case 'csv': {
! return $csv;
! }
! break;
!
! case 'xml':
! case 'xml_object': {
! $root->addChild('total', $totalItems);
! $root->addChild('unique', $uniqueItems);
!
! switch ($parameters['result_format']) {
! case 'xml': {
! return $root->get();
! }
! break;
!
! case 'xml_object': {
! return $root;
! }
! break;
! }
! }
! break;
! case 'separate_result_arrays': {
! return array(
! $names,
! $values,
! $percent,
! $uniqueItems
! );
! }
! break;
! default: {
! return array(
! 'top_items' => $topItems,
! 'unique_items' => $uniqueItems
! );
! }
}
- }
}
--- 22,49 ----
* @since phpOpenTracker 1.0.0
*/
! class phpOpenTracker_API_Plugin_top extends phpOpenTracker_API_Plugin {
! /**
! * API Calls
! *
! * @var array $apiCalls
! */
! public $apiCalls = array('top');
! /**
! * API Type
! *
! * @var string $apiType
! */
! public $apiType = 'get';
! /**
! * Runs the phpOpenTracker API call.
! *
! * @param array $parameters
! * @return mixed
! * @access public
! */
! public function run($parameters) {
}
}
Index: visitors_online.php
===================================================================
RCS file: /cvsroot/phpopencounter/phpOpenTracker/phpOpenTracker/API/plugins/visitors_online.php,v
retrieving revision 1.24
retrieving revision 1.25
diff -C2 -d -r1.24 -r1.25
*** visitors_online.php 22 Oct 2003 18:18:06 -0000 1.24
--- visitors_online.php 22 Nov 2003 08:47:43 -0000 1.25
***************
*** 22,291 ****
* @since phpOpenTracker 1.0.0
*/
! class phpOpenTracker_API_visitors_online extends phpOpenTracker_API_Plugin {
! /**
! * API Calls
! *
! * @var array $apiCalls
! */
! var $apiCalls = array(
! 'num_visitors_online',
! 'visitors_online'
! );
!
! /**
! * API Type
! *
! * @var string $apiType
! */
! var $apiType = 'get';
!
! /**
! * Runs the phpOpenTracker API call.
! *
! * @param array $parameters
! * @return mixed
! * @access public
! */
! function run($parameters) {
! $parameters['session_lifetime'] = isset($parameters['session_lifetime']) ? $parameters['session_lifetime'] : 3;
!
! switch ($parameters['api_call']) {
! case 'num_visitors_online': {
! return $this->_numVisitorsOnline($parameters);
! }
! break;
!
! case 'visitors_online': {
! return $this->_visitorsOnline($parameters);
! }
! break;
! }
! }
!
! /**
! * Returns the number of visitors currently online.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! function _numVisitorsOnline($parameters) {
! $this->db->query(
! sprintf(
! "SELECT COUNT(DISTINCT(accesslog.accesslog_id)) AS num_visitors_online
! FROM %s accesslog,
! %s visitors
! WHERE visitors.client_id = '%d'
! AND visitors.accesslog_id = accesslog.accesslog_id
! AND accesslog.timestamp >= '%d'
! %s",
!
! $this->config['accesslog_table'],
! $this->config['visitors_table'],
! $parameters['client_id'],
! time() - ($parameters['session_lifetime'] * 60),
! $this->_constraint($parameters['constraints'])
! )
! );
!
! if ($row = $this->db->fetchRow()) {
! return intval($row['num_visitors_online']);
! } else {
! return 0;
! }
! }
!
! /**
! * Returns information about the visitors currently online.
! *
! * @param array $parameters
! * @return mixed
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! function _visitorsOnline($parameters) {
! switch ($parameters['result_format']) {
! case 'xml':
! case 'xml_object': {
! $tree = new XML_Tree;
! $root = &$tree->addRoot('visitorsonline');
! $children = array();
! }
! break;
!
! default: {
! $result = array();
! }
! }
!
! $accesslogIDs = array();
!
! $this->db->query(
! sprintf(
! "SELECT DISTINCT(accesslog.accesslog_id) AS accesslog_id
! FROM %s accesslog,
! %s visitors
! WHERE visitors.client_id = '%d'
! AND visitors.accesslog_id = accesslog.accesslog_id
! AND accesslog.timestamp >= '%d'",
!
! $this->config['accesslog_table'],
! $this->config['visitors_table'],
! $parameters['client_id'],
! time() - ($parameters['session_lifetime'] * 60)
! )
);
! while ($row = $this->db->fetchRow()) {
! $accesslogIDs[] = $row['accesslog_id'];
! }
!
! for ($i = 0, $max = sizeof($accesslogIDs); $i < $max; $i++) {
! switch ($parameters['result_format']) {
! case 'xml':
! case 'xml_object': {
! $visitorNode = &$root->addChild('visitor');
!
! $visitorNode->addChild(
! phpOpenTracker::get(
! array(
! 'client_id' => $parameters['client_id'],
! 'api_call' => 'individual_clickpath',
! 'accesslog_id' => $accesslogIDs[$i],
! 'result_format' => 'xml_object'
! )
! )
! );
! }
! break;
!
! default: {
! $result[$i]['clickpath'] = phpOpenTracker::get(
! array(
! 'client_id' => $parameters['client_id'],
! 'api_call' => 'individual_clickpath',
! 'accesslog_id' => $accesslogIDs[$i]
! )
! );
! }
! }
!
! $this->db->query(
! sprintf(
! "SELECT MAX(timestamp) as last_access
! FROM %s
! WHERE accesslog_id = '%s'",
! $this->config['accesslog_table'],
! $accesslogIDs[$i]
! )
! );
! if ($row = $this->db->fetchRow()) {
! switch ($parameters['result_format']) {
! case 'xml':
! case 'xml_object': {
! $visitorNode->addChild('last_access', $row['last_access']);
}
break;
! default: {
! $result[$i]['last_access'] = $row['last_access'];
! }
! }
! } else {
! return phpOpenTracker::handleError(
! 'Database query failed.'
! );
! }
!
! $this->db->query(
! sprintf(
! "SELECT hosts.string AS host,
! user_agents.string AS user_agent
! FROM %s visitors,
! %s hosts,
! %s user_agents
! WHERE visitors.accesslog_id = '%d'
! AND visitors.host_id = hosts.data_id
! AND visitors.user_agent_id = user_agents.data_id",
!
! $this->config['visitors_table'],
! $this->config['hostnames_table'],
! $this->config['user_agents_table'],
! $accesslogIDs[$i]
! )
! );
!
! if ($row = $this->db->fetchRow()) {
! switch ($parameters['result_format']) {
! case 'xml':
! case 'xml_object': {
! $visitorNode->addChild('host', $row['host']);
! $visitorNode->addChild('user_agent', $row['user_agent']);
}
break;
-
- default: {
- $result[$i]['host'] = $row['host'];
- $result[$i]['user_agent'] = $row['user_agent'];
- }
- }
- } else {
- return phpOpenTracker::handleError(
- 'Database query failed.'
- );
- }
-
- $this->db->query(
- sprintf(
- "SELECT referers.string AS referer
- FROM %s visitors,
- %s referers
- WHERE visitors.accesslog_id = '%d'
- AND visitors.referer_id = referers.data_id",
-
- $this->config['visitors_table'],
- $this->config['referers_table'],
- $accesslogIDs[$i]
- )
- );
-
- if ($row = $this->db->fetchRow()) {
- $referer = $row['referer'];
- } else {
- $referer = '';
}
! switch ($parameters['result_format']) {
! case 'xml':
! case 'xml_object': {
! $visitorNode->addChild('referer', $referer);
! }
! break;
!
! default: {
! $result[$i]['referer'] = $referer;
! }
! }
}
! switch ($parameters['result_format']) {
! case 'xml': {
! return $root->get();
! }
! break;
!
! case 'xml_object': {
! return $root;
! }
! break;
!
! default: {
! return $result;
! }
}
- }
}
--- 22,87 ----
* @since phpOpenTracker 1.0.0
*/
! class phpOpenTracker_API_Plugin_visitors_online extends phpOpenTracker_API_Plugin {
! /**
! * API Calls
! *
! * @var array $apiCalls
! */
! public $apiCalls = array(
! 'num_visitors_online',
! 'visitors_online'
);
! /**
! * API Type
! *
! * @var string $apiType
! */
! public $apiType = 'get';
! /**
! * Runs the phpOpenTracker API call.
! *
! * @param array $parameters
! * @return mixed
! * @access public
! */
! public function run($parameters) {
! $parameters['session_lifetime'] = isset($parameters['session_lifetime']) ? $parameters['session_lifetime'] : 3;
! switch ($parameters['api_call']) {
! case 'num_visitors_online': {
! return $this->numVisitorsOnline($parameters);
}
break;
! case 'visitors_online': {
! return $this->visitorsOnline($parameters);
}
break;
}
+ }
! /**
! * Returns the number of visitors currently online.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! private function numVisitorsOnline($parameters) {
}
! /**
! * Returns information about the visitors currently online.
! *
! * @param array $parameters
! * @return mixed
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! private function visitorsOnline($parameters) {
}
}
Index: plot_top.php
===================================================================
RCS file: /cvsroot/phpopencounter/phpOpenTracker/phpOpenTracker/API/plugins/plot_top.php,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** plot_top.php 19 Sep 2003 07:17:27 -0000 1.17
--- plot_top.php 22 Nov 2003 08:47:43 -0000 1.18
***************
*** 22,129 ****
* @since phpOpenTracker 1.0.0
*/
! class phpOpenTracker_API_plot_top extends phpOpenTracker_API_Plugin {
! /**
! * API Calls
! *
! * @var array $apiCalls
! */
! var $apiCalls = array('top');
!
! /**
! * API Type
! *
! * @var string $apiType
! */
! var $apiType = 'plot';
!
! /**
! * Runs the phpOpenTracker API call.
! *
! * @param array $parameters
! * @return mixed
! * @access public
! */
! function run($parameters) {
! $parameters['api_call'] = 'top';
! $parameters['result_format'] = 'separate_result_arrays';
!
! list($names, $values, $percent, $total) = phpOpenTracker::get(
! $parameters
! );
!
! $title = 'Top ' . $parameters['limit'] . ' ';
!
! switch ($parameters['what']) {
! case 'document': {
! $title .= 'Pages';
! }
! break;
!
! case 'entry_document': {
! $title .= 'Entry Pages';
! }
! break;
!
! case 'exit_document': {
! $title .= 'Exit Pages';
! }
! break;
!
! case 'exit_target': {
! $title .= 'Exit Targets';
! }
! break;
!
! case 'host': {
! $title .= 'Hosts';
! }
! break;
!
! case 'operating_system': {
! $title .= 'Operating Systems';
! }
! break;
!
! case 'referer': {
! $title .= 'Referers';
! }
! break;
!
! case 'user_agent': {
! $title .= 'User Agents';
! }
! break;
! }
!
! $title .= " (Total: $total)";
! for ($i = 0, $numValues = sizeof($values); $i < $numValues; $i++) {
! $legend[$i] = sprintf(
! '%s (%s, %s%%%%)',
! $names[$i],
! $values[$i],
! $percent[$i]
! );
}
-
- $graph = new PieGraph($parameters['width'], $parameters['height'], 'auto');
- $graph->SetShadow();
-
- $graph->title->Set($title);
- $graph->title->SetFont($parameters['font'], $parameters['font_style'], $parameters['font_size']);
- $graph->title->SetColor('black');
- $graph->legend->Pos(0.1, 0.2);
-
- $plot = new PiePlot3d($values);
- $plot->SetTheme('sand');
- $plot->SetCenter(0.4);
- $plot->SetAngle(30);
- $plot->value->SetFont($parameters['font'], $parameters['font_style'], $parameters['font_size'] - 2);
- $plot->SetLegends($legend);
-
- $graph->Add($plot);
- $graph->Stroke();
- }
}
--- 22,49 ----
* @since phpOpenTracker 1.0.0
*/
! class phpOpenTracker_API_Plugin_plot_top extends phpOpenTracker_API_Plugin {
! /**
! * API Calls
! *
! * @var array $apiCalls
! */
! public $apiCalls = array('top');
! /**
! * API Type
! *
! * @var string $apiType
! */
! public $apiType = 'plot';
! /**
! * Runs the phpOpenTracker API call.
! *
! * @param array $parameters
! * @return mixed
! * @access public
! */
! public function run($parameters) {
}
}
Index: returning_visitors.php
===================================================================
RCS file: /cvsroot/phpopencounter/phpOpenTracker/phpOpenTracker/API/plugins/returning_visitors.php,v
retrieving revision 1.35
retrieving revision 1.36
diff -C2 -d -r1.35 -r1.36
*** returning_visitors.php 19 Sep 2003 07:17:27 -0000 1.35
--- returning_visitors.php 22 Nov 2003 08:47:43 -0000 1.36
***************
*** 23,383 ****
* @since phpOpenTracker 1.0.5
*/
! class phpOpenTracker_API_returning_visitors extends phpOpenTracker_API_Plugin {
! /**
! * API Calls
! *
! * @var array $apiCalls
! */
! var $apiCalls = array(
! 'average_time_between_visits',
! 'average_visits',
! 'num_one_time_visitors',
! 'num_return_visits',
! 'num_returning_visitors',
! 'num_unique_visitors',
! 'returning_visitors'
! );
!
! /**
! * API Type
! *
! * @var string $apiType
! */
! var $apiType = 'get';
!
! /**
! * Runs the phpOpenTracker API call.
! *
! * @param array $parameters
! * @return mixed
! * @access public
! */
! function run($parameters) {
! switch ($parameters['api_call']) {
! case 'average_time_between_visits': {
! return $this->_averageTimeBetweenVisits($parameters);
! }
! break;
!
! case 'average_visits': {
! return $this->_averageVisits($parameters);
! }
! break;
! case 'num_one_time_visitors': {
! return $this->_numOneTimeVisitors($parameters);
! }
! break;
! case 'num_return_visits': {
! return $this->_numReturnVisits($parameters);
! }
! break;
! case 'num_returning_visitors': {
! return $this->_numReturningVisitors($parameters);
! }
! break;
! case 'num_unique_visitors': {
! return $this->_numUniqueVisitors($parameters);
! }
! break;
! case 'returning_visitors': {
! return $this->_returningVisitors($parameters);
! }
! break;
! }
! }
! /**
! * Returns the average time between visits of
! * returning visitors.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @author Sven Weih <[email protected]>
! * @since phpOpenTracker 1.3.0
! */
! function _averageTimeBetweenVisits($parameters) {
! $timeCount = 0;
! $visitCount = 0;
! $visitors = $this->_queryReturningVisitors($parameters);
! if (!empty($visitors)) {
! $keys = array_keys($visitors);
! $numKeys = sizeof($keys);
! for ($i = 0; $i < $numKeys; $i++) {
! $visitors[$keys[$i]]['num_visits'] = sizeof($visitors[$keys[$i]]['accesslog_ids']);
! $visitors[$keys[$i]]['visitor_id'] = $keys[$i];
!
! if ($visitors[$keys[$i]]['num_visits'] > 1) {
! for ($j = 0; $j < $visitors[$keys[$i]]['num_visits'] - 1; $j++) {
! $timeCount += ($visitors[$keys[$i]]['timestamps'][$j + 1] -
! $visitors[$keys[$i]]['timestamps'][$j]);
! $visitCount++;
}
}
- }
-
- return ($visitCount == 0) ? 0 : floor($timeCount / $visitCount);
}
! return 0;
! }
!
! /**
! * Returns the average number of visits of
! * returning visitors.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! function _averageVisits($parameters) {
! $returnVisitsParameters = $parameters;
! $returnVisitsParameters['api_call'] = 'num_return_visits';
!
! $returningVisitorsParameters = $parameters;
! $returningVisitorsParameters['api_call'] = 'num_returning_visitors';
!
! $returnVisits = phpOpenTracker::get($returnVisitsParameters);
! $returningVisitors = phpOpenTracker::get($returningVisitorsParameters);
!
! return ($returningVisitors == 0) ? 0 : floor($returnVisits / $returningVisitors);
! }
!
! /**
! * Returns the number of one time visitors.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @author Sven Weih <[email protected]>
! * @since phpOpenTracker 1.3.0
! */
! function _numOneTimeVisitors($parameters) {
! $returningVisitorsParameters = $parameters;
! $returningVisitorsParameters['api_call'] = 'num_returning_visitors';
!
! $visitorsParameters = $parameters;
! $visitorsParameters['api_call'] = 'num_unique_visitors';
!
! $returningVisitors = phpOpenTracker::get($returningVisitorsParameters);
! $visitors = phpOpenTracker::get($visitorsParameters);
!
! return $visitors - $returningVisitors;
! }
!
! /**
! * Returns the number of return visits.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! function _numReturnVisits($parameters) {
! $oneTimeVisitorsParameters = $parameters;
! $oneTimeVisitorsParameters['api_call'] = 'num_one_time_visitors';
!
! $visitsParameters = $parameters;
! $visitsParameters['api_call'] = 'visits';
!
! return phpOpenTracker::get($visitsParameters) -
! phpOpenTracker::get($oneTimeVisitorsParameters);
! }
!
! /**
! * Returns the number of returning visitors.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! function _numReturningVisitors($parameters) {
! $this->db->query(
! sprintf(
! "SELECT COUNT(visitors.visitor_id) AS returning_visitors
! FROM %s accesslog,
! %s visitors
! WHERE visitors.client_id = '%d'
! AND visitors.accesslog_id = accesslog.accesslog_id
! AND visitors.returning_visitor = '1'
! %s
! %s",
!
! $this->config['accesslog_table'],
! $this->config['visitors_table'],
! $parameters['client_id'],
! $this->_constraint($parameters['constraints']),
! $this->_whereTimerange(
! $parameters['start'],
! $parameters['end']
! )
! )
! );
!
! if ($row = $this->db->fetchRow()) {
! return $row['returning_visitors'];
! } else {
! return 0;
}
- }
! /**
! * Returns the number of unique visitors.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! function _numUniqueVisitors($parameters) {
! $this->db->query(
! sprintf(
! "SELECT COUNT(DISTINCT(visitors.visitor_id)) AS unique_visitors
! FROM %s accesslog,
! %s visitors
! WHERE visitors.client_id = '%d'
! AND visitors.accesslog_id = accesslog.accesslog_id
! %s
! %s",
!
! $this->config['accesslog_table'],
! $this->config['visitors_table'],
! $parameters['client_id'],
! $this->_constraint($parameters['constraints']),
! $this->_whereTimerange(
! $parameters['start'],
! $parameters['end']
! )
! )
! );
!
! if ($row = $this->db->fetchRow()) {
! return $row['unique_visitors'];
! } else {
! return 0;
}
- }
-
- /**
- * Returns information for the returning visitors.
- *
- * @param array $parameters
- * @return array
- * @access private
- */
- function _returningVisitors($parameters) {
- $visitors = $this->_queryReturningVisitors($parameters);
! if (!empty($visitors)) {
! $keys = array_keys($visitors);
! $numKeys = sizeof($keys);
!
! for ($i = 0; $i < $numKeys; $i++) {
! $visitors[$keys[$i]]['num_visits'] = sizeof($visitors[$keys[$i]]['accesslog_ids']);
! $visitors[$keys[$i]]['visitor_id'] = $keys[$i];
!
! if ($visitors[$keys[$i]]['num_visits'] > 1) {
! $time = 0;
!
! for ($j = 0; $j < $visitors[$keys[$i]]['num_visits'] - 1; $j++) {
! $time += ($visitors[$keys[$i]]['timestamps'][$j+1] -
! $visitors[$keys[$i]]['timestamps'][$j]);
! }
!
! $visitors[$keys[$i]]['average_time_between_visits'] = floor($time / ($visitors[$keys[$i]]['num_visits'] - 1));
! } else {
! unset ($visitors[$keys[$i]]);
! }
! }
!
! if (!empty($visitors)) {
! foreach($visitors as $visitor) $tmp[] = $visitor['num_visits'];
! array_multisort($tmp, SORT_DESC, $visitors);
! }
}
! switch ($parameters['result_format']) {
! case 'xml':
! case 'xml_object': {
! $tree = new XML_Tree;
! $root = &$tree->addRoot('returningVisitors');
!
! $numVisitors = sizeof($visitors);
!
! for ($i = 0; $i < $numVisitors; $i++) {
! $visitorChild = &$root->addChild('visitor');
! $visitsChild = &$visitorChild->addChild('visits');
!
! $numVisits = sizeof($visitors[$i]['accesslog_ids']);
!
! for ($j = 0; $j < $numVisits; $j++) {
! $visitChild = &$visitsChild->addChild('visit');
!
! $visitChild->addChild('accesslogID', $visitors[$i]['accesslog_ids'][$j]);
! $visitChild->addChild('timestamp', $visitors[$i]['timestamps'][$j]);
! }
!
! $visitorChild->addChild('numVisits', $visitors[$i]['num_visits']);
! $visitorChild->addChild('visitorID', $visitors[$i]['visitor_id']);
! }
!
! if ($parameters['result_format'] == 'xml') {
! return $root->get();
! } else {
! return $root;
! }
! }
! break;
!
! default: {
! return $visitors;
! }
}
- }
-
- function _queryReturningVisitors($parameters) {
- $visitors = array();
! $this->db->query(
! sprintf(
! "SELECT visitors.accesslog_id AS accesslog_id,
! visitors.visitor_id AS visitor_id,
! visitors.timestamp AS timestamp
! FROM %s accesslog,
! %s visitors
! WHERE visitors.client_id = '%d'
! AND visitors.accesslog_id = accesslog.accesslog_id
! %s
! %s
! ORDER BY visitors.visitor_id,
! visitors.timestamp",
!
! $this->config['accesslog_table'],
! $this->config['visitors_table'],
! $parameters['client_id'],
! $this->_constraint($parameters['constraints']),
! $this->_whereTimerange(
! $parameters['start'],
! $parameters['end']
! )
! )
! );
! while ($row = $this->db->fetchRow()) {
! $visitors[$row['visitor_id']]['accesslog_ids'][] = $row['accesslog_id'];
! $visitors[$row['visitor_id']]['timestamps'][] = $row['timestamp'];
}
! return $visitors;
! }
}
--- 23,174 ----
* @since phpOpenTracker 1.0.5
*/
! class phpOpenTracker_API_Plugin_returning_visitors extends phpOpenTracker_API_Plugin {
! /**
! * API Calls
! *
! * @var array $apiCalls
! */
! public $apiCalls = array(
! 'average_time_between_visits',
! 'average_visits',
! 'num_one_time_visitors',
! 'num_return_visits',
! 'num_returning_visitors',
! 'num_unique_visitors',
! 'returning_visitors'
! );
! /**
! * API Type
! *
! * @var string $apiType
! */
! public $apiType = 'get';
! /**
! * Runs the phpOpenTracker API call.
! *
! * @param array $parameters
! * @return mixed
! * @access public
! */
! public function run($parameters) {
! switch ($parameters['api_call']) {
! case 'average_time_between_visits': {
! return $this->averageTimeBetweenVisits($parameters);
! }
! break;
! case 'average_visits': {
! return $this->averageVisits($parameters);
! }
! break;
! case 'num_one_time_visitors': {
! return $this->numOneTimeVisitors($parameters);
! }
! break;
! case 'num_return_visits': {
! return $this->numReturnVisits($parameters);
! }
! break;
! case 'num_returning_visitors': {
! return $this->numReturningVisitors($parameters);
! }
! break;
! case 'num_unique_visitors': {
! return $this->numUniqueVisitors($parameters);
! }
! break;
! case 'returning_visitors': {
! return $this->returningVisitors($parameters);
}
+ break;
}
}
! /**
! * Returns the average time between visits of
! * returning visitors.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @author Sven Weih <[email protected]>
! * @since phpOpenTracker 1.3.0
! */
! private function averageTimeBetweenVisits($parameters) {
}
! /**
! * Returns the average number of visits of
! * returning visitors.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! private function averageVisits($parameters) {
}
! /**
! * Returns the number of one time visitors.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @author Sven Weih <[email protected]>
! * @since phpOpenTracker 1.3.0
! */
! private function numOneTimeVisitors($parameters) {
}
! /**
! * Returns the number of return visits.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! private function numReturnVisits($parameters) {
}
! /**
! * Returns the number of returning visitors.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! private function numReturningVisitors($parameters) {
! }
! /**
! * Returns the number of unique visitors.
! *
! * @param array $parameters
! * @return integer
! * @access private
! * @since phpOpenTracker 1.3.0
! */
! private function numUniqueVisitors($parameters) {
}
! /**
! * Returns information for the returning visitors.
! *
! * @param array $parameters
! * @return array
! * @access private
! */
! private function returningVisitors($parameters) {
! }
}
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive? Does it
help you create better code? SHARE THE LOVE, and help us help
YOU! Click Here: http://sourceforge.net/donate/