=== Zotero Notes ===
Contributors: janiko
Tags: zotero, footnotes, references, citation
Requires at least: 6.0
Requires PHP: 7.4
Tested up to: 7.1
Stable tag: 1.3.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Add footnote citations from a Zotero library, with a secure API connection and resilient caching.

== Description ==

= English =

Zotero Notes inserts numbered citations and a references list on individual posts or pages. It retrieves bibliographic data through the Zotero API over HTTPS with TLS certificate verification.

**Shortcode examples** (the shortcode name can be changed in Settings):

* `[zref]VP5PKI56[/zref]`
* `[zref name="source"]VP5PKI56[/zref]`
* `[zref name="source" /]` (reuse a previously named reference)

Configure your Zotero user ID and, for private libraries, your API key under Settings > Zotero Notes. The key is kept server-side; leaving the key field blank when editing settings preserves the saved value. The plugin does not modify article content in the database and preserves the historical shortcode and option keys.

**Cache and availability limitations**

* First retrieval requires Zotero API access and a valid user ID (plus an authorized API key for private libraries). Without a previous successful retrieval, no fallback copy is available.
* Successful responses remain fresh for 12 hours by default (configurable between 1 and 168 hours). After expiry, the plugin attempts to refresh them.
* During temporary network or API failures, the last successfully retrieved response may be displayed. **It can be outdated** and does not guarantee that the reference is current or still exists in Zotero. After a temporary failure, retries are delayed (currently five minutes).
* HTTP 401, 403 and 404 responses do not trigger the stale fallback. A manual purge removes fresh and last-known-good copies; Zotero must then be reachable to retrieve those references again.
* Changes made in Zotero are not pushed to the plugin instantly. If Zotero is unavailable and no valid cached response exists, the reference cannot be rendered.

= Français =

Zotero Notes ajoute des appels de notes numérotés et une bibliographie à la fin des articles et pages consultés individuellement. Les références proviennent de l'API Zotero, interrogée en HTTPS avec vérification du certificat TLS.

**Exemples de shortcodes** (le nom du shortcode peut être personnalisé dans les réglages) :

* `[zref]VP5PKI56[/zref]`
* `[zref name="source"]VP5PKI56[/zref]`
* `[zref name="source" /]` (réutilisation d'une référence nommée)

Renseignez l'identifiant Zotero et, pour une bibliothèque privée, la clé API dans Réglages > Zotero Notes. La clé reste côté serveur et laisser son champ vide lors de la modification des réglages préserve la valeur enregistrée. L'extension ne modifie pas les contenus en base de données et conserve les shortcodes et options historiques.

**Limites d'accès et de cache**

* La première récupération nécessite un accès à l'API Zotero, un identifiant valide et, pour les bibliothèques privées, une clé autorisée. Sans récupération préalable réussie, aucune copie de secours n'est disponible.
* Les réponses restent fraîches pendant 12 heures par défaut (durée réglable entre 1 et 168 heures). Passé ce délai, l'extension tente une actualisation.
* En cas d'échec temporaire du réseau ou de l'API, la dernière réponse valide peut être affichée. **Elle peut être périmée** et ne garantit ni l'actualité ni la présence de la référence dans Zotero. Les nouveaux essais sont espacés (actuellement cinq minutes).
* Les réponses HTTP 401, 403 et 404 ne déclenchent pas le repli sur la dernière valeur. Une purge manuelle efface les copies fraîches et les copies de secours : un nouvel accès à Zotero sera alors nécessaire.
* Les changements effectués dans Zotero ne sont pas répercutés instantanément. Sans accès à Zotero ni réponse conservée valide, la référence ne peut pas être affichée.

== Installation ==

= English =

1. Install and activate Zotero Notes.
2. Open Settings > Zotero Notes and enter your Zotero user ID and, where needed, API key.
3. Insert the shortcode into a post or page. Do not rename a shortcode already used in published content.

= Français =

1. Installez et activez Zotero Notes.
2. Ouvrez Réglages > Zotero Notes et renseignez votre identifiant Zotero et, si nécessaire, votre clé API.
3. Insérez le shortcode dans un article ou une page. Ne renommez pas un shortcode déjà utilisé dans des contenus publiés.

== Frequently Asked Questions ==

= Does the plugin require JavaScript? / L'extension utilise-t-elle JavaScript ? =

No. Rendering, HTTP requests and cache management are implemented in PHP.

Non. L'affichage, les requêtes HTTP et le cache sont gérés en PHP.

= Can I clear the cache? / Peut-on vider le cache ? =

Yes, in Settings > Zotero Notes. This also removes the last-known-good fallback copies.

Oui, depuis Réglages > Zotero Notes. Cela supprime également les dernières copies valides utilisées en secours.

= How quickly do Zotero updates appear? / Quand les changements Zotero apparaissent-ils ? =

A cached reference is refreshed after its freshness interval (12 hours by default). During a temporary outage, the previously saved value can remain visible.

Une référence conservée en cache est actualisée après sa durée de fraîcheur (12 heures par défaut). En cas d'indisponibilité temporaire, l'ancienne valeur peut rester affichée.

== Changelog ==

= 1.3.1 =
* Fixed bibliography formatting and restored the compact layout.
* Fixed ISO 8601 date formatting.
* Preserved theme-controlled link colors.

= 1.3.0 =
* Documented Zotero API access requirements, cache expiration and stale fallback limitations (English and French).
* Restored compact bibliography styling and historical quotation marks; normalized ISO timestamps into the site date format where unambiguous.
* Secure WordPress HTTP API requests with TLS certificate verification.
* Resilient cache with configurable freshness, manual purge and last-valid fallback.
* Safer HTML output, compatibility with PHP 8 and singular-only rendering.
* Kept existing shortcodes and the `zotero_notes_option_name` setting.
* Français : refonte du cache, sécurisation des appels HTTP et de l'affichage.

= 1.2.3 =
* Earlier security and escaping changes.

= 1.1.1 =
* Display rules modified.

= 1.0.3 =
* Language parameter updated.

= 1.0.2 =
* Added support for pages.

= 1.0.1 =
* Initial caching.

= 1.0.0 =
* First public release.
