Skip to content
Extraits de code Groupes Projets
Valider ad4eaf13 rédigé par mattpiwik's avatar mattpiwik
Parcourir les fichiers

Fixes #3636 Hopefully I haven't broken anything!

Added new parmeter &pattern= to MultiSites.getAll

Thomas let me know if any feedback on this!

git-svn-id: http://dev.piwik.org/svn/trunk@7717 59fd770c-687e-43c8-a1e3-f5a4ff64c105
parent 68fb458f
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 229 ajouts et 67 suppressions
...@@ -217,8 +217,8 @@ abstract class Piwik_Archive ...@@ -217,8 +217,8 @@ abstract class Piwik_Archive
} }
// idSite=1,3 or idSite=all // idSite=1,3 or idSite=all
if( count($sites) > 1 if( $idSite === 'all'
|| $idSite === 'all' ) || is_array($idSite) )
{ {
$archive = new Piwik_Archive_Array_IndexedBySite($sites, $period, $strDate, $segment, $_restrictSitesToLogin); $archive = new Piwik_Archive_Array_IndexedBySite($sites, $period, $strDate, $segment, $_restrictSitesToLogin);
} }
...@@ -455,10 +455,10 @@ abstract class Piwik_Archive ...@@ -455,10 +455,10 @@ abstract class Piwik_Archive
static public function isMultiplePeriod($dateString, $period) static public function isMultiplePeriod($dateString, $period)
{ {
return (preg_match('/^(last|previous){1}([0-9]*)$/D', $dateString, $regs) return (preg_match('/^(last|previous){1}([0-9]*)$/D', $dateString, $regs)
|| Piwik_Period_Range::parseDateRange($dateString)) || Piwik_Period_Range::parseDateRange($dateString))
&& $period != 'range'; && $period != 'range';
} }
/** /**
* Indicate if $idSiteString corresponds to multiple sites. * Indicate if $idSiteString corresponds to multiple sites.
* *
......
...@@ -1639,10 +1639,12 @@ class Piwik ...@@ -1639,10 +1639,12 @@ class Piwik
'Real Time Web Analytics', 'Real Time Web Analytics',
'Analytics', 'Analytics',
'Real Time Analytics', 'Real Time Analytics',
'Analytics in Real time',
'Open Source Analytics', 'Open Source Analytics',
'Open Source Web Analytics', 'Open Source Web Analytics',
'Free Website Analytics', 'Free Website Analytics',
'Free Web Analytics', 'Free Web Analytics',
'Analytics Platform',
); );
$id = abs(intval(md5(Piwik_Url::getCurrentHost()))); $id = abs(intval(md5(Piwik_Url::getCurrentHost())));
$title = $titles[ $id % count($titles)]; $title = $titles[ $id % count($titles)];
......
...@@ -96,22 +96,51 @@ class Piwik_MultiSites_API ...@@ -96,22 +96,51 @@ class Piwik_MultiSites_API
* @param bool|string $_restrictSitesToLogin Hack used to enforce we restrict the returned data to the specified username * @param bool|string $_restrictSitesToLogin Hack used to enforce we restrict the returned data to the specified username
* Only used when a scheduled task is running * Only used when a scheduled task is running
* @param bool|string $enhanced When true, return additional goal & ecommerce metrics * @param bool|string $enhanced When true, return additional goal & ecommerce metrics
* @param bool|string $pattern If specified, only the website which names (or site ID) match the pattern will be returned using SitesManager.getPatternMatchSites
* @return Piwik_DataTable * @return Piwik_DataTable
*/ */
public function getAll($period, $date, $segment = false, $_restrictSitesToLogin = false, $enhanced = false) public function getAll($period, $date, $segment = false, $_restrictSitesToLogin = false, $enhanced = false, $pattern = false)
{ {
Piwik::checkUserHasSomeViewAccess(); Piwik::checkUserHasSomeViewAccess();
$idSites = $this->getSitesIdFromPattern($pattern);
return $this->buildDataTable( return $this->buildDataTable(
'all', $idSites,
$period, $period,
$date, $date,
$segment, $segment,
$_restrictSitesToLogin, $_restrictSitesToLogin,
$enhanced $enhanced,
$multipleWebsitesRequested = true
); );
} }
/**
* Fetches the list of sites which names match the string pattern
*
* @param $pattern
* @return array|string
*/
private function getSitesIdFromPattern($pattern)
{
$idSites = 'all';
if (!empty($pattern)) {
$sites = Piwik_API_Request::processRequest('SitesManager.getPatternMatchSites',
array('pattern' => $pattern,
// added because caller could overwrite these
'serialize' => 0,
'format' => 'original'));
if (!empty($sites)) {
$idSites = array();
foreach ($sites as $site) {
$idSites[] = $site['idsite'];
}
}
}
return $idSites;
}
/** /**
* Same as getAll but for a unique Piwik site * Same as getAll but for a unique Piwik site
* @see Piwik_MultiSites_API::getAll() * @see Piwik_MultiSites_API::getAll()
...@@ -127,21 +156,21 @@ class Piwik_MultiSites_API ...@@ -127,21 +156,21 @@ class Piwik_MultiSites_API
*/ */
public function getOne($idSite, $period, $date, $segment = false, $_restrictSitesToLogin = false, $enhanced = false) public function getOne($idSite, $period, $date, $segment = false, $_restrictSitesToLogin = false, $enhanced = false)
{ {
Piwik::checkUserHasSomeViewAccess(); Piwik::checkUserHasViewAccess($idSite);
return $this->buildDataTable( return $this->buildDataTable(
$idSite, $idSite,
$period, $period,
$date, $date,
$segment, $segment,
$_restrictSitesToLogin, $_restrictSitesToLogin,
$enhanced $enhanced,
$multipleWebsitesRequested = false
); );
} }
private function buildDataTable($sites, $period, $date, $segment, $_restrictSitesToLogin, $enhanced) private function buildDataTable($sites, $period, $date, $segment, $_restrictSitesToLogin, $enhanced, $multipleWebsitesRequested)
{ {
$allWebsitesRequested = $sites == 'all'; $allWebsitesRequested = ($sites == 'all');
if($allWebsitesRequested) if($allWebsitesRequested)
{ {
if (Piwik::isUserIsSuperUser() if (Piwik::isUserIsSuperUser()
...@@ -192,7 +221,8 @@ class Piwik_MultiSites_API ...@@ -192,7 +221,8 @@ class Piwik_MultiSites_API
$dataTable = $archive->getDataTableFromNumeric($fieldsToGet); $dataTable = $archive->getDataTableFromNumeric($fieldsToGet);
// get rid of the DataTable_Array that is created by the IndexedBySite archive type // get rid of the DataTable_Array that is created by the IndexedBySite archive type
if($dataTable instanceof Piwik_DataTable_Array && $allWebsitesRequested) if($dataTable instanceof Piwik_DataTable_Array
&& $multipleWebsitesRequested)
{ {
$dataTable = $dataTable->mergeChildren(); $dataTable = $dataTable->mergeChildren();
} }
...@@ -204,7 +234,7 @@ class Piwik_MultiSites_API ...@@ -204,7 +234,7 @@ class Piwik_MultiSites_API
$firstDataTableRow->setColumn('label', $sites); $firstDataTableRow->setColumn('label', $sites);
} }
} }
// calculate total visits/actions/revenue // calculate total visits/actions/revenue
$this->setMetricsTotalsMetadata($dataTable, $apiMetrics); $this->setMetricsTotalsMetadata($dataTable, $apiMetrics);
...@@ -231,7 +261,6 @@ class Piwik_MultiSites_API ...@@ -231,7 +261,6 @@ class Piwik_MultiSites_API
// put there is put directly in Piwik_DataTable::metadata. // put there is put directly in Piwik_DataTable::metadata.
$dataTable->setMetadata(self::getLastPeriodMetadataName('date'), $lastPeriod); $dataTable->setMetadata(self::getLastPeriodMetadataName('date'), $lastPeriod);
} }
$pastArchive = Piwik_Archive::build('all', $period, $strLastDate, $segment, $_restrictSitesToLogin); $pastArchive = Piwik_Archive::build('all', $period, $strLastDate, $segment, $_restrictSitesToLogin);
$pastData = $pastArchive->getDataTableFromNumeric($fieldsToGet); $pastData = $pastArchive->getDataTableFromNumeric($fieldsToGet);
...@@ -268,7 +297,7 @@ class Piwik_MultiSites_API ...@@ -268,7 +297,7 @@ class Piwik_MultiSites_API
$dataTable->filter('ColumnCallbackAddMetadata', array('label', 'idsite')); $dataTable->filter('ColumnCallbackAddMetadata', array('label', 'idsite'));
// set the label of each row to the site name // set the label of each row to the site name
if($allWebsitesRequested) if($multipleWebsitesRequested)
{ {
$getNameFor = array('Piwik_Site', 'getNameFor'); $getNameFor = array('Piwik_Site', 'getNameFor');
$dataTable->filter('ColumnCallbackReplace', array('label', $getNameFor)); $dataTable->filter('ColumnCallbackReplace', array('label', $getNameFor));
...@@ -286,7 +315,7 @@ class Piwik_MultiSites_API ...@@ -286,7 +315,7 @@ class Piwik_MultiSites_API
// filter rows without visits // filter rows without visits
// note: if only one website is queried and there are no visits, we can not remove the row otherwise Piwik_API_ResponseBuilder throws 'Call to a member function getColumns() on a non-object' // note: if only one website is queried and there are no visits, we can not remove the row otherwise Piwik_API_ResponseBuilder throws 'Call to a member function getColumns() on a non-object'
if($allWebsitesRequested) if($multipleWebsitesRequested)
{ {
$dataTable->filter( $dataTable->filter(
'ColumnCallbackDeleteRow', 'ColumnCallbackDeleteRow',
......
...@@ -8,7 +8,11 @@ ...@@ -8,7 +8,11 @@
*/ */
/** /**
* testing period=range use case. Recording data before and after, checking that the requested range is processed correctly * Use case testing various important features:
* - Test Multisites API use cases
* - testing period=range use case.
* - Recording data before and after, checking that the requested range is processed correctly
* - and more
*/ */
class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange extends IntegrationTestCase class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange extends IntegrationTestCase
{ {
...@@ -19,7 +23,8 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange extends I ...@@ -19,7 +23,8 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange extends I
'2011-01-15 01:00:00', '2011-01-15 01:00:00',
'2011-01-16 01:00:00', '2011-01-16 01:00:00',
); );
protected static $idSite = 1; protected static $idSite = 1;
protected static $idSite2 = 2;
// one per visit // one per visit
protected static $referrerUrls = array( protected static $referrerUrls = array(
...@@ -60,19 +65,37 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange extends I ...@@ -60,19 +65,37 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange extends I
public function getApiForTesting() public function getApiForTesting()
{ {
return array( return array(
// FIRST some MultiSites API goodness!
// range test // range test
array('MultiSites.getAll', array('idSite' => self::$idSite, array('MultiSites.getAll', array( 'date' => '2010-12-15,2011-01-15',
'date' => '2010-12-15,2011-01-15', 'periods' => array('range')
'periods' => array('range'))), // Testing without &pattern= so should return all sites
)),
// test several dates (tests use of IndexedByDate w/ 'date1,date2,etc.') // test several dates (tests use of IndexedByDate w/ 'date1,date2,etc.')
array('MultiSites.getAll', array('idSite' => self::$idSite, array('MultiSites.getAll', array('date' => '2010-12-15',
'date' => '2010-12-10',
'periods' => array('day'), 'periods' => array('day'),
'setDateLastN' => true, 'testSuffix' => '_IndexedByDate',
'testSuffix' => '_IndexedByDate')), // Testing the pattern to getAll restrict websites using name matching
'otherRequestParameters' => array('pattern' => 'aAa')
// test socials )),
// todo: test getOne call used in MobileMessaging SMS reports
array('MultiSites.getOne', array( 'date' => '2010-12-15,2011-01-15',
'periods' => array('range'),
'idSite' => self::$idSite,
// Testing without &pattern= so should return all sites
)),
// test that multiple periods are not supported
array('MultiSites.getAll', array( 'date' => '2010-12-15,2011-01-15',
'periods' => array('day'),
'testSuffix' => '_MultipleDatesNotSupported',
)),
//---------------------------------------
// THEN some Socials tests. Share these...
array('Referers.getSocials', array('idSite' => 'all', array('Referers.getSocials', array('idSite' => 'all',
'date' => '2010-12-13,2011-01-18', 'date' => '2010-12-13,2011-01-18',
'periods' => array('range'))), 'periods' => array('range'))),
...@@ -88,7 +111,7 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange extends I ...@@ -88,7 +111,7 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange extends I
'periods' => 'range', 'periods' => 'range',
'testSuffix' => '_noIdSubtable')), 'testSuffix' => '_noIdSubtable')),
array('Referers.getUrlsForSocial', array('idSite' => self::$idSite, // test w/ idSubtable array('Referers.getUrlsForSocial', array('idSite' => 1, // test w/ idSubtable
'date' => '2010-12-13,2011-01-18', 'date' => '2010-12-13,2011-01-18',
'periods' => 'range', 'periods' => 'range',
'supertableApi' => 'Referers.getSocials')), 'supertableApi' => 'Referers.getSocials')),
...@@ -102,7 +125,8 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange extends I ...@@ -102,7 +125,8 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange extends I
protected static function setUpWebsitesAndGoals() protected static function setUpWebsitesAndGoals()
{ {
self::createWebsite(self::$dateTimes[0]); self::$idSite = self::createWebsite(self::$dateTimes[0], $ecommerce = 0, $siteName = 'Site AAAAAA');
self::$idSite2 =self::createWebsite(self::$dateTimes[0], $ecommerce = 0, $siteName = 'SITE BBbbBB');
} }
protected static function trackVisits() protected static function trackVisits()
...@@ -134,6 +158,16 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange extends I ...@@ -134,6 +158,16 @@ class Test_Piwik_Integration_OneVisitorOneWebsite_SeveralDaysDateRange extends I
$visitor->setUrl('http://example.org/news'); $visitor->setUrl('http://example.org/news');
$visitor->setUrlReferrer(self::$referrerUrls[$ridx++]); $visitor->setUrlReferrer(self::$referrerUrls[$ridx++]);
self::checkResponse($visitor->doTrackPageView('ou pas')); self::checkResponse($visitor->doTrackPageView('ou pas'));
if($i <= 3 ) {
$visitor = self::getTracker(self::$idSite2, $dateTime, $defaultInit = true);
$visitor->setForceVisitDateTime(Piwik_Date::factory($dateTime)->addHour(0.1)->getDatetime());
$visitor->setUrl('http://example.org/homepage');
$visitor->setUrlReferrer(self::$referrerUrls[$ridx-1]);
self::checkResponse($visitor->doTrackPageView('Second website'));
}
} }
} }
} }
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
</reportData> </reportData>
<reportMetadata> <reportMetadata>
<row> <row>
<idsubdatatable>6</idsubdatatable>
</row> </row>
</reportMetadata> </reportMetadata>
</result> </result>
\ No newline at end of file
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
</reportData> </reportData>
<reportMetadata> <reportMetadata>
<row> <row>
<idsubdatatable>6</idsubdatatable>
</row> </row>
</reportMetadata> </reportMetadata>
</result> </result>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<results> <result>
<result date="2010-12-10" /> <row>
<result date="2010-12-11" /> <label>Site AAAAAA</label>
<result date="2010-12-12" /> <nb_visits>2</nb_visits>
<result date="2010-12-13" /> <nb_actions>3</nb_actions>
<result date="2010-12-14"> <nb_pageviews>3</nb_pageviews>
<row> <revenue />
<label>Piwik test</label> <visits_evolution>0%</visits_evolution>
<nb_pageviews>3</nb_pageviews> <actions_evolution>0%</actions_evolution>
<nb_actions>3</nb_actions> <pageviews_evolution>0%</pageviews_evolution>
<nb_visits>2</nb_visits> <idsite>1</idsite>
<visits_evolution>100%</visits_evolution> </row>
<actions_evolution>100%</actions_evolution> </result>
<pageviews_evolution>100%</pageviews_evolution> \ No newline at end of file
<idsite>1</idsite>
</row>
</result>
<result date="2010-12-15">
<row>
<label>Piwik test</label>
<nb_pageviews>3</nb_pageviews>
<nb_actions>3</nb_actions>
<nb_visits>2</nb_visits>
<visits_evolution>0%</visits_evolution>
<actions_evolution>0%</actions_evolution>
<pageviews_evolution>0%</pageviews_evolution>
<idsite>1</idsite>
</row>
</result>
<result date="2010-12-16" />
</results>
\ No newline at end of file
...@@ -47,4 +47,39 @@ ...@@ -47,4 +47,39 @@
</result> </result>
<result date="2010-12-16" /> <result date="2010-12-16" />
</result> </result>
<result idSite="2">
<result date="2010-12-10" />
<result date="2010-12-11" />
<result date="2010-12-12" />
<result date="2010-12-13" />
<result date="2010-12-14">
<row>
<label>Facebook</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<url>facebook.com</url>
<logo>plugins/Referers/images/socials/facebook.com.png</logo>
</row>
</result>
<result date="2010-12-15">
<row>
<label>Twitter</label>
<nb_uniq_visitors>1</nb_uniq_visitors>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<url>twitter.com</url>
<logo>plugins/Referers/images/socials/twitter.com.png</logo>
</row>
</result>
<result date="2010-12-16" />
</result>
</results> </results>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<result>
<error message="Date format must be: YYYY-MM-DD, or 'today' or 'yesterday' or any keyword supported by the strtotime function (see http://php.net/strtotime for more information): 1970-01-01" />
</result>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<result> <result>
<row> <row>
<label>Piwik test</label> <label>Site AAAAAA</label>
<nb_visits>6</nb_visits> <nb_visits>6</nb_visits>
<nb_actions>9</nb_actions> <nb_actions>9</nb_actions>
<nb_pageviews>9</nb_pageviews> <nb_pageviews>9</nb_pageviews>
<revenue /> <revenue />
<idsite>1</idsite> <idsite>1</idsite>
</row> </row>
<row>
<label>SITE BBbbBB</label>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
<nb_pageviews>2</nb_pageviews>
<revenue />
<idsite>2</idsite>
</row>
</result> </result>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<result>
<nb_visits>6</nb_visits>
<nb_actions>9</nb_actions>
<nb_pageviews>9</nb_pageviews>
<revenue>0</revenue>
</result>
\ No newline at end of file
...@@ -74,4 +74,30 @@ ...@@ -74,4 +74,30 @@
<logo>plugins/Referers/images/socials/xanga.com.png</logo> <logo>plugins/Referers/images/socials/xanga.com.png</logo>
</row> </row>
</result> </result>
<result idSite="2">
<row>
<label>Twitter</label>
<nb_visits>2</nb_visits>
<nb_actions>2</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>2</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
<url>twitter.com</url>
<logo>plugins/Referers/images/socials/twitter.com.png</logo>
</row>
<row>
<label>Facebook</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<url>facebook.com</url>
<logo>plugins/Referers/images/socials/facebook.com.png</logo>
</row>
</result>
</results> </results>
\ No newline at end of file
...@@ -112,4 +112,39 @@ ...@@ -112,4 +112,39 @@
<url>http://xanga.com</url> <url>http://xanga.com</url>
</row> </row>
</result> </result>
<result defaultKeyName="2">
<row>
<label>t.co/id/?y=dsfs</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<url>http://t.co/id/?y=dsfs</url>
</row>
<row>
<label>twitter.com/whatever2</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<url>http://twitter.com/whatever2</url>
</row>
<row>
<label>www.facebook.com/another/path</label>
<nb_visits>1</nb_visits>
<nb_actions>1</nb_actions>
<max_actions>1</max_actions>
<sum_visit_length>0</sum_visit_length>
<bounce_count>1</bounce_count>
<nb_visits_converted>0</nb_visits_converted>
<sum_daily_nb_uniq_visitors>1</sum_daily_nb_uniq_visitors>
<url>http://www.facebook.com/another/path</url>
</row>
</result>
</results> </results>
\ No newline at end of file
...@@ -33,8 +33,8 @@ ...@@ -33,8 +33,8 @@
<nb_hits>The number of times this page was visited.</nb_hits> <nb_hits>The number of times this page was visited.</nb_hits>
<exit_rate>The percentage of visits that left the website after viewing this page.</exit_rate> <exit_rate>The percentage of visits that left the website after viewing this page.</exit_rate>
</metricsDocumentation> </metricsDocumentation>
<imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=CustomVariables&amp;apiAction=getCustomVariablesValuesFromNameId&amp;period=day&amp;date=2010-01-03&amp;idSubtable=9</imageGraphUrl> <imageGraphUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=CustomVariables&amp;apiAction=getCustomVariablesValuesFromNameId&amp;period=day&amp;date=2010-01-03&amp;idSubtable=</imageGraphUrl>
<imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=CustomVariables&amp;apiAction=getCustomVariablesValuesFromNameId&amp;period=day&amp;date=2009-12-05,2010-01-03&amp;idSubtable=9</imageGraphEvolutionUrl> <imageGraphEvolutionUrl>index.php?module=API&amp;method=ImageGraph.get&amp;idSite=1&amp;apiModule=CustomVariables&amp;apiAction=getCustomVariablesValuesFromNameId&amp;period=day&amp;date=2009-12-05,2010-01-03&amp;idSubtable=</imageGraphEvolutionUrl>
<uniqueId>CustomVariables_getCustomVariablesValuesFromNameId</uniqueId> <uniqueId>CustomVariables_getCustomVariablesValuesFromNameId</uniqueId>
</metadata> </metadata>
<columns> <columns>
......
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