Scenario:
1) Create a site
2) Generate visits for 2 days (ie. set $daysToCompute to 2 in /misc/generateVisits.php#15)
3) Access dashboard
4) Setting the calendar to day n-1 is not permitted even though there is data generated for that day
Proposal: In /trunk/core/Controller.php#322 replace $this->site->getCreationDate()->getDatetime(); by a query to the database to get the oldest date from the database.
If an "import piwik data" functionality would be developed later on, data older than the creation date of a site could be created. The same issue would occur.
Since the Site record is already loaded (i.e., avoid adding a new, potentially slow, query) and rather than deprecating this column, an alternative would be to add a method to change ts_created to reflect the earliest date for generated/imported data.
Wouldn't it be useful to leave untouched the ts_created field if one day the initial value is needed ?
It may be wise to keep the two concepts well separated. One date is the site administrative creation date within a particular instance of piwik (ts_created). The other date is the earliest known visit recorded for the website.
Not really, since getCreationDate() loses its meaning/intent/value if the database is populated with older data. In these cases, I suspect we have to add code to reprocess the archives.
agreed with vipsoft, it would be easier to update the ts_created time directly at the end of the visit generator process (less overhead, and the ts_created is not really useful if the user created fake visits anyway... as this is probably a fake/testing/temporary piwik website)
What implementation is preferred now?
Should the Visitor Generator:
ts_created cant be updated via API (not logical) so you can do it manually, or refactor in Core the following code from Integration->createWebsite
// Manually set the website creation date to a day earlier than the earliest day we record stats for
Zend_Registry::get('db')->update(Piwik_Common::prefixTable("site"),
array('ts_created' => Piwik_Date::factory($dateTime)->subDay(1)->getDatetime()),
"idsite = $idSite"
);
(In [3660]) Fixes #1373