=== Avatarly ===
Contributors: saumya010
Tags: avatar, profile picture, gravatar, user profile, upload
Requires at least: 6.3
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.0.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

No Gravatar account required: let users upload and manage a local custom avatar via their profile, a shortcode, a widget, or a Gutenberg block.

== Description ==

Avatarly adds a local, self-hosted avatar system to WordPress. Users can upload a profile picture directly on your site instead of relying on Gravatar, and site owners get full control over who's allowed to upload, how avatars look, and where uploads are permitted.

**Three ways to let users manage their avatar on the front end:**

* **Shortcode** — `[avatarly]`
* **Widget** — add the "Avatarly (Legacy)" widget to any sidebar (classic, non-block themes)
* **Gutenberg block** — search for "Avatarly" in the block inserter

Avatars can also always be managed from the standard WordPress **Edit Profile** screen.

**Key features**

* Local avatar storage — no data sent to Gravatar unless you choose to keep it as a fallback.
* Drag-and-drop / AJAX upload on the front end (progressively enhanced; falls back to a normal form for no-JS visitors).
* Built-in crop and reposition popup: drag to pan and use the zoom slider to frame the shot before saving, or skip it to use the automatic center crop.
* Strict upload validation: real MIME/extension checks, image verification, and file-size limits — not just a filename blacklist.
* Automatic EXIF/GPS metadata stripping from uploaded images.
* Fine-grained permissions: restrict uploads by capability and/or by specific roles.
* A dedicated **Styling** tab: size, shape (circle/rounded/square), border, shadow, accent color, and button text.
* Optional automatic cleanup of avatar files when a user account is deleted.
* Translation ready.

= Developer hooks =

* `avatarly_avatar_size` (filter) — change the avatar size used when generating a sized copy.
* `avatarly_avatar_data` (filter) — filter the final avatar data array.
* `avatarly_avatar_html` (filter) — filter the rendered `<img>` HTML.
* `avatarly_avatar_uploaded` (action) — fires after a successful upload.
* `avatarly_avatar_deleted` (action) — fires after an avatar is removed.

== Installation ==

1. Upload the `avatarly` folder to `/wp-content/plugins/`, or install it through the Plugins screen directly.
2. Activate the plugin through the "Plugins" screen in WordPress.
3. Visit **Settings → Avatarly** to configure permissions and styling.
4. Add the `[avatarly]` shortcode to a page, add the "Avatarly (Legacy)" widget to a sidebar, or insert the "Avatarly" block wherever logged-in users need to manage their avatar.

== Frequently Asked Questions ==

= Does this replace Gravatar entirely? =

No, by default it layers on top: if a user hasn't uploaded a local avatar, WordPress falls back to Gravatar (or your configured default) as usual. You can disable that fallback in Settings → Avatarly → General & Permissions.

= What image types are supported? =

JPG, PNG, GIF, and WebP.

= Can I choose which part of my photo is used? =

Yes. When you select or drop an image, a crop popup lets you drag to reposition and zoom before saving. Selecting "Skip" uploads the image with an automatic center crop instead.

= Can I restrict who is allowed to upload an avatar? =

Yes. Under Settings → Avatarly → General & Permissions you can require the `upload_files` capability and/or restrict uploads to specific roles.

= Where are avatar files stored? =

In `wp-content/uploads/avatarly/`, following WordPress's standard year/month upload structure.

= What happens to avatar files if I delete a user? =

By default nothing is deleted automatically. You can enable automatic cleanup on user deletion in the General & Permissions tab.

== Screenshots ==

1. Settings screen — General & Permissions tab.
2. Settings screen — Styling tab.
3. Front-end avatar upload form (shortcode/widget/block).
4. Avatarly block in the editor.

== Changelog ==

= 1.0.1 =
* Removed the Custom CSS settings field. Per WordPress.org plugin guidelines, plugins may not let users save arbitrary custom CSS/JS/PHP; all supported styling (size, shape, border, shadow, accent color) is already exposed as dedicated controls in Settings → Avatarly → Styling.

= 1.0.0 =
* Initial release, including a crop/reposition popup (drag to pan, zoom slider, skippable) for the front-end upload flow.

== Upgrade Notice ==

= 1.0.0 =
Initial release.
