Xgenious/ docs
Products
Get support

Hook System Overview

Fundorex provides a comprehensive hook system for plugins to interact with core functionality without modifying core code. Hooks are divided into actions (do something) and filters (modify something).

Action Hooks

Actions allow plugins to trigger custom code at specific points in the application lifecycle.

Action Syntax

do_action('hook_name', $param1, $param2);

Available Action Hooks

Core Application Hooks

HookParametersDescriptionTiming
fundorex:app.bootednoneApplication has finished bootstrappingAfter core initialization
fundorex:app.shutdownnoneApplication is shutting downBefore application exit
fundorex:cache.clearednoneCache has been clearedAfter cache flush

User & Authentication Hooks

HookParametersDescriptionTiming
fundorex:user.created$userUser account createdAfter user creation
fundorex:user.updated$user, $oldUserUser profile updatedAfter profile update
fundorex:user.deleted$userIdUser account deletedAfter user deletion
fundorex:auth.login$user, $rememberUser logged inAfter successful login
fundorex:auth.logout$userUser logged outAfter logout

Campaign Hooks

HookParametersDescriptionTiming
fundorex:campaign.created$campaignCampaign createdAfter campaign creation
fundorex:campaign.updated$campaign, $oldCampaignCampaign updatedAfter campaign update
fundorex:campaign.published$campaignCampaign publishedWhen campaign goes live
fundorex:campaign.closed$campaignCampaign closedWhen campaign ends
fundorex:campaign.deleted$campaignIdCampaign deletedAfter campaign deletion

Contribution Hooks

HookParametersDescriptionTiming
fundorex:contribution.created$contribution, $campaignContribution receivedAfter successful payment
fundorex:contribution.processed$contributionContribution processedAfter processing completes
fundorex:contribution.refunded$contributionContribution refundedAfter refund

Admin Hooks

HookParametersDescriptionTiming
fundorex:admin.dashboard.render$dashboardAdmin dashboard renderingBefore dashboard display
fundorex:settings.saved$settings, $oldSettingsSettings updatedAfter settings save

Using Action Hooks

<?php

namespace MyVendor\MyPlugin;

use Illuminate\Support\ServiceProvider;

class PluginServiceProvider extends ServiceProvider
{
    public function boot()
    {
        // Listen to user creation
        add_action('fundorex:user.created', function($user) {
            Log::info('New user: ' . $user->email);
            // Send welcome email, assign default role, etc.
        });

        // Listen to campaign publication
        add_action('fundorex:campaign.published', function($campaign) {
            // Notify followers
            $campaign->notifyFollowers('Campaign published!');
        });
    }
}

Filter Hooks

Filters allow plugins to modify data before it's used.

Filter Syntax

$value = apply_filters('hook_name', $value, $param1, $param2);

Available Filter Hooks

Display Filters

HookParametersReturnDescription
fundorex:campaign.description$description, $campaignstringCampaign description text
fundorex:campaign.title$title, $campaignstringCampaign title
fundorex:user.display_name$name, $userstringUser display name
fundorex:email.subject$subject, $typestringEmail subject line
fundorex:email.body$body, $type, $contextstringEmail body content

Data Validation Filters

HookParametersReturnDescription
fundorex:campaign.validate$campaign, $rulesarrayCampaign validation rules
fundorex:user.validate$user, $rulesarrayUser validation rules
fundorex:contribution.validate$contribution, $rulesarrayContribution validation rules

Query Filters

HookParametersReturnDescription
fundorex:campaigns.query$queryQueryCampaign query builder
fundorex:users.query$queryQueryUser query builder
fundorex:contributions.query$queryQueryContribution query builder

Permission Filters

HookParametersReturnDescription
fundorex:user.can$can, $user, $ability, $resourceboolUser ability check
fundorex:permission.check$allowed, $user, $permissionboolPermission verification

Using Filter Hooks

<?php

namespace MyVendor\MyPlugin;

use Illuminate\Support\ServiceProvider;

class PluginServiceProvider extends ServiceProvider
{
    public function boot()
    {
        // Modify campaign description
        add_filter('fundorex:campaign.description', function($description, $campaign) {
            // Add campaign status badge
            $status = strtoupper($campaign->status);
            return $description . ' [' . $status . ']';
        }, 10, 2);

        // Add validation rule
        add_filter('fundorex:campaign.validate', function($rules, $campaign) {
            $rules['minimum_goal'] = 'required|numeric|min:100';
            return $rules;
        }, 10, 2);

        // Extend campaign query
        add_filter('fundorex:campaigns.query', function($query) {
            // Only published campaigns by default
            return $query->where('status', 'published');
        });
    }
}

Hook Priority

Control hook execution order with priority parameter (default: 10, lower = earlier):

add_action('fundorex:campaign.published', $callback, 5); // Runs first
add_action('fundorex:campaign.published', $callback, 10); // Runs second
add_action('fundorex:campaign.published', $callback, 15); // Runs third

Removing Hooks

Remove a previously registered hook:

remove_action('fundorex:campaign.published', 'plugin_callback_function', 10);
remove_filter('fundorex:campaign.title', 'plugin_filter_function', 10);

Hook Naming Convention

  • Actions: fundorex:{entity}.{event} (e.g., fundorex:campaign.published)
  • Filters: fundorex:{entity}.{property} (e.g., fundorex:campaign.title)

Deprecated Hooks

Note: This hooks reference reflects the current version. Hooks may change between versions. Always check Menus, Assets & Routes and Permissions, Settings & Data documentation for related integration points.

Next Steps

Still stuck?
Our support team is ready to help you get set up.
Get support