=== Ad Fuz ===
Contributors: vinoth06, buffercode
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7DHAEMST475BY
Tags: ads, ad manager, ad spaces, campaigns, advertising
Requires at least: 6.0
Tested up to: 7.0
Stable tag: 1.0.12
Requires PHP: 8.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Manage your ads like a boss. AdFuz gives you full control, unmatched flexibility, and zero-compromise ad management — right inside WordPress.

== Description ==

**AdFuz** is a powerful WordPress ad management plugin built for publishers, developers, and site owners who demand full control over their advertising inventory — no third-party networks, no lock-in, no compromise.

> *Full Control. Unmatched. Zero-Compromise. Manage your ads like a boss.*

AdFuz gives you a structured, developer-grade workflow to create ads, schedule campaigns with precise date ranges, and serve them through defined ad spaces — all from your WordPress dashboard.

= 🎯 Ads =

Build and manage every ad in your inventory with precision.

* Multiple ad types: image, Video, HTML, and script/embed-based ads
* Upload media via the WordPress Media Library or use an external media URL
* Configurable call-to-action (CTA) with custom label, type, and position (left/right)
* Link behaviour control: open in same tab, new tab, or custom
* Ad status lifecycle: Draft → Pending → Active → Paused
* Hide or show ad title independently per ad

= 📅 Campaigns =

Schedule your campaigns and let AdFuz handle the rest.

* Group multiple ads into a single campaign
* Set a **start date** and **end date** to control exactly when a campaign runs
* Assign campaigns across multiple ad spaces simultaneously
* Campaign status lifecycle: Pending → Active → Expired
* Set a fallback ad that displays when no campaign is scheduled

= 📐 Ad Spaces =

Define your placement zones once — serve ads anywhere.

* Create named ad spaces with custom **width**, **height**, and **ad format**
* Control **display sequence** and **availability** per space
* Assign a fallback ad per space for guaranteed fill
* Embed ad spaces anywhere using a shortcode or PHP template function
* Manage all your placement zones from a single screen

= 🟦 Gutenberg Block =

AdFuz ships with a native Gutenberg block for placing ad spaces directly in the WordPress block editor.

1. Open any post, page, or block-based template in the editor
2. Click the **+** icon to add a new block and search for **AdFuz Ad Space**
3. Insert the **AdFuz Ad Space** block into your content
4. In the block's **Ad Space Settings** panel on the right, select the ad space you want to display
5. Save or publish — the selected ad space will render with its active campaign ads

No shortcodes or PHP required. The block respects all ad space settings including fallback ads and display sequence.

= Shortcode =

`[ad-fuz ad_space_id="AD_SPACE_ID"]`

= Template Function =

`<?php adfuz_adspace( 'AD_SPACE_ID' ); ?>`

== Installation ==

1. Upload the `adfuz` folder to `/wp-content/plugins/`, or install via **Plugins > Add New** in your WordPress admin.
2. Activate the plugin through the **Plugins** menu.
3. Go to **AdFuz** in your WordPress admin sidebar.
4. Create your first **Ad**, set up an **Ad Space**, then create a **Campaign** to connect them with a schedule.

== Frequently Asked Questions ==

= Does AdFuz work with any WordPress theme? =

Yes. AdFuz is completely theme-agnostic. Embed ad spaces using the shortcode `[ad-fuz ad_space_id]` or the `adfuz_adspace()` PHP function in any theme, template, or page builder.

= What ad types does AdFuz support? =

AdFuz supports image ads (via WordPress Media Library or external URL), Video ads, custom HTML ads, and script/embed-based ads — each with optional CTA configuration.

= How does campaign scheduling work? =

Each campaign has a **start date** and **end date**. AdFuz automatically transitions campaign status based on the schedule: Pending before the start date, Active during the window, and Expired after the end date.

= What happens when no campaign is active for an ad space? =

Each ad space supports a **fallback ad**. When no active campaign is targeting a space, the fallback ad is displayed automatically — ensuring your placements are never left blank.

= Can I show different ads in the same ad space? =

Yes. You can assign multiple campaigns to an ad space and control the display sequence. AdFuz manages which campaign is active based on the schedule.

= Is AdFuz GDPR-friendly? =

AdFuz does not transmit any data to external servers. All ads, campaigns, and configuration are stored locally in your WordPress database. No visitor data is shared.

= What are the minimum server requirements? =

* WordPress 6.0 or higher
* PHP 8.0 or higher
* MySQL 5.7 or MariaDB 10.3 (for JSON column support)


== Screenshots ==

1. **Ad Manager** — Create and manage all your ads with type, media, CTA, and status controls in one place.
2. **Campaign Manager** — Schedule campaigns with start and end dates, assign ads, and track status lifecycle.
3. **Ad Spaces** — Define named placement zones with dimensions, format, sequence, and fallback ads.

== Changelog ==
= 1.0.12 (2026-06-05) =
* New: Added Campaign Stats count

= 1.0.11 (2026-06-04) =
* New: Updated Campaign List page view to new UI

= 1.0.10 (2026-06-01) =
* Fix: Campaign Text mismatch with the UI.
* Code Refactored.

= 1.0.9 (2026-05-29) =
* New: Added CRON job to automatically move the Campaign to expired when it get expired based on the end_date.
* Fix: Delete Option key in Tools | Database Tools | WordPress options

= 1.0.8 =
* Public Release

= 1.0.2 =
* Fix: Ads Pagination.
* Fix: Campaign edit/create missing fields.

= 1.0.0 =
* Initial release of AdFuz — Full Control, Unmatched, Zero-Compromise Ad Manager
* Ads: Image, Video, HTML, and script ad types
* Campaigns: start date and end date scheduling with automatic status lifecycle
* Ad Spaces: named placement zones with dimensions, format, sequence, and fallback ads
* Shortcode `[ad-fuz ad_space_id]` and `adfuz_adspace()` template function
* Developer-ready hook architecture with QueryBuilder-based database layer

== Upgrade Notice ==

= 1.0.0 =
Initial release of AdFuz. Install to take full control of your WordPress ad management — ads, campaigns with date scheduling, and ad spaces, all in one place.

== Source Code & Build Tools ==

The JavaScript and CSS source code for AdFuz is bundled using Vite. The source code is available in the following locations:


* **JavaScript Source**: `assets/js/` directory in the source repository
* **CSS Source**: `assets/css/` directory in the source repository

### Build Instructions

To modify the source code and regenerate the production files:

1. Ensure you have Node.js (v18+) and npm installed.
2. Download the source code from WordPress Repository.
3. Install dependencies: `npm install`
4. Run the build: `npm run build` (for admin assets) or `npm run build:frontend` (for frontend assets)
5. The built files will be generated in `assets/public/` directory.

For development with hot-reload: `npm run dev`

== Source Code ==

This plugin's JavaScript and CSS are compiled using Vite and npm.
The uncompiled source files are included in the plugin under `assets/js/` and `assets/css/`.
Build configuration files (`vite.config.js`, `package.json`, `vite.config.frontend.js`, `tailwind.config.js`) are also included in the plugin root.

To build from source:
1. `npm install`
2. `npm run build-admin`    # builds admin JS/CSS
3. `npm run build-frontend` # builds frontend JS/CSS
   — or —
   `npm run build`           # builds both
