Skip to content
View as Markdown

Sanitize

FluentCrm\App\Services\Sanitize

The Sanitize class provides static methods for sanitizing data before it is saved to the database. Each method applies field-specific sanitization functions (e.g., sanitize_text_field, intval, sanitize_email, wp_kses_post) based on the data type.

php
use FluentCrm\App\Services\Sanitize;

campaign($data)

Sanitizes campaign data fields.

  • Parameters: array $data
  • Returns: array — Sanitized data

Field sanitization rules:

FieldFunction
titlesanitize_text_field
slugsanitize_text_field
template_idintval
email_subjectsanitize_text_field
email_pre_headersanitize_text_field
utm_statusintval
utm_source, utm_medium, utm_campaign, utm_term, utm_contentsanitize_text_field
scheduled_atsanitize_text_field
design_templatesanitize_text_field
php
$cleanData = Sanitize::campaign($request->all());

contact($data)

Sanitizes contact/subscriber data fields. Also validates that status is one of the allowed subscriber statuses.

  • Parameters: array $data
  • Returns: array — Sanitized data (with invalid status removed)

Field sanitization rules:

FieldFunction
first_name, last_name, prefixsanitize_text_field
emailsanitize_email
user_id, total_points, company_idintval
avataresc_url_raw
status, contact_type, phone, city, state, country, postal_code, timezone, date_of_birth, source, address_line_1, address_line_2, life_time_value, ip, latitude, longitudesanitize_text_field

Status validation: If status is not in fluentcrm_subscriber_statuses() (subscribed, pending, unsubscribed, bounced, complained), it is removed from the data.

php
$cleanData = Sanitize::contact([
    'email'      => '[email protected]',
    'first_name' => 'John',
    'status'     => 'subscribed'
]);

contactNote($data)

Sanitizes contact note data. Uses wp_kses_post for the description field to allow safe HTML.

  • Parameters: array $data
  • Returns: array

Field sanitization rules:

FieldFunction
subscriber_id, parent_idintval
created_by, status, type, titlesanitize_text_field
descriptionwp_kses_post
created_atsanitize_text_field

funnel($data)

Sanitizes automation funnel data.

  • Parameters: array $data
  • Returns: array

Field sanitization rules:

FieldFunction
type, title, trigger_name, statussanitize_text_field
created_byintval
updated_atsanitize_text_field

company($data)

Sanitizes company data. Also processes custom_values through the custom company field formatter.

  • Parameters: array $data
  • Returns: array

Field sanitization rules:

FieldFunction
name, industry, type, phone, city, state, country, postal_code, address_line_1, address_line_2sanitize_text_field
emailsanitize_email
owner_id, employees_numberintval
descriptionwp_kses_post
website, linkedin_url, facebook_url, twitter_url, logoesc_url_raw

If custom_values is present, it is formatted through CustomCompanyField::formatCustomFieldValues().

sanitizeTagIds($inputTagIds, $willCreate = true)

Converts a mixed array of tag inputs (numeric IDs or title strings) into an array of numeric tag IDs. Non-numeric values are looked up by title/slug; if not found and $willCreate is true, a new tag is created.

  • Parameters: array $inputTagIds, bool $willCreate (default: true)
  • Returns: array — Array of integer tag IDs
php
// Mix of IDs and titles
$tagIds = Sanitize::sanitizeTagIds([1, 'VIP', 'Newsletter']);
// [1, 5, 12] — existing ID kept, 'VIP' resolved to 5, 'Newsletter' created as 12

// Lookup only, don't create
$tagIds = Sanitize::sanitizeTagIds(['VIP', 'Unknown'], false);
// [5] — 'Unknown' skipped since it doesn't exist

INFO

Title strings shorter than 3 characters are skipped.

sanitizeListIds($inputListIds, $willCreate = true)

Same as sanitizeTagIds but for lists. Converts mixed list inputs to numeric list IDs.

  • Parameters: array $inputListIds, bool $willCreate (default: true)
  • Returns: array — Array of integer list IDs
php
$listIds = Sanitize::sanitizeListIds([2, 'Weekly Digest']);
// [2, 8]