PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.2.0
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.2.0
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / Settings / Storage / Backend / SitesTable.php
matomo / app / core / Settings / Storage / Backend Last commit date
BackendInterface.php 2 years ago BaseSettingsTable.php 2 years ago Cache.php 2 years ago Config.php 2 years ago MeasurableSettingsTable.php 1 year ago NullBackend.php 2 years ago PluginSettingsTable.php 1 year ago SitesTable.php 2 years ago
SitesTable.php
91 lines
1 <?php
2
3 /**
4 * Matomo - free/libre analytics platform
5 *
6 * @link https://matomo.org
7 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
8 */
9 namespace Piwik\Settings\Storage\Backend;
10
11 use Piwik\Plugins\SitesManager\Model;
12 use Piwik\Site;
13 use Exception;
14 /**
15 * Backend for an existing site. Stores all settings in the "site" database table.
16 */
17 class SitesTable implements \Piwik\Settings\Storage\Backend\BackendInterface
18 {
19 /**
20 * @var int
21 */
22 private $idSite;
23 private $commaSeparatedArrayFields = array('sitesearch_keyword_parameters', 'sitesearch_category_parameters', 'excluded_user_agents', 'excluded_parameters', 'excluded_ips', 'excluded_referrers');
24 // these fields are standard fields of a site and cannot be adjusted via a setting
25 private $allowedNames = array('ecommerce', 'sitesearch', 'sitesearch_keyword_parameters', 'sitesearch_category_parameters', 'exclude_unknown_urls', 'excluded_ips', 'excluded_parameters', 'excluded_referrers', 'excluded_user_agents', 'keep_url_fragment', 'urls');
26 public function __construct($idSite)
27 {
28 if (empty($idSite)) {
29 throw new Exception('No idSite given for Measurable backend');
30 }
31 $this->idSite = (int) $idSite;
32 }
33 /**
34 * @inheritdoc
35 */
36 public function getStorageId()
37 {
38 return 'SitesTable_' . $this->idSite;
39 }
40 /**
41 * Saves (persists) the current setting values in the database.
42 */
43 public function save($values)
44 {
45 $model = $this->getModel();
46 foreach ($values as $key => $value) {
47 if (!in_array($key, $this->allowedNames)) {
48 unset($values[$key]);
49 continue;
50 }
51 if (is_array($value) && in_array($key, $this->commaSeparatedArrayFields)) {
52 $values[$key] = implode(',', $value);
53 } elseif (is_bool($value)) {
54 $values[$key] = (int) $value;
55 }
56 }
57 if (!empty($values['urls'])) {
58 $urls = array_unique($values['urls']);
59 $values['main_url'] = array_shift($urls);
60 $model->deleteSiteAliasUrls($this->idSite);
61 foreach ($urls as $url) {
62 $model->insertSiteUrl($this->idSite, $url);
63 }
64 }
65 unset($values['urls']);
66 $model->updateSite($values, $this->idSite);
67 Site::clearCacheForSite($this->idSite);
68 }
69 public function load()
70 {
71 if (!empty($this->idSite)) {
72 $site = Site::getSite($this->idSite);
73 $urls = $this->getModel();
74 $site['urls'] = $urls->getSiteUrlsFromId($this->idSite);
75 foreach ($this->commaSeparatedArrayFields as $field) {
76 if (!empty($site[$field]) && is_string($site[$field])) {
77 $site[$field] = explode(',', $site[$field]);
78 }
79 }
80 return $site;
81 }
82 }
83 private function getModel()
84 {
85 return new Model();
86 }
87 public function delete()
88 {
89 }
90 }
91