Skip to content

Commit 9ae5e53

Browse files
return error string when trying to create optimized endpoint file
1 parent a5b6b2c commit 9ae5e53

File tree

144 files changed

+46
-23
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

144 files changed

+46
-23
lines changed

.browserslistrc

100644100755
File mode changed.

.editorconfig

100644100755
File mode changed.

.github/workflows/build-test-lint.yml

100644100755
File mode changed.

.github/workflows/check-php-syntax.yml

100644100755
File mode changed.

.gitignore

100644100755
File mode changed.

CHANGELOG.md

100644100755
File mode changed.

LICENSE

100644100755
File mode changed.

README.md

100644100755
File mode changed.

SECURITY.md

100644100755
File mode changed.

assets/src/css/dashboard.css

100644100755
File mode changed.

assets/src/github/lighthouse_accessibility.svg

100644100755
File mode changed.

assets/src/github/lighthouse_performance.svg

100644100755
File mode changed.

assets/src/img/apple-touch-icon.png

100644100755
File mode changed.

assets/src/img/banner-1544x500.png

100644100755
File mode changed.

assets/src/img/banner-772x250.png

100644100755
File mode changed.

assets/src/img/icon-128x128.png

100644100755
File mode changed.

assets/src/img/icon-192.png

100644100755
File mode changed.

assets/src/img/icon-256x256.png

100644100755
File mode changed.

assets/src/img/icon-512.png

100644100755
File mode changed.

assets/src/img/icon.svg

100644100755
File mode changed.

assets/src/img/screenshot-1-830x447.png

100644100755
File mode changed.

assets/src/img/screenshot-1.png

100644100755
File mode changed.

assets/src/img/screenshot-2.png

100644100755
File mode changed.

assets/src/img/screenshot-3.png

100644100755
File mode changed.

assets/src/img/screenshot-4.png

100644100755
File mode changed.

assets/src/img/screenshot-5.png

100644100755
File mode changed.

assets/src/img/screenshot-6.png

100644100755
File mode changed.

assets/src/js/dashboard-widget.js

100644100755
File mode changed.

assets/src/js/dashboard.js

100644100755
File mode changed.

assets/src/js/imports/chart.js

100644100755
File mode changed.

assets/src/js/koko-analytics-script-test.js

100644100755
File mode changed.

assets/src/js/query-loop-block.js

100644100755
File mode changed.

assets/src/js/script.js

100644100755
File mode changed.

assets/src/js/sw.js

100644100755
File mode changed.

assets/src/manifest.json

100644100755
File mode changed.

autoload.php

100644100755
File mode changed.

code-snippets/README.md

100644100755
File mode changed.

code-snippets/add-domains-to-referrer-blocklist.php

100644100755
File mode changed.

code-snippets/allow-editor-role.php

100644100755
File mode changed.

code-snippets/change-chart-colors.php

100644100755
File mode changed.

code-snippets/disable-custom-endpoint.php

100644100755
File mode changed.

code-snippets/disable-tracking-for-404s.php

100644100755
File mode changed.

code-snippets/disable-tracking-for-certain-ip-addresses.php

100644100755
File mode changed.

code-snippets/disable-tracking-on-certain-urls.php

100644100755
File mode changed.

code-snippets/event-snippets/README.md

100644100755
File mode changed.

code-snippets/event-snippets/bebop-theme-track-plays.js

100644100755
File mode changed.

code-snippets/event-snippets/track-browser-language.js

100644100755
File mode changed.

code-snippets/event-snippets/track-contact-form-7-submits.js

100644100755
File mode changed.

code-snippets/event-snippets/track-form-submits.js

100644100755
File mode changed.

code-snippets/event-snippets/track-gravity-form-submits.js

100644100755
File mode changed.

code-snippets/event-snippets/track-mailto-or-tel-link-clicks.js

100644100755
File mode changed.

code-snippets/event-snippets/track-ninja-forms-submit.js

100644100755
File mode changed.

code-snippets/event-snippets/track-outbound-link-clicks.js

100644100755
File mode changed.

code-snippets/event-snippets/track-screen-width.js

100644100755
File mode changed.

code-snippets/event-snippets/track-time-to-interactive.js

100644100755
File mode changed.

code-snippets/event-snippets/track-utm-parameters-all.js

100644100755
File mode changed.

code-snippets/event-snippets/track-utm-parameters.js

100644100755
File mode changed.

code-snippets/filter-default-option-value.php

100644100755
File mode changed.

code-snippets/filter-pageviews-column-days-setting.php

100644100755
File mode changed.

code-snippets/ignore-some-referrer-traffic-using-regex.php

100644100755
File mode changed.

code-snippets/ignore-tracking-for-certain-user-agents.php

100644100755
File mode changed.

code-snippets/modify-dashboard-widget/README.md

100644100755
File mode changed.

code-snippets/modify-dashboard-widget/img.png

100644100755
File mode changed.

code-snippets/track-pageview-from-single-page-app.js

100644100755
File mode changed.

code-snippets/use-different-custom-endpoint.php

100644100755
File mode changed.

composer.json

100644100755
File mode changed.

composer.lock

100644100755
File mode changed.

data/.htaccess

100644100755
File mode changed.

data/referrer-blocklist

100644100755
File mode changed.

eslint.config.mjs

100644100755
File mode changed.

migrations/1.0.1-change-table-charsets.php

100644100755
File mode changed.

migrations/1.0.2-change-column-types-add-cap-to-administrator.php

100644100755
File mode changed.

migrations/1.0.21-unlink-custom-endpoint-and-update-option.php

100644100755
File mode changed.

migrations/1.0.4-fix-referrer-id-column.php

100644100755
File mode changed.

migrations/1.0.6-ensure-referrer-urls-table-exists.php

100644100755
File mode changed.

migrations/1.0.8-fix-referrer-id-column-again.php

100644100755
File mode changed.

migrations/1.1.1-create-dates-table.php

100644100755
File mode changed.

migrations/1.3.12-delete-invalid-referrers.php

100644100755
File mode changed.

migrations/1.5.4-recreate-endpoints-file.php

100644100755
File mode changed.

migrations/1.6.3-schedule-aggregate-event.php

100644100755
File mode changed.

migrations/1.7.0-protect-uploads-dir.php

100644100755
File mode changed.

package-lock.json

100644100755
File mode changed.

package.json

100644100755
File mode changed.

phpcs.xml

100644100755
File mode changed.

phpunit.xml.dist

100644100755
File mode changed.

readme.txt

100644100755
File mode changed.

src/class-actions.php

100644100755
File mode changed.

src/class-admin-actions.php

100644100755
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ class Admin_Actions
1313
public static function install_optimized_endpoint(): void
1414
{
1515
$installer = new Endpoint_Installer();
16-
$success = $installer->install();
17-
wp_safe_redirect(add_query_arg(['endpoint-installed' => (int) $success], wp_get_referer()));
16+
$result = $installer->install();
17+
wp_safe_redirect(add_query_arg(['endpoint-installed' => $result], wp_get_referer()));
1818
exit;
1919
}
2020

src/class-admin-bar.php

100644100755
File mode changed.

src/class-admin-page.php

100644100755
File mode changed.

src/class-admin.php

100644100755
File mode changed.

src/class-burst-importer.php

100644100755
File mode changed.

src/class-chart-view.php

100644100755
File mode changed.

src/class-command.php

100644100755
File mode changed.

src/class-dashboard-widget.php

100644100755
File mode changed.

src/class-dashboard.php

100644100755
File mode changed.

src/class-data-exporter.php

100644100755
File mode changed.

src/class-data-importer.php

100644100755
File mode changed.

src/class-endpoint-installer.php

100644100755
Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -53,30 +53,46 @@ public function get_file_contents(): string
5353
EOT;
5454
}
5555

56-
public static function verify(): bool
56+
/**
57+
* @return string|bool
58+
*/
59+
public static function verify()
5760
{
58-
$works = self::verify_internal();
59-
update_option('koko_analytics_use_custom_endpoint', $works, true);
60-
return $works;
61+
$verification_result = self::verify_internal();
62+
update_option('koko_analytics_use_custom_endpoint', $verification_result === true, true);
63+
return $verification_result;
6164
}
6265

63-
private static function verify_internal(): bool
66+
/**
67+
* @return string|bool
68+
*/
69+
private static function verify_internal()
6470
{
6571
$tracker_url = site_url('/koko-analytics-collect.php?nv=1&p=0&up=1&test=1');
6672
$response = wp_remote_get($tracker_url);
6773
if (is_wp_error($response)) {
68-
return false;
74+
return __('Error requesting endpoint: ', 'koko-analytics') . join(', ', $response->get_error_messages());
6975
}
7076

7177
$status = wp_remote_retrieve_response_code($response);
7278
$headers = wp_remote_retrieve_headers($response);
7379

74-
return $status == 200
80+
// verify whether we get an expected response
81+
if (
82+
$status == 200
7583
&& isset($headers['Content-Type'])
76-
&& str_contains($headers['Content-Type'], 'text/plain');
84+
&& str_contains($headers['Content-Type'], 'text/plain')
85+
) {
86+
return true;
87+
}
88+
89+
return __('Endpoint did not return the expected response', 'koko-analytics');
7790
}
7891

79-
public function install(): bool
92+
/**
93+
* @return string|bool
94+
*/
95+
public function install()
8096
{
8197
/* If we made it this far we ideally want to use the custom endpoint file */
8298
/* Therefore we schedule a recurring health check event to periodically re-attempt and re-test */
@@ -90,21 +106,18 @@ public function install(): bool
90106
if (! is_file($file_name)) {
91107
$created = file_put_contents($file_name, $this->get_file_contents());
92108
if (! $created) {
93-
return false;
109+
return __('Error creating file', 'koko-analytics');
94110
}
95111
}
96112

97113
/* Send an HTTP request to the custom endpoint to see if it's working properly */
98-
$works = self::verify();
99-
if (! $works) {
100-
if (isset($created) && $created) {
101-
unlink($file_name);
102-
}
103-
return false;
114+
$verification_result = self::verify();
115+
if ($verification_result !== true && isset($created) && $created) {
116+
unlink($file_name);
104117
}
105118

106119
/* All looks good! Custom endpoint file exists and returns the correct response */
107-
return true;
120+
return $verification_result;
108121
}
109122

110123
public function is_eligibile(): bool

src/class-fmt.php

100644100755
File mode changed.

src/class-jetpack-importer.php

100644100755
File mode changed.

src/class-notice-pro.php

100644100755
File mode changed.

src/class-pageview-aggregator.php

100644100755
File mode changed.

src/class-plugin.php

100644100755
File mode changed.

src/class-pruner.php

100644100755
File mode changed.

src/class-query-loop-block.php

100644100755
File mode changed.

src/class-rest.php

100644100755
File mode changed.

src/class-script-loader.php

100644100755
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ private static function get_post_id(): int
6666

6767
private static function get_tracker_url(): string
6868
{
69+
// People can create their own endpoint and define it through this constant
6970
if (\defined('KOKO_ANALYTICS_CUSTOM_ENDPOINT') && KOKO_ANALYTICS_CUSTOM_ENDPOINT) {
7071
return site_url(KOKO_ANALYTICS_CUSTOM_ENDPOINT);
7172
}

src/class-shortcode-most-viewed-posts.php

100644100755
File mode changed.

src/class-shortcode-site-counter.php

100644100755
File mode changed.

src/class-stats.php

100644100755
File mode changed.

src/class-widget-most-viewed-posts.php

100644100755
File mode changed.

src/collect-functions.php

100644100755
File mode changed.

src/external-strings.php

100644100755
File mode changed.

src/functions.php

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ function using_custom_endpoint(): bool
146146
}
147147

148148
/** @see Endpoint_Installer::get_file_name() */
149-
return \is_file(\rtrim(ABSPATH, '/') . '/koko-analytics-collect.php') && (bool) get_option('koko_analytics_use_custom_endpoint', false);
149+
return \is_file(\rtrim(ABSPATH, '/') . '/koko-analytics-collect.php') && get_option('koko_analytics_use_custom_endpoint', 0);
150150
}
151151

152152
function create_local_datetime(string $timestr): \DateTimeImmutable

src/global-functions.php

100644100755
File mode changed.

src/template-functions.php

100644100755
File mode changed.

src/views/dashboard-page.php

100644100755
File mode changed.

src/views/dashboard-widget.php

100644100755
File mode changed.

src/views/nav.php

100644100755
File mode changed.

src/views/settings-page.php

100644100755
Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,19 @@
2727
<?php } ?>
2828

2929
<?php if (isset($_GET['endpoint-installed'])) { ?>
30-
<div class="notice notice-<?php echo $_GET['endpoint-installed'] ? 'success' : 'warning'; ?> is-dismissible">
31-
<p><?php echo $_GET['endpoint-installed'] ? esc_html__('Successfully installed optimized endpoint.', 'koko-analytics') : esc_html__('Unable to install optimized endpoint. Please create the file manually and then try again.', 'koko-analytics'); ?></p>
30+
<?php if ((int) $_GET['endpoint-installed']) { ?>
31+
<div class="notice notice-success is-dismissible">
32+
<p><?php esc_html_e('Successfully installed optimized endpoint.', 'koko-analytics'); ?></p>
33+
</div>
34+
<?php } else { ?>
35+
<div class="notice notice-warning is-dismissible">
36+
<p>
37+
<?php esc_html_e('Unable to install optimized endpoint: ', 'koko-analytics'); ?>
38+
<?php echo esc_html($_GET['endpoint-installed']); ?>
39+
</p>
3240
</div>
33-
<?php } ?>
41+
<?php } ?>
42+
<?php } // end if endpoint-installed ?>
3443

3544
<?php if (class_exists('Jetpack')) { ?>
3645
<div class="notice notice-info is-dismissible"><p><?php printf(__('We noticed you have Jetpack enabled. Do you want to <a href="%1$s">import your historical statistics data from JetPack stats into Koko Analytics</a>?', 'koko-analytics'), esc_attr(add_query_arg(['tab' => 'jetpack_importer']))); ?></p></div>

src/views/standalone.php

100644100755
File mode changed.

tests/AdminTest.php

100644100755
File mode changed.

tests/AggregatorTest.php

100644100755
File mode changed.

tests/DashboardTest.php

100644100755
File mode changed.

tests/DashboardWidgetTest.php

100644100755
File mode changed.

tests/EndpointInstallerTest.php

100644100755
File mode changed.

tests/FunctionsTest.php

100644100755
File mode changed.

tests/MigrationsTest.php

100644100755
File mode changed.

tests/PageviewAggregatorTest.php

100644100755
File mode changed.

tests/PluginTest.php

100644100755
File mode changed.

tests/PrunerTest.php

100644100755
File mode changed.

tests/RestTest.php

100644100755
File mode changed.

tests/ScriptLoaderTest.php

100644100755
File mode changed.

tests/StatsTest.php

100644100755
File mode changed.

tests/TemplateFunctionsTest.php

100644100755
File mode changed.

tests/benchmarks/functions.php

100644100755
File mode changed.

tests/benchmarks/plugin.php

100644100755
File mode changed.

tests/benchmarks/read-dir.php

100644100755
File mode changed.

tests/benchmarks/read-line.php

100644100755
File mode changed.

tests/bootstrap.php

100644100755
File mode changed.

tests/mocks.php

100644100755
File mode changed.

uninstall.php

100644100755
File mode changed.

webpack.config.js

100644100755
File mode changed.

0 commit comments

Comments
 (0)