getLoadedPluginsName(); foreach( $plugins as $plugin ) { $plugin = Piwik::unprefixClass($plugin); try { Piwik_API_Proxy::getInstance()->registerClass('Piwik_'.$plugin.'_API'); } catch(Exception $e){ } } } /** * Returns a HTML page containing help for all the successfully loaded APIs. * For each module it will return a mini help with the method names, parameters to give, * links to get the result in Xml/Csv/etc * * @return string */ public function getAllInterfaceString( $outputExampleUrls = true, $prefixUrls = '' ) { $str = ''; $token_auth = "&token_auth=" . Piwik::getCurrentUserTokenAuth(); $parametersToSet = array( 'idSite' => Piwik_Common::getRequestVar('idSite', 1, 'int'), 'period' => Piwik_Common::getRequestVar('period', 'day', 'string'), 'date' => Piwik_Common::getRequestVar('date', 'today', 'string') ); foreach(Piwik_API_Proxy::getInstance()->getMetadata() as $class => $info) { $moduleName = Piwik_API_Proxy::getInstance()->getModuleNameFromClassName($class); $str .= "\n

Module ".$moduleName."

"; foreach($info as $methodName => $infoMethod) { $params = $this->getStrListParameters($class, $methodName); $str .= "\n" . "- $moduleName.$methodName " . $params . ""; $str .= ''; if($outputExampleUrls) { // we prefix all URLs with $prefixUrls // used when we include this output in the Piwik official documentation for example $str .= ""; $exampleUrl = $this->getExampleUrl($class, $methodName, $parametersToSet); if($exampleUrl !== false) { $lastNUrls = ''; if( preg_match('/(&period)|(&date)/',$exampleUrl)) { $exampleUrlRss1 = $prefixUrls . $this->getExampleUrl($class, $methodName, array('date' => 'last10') + $parametersToSet) ; $exampleUrlRss2 = $prefixUrls . $this->getExampleUrl($class, $methodName, array('date' => 'last5','period' => 'week',) + $parametersToSet ); $lastNUrls = ", RSS of the last 10 days, 5 weeks, XML of the last 10 days"; } $exampleUrl = $prefixUrls . $exampleUrl ; $str .= " [ Example in XML, PHP, Json, Csv, Basic html $lastNUrls ]"; } else { $str .= " [ No example available ]"; } $str .= ""; } $str .= ''; $str .= "\n
"; } } return $str; } /** * Returns a string containing links to examples on how to call a given method on a given API * It will export links to XML, CSV, HTML, JSON, PHP, etc. * It will not export links for methods such as deleteSite or deleteUser * * @param string the class * @param methodName the method * @return string|false when not possible */ protected function getExampleUrl($class, $methodName, $parametersToSet = array()) { $knowExampleDefaultParametersValues = array( 'access' => 'view', 'userLogin' => 'test', 'passwordMd5ied' => 'passwordExample', 'email' => 'test@example.org', 'languageCode' => 'fr', ); foreach($parametersToSet as $name => $value) { $knowExampleDefaultParametersValues[$name] = $value; } // no links for these method names $doNotPrintExampleForTheseMethods = array( //Sites 'deleteSite', 'addSite', 'updateSite', 'addSiteAliasUrls', //Users 'deleteUser', 'addUser', 'updateUser', 'setUserAccess', //Goals 'addGoal', 'updateGoal', 'deleteGoal', ); if(in_array($methodName,$doNotPrintExampleForTheseMethods)) { return false; } // we try to give an URL example to call the API $aParameters = Piwik_API_Proxy::getInstance()->getParametersList($class, $methodName); $moduleName = Piwik_API_Proxy::getInstance()->getModuleNameFromClassName($class); $urlExample = '?module=API&method='.$moduleName.'.'.$methodName.'&'; foreach($aParameters as $nameVariable=> $defaultValue) { // if there isn't a default value for a given parameter, // we need a 'know default value' or we can't generate the link if($defaultValue instanceof Piwik_API_Proxy_NoDefaultValue) { if(isset($knowExampleDefaultParametersValues[$nameVariable])) { $exampleValue = $knowExampleDefaultParametersValues[$nameVariable]; $urlExample .= $nameVariable . '=' . $exampleValue . '&'; } else { return false; } } } return substr($urlExample,0,-1); } /** * Returns the methods $class.$name parameters (and default value if provided) as a string. * * @param string The class name * @param string The method name * @return string For example "(idSite, period, date = 'today')" */ protected function getStrListParameters($class, $name) { $aParameters = Piwik_API_Proxy::getInstance()->getParametersList($class, $name); $asParameters = array(); foreach($aParameters as $nameVariable=> $defaultValue) { $str = $nameVariable; if(!($defaultValue instanceof Piwik_API_Proxy_NoDefaultValue)) { $str .= " = '$defaultValue'"; } $asParameters[] = $str; } $sParameters = implode(", ", $asParameters); return "($sParameters)"; } }