=== Crea Utile PDF and Page Search ===
Contributors: groupeweb
Tags: search, live search, pdf
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 0.5.3
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

French-made live search for pages, posts and PDF text, with independent forms, local indexing and visual controls.

== Description ==

Created in France by Créa Utile. The original interface is in French. WordPress translation hooks and a POT catalogue cover the administration, editor and public messages. A full French guide is included in readme-fr.txt.

Create independent search forms and insert them using the Crea Utile PDF and Page Search block or the [crea_utile_search] shortcode. Results appear below the field without leaving the page.

Choose published pages, posts and explicitly approved PDF files. Filter PDF files using dedicated categories and tags. Standard post categories and tags can also appear as links to their existing public archives. Internal PDF categories do not create public archive pages.

Each form has its own inclusions, exclusions, result limit, catalog link and new-tab setting. Customize its width, height, font family, spacing, border, rounded corners, colors and result details. Choose an icon, text or both for the button. An administrator preview updates without running searches.

The default font follows the site. Optional system fonts require no external downloads. Kadence palette variables are used when available, with configured fallback colors. For other themes, use custom colors when necessary.

This extension is free. No paid feature gate, external indexing service, visitor tracking or forced public branding is included. A small fox illustration appears only in the administration interface.

== Installation ==

1. Upload the ZIP through Plugins > Add New > Upload Plugin on a staging site.
2. Activate the extension and open Crea Utile PDF and Page Search.
3. Configure a published search form.
4. Select it in the block, or copy its shortcode. [crea_utile_search] uses the default form.
5. Test matching, empty results, keyboard navigation and links before replacing an existing search.

To update, upload the new ZIP and replace the installed version. Do not uninstall the plugin first. Deactivation retains configurations and the index.

== PDF indexing ==

Open Index des PDF, explicitly approve public documents and optionally add keywords and classifications. Save, then start processing pending files. WordPress scheduled tasks can also advance the queue. One file is processed at a time.

Choose the PDF source in the form and select its allowed documents. PDF results can open the file or its public parent presentation page, falling back to the file if no parent exists.

PDF extraction requires PHP mbstring, iconv and zlib. Files must be local uploads. No system command or external extraction API is used. Current limits are 10 MB, 200 pages and 1 MB of extracted text per file. Scanned files without embedded text and encrypted files are not supported. Processing failures remain visible and do not expose partial indexes.

Changes through WordPress media hooks requeue approved documents. A changed file size or modification date also invalidates its old index. Reindex manually after an external replacement that preserves both size and date.

== Filters and privacy ==

A blank filter means unrestricted within the selected sources. Terms within one filter use OR; separate category and tag filters use AND. Parent categories include child categories.

PDF classifications are independent from standard post classifications. Assigning a category never grants permission to search a document. Private or password-protected parent pages exclude their PDF files. Approval is checked again before returning results. Revoking approval removes the indexed entry, not the original media file.

Third-party file protection integrations require separate compatibility testing. Some known protection flags are checked, and developers can deny a file using the cuws_pdf_is_public filter. Do not approve confidential documents.

Search terms are sent to the site's own server. Hosting or other plugins may keep technical logs. This extension does not add visitor analytics or send files to an external provider.

== Current limits ==

This is a staging preview, not a WordPress.org-approved release. Fuzzy spelling correction, OCR and search statistics are not included. The original interface is in French. Translation hooks and a POT catalogue cover the public interface, administration and block editor. No additional language pack is bundled.

Form selectors list up to 100 forms. Term selectors show 200 terms and term searches examine up to 500 candidates. PDF searches examine at most 500 ranked candidates. Large libraries need additional load testing and pagination work.

The administrator preview is indicative. Actual theme fonts, colors and contrast must be checked on the front end. System-font presets are offered, not automatic enumeration of every third-party font.

== Third-party code and artwork ==

Smalot PDFParser 2.13.1 is included under LGPL-3.0. Its namespace is isolated to prevent conflicts. Sources and notices are included. See third-party-licenses.txt and vendor/pdfparser/LICENSE.txt.

Original extension code is GPL-2.0-or-later. The included administration fox illustration is distributed under GPL-2.0-or-later with the project owner’s permission. See ARTWORK-LICENSE.txt. This does not license the complete website mascot collection.

== Changelog ==
= 0.5.3 =
Distinctive project name and matching translation domain. Remove the unnecessary explicit translation loader. Existing search forms, shortcode, block, PDF index and settings retain their identifiers.

= 0.5.2 =
Align the plugin folder, translation domain and language catalogue with pdf-page-search. Correct Tested up to to 7.1. Stored configuration keys are preserved.

= 0.5.1 =
Remove the restricted WP prefix from the public name. Existing configuration identifiers are preserved.

= 0.5.0 =
New public name: PDF & Page Search. Existing form identifiers, shortcode, block and index are preserved. Artwork redistribution notices included. PDF titles decode HTML entities for plain-text display.

= 0.4.3 =
Keep the PDF REST route and HTML spacing outside translation. Add a regression test with every interface message translated.

= 0.4.2 =
Broader translation coverage, stable content type identifiers, explicit HTTP 403 for unauthorized PDF changes. Compatibility checks on Kadence, Astra and Twenty Twenty-Five. Local 750-document smoke test.

= 0.4.1 =
Accessible input fallback and result link names. Local setup help. Clear scheduled work on deactivation, resume pending files on activation. Purge the index when an authorization meta field is deleted. Keep settings, classifications and media files on uninstall.


= 0.4.0 =
Visual controls and live administrator preview. Form-name selector in the block. Main public messages prepared for translation. SQL ranks PDF candidates before loading their text into PHP memory.

= 0.3.0 =
PDF categories and tags, per-form taxonomy filters, standard category and tag result links.

= 0.2.0 =
Local PDF indexing, approval, extra keywords, queued extraction and configurable destinations.

= 0.1.0 =
Initial page and post search, independent forms, inline results and keyboard controls.
