/** * Update the social definitions * * @see https://github.com/piwik/searchengine-and-social-list */ public function updateSocials() { $url = 'https://raw.githubusercontent.com/piwik/searchengine-and-social-list/master/Socials.yml'; $list = Http::sendHttpRequest($url, 30); $socials = Social::getInstance()->loadYmlData($list); if (count($socials) < 50) { return; } Option::set(Social::OPTION_STORAGE_NAME, base64_encode(serialize($socials))); }
/** * @param int $idSite * @param string $period * @param string $date * @param string|false $segment * @param bool $expanded * @param DataTable $dataTable */ private function buildExpandedTableForFlattenGetSocials($idSite, $period, $date, $segment, $expanded, $dataTable) { $urlsTable = Archive::createDataTableFromArchive(Archiver::WEBSITES_RECORD_NAME, $idSite, $period, $date, $segment, $expanded, $flat = true); $urlsTable->filter('ColumnCallbackDeleteRow', array('label', function ($url) { return !Social::getInstance()->isSocialUrl($url); })); $urlsTable = $urlsTable->mergeSubtables(); foreach ($dataTable->getRows() as $row) { $row->removeSubtable(); $social = $row->getColumn('label'); $newTable = $urlsTable->getEmptyClone(); $rows = $urlsTable->getRows(); foreach ($rows as $id => $urlsTableRow) { $url = $urlsTableRow->getColumn('label'); if (Social::getInstance()->isSocialUrl($url, $social)) { $newTable->addRow($urlsTableRow); $urlsTable->deleteRow($id); } } if ($newTable->getRowsCount()) { $newTable->filter('Piwik\\Plugins\\Referrers\\DataTable\\Filter\\UrlsForSocial', array($expanded)); $row->setSubtable($newTable); } } Common::destroy($urlsTable); $urlsTable = null; }
/** * @group Plugins * * @dataProvider getLogoFromUrlTestData */ public function testGetLogoFromUrl($url, $expected) { $this->assertContains($expected, Social::getInstance()->getLogoFromUrl($url)); }