function test_API() { $dataTable = Piwik_SEO_API::getInstance()->getRank('http://forum.piwik.org/'); $renderer = Piwik_DataTable_Renderer::factory('php'); $renderer->setSerialize(false); $ranks = $renderer->render($dataTable); foreach ($ranks as $rank) { $this->assertTrue(!empty($rank['rank']), $rank['id'] . ' expected non-zero rank, got [' . $rank['rank'] . ']'); } }
/** * tell us when the API is broken * * @group Plugins * @group SEO */ public function test_API() { $dataTable = Piwik_SEO_API::getInstance()->getRank('http://www.microsoft.com/'); $renderer = Piwik_DataTable_Renderer::factory('php'); $renderer->setSerialize(false); $ranks = $renderer->render($dataTable); foreach ($ranks as $rank) { $this->assertNotEmpty($rank['rank'], $rank['id'] . ' expected non-zero rank, got [' . $rank['rank'] . ']'); } }
function test_allGetMethods() { // Executes all API methods get* and check for output // In this plugin, output is static and manually set in the API.php, but in other scripts, // one could generate fake inputs, and check that ouputs are processed as expected // @see tests/integration/ for more info $this->setApiToCall('ExampleAPI'); // Ignore the getPiwikVersion call which would otherwise fail at every new release $this->setApiNotToCall('ExampleAPI.getPiwikVersion'); $renderers = Piwik_DataTable_Renderer::getRenderers(); $this->callGetApiCompareOutput(__FUNCTION__, $renderers); }
function getRank() { $idSite = Piwik_Common::getRequestVar('idSite'); $site = new Piwik_Site($idSite); $url = urldecode(Piwik_Common::getRequestVar('url', '', 'string')); if (!empty($url) && strpos($url, 'http://') !== 0 && strpos($url, 'https://') !== 0) { $url = 'http://' . $url; } if (empty($url) || !Piwik_Common::isLookLikeUrl($url)) { $url = $site->getMainUrl(); } $dataTable = Piwik_SEO_API::getInstance()->getRank($url); $view = Piwik_View::factory('index'); $view->urlToRank = Piwik_SEO_RankChecker::extractDomainFromUrl($url); $renderer = Piwik_DataTable_Renderer::factory('php'); $renderer->setSerialize(false); $view->ranks = $renderer->render($dataTable); echo $view->render(); }
function getRank() { $idSite = Piwik_Common::getRequestVar('idSite'); $site = new Piwik_Site($idSite); $url = urldecode(Piwik_Common::getRequestVar('url', '', 'string')); if(empty($url) || @parse_url($url) === false) { $url = $site->getMainUrl(); } $dataTable = Piwik_SEO_API::getInstance()->getRank($url); $view = Piwik_View::factory('index'); $view->urlToRank = $url; $renderer = Piwik_DataTable_Renderer::factory('php'); $renderer->setSerialize(false); $view->ranks = $renderer->render($dataTable); echo $view->render(); }
/** * Render a multidimensional array to XML * * @static * @param $array can contain scalar, arrays, Piwik_DataTable and Piwik_DataTable_Array * @param int $level * @return string */ public static function convertMultiDimensionalArrayToXml($array, $level = 0) { $xml=""; foreach ($array as $key=>$value) { if(is_numeric($key)) { $key = "row"; } $key = str_replace(' ', '_', $key); $marginLeft = str_repeat("\t", $level + 1); switch(true) { // Case dimension is a PHP array case (is_array($value)): if(empty($value)) { $xml .= $marginLeft . "<$key/>\n"; } else { $xml.= $marginLeft . "<$key>\n". self::convertMultiDimensionalArrayToXml($value, $level + 1). "\n". $marginLeft . "</$key>\n"; } break; // Case dimension is a Piwik_DataTable_Array or a Piwik_DataTable case ($value instanceof Piwik_DataTable_Array || $value instanceof Piwik_DataTable): if($value->getRowsCount() == 0) { $xml .= $marginLeft . "<$key/>\n"; } else { $XMLRenderer = new Piwik_DataTable_Renderer_Xml(); $XMLRenderer->setTable($value); $renderedReport = $XMLRenderer->render(); $renderedReport = preg_replace("/<\?xml.*\?>\n/", "", $renderedReport); $markupToRemove = $value instanceof Piwik_DataTable_Array ? "results" : "result"; $renderedReport = preg_replace("/\n?<\/?". $markupToRemove .">\n?/", "", $renderedReport); // Add one level of margin to each line $renderedReport = $marginLeft . preg_replace("/\n/", "\n" . $marginLeft, $renderedReport); $xml.= $marginLeft . "<$key>\n"; $xml.= $renderedReport; $xml.= "\n" . $marginLeft . "</$key>\n"; } break; // Case scalar default: $xml.= $marginLeft . "<$key>".Piwik_DataTable_Renderer::formatValueXml($value)."</$key>\n"; break; } } return $xml; }
/** * Apply the specified renderer to the DataTable * * @param Piwik_DataTable * @return string */ protected function getRenderedDataTable($dataTable) { $format = strtolower($this->outputFormat); // if asked for original dataStructure if ($format == 'original') { // if the original dataStructure is a simpleDataTable // and has only one column, we return the value if ($dataTable instanceof Piwik_DataTable_Simple) { $columns = $dataTable->getFirstRow()->getColumns(); if (count($columns) == 1) { $values = array_values($columns); return $values[0]; } } // by default "original" data is not serialized if ($this->caseRendererPHPSerialize($defaultSerialize = 0)) { $dataTable = serialize($dataTable); } return $dataTable; } $renderer = Piwik_DataTable_Renderer::factory($format); $renderer->setTable($dataTable); $renderer->setRenderSubTables(Piwik_Common::getRequestVar('expanded', false, 'int', $this->request)); if ($format == 'php') { $renderer->setSerialize($this->caseRendererPHPSerialize()); $renderer->setPrettyDisplay(Piwik_Common::getRequestVar('prettyDisplay', false, 'int', $this->request)); } else { if ($format == 'html') { $renderer->setTableId($this->request['method']); } } return $renderer->render(); }
/** * Returns friendly php array from the Piwik_DataTable * @see Piwik_DataTable_Renderer_Php * @return array */ protected function getPHPArrayFromDataTable() { $renderer = Piwik_DataTable_Renderer::factory('php'); $renderer->setTable($this->dataTable); $renderer->setSerialize(false); // we get the php array from the datatable but conserving the original datatable format, // ie. rows 'columns', 'metadata' and 'idsubdatatable' $phpArray = $renderer->originalRender(); return $phpArray; }
function __construct($table = null) { parent::__construct($table); }
function __construct($table = null) { parent::__construct($table); $this->setPrefixRow('#'); }
/** * Apply the specified renderer to the DataTable * * @param Piwik_DataTable * @return string */ protected function getRenderedDataTable($dataTable) { // Renderer $format = Piwik_Common::getRequestVar('format', 'php', 'string', $this->requestToUse); $format = strtolower($format); // if asked for original dataStructure if ($format == 'original') { // if the original dataStructure is a simpleDataTable and has only one row, we return the value if ($dataTable instanceof Piwik_DataTable_Simple && $dataTable->getRowsCount() == 1) { return $dataTable->getRowFromId(0)->getColumn('value'); } // the original data structure can be asked as serialized. // but by default it's not serialized if ($this->caseRendererPHPSerialize($defaultSerialize = 0)) { $dataTable = serialize($dataTable); } return $dataTable; } $renderer = Piwik_DataTable_Renderer::factory($format); $renderer->setTable($dataTable); if ($format == 'php') { $renderer->setSerialize($this->caseRendererPHPSerialize()); } $toReturn = $renderer->render(); return $toReturn; }
protected function convertMultiDimensionalArrayToXml($array, $level = 0) { $xml = ""; foreach ($array as $key => $value) { if (is_numeric($key)) { $key = 'row'; } $key = str_replace(' ', '_', $key); $marginLeft = str_repeat("\t", $level + 1); if (is_array($value)) { if (empty($value)) { $xml .= $marginLeft . "<{$key}/>\n"; } else { $xml .= $marginLeft . "<{$key}>\n" . $this->convertMultiDimensionalArrayToXml($value, $level + 1) . "\n" . $marginLeft . "</{$key}>\n"; } } else { $xml .= $marginLeft . "<{$key}>" . Piwik_DataTable_Renderer::formatValueXml($value) . "</{$key}>\n"; } } return $xml; }
public function __construct($table = null, $serialize = true) { parent::__construct($table); $this->setSerialize($serialize); }