# acymailing/trunk/back/dynamics/birthday/plugin.php

AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress, version trunk. 54 lines.

- Page: https://pluginprobe.com/plugins/acymailing/trunk/code/back/dynamics/birthday/plugin.php
- Raw: https://pluginprobe.com/plugins/acymailing/trunk/raw/back/dynamics/birthday/plugin.php
- Modified: 2026-08-03T10:18:54+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/acymailing/trunk/code/back/dynamics/birthday/plugin.php#L10-L20`.

```php
<?php
defined('ABSPATH') || die('Restricted Access');

use AcyMailing\Core\AcymPlugin;
use AcyMailing\Classes\FieldClass;

require_once __DIR__.DIRECTORY_SEPARATOR.'BirthdayAutomationTriggers.php';
require_once __DIR__.DIRECTORY_SEPARATOR.'BirthdayCampaignType.php';
require_once __DIR__.DIRECTORY_SEPARATOR.'BirthdayFollowup.php';

class plgAcymBirthday extends AcymPlugin
{
    use BirthdayAutomationTriggers;
    use BirthdayCampaignType;
    use BirthdayFollowup;

    public function onAcymProcessFilter_birthday(&$query, $options, $num = null)
    {
        if ($options['plugin'] !== get_class($this)) return;

        $dateToCheck = $this->processDateToCheck($options);

        $fieldClass = new FieldClass();
        $birthdayField = $fieldClass->getOneById((int)$options['field']);
        if (empty($birthdayField)) {
            // Prevent the campaign from being sent to everyone
            $query->where[] = '0 = 1';

            return;
        }

        $query->join['birthday_field'.$num] = '#__acym_user_has_field AS uf'.$num.' ON uf'.$num.'.user_id = user.id';
        $query->where[] = 'uf'.$num.'.field_id = '.intval($birthdayField->id);
        $query->where[] = 'uf'.$num.'.value LIKE '.acym_escapeDB('%'.date_format($dateToCheck, '-m-d'));
    }

    public function getBirthdayField(&$availableFields)
    {
        $fieldClass = new FieldClass();
        $dateFields = $fieldClass->getFieldsByType(['date']);
        foreach ($dateFields as $oneField) {
            $availableFields[$oneField->id] = acym_translation($oneField->name);
        }
    }

    public function getJsonBirthdayField()
    {
        $availableFields = [];
        $this->getBirthdayField($availableFields);
        echo json_encode(['fields' => $availableFields]);
        exit;
    }
}

```
