diff options
-rwxr-xr-x | config/global.ini.php | 2 | ||||
-rwxr-xr-x | index.php | 3 | ||||
-rw-r--r-- | modules/Archive/Array.php | 113 | ||||
-rw-r--r-- | modules/Archive/Single.php | 21 | ||||
-rw-r--r-- | modules/ArchiveProcessing.php | 33 | ||||
-rw-r--r-- | modules/ArchiveProcessing/Day.php | 2 | ||||
-rw-r--r-- | modules/ArchiveProcessing/Period.php | 4 | ||||
-rw-r--r-- | modules/ArchiveProcessing/Record.php | 1 | ||||
-rw-r--r-- | modules/DataTable.php | 8 | ||||
-rw-r--r-- | modules/DataTable/Renderer/Csv.php | 23 | ||||
-rw-r--r-- | modules/DataTable/Renderer/Html.php | 5 | ||||
-rw-r--r-- | modules/DataTable/Renderer/Json.php | 3 | ||||
-rw-r--r-- | modules/DataTable/Renderer/Php.php | 43 | ||||
-rw-r--r-- | modules/DataTable/Renderer/Xml.php | 94 | ||||
-rw-r--r-- | modules/DataTable/Row.php | 4 | ||||
-rw-r--r-- | modules/FrontController.php | 18 | ||||
-rw-r--r-- | plugins/Provider/API.php | 15 |
17 files changed, 307 insertions, 85 deletions
diff --git a/config/global.ini.php b/config/global.ini.php index e87d2779fb..b25231bb3d 100755 --- a/config/global.ini.php +++ b/config/global.ini.php @@ -54,7 +54,7 @@ always_archive_data = false [General] ; Time in seconds after which an archive will be computed again. ; This setting is used only for today's statistics. -time_before_archive_considered_outdated = 600 +time_before_archive_considered_outdated = 6000 ; character used to automatically create categories in the "Action" "Downloads" reports ; for example a URL like "example.com/blog/development/first-post" will create @@ -22,7 +22,8 @@ if(!defined('PIWIK_INCLUDE_PATH')) require_once PIWIK_INCLUDE_PATH . "/modules/testMinimumPhpVersion.php";
-//date_default_timezone_set('Europe/London');
+date_default_timezone_set(date_default_timezone_get()); +
if(!defined('ENABLE_DISPATCH'))
{
define('ENABLE_DISPATCH', true);
diff --git a/modules/Archive/Array.php b/modules/Archive/Array.php index 64640ae281..de40bf56c3 100644 --- a/modules/Archive/Array.php +++ b/modules/Archive/Array.php @@ -5,6 +5,8 @@ require_once "DataTable/Array.php"; class Piwik_Archive_Array extends Piwik_Archive { protected $archives = array(); + protected $idArchiveToTimestamp = array(); + protected $idArchives = array(); function __construct(Piwik_Site $oSite, $strPeriod, $strDate) @@ -13,16 +15,32 @@ class Piwik_Archive_Array extends Piwik_Archive foreach($rangePeriod->getSubperiods() as $subPeriod) { - $archive = Piwik_Archive::build($oSite->getId(), $strPeriod, $subPeriod->getDateStart() ); + $startDate = $subPeriod->getDateStart(); + + $archive = Piwik_Archive::build($oSite->getId(), $strPeriod, $startDate ); $archive->prepareArchive(); $this->archives[$archive->getIdArchive()] = $archive; $this->idArchives[] = $archive->getIdArchive(); + $this->idArchiveToTimestamp[$archive->getIdArchive()] = $startDate->getTimestamp(); } $this->inIdArchives = implode("",$this->idArchives); + uksort( $this->archives, array($this, 'sortArchiveByTimestamp') ); + } + + + protected function sortArchiveByTimestamp($a, $b) + { + return $this->idArchiveToTimestamp[$a] > $this->idArchiveToTimestamp[$b]; } + protected function getNewDataTableArray() + { + $table = new Piwik_DataTable_Array; + $table->setNameKey('date'); + return $table; + } /** * Returns the value of the element $name from the current archive @@ -33,7 +51,16 @@ class Piwik_Archive_Array extends Piwik_Archive */ public function getNumeric( $name ) { - $table = new Piwik_DataTable_Array; + require_once "DataTable/Simple.php"; + $table = $this->getNewDataTableArray(); + + foreach($this->archives as $archive) + { + $numeric = $archive->getNumeric( $name ) ; + $subTable = new Piwik_DataTable_Simple(); + $subTable->loadFromArray( array( $numeric ) ); + $table->addTable($subTable, $archive->getPrettyDate()); + } return $table; } @@ -49,24 +76,25 @@ class Piwik_Archive_Array extends Piwik_Archive */ public function getBlob( $name ) { - $table = new Piwik_DataTable_Array; + require_once "DataTable/Simple.php"; + $table = $this->getNewDataTableArray(); + + foreach($this->archives as $archive) + { + $blob = $archive->getBlob( $name ) ; + $subTable = new Piwik_DataTable_Simple(); + $subTable->loadFromArray( array('blob' => $blob)); + $table->addTable($subTable, $archive->getPrettyDate()); + } return $table; } /** - * Given a list of fields defining numeric values, it will return a Piwik_DataTable_Simple - * containing one row per value. - * - * For example $fields = array( 'max_actions', - * 'nb_uniq_visitors', - * 'nb_visits', - * 'nb_actions', - * 'sum_visit_length', - * 'bounce_count', - * ); + * Given a list of fields defining numeric values, it will return a Piwik_DataTable_Array + * which is an array of Piwik_DataTable_Simple, ordered by chronological order * * @param array $fields array( fieldName1, fieldName2, ...) - * @return Piwik_DataTable_Simple + * @return Piwik_DataTable_Array */ public function getDataTableFromNumeric( $fields ) { @@ -109,10 +137,9 @@ class Piwik_Archive_Array extends Piwik_Archive $db = Zend_Registry::get('db'); // date => array( 'field1' =>X, 'field2'=>Y) - // date2 => array( 'field1' =>X2, 'field2'=>Y2) - - $tableArray = new Piwik_DataTable_Array; + // date2 => array( 'field1' =>X2, 'field2'=>Y2) + $idarchiveToName = array(); foreach($queries as $table => $aIds) { $inIds = implode(', ', $aIds); @@ -123,33 +150,33 @@ class Piwik_Archive_Array extends Piwik_Archive $values = $db->fetchAll($sql); - $idarchiveToName = array(); foreach($values as $value) { $idarchiveToName[$value['idarchive']][$value['name']] = $value['value']; - } -// var_dump($idarchiveToName);exit; + } + } + + // we need to take the Archives in chronological order + uksort( $idarchiveToName, array($this, 'sortArchiveByTimestamp') ); + +// var_dump($idarchiveToName);exit; + + $tableArray = $this->getNewDataTableArray(); + foreach($idarchiveToName as $id => $aNameValues) + { + $strDate = $this->archives[$id]->getPrettyDate(); - foreach($idarchiveToName as $id => $aNameValues) - { - $strDate = $this->archives[$id]->getPrettyDate(); - - $table = new Piwik_DataTable_Simple; - $table->loadFromArray($aNameValues); - -// echo $table; echo $strDate;exit; - $tableArray->addTable($table, $strDate); - } + $table = new Piwik_DataTable_Simple; + $table->loadFromArray($aNameValues); + + $tableArray->addTable($table, $strDate); } - return $tableArray; } /** - * This method will build a dataTable from the blob value $name in the current archive. - * - * For example $name = 'Referers_searchEngineByKeyword' will return a Piwik_DataTable containing all the keywords - * If a idSubTable is given, the method will return the subTable of $name + * Given a BLOB field name (eg. 'Referers_searchEngineByKeyword'), it will return a Piwik_DataTable_Array + * which is an array of Piwik_DataTable, ordered by chronological order * * @param string $name * @param int $idSubTable @@ -158,7 +185,12 @@ class Piwik_Archive_Array extends Piwik_Archive */ public function getDataTable( $name, $idSubTable = null ) { - $table = new Piwik_DataTable_Array; + $table = $this->getNewDataTableArray(); + foreach($this->archives as $archive) + { + $subTable = $archive->getDataTable( $name, $idSubTable ) ; + $table->addTable($subTable, $archive->getPrettyDate()); + } return $table; } @@ -174,7 +206,12 @@ class Piwik_Archive_Array extends Piwik_Archive */ public function getDataTableExpanded($name, $idSubTable = null) { - $table = new Piwik_DataTable_Array; + $table = $this->getNewDataTableArray(); + foreach($this->archives as $archive) + { + $subTable = $archive->getDataTableExpanded( $name, $idSubTable ) ; + $table->addTable($subTable, $archive->getPrettyDate()); + } return $table; } -}
\ No newline at end of file +} diff --git a/modules/Archive/Single.php b/modules/Archive/Single.php index de1a6fee61..3eb018d36b 100644 --- a/modules/Archive/Single.php +++ b/modules/Archive/Single.php @@ -51,16 +51,17 @@ class Piwik_Archive_Single extends Piwik_Archive $archiveProcessing->setPeriod($this->period); $IdArchive = $archiveProcessing->loadArchive(); - $this->archiveProcessing = $archiveProcessing; - $isThereSomeVisits = Zend_Registry::get('db')->fetchOne( - 'SELECT value - FROM '.$archiveProcessing->getTableArchiveNumericName(). - ' WHERE name = ? AND idarchive = ?', array('nb_visits',$IdArchive)); - - if($isThereSomeVisits!==false) - { - $this->isThereSomeVisits = true; - } + $this->archiveProcessing = $archiveProcessing; +// $isThereSomeVisits = Zend_Registry::get('db')->fetchOne( +// 'SELECT value +// FROM '.$archiveProcessing->getTableArchiveNumericName(). +// ' WHERE name = ? AND idarchive = ?', array('nb_visits',$IdArchive)); +// +// if($isThereSomeVisits!==false) +// { +// $this->isThereSomeVisits = true; +// } + $this->isThereSomeVisits = $this->archiveProcessing->isThereSomeVisits; $this->idArchive = $IdArchive; $this->alreadyChecked = true; } diff --git a/modules/ArchiveProcessing.php b/modules/ArchiveProcessing.php index 0ef8fae207..1e58007d88 100644 --- a/modules/ArchiveProcessing.php +++ b/modules/ArchiveProcessing.php @@ -205,6 +205,7 @@ abstract class Piwik_ArchiveProcessing { $this->loadArchiveProperties(); $this->idArchive = $this->isArchived(); + if(!$this->idArchive) { // Piwik::printMemoryUsage('Before loading subperiods'); @@ -222,6 +223,7 @@ abstract class Piwik_ArchiveProcessing else { //Piwik::log("Archive already available, id = {$this->idArchive}"); + $this->isThereSomeVisits = true; } return $this->idArchive; @@ -390,21 +392,42 @@ abstract class Piwik_ArchiveProcessing $bindSQL[] = $this->maxTimestampArchive; } - $idarchive = Zend_Registry::get('db')->fetchOne(" - SELECT idarchive + $results = Zend_Registry::get('db')->fetchAll(" + SELECT idarchive, value, name FROM ".$this->tableArchiveNumeric." WHERE idsite = ? AND date1 = ? AND date2 = ? AND period = ? - AND name = 'done' - AND value = ".Piwik_ArchiveProcessing::DONE_OK." + AND ( (name = 'done' AND value = ".Piwik_ArchiveProcessing::DONE_OK.") + OR name = 'nb_visits') $timeStampWhere ORDER BY ts_archived DESC", $bindSQL ); - if(!empty($idarchive)) + // the archive exists in the table + if(!empty($results)) { + + // let's look for the more recent idarchive + foreach($results as $result) + { + if($result['name'] == 'done') + { + $idarchive = $result['idarchive']; + break; + } + } + // let's look for the nb_visits result for this more recent archive + foreach($results as $result) + { + if($result['name'] == 'nb_visits' + && $result['idarchive'] == $idarchive) + { + $this->isThereSomeVisits = ($result['value'] != 0); + break; + } + } return $idarchive; } else diff --git a/modules/ArchiveProcessing/Day.php b/modules/ArchiveProcessing/Day.php index 7b8338341b..6dd605e0e1 100644 --- a/modules/ArchiveProcessing/Day.php +++ b/modules/ArchiveProcessing/Day.php @@ -57,6 +57,8 @@ class Piwik_ArchiveProcessing_Day extends Piwik_ArchiveProcessing { return; } + + $this->isThereSomeVisits = true; foreach($row as $name => $value) { diff --git a/modules/ArchiveProcessing/Period.php b/modules/ArchiveProcessing/Period.php index b16f0b0de5..632caba439 100644 --- a/modules/ArchiveProcessing/Period.php +++ b/modules/ArchiveProcessing/Period.php @@ -211,7 +211,9 @@ class Piwik_ArchiveProcessing_Period extends Piwik_ArchiveProcessing 'sum_visit_length', 'bounce_count', ); - $this->archiveNumericValuesSum($toSum); + $record = $this->archiveNumericValuesSum($toSum); + + $this->isThereSomeVisits = ($record['nb_visits']->value != 0); Piwik_PostEvent('ArchiveProcessing_Period.compute', $this); } diff --git a/modules/ArchiveProcessing/Record.php b/modules/ArchiveProcessing/Record.php index ee4040183d..46c3d31b48 100644 --- a/modules/ArchiveProcessing/Record.php +++ b/modules/ArchiveProcessing/Record.php @@ -35,6 +35,7 @@ abstract class Piwik_ArchiveProcessing_Record $this->value = $value; Piwik_ArchiveProcessing_Record_Manager::getInstance()->registerRecord($this); } + public function delete() { Piwik_ArchiveProcessing_Record_Manager::getInstance()->unregister($this); diff --git a/modules/DataTable.php b/modules/DataTable.php index 25c1796ca6..bb3ac36319 100644 --- a/modules/DataTable.php +++ b/modules/DataTable.php @@ -343,7 +343,13 @@ class Piwik_DataTable $totalCount += $this->getRowsCount(); return $totalCount; } - + public function deleteColumn( $name ) + { + foreach($this->getRows() as $row) + { + $row->deleteColumn($name); + } + } public function deleteRow( $key ) { if(!isset($this->rows[$key])) diff --git a/modules/DataTable/Renderer/Csv.php b/modules/DataTable/Renderer/Csv.php index be35d4a270..a1d368cd9a 100644 --- a/modules/DataTable/Renderer/Csv.php +++ b/modules/DataTable/Renderer/Csv.php @@ -29,10 +29,13 @@ class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer public $separator = ','; public $exportDetail = true; public $exportIdSubtable = true; - + public $lineEnd = "\n"; + function __construct($table = null) { parent::__construct($table); + + } function render() @@ -47,6 +50,13 @@ class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer // keep track of all the existing columns in the csv file $allColumns = array(); + if($table instanceof Piwik_DataTable_Simple + && $table->getRowsCount() ==1) + { + $str = 'value' . $this->lineEnd . $table->getRowFromId(0)->getColumn('value'); + return $this->output($str); + } + foreach($table->getRows() as $row) { $csvRow = array(); @@ -106,7 +116,9 @@ class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer // specific case, we have only one column and this column wasn't named properly (indexed by a number)
// we don't print anything in the CSV file => an empty line
- if(sizeof($allColumns) == 1 && reset($allColumns) && !is_string(key($allColumns)) )
+ if(sizeof($allColumns) == 1 + && reset($allColumns) + && !is_string(key($allColumns)) )
{
$str .= '';
}
@@ -123,7 +135,7 @@ class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer // we render the CSV foreach($csv as $theRow) { - $rowStr = "\n"; + $rowStr = $this->lineEnd; foreach($allColumns as $columnName => $true) { $rowStr .= $theRow[$columnName] . $this->separator; @@ -134,6 +146,11 @@ class Piwik_DataTable_Renderer_Csv extends Piwik_DataTable_Renderer $str .= $rowStr; } + return $this->output($str); + } + + protected function output( $str ) + { // silent fail otherwise unit tests fail @header("Content-type: application/vnd.ms-excel"); @header("Content-Disposition: attachment; filename=piwik-report-export.csv"); diff --git a/modules/DataTable/Renderer/Html.php b/modules/DataTable/Renderer/Html.php index 5e0c076161..34541bef7f 100644 --- a/modules/DataTable/Renderer/Html.php +++ b/modules/DataTable/Renderer/Html.php @@ -34,6 +34,11 @@ class Piwik_DataTable_Renderer_Html extends Piwik_DataTable_Renderer { return "<b><i>Empty table</i></b> <br>\n"; } + if($table instanceof Piwik_DataTable_Simple + && $table->getRowsCount() ==1) + { + $table->deleteColumn('label'); + } static $depth=0; $i = 1;
diff --git a/modules/DataTable/Renderer/Json.php b/modules/DataTable/Renderer/Json.php index f2eca8f001..6c1a83800b 100644 --- a/modules/DataTable/Renderer/Json.php +++ b/modules/DataTable/Renderer/Json.php @@ -31,8 +31,7 @@ class Piwik_DataTable_Renderer_Json extends Piwik_DataTable_Renderer protected function renderTable($table) { $renderer = new Piwik_DataTable_Renderer_Php($table, $serialize = false); - $array = $renderer->flatRender();
-
+ $array = $renderer->flatRender();
$str = json_encode($array); return $str; } diff --git a/modules/DataTable/Renderer/Php.php b/modules/DataTable/Renderer/Php.php index 6b32eea379..0b8d1529b5 100644 --- a/modules/DataTable/Renderer/Php.php +++ b/modules/DataTable/Renderer/Php.php @@ -56,17 +56,40 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer * @return array Php array representing the 'flat' version of the datatable
*
*/
- public function flatRender()
- {
+ public function flatRender( $dataTable = null )
+ { + if(is_null($dataTable)) + { + $dataTable = $this->table; + } + + if($dataTable instanceof Piwik_DataTable_Array) + { + $flatArray = array(); + foreach($dataTable->getArray() as $keyName => $table) + { + $flatArray[$keyName] = $this->flatRender($table); + } + return $flatArray; + } +
// A DataTable_Simple is already flattened so no need to do some crazy stuff to convert it
- if($this->table instanceof Piwik_DataTable_Simple)
+ else if($dataTable instanceof Piwik_DataTable_Simple)
{
- $flatArray = $this->renderSimpleTable($this->table);
+ $flatArray = $this->renderSimpleTable($dataTable); + + // if we return only one numeric value then we print out the result in a simple <result> tag + // keep it simple! + if(count($flatArray) == 1) + { + $flatArray = current($flatArray); + } +
}
// A normal DataTable needs to be handled specifically
else
{
- $array = $this->renderTable($this->table);
+ $array = $this->renderTable($dataTable);
$flatArray = array();
foreach($array as $row)
{
@@ -87,9 +110,13 @@ class Piwik_DataTable_Renderer_Php extends Piwik_DataTable_Renderer return $flatArray;
}
- public function render()
- {
- $toReturn = $this->flatRender();
+ public function render( $dataTable = null)
+ { + if(is_null($dataTable)) + { + $dataTable = $this->table; + }
+ $toReturn = $this->flatRender( $dataTable );
return $toReturn;
}
diff --git a/modules/DataTable/Renderer/Xml.php b/modules/DataTable/Renderer/Xml.php index 060aafe968..61800f7b85 100644 --- a/modules/DataTable/Renderer/Xml.php +++ b/modules/DataTable/Renderer/Xml.php @@ -36,8 +36,7 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer $renderer = new Piwik_DataTable_Renderer_Php($table, $serialize = false); $array = $renderer->flatRender(); -// var_dump($array); exit;
- +// var_dump($array); exit; $options = array( XML_SERIALIZER_OPTION_INDENT => ' ', @@ -45,6 +44,82 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer XML_SERIALIZER_OPTION_ROOT_NAME => 'row', XML_SERIALIZER_OPTION_MODE => XML_SERIALIZER_MODE_SIMPLEXML ); + $rootName = 'result'; + + // case DataTable_Array + if($table instanceof Piwik_DataTable_Array) + { + + // CASE 1 + //array + // 'day1' => string '14' (length=2) + // 'day2' => string '6' (length=1) + $firstTable = current($array); + if(!is_array( $firstTable )) + { + $xml = "<results>\n"; + $nameDescriptionAttribute = $table->getNameKey(); + foreach($array as $valueAttribute => $value) + { + $xml .= "\t<result $nameDescriptionAttribute=\"$valueAttribute\">$value</result>\n"; + } + $xml .= "</results>"; + return $this->output($xml); + } + + $subTables = $table->getArray(); + $firstTable = current($subTables); + + // CASE 2 + //array + // 'day1' => + // array + // 'nb_uniq_visitors' => string '18' + // 'nb_visits' => string '101' + // 'day2' => + // array + // 'nb_uniq_visitors' => string '28' + // 'nb_visits' => string '11' + if( $firstTable instanceof Piwik_DataTable_Simple) + { + $xml = "<results>\n"; + $nameDescriptionAttribute = $table->getNameKey(); + foreach($array as $valueAttribute => $value) + { + $xml .= "\t<result $nameDescriptionAttribute=\"$valueAttribute\">".''."</result>\n"; + } + $xml .= "</results>"; + return $this->output($xml); + } + + // CASE 3
+ //array + // 'day1' => + // array + // 0 => + // array + // 'label' => string 'phpmyvisites' + // 'nb_unique_visitors' => int 11 + // 'nb_visits' => int 13 + // 1 => + // array + // 'label' => string 'phpmyvisits' + // 'nb_unique_visitors' => int 2 + // 'nb_visits' => int 2 + // 'day2' => + // array + // 0 => + // array + // 'label' => string 'piwik' + // 'nb_unique_visitors' => int 121 + // 'nb_visits' => int 130 + // 1 => + // array + // 'label' => string 'piwik bis' + // 'nb_unique_visitors' => int 20 + // 'nb_visits' => int 120 + } + $serializer = new XML_Serializer($options); @@ -57,15 +132,20 @@ class Piwik_DataTable_Renderer_Xml extends Piwik_DataTable_Renderer $xmlStr = $serializer->getSerializedData(); - if(get_class($table) == 'Piwik_DataTable') + if($table instanceof Piwik_DataTable + || $table instanceof Piwik_DataTable_Array) { - $xmlStr = "<result>\n".$xmlStr."\n</result>"; + $xmlStr = "<$rootName>\n".$xmlStr."\n</$rootName>"; $xmlStr = str_replace(">\n", ">\n\t",$xmlStr); - $xmlStr = str_replace("\t</result>", "</result>",$xmlStr); + $xmlStr = str_replace("\t</$rootName>", "</$rootName>",$xmlStr); } - + return $this->output($xmlStr); + } + + protected function output( $xml ) + { // silent fail because otherwise it throws an exception in the unit tests @header('Content-type: text/xml'); - return $xmlStr; + return $xml; } }
\ No newline at end of file diff --git a/modules/DataTable/Row.php b/modules/DataTable/Row.php index 06415b95e8..8eaf0d2296 100644 --- a/modules/DataTable/Row.php +++ b/modules/DataTable/Row.php @@ -107,6 +107,10 @@ class Piwik_DataTable_Row return $output;
}
+ public function deleteColumn( $name ) + { + unset($this->c[self::COLUMNS][$name]); + } /** * Returns the given column * @param string Column name diff --git a/modules/FrontController.php b/modules/FrontController.php index 088c4e417b..653989fd35 100644 --- a/modules/FrontController.php +++ b/modules/FrontController.php @@ -102,8 +102,8 @@ class Piwik_FrontController Piwik::printQueryCount(); }catch(Exception $e) {} - Piwik::printMemoryUsage(); - Piwik::printTimer(); +// Piwik::printMemoryUsage(); +// Piwik::printTimer(); // Piwik::uninstall(); // } @@ -220,22 +220,26 @@ class Piwik_FrontController // Piwik::printMemoryUsage('Start program');
+ // can be used for debug purpose $doNotDrop = array( - Piwik::prefixTable('log_visit'), Piwik::prefixTable('access'), Piwik::prefixTable('user'), Piwik::prefixTable('site'), - Piwik::prefixTable('log_link_visit_action'), - Piwik::prefixTable('log_action'), - Piwik::prefixTable('log_profiling'), Piwik::prefixTable('archive'), + Piwik::prefixTable('logger_api_call'), Piwik::prefixTable('logger_error'), Piwik::prefixTable('logger_exception'), Piwik::prefixTable('logger_message'), + + Piwik::prefixTable('log_visit'), + Piwik::prefixTable('log_link_visit_action'), + Piwik::prefixTable('log_action'), + Piwik::prefixTable('log_profiling'), ); - Piwik::dropTables($doNotDrop); +// Piwik::dropTables($doNotDrop); + Piwik::createTables(); Piwik_PluginsManager::getInstance()->installPlugins(); diff --git a/plugins/Provider/API.php b/plugins/Provider/API.php index b8b6b6473a..3d3a731eb8 100644 --- a/plugins/Provider/API.php +++ b/plugins/Provider/API.php @@ -36,7 +36,7 @@ class Piwik_Provider_API extends Piwik_Apiable } return self::$instance; } - + public function getProvider( $idSite, $period, $date ) { Piwik::checkUserHasViewAccess( $idSite ); @@ -47,6 +47,19 @@ class Piwik_Provider_API extends Piwik_Apiable $dataTable->queueFilter('Piwik_DataTable_Filter_ReplaceColumnNames'); return $dataTable; } + + /** + * Example of getting a RAW BLOB + * + * @return blob + */ + public function getProviderBlob( $idSite, $period, $date ) + { + Piwik::checkUserHasViewAccess( $idSite ); + $archive = Piwik_Archive::build($idSite, $period, $date ); + $dataTable = $archive->getBlob('Provider_hostnameExt'); + return $dataTable; + } } |