diff options
Diffstat (limited to 'plugins')
-rwxr-xr-x | plugins/MultiSites/API.php | 4 | ||||
-rw-r--r-- | plugins/SitesManager/API.php | 33 | ||||
-rw-r--r-- | plugins/SitesManager/Model.php | 62 |
3 files changed, 75 insertions, 24 deletions
diff --git a/plugins/MultiSites/API.php b/plugins/MultiSites/API.php index fa0cf38aca..f64a673f23 100755 --- a/plugins/MultiSites/API.php +++ b/plugins/MultiSites/API.php @@ -17,6 +17,7 @@ use Piwik\Period\Range; use Piwik\Piwik; use Piwik\Plugins\Goals\Archiver; use Piwik\Plugins\SitesManager\API as APISitesManager; +use Piwik\Plugins\SitesManager\Model as ModelSitesManager; use Piwik\Site; use Piwik\TaskScheduler; @@ -171,7 +172,8 @@ class API extends \Piwik\Plugin\API // Both calls above have called Site::setSitesFromArray. We now get these sites: $sitesToProblablyAdd = Site::getSites(); } else if (is_array($idSitesOrIdSite)) { - $sitesToProblablyAdd = APISitesManager::getInstance()->getSitesFromIds($idSitesOrIdSite); + $model = new ModelSitesManager(); + $sitesToProblablyAdd = $model->getSitesFromIds($idSitesOrIdSite); } else { $sitesToProblablyAdd = array(APISitesManager::getInstance()->getSiteFromId($idSitesOrIdSite)); } diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php index 5c1702ad8b..8eca58f47b 100644 --- a/plugins/SitesManager/API.php +++ b/plugins/SitesManager/API.php @@ -180,14 +180,18 @@ class API extends \Piwik\Plugin\API public function getSiteFromId($idSite) { Piwik::checkUserHasViewAccess($idSite); - $site = Db::get()->fetchRow("SELECT * - FROM " . Common::prefixTable("site") . " - WHERE idsite = ?", $idSite); + + $site = $this->getModel()->getSiteFromId($idSite); Site::setSitesFromArray(array($site)); return $site; } + private function getModel() + { + return new Model(); + } + /** * Returns the list of alias URLs registered for the given idSite. * The website ID must be valid when calling this method! @@ -419,29 +423,12 @@ class API extends \Piwik\Plugin\API * @param bool $limit * @return array */ - public function getSitesFromIds($idSites, $limit = false) + private function getSitesFromIds($idSites, $limit = false) { - Piwik::checkUserHasViewAccess($idSites); - - if (count($idSites) === 0) { - return array(); - } - - if ($limit) { - $limit = "LIMIT " . (int)$limit; - } else { - $limit = ''; - } - - $idSites = array_map('intval', $idSites); - - $db = Db::get(); - $sites = $db->fetchAll("SELECT * - FROM " . Common::prefixTable("site") . " - WHERE idsite IN (" . implode(", ", $idSites) . ") - ORDER BY idsite ASC $limit"); + $sites = $this->getModel()->getSitesFromIds($idSites, $limit); Site::setSitesFromArray($sites); + return $sites; } diff --git a/plugins/SitesManager/Model.php b/plugins/SitesManager/Model.php new file mode 100644 index 0000000000..9e77f48888 --- /dev/null +++ b/plugins/SitesManager/Model.php @@ -0,0 +1,62 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + * + */ +namespace Piwik\Plugins\SitesManager; + +use Piwik\Db; +use Piwik\Common; +use Exception; + +class Model +{ + /** + * Returns the list of websites from the ID array in parameters. + * + * @param array $idSites list of website ID + * @param bool $limit + * @return array + */ + public function getSitesFromIds($idSites, $limit = false) + { + if (count($idSites) === 0) { + return array(); + } + + if ($limit) { + $limit = "LIMIT " . (int)$limit; + } else { + $limit = ''; + } + + $idSites = array_map('intval', $idSites); + + $db = Db::get(); + $sites = $db->fetchAll("SELECT * + FROM " . Common::prefixTable("site") . " + WHERE idsite IN (" . implode(", ", $idSites) . ") + ORDER BY idsite ASC $limit"); + + return $sites; + } + + /** + * Returns the website information : name, main_url + * + * @throws Exception if the site ID doesn't exist or the user doesn't have access to it + * @param int $idSite + * @return array + */ + public function getSiteFromId($idSite) + { + $site = Db::get()->fetchRow("SELECT * + FROM " . Common::prefixTable("site") . " + WHERE idsite = ?", $idSite); + + return $site; + } +} |