phpOpenTracker/phpOpenTracker/API/Plugin ClickpathAnalysis.php,1.4,1.5 Top.php,1.4,1.5
Sebastian Bergmann <[email protected]> Sun, 29 Feb 2004 17:47:21 +0000
| Newsgroups | gmane.comp.web.phpopentracker.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/phpopencounter/phpOpenTracker/phpOpenTracker/API/Plugin
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15899/phpOpenTracker/API/Plugin
Modified Files:
ClickpathAnalysis.php Top.php
Log Message:
Flush.
Index: Top.php
===================================================================
RCS file: /cvsroot/phpopencounter/phpOpenTracker/phpOpenTracker/API/Plugin/Top.php,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** Top.php 27 Feb 2004 06:50:48 -0000 1.4
--- Top.php 29 Feb 2004 17:47:18 -0000 1.5
***************
*** 21,24 ****
--- 21,25 ----
require_once POT_INCLUDE_PATH . 'API/Plugin.php';
+ require_once POT_INCLUDE_PATH . 'API/Result/Top.php';
/**
***************
*** 52,55 ****
--- 53,248 ----
*/
public function run($parameters) {
+ if (!isset($parameters['what'])) {
+ throw new phpOpenTracker_API_Exception(
+ 'Required parameter "what" missing.'
+ );
+ }
+
+ list($constraint, $selfJoin) = $this->getConstraintClause(
+ $parameters['constraints'],
+ true
+ );
+
+ if ($selfJoin) {
+ $selfJoinConstraint = 'AND accesslog.accesslog_id = accesslog2.accesslog_id';
+
+ $selfJoinTable = sprintf(
+ '%s accesslog2,',
+
+ $this->configuration['accesslog_table']
+ );
+ } else {
+ $selfJoinConstraint = '';
+ $selfJoinTable = '';
+ }
+
+ $timerange = $this->getTimerangeClause(
+ $parameters['start'],
+ $parameters['end']
+ );
+
+ 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->configuration['documents_table'];
+ }
+ break;
+
+ case 'entry_document': {
+ $column = 'accesslog.document_id';
+ $dataConstraint = "AND accesslog.entry_document = '1'";
+ $dataTable = $this->configuration['documents_table'];
+ }
+ break;
+
+ case 'exit_document': {
+ $column = 'accesslog.document_id';
+ $dataConstraint = "AND accesslog.exit_target_id <> '0'";
+ $dataTable = $this->configuration['documents_table'];
+ }
+ break;
+
+ case 'exit_target': {
+ $column = 'accesslog.exit_target_id';
+ $dataConstraint = "AND accesslog.exit_target_id <> '0'";
+ $dataTable = $this->configuration['exit_targets_table'];
+ }
+ break;
+
+ case 'host': {
+ $column = 'visitors.host_id';
+ $dataTable = $this->configuration['hostnames_table'];
+ }
+ break;
+
+ case 'operating_system': {
+ $column = 'visitors.operating_system_id';
+ $dataTable = $this->configuration['operating_systems_table'];
+ }
+ break;
+
+ case 'referer': {
+ $column = 'visitors.referer_id';
+ $dataTable = $this->configuration['referers_table'];
+ }
+ break;
+
+ case 'user_agent': {
+ $column = 'visitors.user_agent_id';
+ $dataTable = $this->configuration['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->configuration['accesslog_table'],
+ $selfJoinTable,
+ $this->configuration['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->configuration['accesslog_table'],
+ $selfJoinTable,
+ $this->configuration['visitors_table'],
+ $this->configuration['additional_data_table'],
+ $parameters['client_id'],
+ $parameters['what'],
+ $selfJoinConstraint,
+ $constraint,
+ $timerange
+ );
+ }
+ }
+
+ $queryResult = $this->database->query(
+ sprintf(
+ 'SELECT COUNT(item) AS total_items,
+ COUNT(DISTINCT(item)) AS unique_items
+ FROM (%s) items',
+
+ $nestedQuery
+ )
+ );
+
+ $totalItems = intval($queryResult[0]['total_items']);
+ $uniqueItems = intval($queryResult[0]['unique_items']);
+
+ if ($totalItems > 0) {
+ $queryResult = $this->database->query(
+ sprintf(
+ 'SELECT COUNT(item) AS item_count,
+ (100 * item_count) / %s) AS item_percent,
+ item
+ FROM (%s) items
+ GROUP BY item
+ ORDER BY item_count %s,
+ item',
+
+ $totalItems,
+ $nestedQuery,
+ $parameters['order']
+ ),
+ $parameters['limit']
+ );
+
+ return new phpOpenTracker_API_Result_Top(
+ $queryResult,
+ $totalItems,
+ $uniqueItems,
+ $parameters,
+ $this->supportedResultFormats
+ );
+ }
}
}
Index: ClickpathAnalysis.php
===================================================================
RCS file: /cvsroot/phpopencounter/phpOpenTracker/phpOpenTracker/API/Plugin/ClickpathAnalysis.php,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** ClickpathAnalysis.php 27 Feb 2004 06:50:48 -0000 1.4
--- ClickpathAnalysis.php 29 Feb 2004 17:47:18 -0000 1.5
***************
*** 21,26 ****
require_once POT_INCLUDE_PATH . 'API/Plugin.php';
!
! require_once POT_INCLUDE_PATH . 'API/Clickpath.php';
/**
--- 21,25 ----
require_once POT_INCLUDE_PATH . 'API/Plugin.php';
! require_once POT_INCLUDE_PATH . 'API/Result/Clickpath.php';
/**
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click