Skip to content
Extraits de code Groupes Projets
Valider 402bdd6c rédigé par benakamoorthi's avatar benakamoorthi
Parcourir les fichiers

Fixes #1052, added message describing when a report was archived to the report...

Fixes #1052, added message describing when a report was archived to the report documentation in all table reports.

Notes:
  * Added ability to associate metadata with DataTable instances.



git-svn-id: http://dev.piwik.org/svn/trunk@6331 59fd770c-687e-43c8-a1e3-f5a4ff64c105
parent ab2619ef
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -247,9 +247,10 @@ class Piwik_Archive_Single extends Piwik_Archive
*
* @param string $name
* @param string $typeValue numeric|blob
* @param string|false $archivedDate Value to store date of archive info in. If false, not stored.
* @return mixed|false if no result
*/
protected function get( $name, $typeValue = 'numeric' )
protected function get( $name, $typeValue = 'numeric', &$archivedDate = false )
{
$this->setRequestedReport($name);
$this->prepareArchive();
......@@ -295,13 +296,24 @@ class Piwik_Archive_Single extends Piwik_Archive
}
$db = Zend_Registry::get('db');
$value = $db->fetchOne("SELECT value
$row = $db->fetchRow("SELECT value, ts_archived
FROM $table
WHERE idarchive = ?
AND name = ?",
WHERE idarchive = ? AND name = ?",
array( $this->idArchive , $name)
);
$value = $tsArchived = false;
if (is_array($row))
{
$value = $row['value'];
$tsArchived = $row['ts_archived'];
}
if ($archivedDate !== false)
{
$archivedDate = $tsArchived;
}
if($value === false)
{
if($typeValue == 'numeric'
......@@ -499,13 +511,14 @@ class Piwik_Archive_Single extends Piwik_Archive
$this->setRequestedReport($name);
$data = $this->get($name, 'blob');
$data = $this->get($name, 'blob', $tsArchived);
$table = new Piwik_DataTable();
if($data !== false)
{
$table->addRowsFromSerializedArray($data);
$table->setMetadata(Piwik_DataTable::ARCHIVED_DATE_METADATA_NAME, $tsArchived);
}
if($data === false
&& $idSubTable !== null)
......
......@@ -138,6 +138,9 @@ require_once PIWIK_INCLUDE_PATH . '/core/Common.php';
*/
class Piwik_DataTable
{
/** Name for metadata that describes when a report was archived. */
const ARCHIVED_DATE_METADATA_NAME = 'archived_date';
/**
* Maximum nesting level
*
......@@ -235,6 +238,13 @@ class Piwik_DataTable
* @var Piwik_DataTable_Row
*/
protected $summaryRow = null;
/**
* Table metadata.
*
* @var array
*/
protected $metadata = array();
const ID_SUMMARY_ROW = -1;
const LABEL_SUMMARY_ROW = -1;
......@@ -1299,4 +1309,36 @@ class Piwik_DataTable
{
self::$maximumDepthLevelAllowed = max($atLeastLevel, self::$maximumDepthLevelAllowed);
}
/**
* Returns all table metadata.
*
* @return array
*/
public function getAllTableMetadata()
{
return $this->metadata;
}
/**
* Returns metadata by name.
*
* @param string $name The metadata name.
* @return mixed
*/
public function getMetadata( $name )
{
return $this->metadata[$name];
}
/**
* Sets a metadata value by name.
*
* @param string $name The metadata name.
* @param mixed $value
*/
public function setMetadata( $name, $value )
{
$this->metadata[$name] = $value;
}
}
......@@ -307,6 +307,7 @@ abstract class Piwik_ViewDataTable
$this->viewProperties['exportLimit'] = Piwik_Config::getInstance()->General['API_datatable_default_limit'];
$this->viewProperties['relatedReports'] = array();
$this->viewProperties['highlight_summary_row'] = false;
$this->viewProperties['metadata'] = array();
$standardColumnNameToTranslation = array_merge(
Piwik_API_API::getInstance()->getDefaultMetrics(),
......@@ -443,6 +444,19 @@ abstract class Piwik_ViewDataTable
{
return false;
}
// deal w/ table metadata
if ($this->dataTable instanceof Piwik_DataTable)
{
$this->viewProperties['metadata'] = $this->dataTable->getAllTableMetadata();
if (isset($this->viewProperties['metadata'][Piwik_DataTable::ARCHIVED_DATE_METADATA_NAME]))
{
$this->viewProperties['metadata'][Piwik_DataTable::ARCHIVED_DATE_METADATA_NAME] =
$this->makePrettyArchivedOnText();
}
}
// First, filters that delete rows
foreach($this->queuedFiltersPriority as $filter)
{
......@@ -480,6 +494,47 @@ abstract class Piwik_ViewDataTable
}
}
/**
* Returns prettified and translated text that describes when a report was last updated.
*
* @return string
*/
private function makePrettyArchivedOnText()
{
$dateText = $this->viewProperties['metadata'][Piwik_DataTable::ARCHIVED_DATE_METADATA_NAME];
$date = Piwik_Date::factory($dateText);
$today = mktime(0,0,0);
if ($date->getTimestamp() > $today)
{
$elapsedSeconds = time() - $date->getTimestamp();
if ($elapsedSeconds < 60)
{
$timeAgo = Piwik_Translate('General_Seconds', $elapsedSeconds);
}
else
{
$elapsedMinutes = floor($elapsedSeconds / 60);
if ($elapsedMinutes < 60)
{
$remainingSecs = $elapsedSeconds % 60;
$timeAgo = Piwik_Translate('General_MinutesSeconds', array($elapsedMinutes, $remainingSecs));
}
else
{
$elapsedHours = floor($elapsedMinutes / 60);
$remainingMins = $elapsedMinutes % 60;
$timeAgo = Piwik_Translate('General_HoursMinutes', array($elapsedHours, $remainingMins));
}
}
return Piwik_Translate('CoreHome_ReportGeneratedXAgo', $timeAgo);
}
$prettyDate = $date->getLocalized("%longyear%, %longMonth% %day%");
return Piwik_Translate('CoreHome_ReportGeneratedOn', $prettyDate);
}
/**
* @return string URL to call the API, eg. "method=Referers.getKeywords&period=day&date=yesterday"...
*/
......
......@@ -511,6 +511,8 @@ $translations = array(
'CoreHome_MonthOctober_js' => 'October',
'CoreHome_MonthNovember_js' => 'November',
'CoreHome_MonthDecember_js' => 'December',
'CoreHome_ReportGeneratedOn' => 'Report generated on %s',
'CoreHome_ReportGeneratedXAgo' => 'Report generated %s ago',
'CorePluginsAdmin_PluginDescription' => 'Plugins Administration Interface.',
'CorePluginsAdmin_Plugins' => 'Plugins',
'CorePluginsAdmin_PluginsManagement' => 'Plugins Management',
......
......@@ -1069,7 +1069,7 @@ dataTable.prototype =
{
h2 = $('h2', domElem);
}
if (doc.size() == 0)
if (doc.size() == 0 || doc.children().size() == 0) // if we can't find the element, or the element is empty
{
if (h2 && h2.size() > 0)
{
......
<div id="{$properties.uniqueId}">
{if !empty($reportDocumentation)}
<div class="reportDocumentation"><p>{$reportDocumentation}</p></div>
{/if}
<div class="reportDocumentation">
{if !empty($reportDocumentation)}<p>{$reportDocumentation}</p>{/if}
{if isset($properties.metadata.archived_date)}<p>{$properties.metadata.archived_date}</p>{/if}
</div>
<div class="{if isset($javascriptVariablesToSet.idSubtable)&& $javascriptVariablesToSet.idSubtable!=0}sub{/if}{if $javascriptVariablesToSet.viewDataTable=='tableAllColumns'}dataTableAllColumnsWrapper{elseif $javascriptVariablesToSet.viewDataTable=='tableGoals'}dataTableAllColumnsWrapper{else}dataTableWrapper{/if}">
{if isset($arrayDataTable.result) and $arrayDataTable.result == 'error'}
{$arrayDataTable.message}
......
<div id="{$properties.uniqueId}">
{if !empty($reportDocumentation)}
<div class="reportDocumentation"><p>{$reportDocumentation}</p></div>
{/if}
<div class="reportDocumentation">
{if !empty($reportDocumentation)}<p>{$reportDocumentation}</p>{/if}
{if isset($properties.metadata.archived_date)}<p>{$properties.metadata.archived_date}</p>{/if}
</div>
<div class="{if $graphType=='evolution'}dataTableGraphEvolutionWrapper{else}dataTableGraphWrapper{/if}">
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter