setEventItem('caller_ip', Piwik_Common::getIp() ); } public function logEvent($className, $methodName, $parameterNames, $parameterValues, $executionTime, $returnedValue) { $event = array(); $event['class_name'] = $className; $event['method_name'] = $methodName; $event['parameter_names_default_values'] = serialize($parameterNames); $event['parameter_values'] = serialize($parameterValues); $event['execution_time'] = $executionTime; $event['returned_value'] = is_array($returnedValue) ? serialize($returnedValue) : $returnedValue; parent::log($event, Piwik_Log::INFO); } } /** * Class used to format the API Call log on the screen. * * @package Piwik * @subpackage Piwik_Log */ class Piwik_Log_APICall_Formatter_ScreenFormatter extends Piwik_Log_Formatter_ScreenFormatter { /** * Formats data into a single line to be written by the writer. * * @param array $event event data * @return string formatted line to write to the log */ public function format($event) { $str = "\n
"; $str .= "Called: {$event['class_name']}.{$event['method_name']} (took {$event['execution_time']}ms) \n
"; $str .= "Parameters: "; $parameterNamesAndDefault = unserialize($event['parameter_names_default_values']); $parameterValues = unserialize($event['parameter_values']); $i = 0; foreach($parameterNamesAndDefault as $pName => $pDefault) { if(isset($parameterValues[$i])) { $currentValue = $parameterValues[$i]; } else { $currentValue = $pDefault; } $currentValue = $this->formatValue($currentValue); $str .= "$pName = $currentValue, "; $i++; } $str .= "\n
"; // $str .= "Returned: ".$this->formatValue($event['returned_value']); $str .= "\n
"; return parent::format($str); } private function formatValue( $value ) { if(is_string($value)) { $value = "'$value'"; } if(is_null($value)) { $value= 'null'; } if(is_array($value)) { $value = "array( ".implode(", ", $value). ")"; } return $value; } }