diff -uNr a/mp-wp/.htaccess b/mp-wp/.htaccess --- a/mp-wp/.htaccess 23164212887a9fa35d330f33bce2c3b96604e7331b79f2a0de7f8b845556cc06bc5fbee0b01b16e026461aa92302f92d971fbd39ec267528a65c421684226688 +++ b/mp-wp/.htaccess 1794794b2197805ec99a93d1e3269d6095ef597bb19229a41d5859f615e84ecbd3f2afb414bcb3bfc217e835c6b744a2cbef04b2ea1f36f45330d093227417c3 @@ -20,7 +20,7 @@ RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d -RewriteRule . /index.php [L] +RewriteRule . /index.php [QSA,L] # END WordPress diff -uNr a/mp-wp/manifest b/mp-wp/manifest --- a/mp-wp/manifest 04aa2a1054c2b9058b72d296e7edb0a53f0ed50f01496c228efb976e25805425f2b400e9db4affbfdb94d371ec253711eb4afff087e4f71e19f619b24aeed36d +++ b/mp-wp/manifest fddc8c4955ac87a3eec37c39c31a034296850c0647035ffd55e5f0a4e323f6dfb7fbbf6a6dd4aa66813020247accd6ea687dba8be9cf4915d1350a251e9a6c7d @@ -7,3 +7,4 @@ 605926 mp-wp_comments_filtering diana_coman Recent comments widget should show only people's comments (no track/pingbacks); theme default changed to show trackbacks/pingbacks as last/at the bottom in an article's comments list. 624752 mp-wp_remove-textselectionjs-pop3-etc jfw Remove the unreliable JS-based selection, posting by POP3 login, and a stray .php.orig file. Neutralize and comment the example pingback updater. 624752 mp-wp_svg-screenshots-and-errorreporting jfw Allow .svg extensions in theme screenshot search. Don't clobber the user's errorreporting level without WP_DEBUG. +624752 mp-wp_serverside-selection jfw Add server-side text selection to example htaccess and themes, roughly as seen in http://trilema.com/2019/proper-html-linking-the-crisis-the-solution-the-resolution-conclusion/ (xmlrpc.php changes not included) diff -uNr a/mp-wp/wp-content/themes/classic/functions.php b/mp-wp/wp-content/themes/classic/functions.php --- a/mp-wp/wp-content/themes/classic/functions.php 3bab13363bde3353a54fe95f13f3a597b911561dd0426d581b3ec6b39e68de3819c26d8df534662f47a2306554fd3e8b2ed61759f9eed4c0b0222e713bd79ca4 +++ b/mp-wp/wp-content/themes/classic/functions.php 2174140e03602f637904590cc0e88d18f826a0b4815032693a0572e452219e66339d414ee8a825d596bad3f6f54b8849ce62f6b07a6a5e81868cda32a2c36388 @@ -11,4 +11,18 @@ 'after_title' => '', )); +// This does the server-side selection +add_filter('the_content', 'server_side_selection'); + +function server_side_selection($content){ + $b_pos = strpos($content, $_GET["b"]); + $e_pos = strpos($content, $_GET["e"], $b_pos) + strlen($_GET["e"]); + // last to first to preserve indexes + if ($e_pos>0) + $content = substr_replace($content, '', $e_pos, 0); + if ($b_pos>0) + $content = substr_replace($content, '', $b_pos, 0); + return $content; +} + ?> diff -uNr a/mp-wp/wp-content/themes/default/functions.php b/mp-wp/wp-content/themes/default/functions.php --- a/mp-wp/wp-content/themes/default/functions.php 6399a2b7affebc933cdbbe699a806131411ed87dd6509b6ad68a679130b78f32aa628bc8045d95c7edcf7a3ca9217aa048f703fbed526c13f29070fc5dc5e0bb +++ b/mp-wp/wp-content/themes/default/functions.php ce4e91438f1136964dc138242a788cd8d1c0f2c92ffc68e8d8b647a369b882c555d7134bda572ef721cb46e0d842ec6a5bc36639126d0b36ba199252436d0f52 @@ -419,4 +419,20 @@ - +0) + $content = substr_replace($content, '', $e_pos, 0); + if ($b_pos>0) + $content = substr_replace($content, '', $b_pos, 0); + return $content; +} + +?>