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