PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 4.0.2
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v4.0.2
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 / config / config.php
matomo / config Last commit date
.htaccess 6 years ago common.config.ini.php 6 years ago config.php 5 years ago index.php 6 years ago
config.php
181 lines
1 <?php
2
3 if (!defined( 'ABSPATH')) {
4 exit; // if accessed directly
5 }
6
7 use Piwik\Cache;
8 use Piwik\Container\StaticContainer;
9 use Piwik\Option;
10 use Piwik\Plugin\API;
11 use WpMatomo\Capabilities;
12 use WpMatomo\Paths;
13 use WpMatomo\Settings;
14
15 return array(
16 'path.tmp' => function () {
17 $paths = new \WpMatomo\Paths();
18 return $paths->get_tmp_dir();
19 },
20 'path.misc.user' => function () {
21 $paths = new \WpMatomo\Paths();
22 return $paths->get_relative_dir_to_matomo($paths->get_upload_base_dir()) . '/';
23 },
24 'log.handlers' => array(), // required in the console
25 'EnableDbVersionCheck' => false,
26 'path.geoip2' => function () {
27 $paths = new \WpMatomo\Paths();
28 return $paths->get_gloal_upload_dir_if_possible('DBIP-City.mmdb') . '/';
29 },
30 // we want to avoid the regular monolog logger as it could interfere with other plugins maybe. for now lets use a
31 // custom logger
32 'Psr\Log\LoggerInterface' => DI\get('\Piwik\Plugins\WordPress\Logger'),
33 'TagManagerContainerStorageDir' => function () {
34 // the location where we store the generated javascript or json container files
35 $paths = new \WpMatomo\Paths();
36 return rtrim('/'. $paths->get_relative_dir_to_matomo($paths->get_upload_base_dir().'/'), '/');
37 },
38 'TagManagerContainerWebDir' => function () {
39 // the location where we store the generated javascript or json container files
40 $paths = new \WpMatomo\Paths();
41 return rtrim('/'. $paths->get_relative_dir_to_matomo($paths->get_upload_base_dir().'/'), '/');
42 },
43 'Piwik\Session\SessionAuth' => DI\autowire('Piwik\Plugins\WordPress\SessionAuth'),
44 'Piwik\Auth' => DI\autowire('Piwik\Plugins\WordPress\Auth'),
45 \Piwik\Config::class => DI\decorate(function ($previous) {
46
47 \Piwik\Plugins\TagManager\TagManager::$enableAutoContainerCreation = false;
48
49 if (defined('FORCE_SSL_ADMIN') && FORCE_SSL_ADMIN) {
50 $general = $previous->General;
51 $general['force_ssl'] = 1;
52 $general['assume_secure_protocol'] = 1;
53 $previous->General = $general;
54 }
55
56 $database = $previous->database;
57 $previous->database = \WpMatomo\Installer::get_db_infos($database);
58
59 $paths = new Paths();
60 if ( file_exists( $paths->get_config_ini_path() ) ) {
61 $general = $previous->General;
62
63 if (defined('MATOMO_TRIGGER_BROWSER_ARCHIVING')) {
64 $general['enable_browser_archiving_triggering'] = (int) MATOMO_TRIGGER_BROWSER_ARCHIVING;
65 }
66
67 $matomo_salt_key = Settings::OPTION_PREFIX . 'matomo_salt';
68 $matomo_salt = get_option($matomo_salt_key); // needs to be per site!
69 if (!$matomo_salt) {
70 $matomo_salt = \Piwik\Common::getRandomString(32);
71 update_option($matomo_salt_key, $matomo_salt, true);
72 }
73
74 $general['salt'] = $matomo_salt;
75
76 if (empty($general['trusted_hosts'])) {
77 $general['trusted_hosts'] = array();
78 }
79 if (!in_array(site_url(), $general['trusted_hosts'])) {
80 $general['trusted_hosts'][] = site_url();
81 }
82 $previous->General = $general;
83
84 if (empty($GLOBALS['MATOMO_SWITCH_BLOG_SET_UP'])) {
85 // only execute it once since we might init this several times...
86 $GLOBALS['MATOMO_SWITCH_BLOG_SET_UP'] = true;
87
88 add_action('switch_blog', function ($new_blog, $prev_blog) {
89 if ($new_blog == $prev_blog) {
90 return;
91 }
92 // ensure correct path to config is set, ensure to update tables_prefix etc.
93 $container = StaticContainer::getContainer();
94 $container->set(\Piwik\Application\Kernel\GlobalSettingsProvider::class, $container->make(\Piwik\Application\Kernel\GlobalSettingsProvider::class));
95 $container->set(\Piwik\Config::class, $container->make(\Piwik\Config::class));
96 Option::clearCache();
97 \Piwik\Site::clearCache();
98 Cache::getTransientCache()->flushAll();
99 API::unsetAllInstances();
100 }, 10, 2);
101 }
102 }
103
104 return $previous;
105 }),
106 'Piwik\Mail\Transport' => DI\autowire('WpMatomo\Email'),
107 'Piwik\Plugins\CustomJsTracker\TrackerUpdater' => DI\decorate(function ($previous) {
108 /** @var \Piwik\Plugins\CustomJsTracker\TrackerUpdater $previous */
109
110 $paths = new Paths();
111 $dir = $paths->get_matomo_js_upload_path();
112
113 $previous->setToFile($dir);
114
115 return $previous;
116 }),
117 'diagnostics.optional' => DI\decorate(function ($checks) {
118 foreach ($checks as $index => $check) {
119 if ($check && is_object($check)) {
120 $class_name = get_class($check);
121 if ($class_name === 'Piwik\Plugins\Diagnostics\Diagnostic\ForceSSLCheck'
122 || $class_name === 'Piwik\Plugins\Diagnostics\Diagnostic\LoadDataInfileCheck'
123 || $class_name === 'Piwik\Plugins\Diagnostics\Diagnostic\CronArchivingCheck'
124 || $class_name === 'Piwik\Plugins\Diagnostics\Diagnostic\FileIntegrityCheck') {
125 $checks[$index] = null;
126 }
127 }
128 }
129 return array_values(array_filter($checks));
130 }),
131 'observers.global' => DI\add(array(
132 array('FrontController.modifyErrorPage', DI\value(function (&$result, $ex) {
133 if (!empty($ex) && is_object($ex) && $ex instanceof \Piwik\Exception\NoWebsiteFoundException) {
134 // try to repair itself in case for some reason the site was not yet synced... on next reload it would
135 // then work
136 $sync = new \WpMatomo\Site\Sync(new Settings());
137 $sync->sync_current_site();
138 }
139 if (!empty($ex)
140 && is_object($ex)
141 && $ex instanceof \Piwik\Exception\NoPrivilegesException
142 && is_user_logged_in()) {
143 if (current_user_can(Capabilities::KEY_VIEW)) {
144 // some error... it looks like user should by synced but isn't yet
145 // could happen eg when in network activated mode the super admin changes permission and another
146 // user from a blog wants to access the UI while not all users are synced just yet
147 // try to repair itself in case for some reason the user was not yet synced... on next reload it would
148 // then work
149 $sync = new \WpMatomo\User\Sync();
150 $sync->sync_current_users();
151 }
152 }
153 })),
154 array('Db.getDatabaseConfig', DI\value(function (&$config) {
155 // we don't want to save these and instead detect them on demand.
156 // for security reasons etc we don't want to duplicate these values
157 include_once plugin_dir_path(MATOMO_ANALYTICS_FILE ) . 'classes/WpMatomo/Db/WordPress.php';
158 })),
159 array('Tracker.getDatabaseConfig', DI\value(function (&$configDb) {
160 // we don't want to save these and instead detect them on demand.
161 // for security reasons etc we don't want to duplicate these values
162 include_once plugin_dir_path(MATOMO_ANALYTICS_FILE ) . 'classes/WpMatomo/Db/WordPress.php';
163 })),
164 array('Config.beforeSave', DI\value(function (&$values) {
165 // we don't want to save these and instead detect them on demand.
166 // for security reasons etc we don't want to duplicate these values
167 unset($values['database']['host']);
168 unset($values['database']['username']);
169 unset($values['database']['password']);
170 unset($values['database']['dbname']);
171 unset($values['database']['tables_prefix']);
172 unset($values['database']['charset']);
173 unset($values['Plugins']);
174 unset($values['General']['enable_users_admin']);
175 unset($values['General']['enable_sites_admin']);
176 unset($values['General']['salt']);
177 })),
178 )),
179
180 );
181