Skip to content

Instantly share code, notes, and snippets.

@amirhmoradi
Created March 4, 2025 08:13
Show Gist options
  • Save amirhmoradi/a0ce7af23c9ace850a70e1a8b3941ab7 to your computer and use it in GitHub Desktop.
Save amirhmoradi/a0ce7af23c9ace850a70e1a8b3941ab7 to your computer and use it in GitHub Desktop.
Updated Full Perfex Hook List - For Perfex CRM Developers - Perfex CRM v3.2.1
# Updated Full Perfex Hook List - For Perfex CRM Developers - Perfex CRM v3.2.1
## File: <perfexcrm_root>/application/controllers/Authentication.php:
10: hooks()->do_action('clients_authentication_constructor', $this);
61: hooks()->do_action('after_contact_login');
217: hooks()->do_action('after_client_register', $clientid);
239: hooks()->do_action('after_client_register_logged_in', $clientid);
307: hooks()->do_action('before_user_reset_password', [
320: hooks()->do_action('after_user_reset_password', [
341: hooks()->do_action('after_client_logout');
## File: <perfexcrm_root>/application/controllers/Clients.php:
19: hooks()->do_action('after_clients_area_init', $this);
356: $total_tasks = hooks()->apply_filters('client_project_total_tasks', $total_tasks, $id);
363: $data['tasks_not_completed'] = hooks()->apply_filters('client_project_tasks_not_completed', $data['tasks_not_completed'], $id);
370: $data['tasks_completed'] = hooks()->apply_filters('client_project_tasks_completed', $data['tasks_completed'], $id);
534: $files_where = hooks()->apply_filters('customers_area_files_where', $files_where);
637: $defaultStatuses = hooks()->apply_filters('customers_area_list_default_ticket_statuses', [1, 2, 3, 4]);
1176: hooks()->do_action('before_remove_contact_profile_image', $id);
1226: $sessionData = hooks()->apply_filters('stripe_update_credit_card_session_data', $sessionData, $contact);
## File: <perfexcrm_root>/application/controllers/Contacts.php:
30: hooks()->do_action('after_clients_area_init', $this);
## File: <perfexcrm_root>/application/controllers/Contract.php:
56: $data['contract'] = hooks()->apply_filters('contract_html_pdf_data', $contract);
64: hooks()->do_action('contract_html_viewed', $id);
66: $data = hooks()->apply_filters('contract_customers_area_view_data', $data);
## File: <perfexcrm_root>/application/controllers/Cron.php:
17: $seconds = hooks()->apply_filters('cron_functions_execute_seconds', 300);
## File: <perfexcrm_root>/application/controllers/Download.php:
39: hooks()->do_action('before_output_preview_video');
83: hooks()->do_action('before_output_preview_image');
234: $path = hooks()->apply_filters('download_file_path', $path, [
## File: <perfexcrm_root>/application/controllers/Estimate.php:
67: $filename = hooks()->apply_filters('customers_area_download_estimate_filename', mb_strtoupper(slug_it($estimate_number), 'UTF-8') . '.pdf', $estimate);
83: $data['estimate'] = hooks()->apply_filters('estimate_html_pdf_data', $estimate);
92: hooks()->do_action('estimate_html_viewed', $id);
## File: <perfexcrm_root>/application/controllers/Forms.php:
182: hooks()->do_action('estimate_requests_created', [
246: hooks()->do_action('estimate_request_form_submitted', [
463: $task_data = hooks()->apply_filters('before_add_task', $task_data);
479: hooks()->do_action('after_add_task', $task_id);
505: hooks()->do_action('lead_created', [
581: hooks()->do_action('web_to_lead_form_submitted', [
681: hooks()->do_action('view_public_ticket', $ticket);
718: hooks()->add_action('app_customers_footer', 'ticket_public_form_customers_footer');
721: $navigationDisabled = hooks()->apply_filters('disable_navigation_on_public_ticket_view', true);
747: $form = hooks()->apply_filters('ticket_form_settings', $form);
805: $post_data = hooks()->apply_filters('ticket_external_form_insert_data', $post_data);
813: hooks()->do_action('ticket_form_submitted', [
## File: <perfexcrm_root>/application/controllers/Invoice.php:
12: $invoice = hooks()->apply_filters('before_client_view_invoice', $invoice);
72: $data['invoice'] = hooks()->apply_filters('invoice_html_pdf_data', $invoice);
77: hooks()->do_action('invoice_html_viewed', $id);
## File: <perfexcrm_root>/application/controllers/Knowledge_base.php:
15: hooks()->do_action('customers_area_knowledge_base_construct');
62: hooks()->add_action('app_customers_head', function () {
## File: <perfexcrm_root>/application/controllers/Migration.php:
212: $tables = hooks()->apply_filters('migration_tables_to_replace_old_links', $tables);
## File: <perfexcrm_root>/application/controllers/Proposal.php:
94: $data['proposal'] = hooks()->apply_filters('proposal_html_pdf_data', $proposal);
106: hooks()->do_action('proposal_html_viewed', $id);
108: $data = hooks()->apply_filters('proposal_customers_area_view_data', $data);
## File: <perfexcrm_root>/application/controllers/Subscription.php:
143: $sessionData = hooks()->apply_filters('stripe_subscription_session_data', $sessionData, $subscription_hash);
## File: <perfexcrm_root>/application/controllers/Verification.php:
51: hooks()->do_action('contact_email_verified_but_requires_admin_confirmation', $contact);
55: hooks()->do_action('contact_email_verified', $contact);
## File: <perfexcrm_root>/application/controllers/admin/Authentication.php:
28: hooks()->do_action('admin_auth_init');
87: hooks()->do_action('after_staff_login');
121: hooks()->do_action('after_staff_login');
132: hooks()->do_action('after_staff_login');
180: hooks()->do_action('before_user_reset_password', [
188: hooks()->do_action('after_user_reset_password', [
237: hooks()->do_action('after_user_logout');
## File: <perfexcrm_root>/application/controllers/admin/Auto_update.php:
14: hooks()->do_action('before_perform_update', $latest_version);
## File: <perfexcrm_root>/application/controllers/admin/Clients.php:
157: $data['vault_entries'] = hooks()->apply_filters('check_vault_entries_visibility', $this->clients_model->get_vault_entries($id));
648: hooks()->do_action('after_contact_login');
876: hooks()->do_action('before_do_bulk_action_for_customers');
## File: <perfexcrm_root>/application/controllers/admin/Dashboard.php:
55: $data['projects_activity'] = $this->projects_model->get_activity('', hooks()->apply_filters('projects_activity_dashboard_limit', 20));
86: $data = hooks()->apply_filters('before_dashboard_render', $data);
## File: <perfexcrm_root>/application/controllers/admin/Emails.php:
240: hooks()->do_action('before_send_test_smtp_email');
272: hooks()->do_action('smtp_test_email_success');
276: hooks()->do_action('smtp_test_email_failed');
## File: <perfexcrm_root>/application/controllers/admin/Estimates.php:
541: $fileNameHookData = hooks()->apply_filters('estimate_file_name_admin_area', [
## File: <perfexcrm_root>/application/controllers/admin/Expenses.php:
164: hooks()->do_action('before_do_bulk_action_for_expenses');
## File: <perfexcrm_root>/application/controllers/admin/Invoice_items.php:
172: hooks()->do_action('before_do_bulk_action_for_items');
## File: <perfexcrm_root>/application/controllers/admin/Invoices.php:
309: if (hooks()->apply_filters('validate_invoice_number', true)) {
341: if (hooks()->apply_filters('validate_invoice_number', true) && isset($invoice_data['number'])) {
682: $invoice = hooks()->apply_filters('before_admin_view_invoice_pdf', $invoice);
## File: <perfexcrm_root>/application/controllers/admin/Leads.php:
179: $data = hooks()->apply_filters('lead_view_data', $data);
605: hooks()->do_action('lead_converted_to_customer', ['lead_id' => $data['leadid'], 'customer_id' => $id]);
813: $fields = hooks()->apply_filters('lead_form_available_database_fields', $fields);
1269: hooks()->do_action('before_do_bulk_action_for_leads');
## File: <perfexcrm_root>/application/controllers/admin/Misc.php:
494: hooks()->do_action('before_change_maximum_number_of_digits_to_decimal_fields');
536: hooks()->do_action('before_change_decimal_places');
## File: <perfexcrm_root>/application/controllers/admin/Newsfeed.php:
371: hooks()->do_action('before_pin_post', $id);
381: hooks()->do_action('before_unpin_post', $id);
458: hooks()->do_action('before_delete_post', $postid);
## File: <perfexcrm_root>/application/controllers/admin/Projects.php:
266: $__total_where_tasks = hooks()->apply_filters('admin_total_project_tasks_where', $__total_where_tasks, $id);
350: $data['default_tickets_list_statuses'] = hooks()->apply_filters('default_tickets_list_statuses', [1, 2, 4]);
728: hooks()->do_action('before_do_bulk_action_for_project_files');
## File: <perfexcrm_root>/application/controllers/admin/Proposals.php:
358: hooks()->do_action('proposal_converted_to_estimate', ['proposal_id' => $id, 'estimate_id' => $estimate_id]);
390: hooks()->do_action('after_proposal_converted_to_invoice', ['proposal_id' => $id, 'invoice_id' => $invoice_id]);
## File: <perfexcrm_root>/application/controllers/admin/Settings.php:
34: hooks()->do_action('before_update_system_options', $post_data);
193: hooks()->do_action('before_remove_company_logo');
215: hooks()->do_action('before_remove_favicon');
## File: <perfexcrm_root>/application/controllers/admin/Staff.php:
31: hooks()->do_action('staff_member_edit_view_profile', $id);
123: hooks()->do_action('before_save_dashboard_widgets_order');
136: hooks()->do_action('before_save_dashboard_widgets_visibility');
152: hooks()->do_action('before_save_hidden_table_columns');
161: hooks()->do_action('before_staff_change_language', $lang);
209: hooks()->do_action('edit_logged_in_staff_profile');
247: hooks()->do_action('before_remove_staff_profile_image');
289: hooks()->do_action('staff_profile_access', $id);
443: hooks()->do_action('before_save_completed_checklist_visibility');
## File: <perfexcrm_root>/application/controllers/admin/Tasks.php:
146: $data = hooks()->apply_filters('before_update_task', [
153: hooks()->do_action('after_update_task', $id);
580: hooks()->do_action('task_checklist_item_finished', $listid);
882: $data = hooks()->apply_filters('before_update_task', ['priority' => $priority_id], $id);
889: hooks()->do_action('after_update_task', $id);
931: $data = hooks()->apply_filters('before_update_task', [
938: hooks()->do_action('after_update_task', $task_id);
1106: $data = hooks()->apply_filters('before_update_task', [
1112: hooks()->do_action('after_update_task', $id);
1118: hooks()->do_action('before_do_bulk_action_for_tasks');
## File: <perfexcrm_root>/application/controllers/admin/Tickets.php:
62: $data['default_tickets_list_statuses'] = hooks()->apply_filters('default_tickets_list_statuses', [1, 2, 4]);
729: hooks()->do_action('before_do_bulk_action_for_tickets');
## File: <perfexcrm_root>/application/controllers/admin/Utilities.php:
272: $opts = hooks()->apply_filters('before_init_media', $opts);
365: $data['bulk_pdf_export_available_features'] = hooks()->apply_filters(
## File: <perfexcrm_root>/application/controllers/gateways/Stripe.php:
213: hooks()->do_action('customer_subscribed_to_subscription', $dbSubscription);
## File: <perfexcrm_root>/application/core/AdminController.php:
13: hooks()->do_action('pre_upgrade_database');
21: hooks()->do_action('pre_admin_init');
73: hooks()->do_action('admin_init');
90: $vars = hooks()->apply_filters('admin_area_auto_loaded_vars', $vars);
## File: <perfexcrm_root>/application/core/App_Controller.php:
93: hooks()->do_action('app_init');
## File: <perfexcrm_root>/application/core/App_Loader.php:
22: $hook_data = hooks()->apply_filters('app_view_data', ['data' => $_ci_vars, 'path' => $_ci_view]);
## File: <perfexcrm_root>/application/core/App_Model.php:
22: hooks()->do_action('model_init', $this);
## File: <perfexcrm_root>/application/core/App_Security.php:
19: $exclude_uris = hooks()->apply_filters(
## File: <perfexcrm_root>/application/helpers/admin_helper.php:
10: hooks()->do_action('app_admin_head');
25: hooks()->do_action('app_admin_footer');
155: return hooks()->apply_filters('staff_can', $retVal, $capability, $feature, $staff_id);
161: return hooks()->apply_filters('staff_can', true, $capability, $feature, $staff_id);
165: return hooks()->apply_filters('staff_can', false, $capability, $feature, $staff_id);
238: hooks()->do_action('after_load_admin_language', $language);
337: $classes = hooks()->apply_filters('admin_body_class', $classes);
577: hooks()->add_action('ticket_created', [new PopupMessage('app\services\messages\FirstTicketCreated'), 'check']);
578: hooks()->add_action('lead_created', [new PopupMessage('app\services\messages\FirstLeadCreated'), 'check']);
579: hooks()->add_action('new_tag_created', [new PopupMessage('app\services\messages\FirstTagCreated'), 'check']);
580: hooks()->add_action('task_timer_started', [new PopupMessage('app\services\messages\StartTimersWithNoTasks'), 'check']);
581: hooks()->add_action('task_checklist_item_created', [new PopupMessage('app\services\messages\ReOrderTaskChecklistItems'), 'check']);
582: hooks()->add_action('smtp_test_email_success', [new PopupMessage('app\services\messages\MailConfigured'), 'check']);
586: hooks()->add_action('before_start_render_dashboard_content', '_maybe_show_just_updated_message');
588: hooks()->add_action('before_start_render_dashboard_content', [new Message('app\services\messages\ModSecurityEnabled'), 'check']);
590: hooks()->add_action('before_start_render_dashboard_content', [new Message('app\services\messages\StaticIndexHtml'), 'check']);
592: hooks()->add_action('before_start_render_dashboard_content', [new Message('app\services\messages\DevelopmentEnvironment'), 'check']);
594: hooks()->add_action('before_start_render_dashboard_content', [new Message('app\services\messages\IsCronSetupRequired'), 'check']);
596: hooks()->add_action('before_start_render_dashboard_content', [new Message('app\services\messages\IsBaseUrlChangeRequired'), 'check']);
598: hooks()->add_action('before_start_render_dashboard_content', [new Message('app\services\messages\Timezone'), 'check']);
600: hooks()->add_action('before_start_render_dashboard_content', [new Message('app\services\messages\CloudFlare'), 'check']);
602: hooks()->add_action('before_start_render_dashboard_content', [new Message('app\services\messages\Iconv'), 'check']);
604: hooks()->add_action('before_start_render_dashboard_content', [new Message('app\services\messages\DatabaseNameHasDot'), 'check']);
606: hooks()->add_action('before_start_render_dashboard_content', [new Message('app\services\messages\TcpdfFileMissing'), 'check']);
608: hooks()->add_action('before_start_render_dashboard_content', [new Message('app\services\messages\CronJobFailure'), 'check']);
610: hooks()->add_action('before_start_render_dashboard_content', [new Message('app\services\messages\PhpVersionNotice'), 'check']);
## File: <perfexcrm_root>/application/helpers/assets_helper.php:
5: hooks()->add_action('admin_auth_init', 'init_admin_auth_assets');
6: hooks()->add_action('app_admin_assets', '_init_admin_assets');
10: hooks()->do_action('app_admin_assets');
16: hooks()->do_action('app_client_assets');
18: hooks()->do_action('app_client_assets_added');
98: hooks()->do_action('app_admin_assets_added');
## File: <perfexcrm_root>/application/helpers/clients_helper.php:
83: return hooks()->apply_filters('is_client_id_used', $total > 0 ? true : false, $id);
94: return hooks()->apply_filters('customer_has_subscriptions', total_rows(db_prefix() . 'subscriptions', ['clientid' => $id]) > 0);
167: return hooks()->apply_filters('client_filtered_visible_tabs', $newTabs);
437: return hooks()->apply_filters('is_client_using_multiple_currencies', $retVal, [
776: hooks()->do_action('after_load_client_language', $language);
807: return hooks()->apply_filters('customer_have_transactions', $total > 0, $id);
850: return hooks()->apply_filters('get_contact_permissions', $permissions);
1242: return hooks()->apply_filters('all_client_attachments', $attachments, $id);
1363: return hooks()->apply_filters('automatic_calling_codes_enabled', true);
## File: <perfexcrm_root>/application/helpers/core_hooks_helper.php:
8: hooks()->add_filter('check_vault_entries_visibility', '_check_vault_entries_visibility');
9: hooks()->add_filter('register_merge_fields', 'core_merge_fields');
14: hooks()->add_action('clients_init', '_maybe_add_estimate_request_link_in_customers_area');
15: hooks()->add_action('non_existent_user_login_attempt', '_maybe_user_is_trying_to_login_into_the_clients_area_as_staff');
16: hooks()->add_action('clients_login_form_start', '_maybe_mistaken_login_area_check_performed');
18: hooks()->add_action('new_ticket_admin_page_loaded', 'ticket_message_save_as_predefined_reply_javascript');
19: hooks()->add_action('ticket_admin_single_page_loaded', 'ticket_message_save_as_predefined_reply_javascript');
21: hooks()->add_action('database_updated', 'app_set_update_message_info');
22: hooks()->add_action('before_update_database', 'app_set_pipe_php_permissions');
23: hooks()->add_action('admin_init', 'app_init_admin_sidebar_menu_items');
24: hooks()->add_action('admin_init', 'app_init_customer_profile_tabs');
25: hooks()->add_action('admin_init', 'app_init_project_tabs');
26: hooks()->add_action('admin_init', 'app_init_settings_tabs');
27: hooks()->add_action('admin_init', '_maybe_set_identification_key');
30: hooks()->add_action('app_admin_head', 'csrf_jquery_token');
31: hooks()->add_action('app_customers_head', 'csrf_jquery_token');
32: hooks()->add_action('app_external_form_head', 'csrf_jquery_token');
33: hooks()->add_action('elfinder_tinymce_head', 'csrf_jquery_token');
88: $link = hooks()->apply_filters(
## File: <perfexcrm_root>/application/helpers/countries_helper.php:
11: return hooks()->apply_filters('all_countries', get_instance()->db->order_by('short_name', 'asc')->get(db_prefix().'countries')->result_array());
## File: <perfexcrm_root>/application/helpers/credit_notes_helper.php:
52: return hooks()->apply_filters('invoices_statuses_available_for_credits', [
108: return hooks()->apply_filters('format_credit_note_number', $number, [
## File: <perfexcrm_root>/application/helpers/custom_fields_helper.php:
68: && (!defined('CLIENTS_AREA') || hooks()->apply_filters('show_custom_fields_edit_link_on_clients_area', false))) {
498: $whereSQL = hooks()->apply_filters('items_custom_fields_for_table_sql', $whereSQL);
508: $where = hooks()->apply_filters('custom_fields_where_items_table_add_edit_preview', []);
## File: <perfexcrm_root>/application/helpers/database_helper.php:
94: $data = hooks()->apply_filters('notification_data', $data);
108: hooks()->do_action('notification_created', $notification_id);
## File: <perfexcrm_root>/application/helpers/datatables_helper.php:
82: $sOrder .= hooks()->apply_filters('datatables_query_order_column', 'CAST(' . $columnName . ' as DECIMAL(10, ' . get_decimal_places() . '))', $sTable);
84: $sOrder .= hooks()->apply_filters('datatables_query_order_column', 'CAST(' . $columnName . ' as DATE)', $sTable);
86: $sOrder .= hooks()->apply_filters('datatables_query_order_column', 'CAST(' . $columnName . ' as DATETIME)', $sTable);
88: $sOrder .= hooks()->apply_filters('datatables_query_order_column', $columnName, $sTable);
134: $useMatchForCustomFieldsTableSearch = hooks()->apply_filters('use_match_for_custom_fields_table_search', 'false');
257: $rResult = hooks()->apply_filters(
310: return hooks()->apply_filters('null_columns_sort_as_last', $columns);
407: return hooks()->apply_filters('datatables_language_array', $lang);
## File: <perfexcrm_root>/application/helpers/deprecated_helper.php:
14: hooks()->do_action('deprecated_function_run', $function, $replacement, $version);
23: if (ENVIRONMENT != 'production' && hooks()->apply_filters('deprecated_function_trigger_error', true)) {
36: hooks()->do_action('deprecated_hook_run', $hook, $replacement, $version, $message);
43: if (ENVIRONMENT != 'production' && hooks()->apply_filters('deprecated_hook_trigger_error', true)) {
67: if (hooks()->has_filter('admin_body_class', '_add_has_deprecated_errors_admin_body_class')) {
71: hooks()->add_filter('admin_body_class', '_add_has_deprecated_errors_admin_body_class');
141: return hooks()->apply_filters('project_status_color_class', $class, $id);
171: $hook_data = hooks()->apply_filters('project_status_label', ['id' => $id, 'label' => $label]);
461: return hooks()->apply_filters('client_email_templates', $templates);
508: return hooks()->apply_filters('staff_email_templates', $templates);
575: return hooks()->apply_filters('email_template_language', $language, ['template_slug' => $template_slug, 'email' => $email]);
697: $rate = hooks()->apply_filters(
740: $itemHTML .= hooks()->apply_filters('item_tax_table_row', $item_tax, [
748: $itemHTML .= hooks()->apply_filters('item_tax_table_row', '0%', [
764: $item_amount_with_quantity = hooks()->apply_filters(
805: return hooks()->apply_filters('before_return_table_items_html_and_taxes', $result, [
916: return hooks()->apply_filters('money_after_format_with_currency', $formattedWithCurrency, [
1058: return hooks()->apply_filters('staff_permissions_conditions', [
1237: hooks()->add_filter('get_option', '_check_deprecated_calendar_view_name_option', 10, 2);
1238: hooks()->add_filter('get_option', '_check_removed_number_padding_option_name', 10, 2);
## File: <perfexcrm_root>/application/helpers/email_templates_helper.php:
72: return hooks()->apply_filters('email_template_parsed', $template);
## File: <perfexcrm_root>/application/helpers/emails_tracking_helper.php:
5: hooks()->add_filter('after_parse_email_template_message', 'email_tracking_inject_in_body');
18: hooks()->add_action('email_template_sent', 'add_email_tracking');
76: return hooks()->apply_filters('available_tracking_templates', $slugs);
## File: <perfexcrm_root>/application/helpers/estimates_helper.php:
116: return hooks()->apply_filters('estimate_status_pdf_color', $statusColor, $status_id);
165: return hooks()->apply_filters('estimate_status_label', $status, $id);
202: return hooks()->apply_filters('estimate_status_color_class', $class, $id);
246: return hooks()->apply_filters('format_estimate_number', $number, [
## File: <perfexcrm_root>/application/helpers/files_helper.php:
123: return hooks()->apply_filters(
488: $extensions = hooks()->apply_filters('markdown_extensions', $extensions);
507: $markDownSafeMode = hooks()->apply_filters('mark_down_safe_mode', 'true');
617: return hooks()->apply_filters('delete_old_temporary_files_older_than', 1800); // 30 minutes is default
## File: <perfexcrm_root>/application/helpers/func_helper.php:
133: return hooks()->apply_filters('sec2qty_formatted', $qty, $sec);
## File: <perfexcrm_root>/application/helpers/general_helper.php:
42: hooks()->do_action('before_generate_short_link', $data);
85: hooks()->do_action('before_archive_short_link', $link);
318: $format = hooks()->apply_filters('get_current_date_format', $format, $php);
527: return hooks()->apply_filters('available_date_formats', $date_formats);
579: $hook_data = hooks()->apply_filters('before_get_language_text', ['line' => $line, 'label' => $label]);
598: $hook_data = hooks()->apply_filters('after_get_language_text', ['line' => $line, 'formatted_line' => $_line]);
646: return hooks()->apply_filters('after_format_date', $formatted, $date);
691: return hooks()->apply_filters('after_format_datetime', $date, ['original' => $original, 'is_timesheet' => $is_timesheet]);
711: $date = hooks()->apply_filters('before_sql_date_format', $date, [
722: return hooks()->apply_filters(
749: return hooks()->apply_filters('to_sql_date_formatted', $d);
800: return hooks()->apply_filters('before_get_locales', $locales);
813: return hooks()->apply_filters('before_get_locale', $locale);
836: hooks()->do_action('before_pusher_trigger_notification', $users);
959: $regex = hooks()->apply_filters('app_happy_text_regex', '\b(congratulations!?|congrats!?|happy!?|feel happy!?|awesome!?|yay!?)\b');
962: $app_happy_color = hooks()->apply_filters('app_happy_text_color', 'rgb(255, 59, 0)');
## File: <perfexcrm_root>/application/helpers/invoices_helper.php:
293: return hooks()->apply_filters('invoice_status_pdf_color', $statusColor, $status_id);
390: hooks()->do_action('invoice_status_changed', ['invoice_id' => $id, 'status' => $status]);
467: return hooks()->apply_filters('format_invoice_number', $number, [
## File: <perfexcrm_root>/application/helpers/leads_helper.php:
5: hooks()->add_action('app_admin_head', 'leads_app_admin_head_data');
## File: <perfexcrm_root>/application/helpers/misc_helper.php:
68: return hooks()->apply_filters('system_favourite_colors', $colors);
123: return hooks()->apply_filters('acceptance_info_array', $data, $empty);
203: return hooks()->apply_filters('alert_class', $alert_class);
428: return hooks()->apply_filters('scheduled_email_default_date', date('Y-m-d 08:00', strtotime('+1 day')));
## File: <perfexcrm_root>/application/helpers/modules_helper.php:
14: hooks()->add_action('activate_' . $module . '_module', $function);
26: hooks()->add_action('deactivate_' . $module . '_module', $function);
38: hooks()->add_action('uninstall_' . $module . '_module', $function);
89: hooks()->add_action('after_cron_run', $function);
120: hooks()->add_filter('staff_permissions', function ($permissions) use ($feature_id, $config, $name) {
178: if (hooks()->has_action('app_client_assets', $function)) {
182: return hooks()->add_action('app_client_assets', $function, 1);
272: hooks()->add_action('after_load_admin_language', $languageLoader);
273: hooks()->add_action('after_load_client_language', $languageLoader);
290: * When an action hook is deprecated, the hooks()->do_action() call is replaced with hooks()->do_action_deprecated(),
293: * @param array $args Array of additional function arguments to be passed to hooks()->do_action().
300: if (!hooks()->has_action($tag)) {
306: hooks()->do_action_ref_array($tag, $args);
311: * When a filter hook is deprecated, the hooks()->apply_filters() call is replaced with hooks()->apply_filters_deprecated(),
313: * Note: the value and extra arguments passed to the original hooks()->apply_filters() call must be passed here to $args as an array. For example:
319: * @param array $args Array of additional function arguments to be passed to hooks()->apply_filters().
326: if (!hooks()->has_filter($tag)) {
332: return hooks()->apply_filters_ref_array($tag, $args);
## File: <perfexcrm_root>/application/helpers/payment_gateways_helper.php:
13: $width = hooks()->apply_filters('payment_gateway_logo_width', 'auto');
14: $height = hooks()->apply_filters('payment_gateway_logo_height', '34px');
32: $logoURL = hooks()->apply_filters('payment_gateway_logo_url', $logoURL);
81: $html .= hooks()->apply_filters('payment_gateway_head', '') . PHP_EOL;
104: $html .= hooks()->apply_filters('payment_gateway_scripts', '') . PHP_EOL;
114: $html = hooks()->apply_filters('payment_gateway_footer', '') . PHP_EOL;
## File: <perfexcrm_root>/application/helpers/pdf_helper.php:
34: hooks()->do_action('load_pdf_language', ['language' => $language]);
70: return hooks()->apply_filters('pdf_logo_url', $logoImage);
99: return hooks()->apply_filters('pdf_fonts_list', $fontlist);
140: return hooks()->apply_filters('pdf_format_array', $data, $option_name);
232: $path = hooks()->apply_filters("{$type}_pdf_class_path", $path, ...$params);
## File: <perfexcrm_root>/application/helpers/pre_query_data_formatters_helper.php:
5: hooks()->add_filter('before_update_invoice', '_format_data_sales_feature');
6: hooks()->add_filter('before_invoice_added', '_format_data_sales_feature');
8: hooks()->add_filter('before_estimate_updated', '_format_data_sales_feature');
9: hooks()->add_filter('before_estimate_added', '_format_data_sales_feature');
11: hooks()->add_filter('before_create_credit_note', '_format_data_sales_feature');
12: hooks()->add_filter('before_update_credit_note', '_format_data_sales_feature');
14: hooks()->add_filter('before_create_proposal', '_format_data_sales_feature');
15: hooks()->add_filter('before_proposal_updated', '_format_data_sales_feature');
17: hooks()->add_filter('before_client_added', '_format_data_client');
18: hooks()->add_filter('before_client_updated', '_format_data_client', 10, 2);
19: hooks()->add_filter('before_update_contact', '_format_data_client', 10, 2);
20: hooks()->add_filter('before_create_contact', '_format_data_client');
## File: <perfexcrm_root>/application/helpers/projects_helper.php:
5: hooks()->add_action('app_admin_assets', '_maybe_init_admin_project_assets', 5);
228: return hooks()->apply_filters('project_filtered_visible_tabs', $newTabs);
## File: <perfexcrm_root>/application/helpers/proposals_helper.php:
154: return hooks()->apply_filters('proposal_number_format', $format, $id);
## File: <perfexcrm_root>/application/helpers/relation_helper.php:
145: $data = hooks()->apply_filters('get_relation_data', $data, compact('type', 'rel_id', 'extra'));
331: return hooks()->apply_filters('relation_values', [
413: $_data = hooks()->apply_filters('init_relation_options', $_data, compact('data', 'type', 'rel_id'));
## File: <perfexcrm_root>/application/helpers/sales_helper.php:
69: return hooks()->apply_filters('number_after_format', $formatted, [
145: return hooks()->apply_filters('app_format_money', $formattedWithCurrency, [
188: return hooks()->apply_filters('ajax_on_total_items', 200);
272: return hooks()->apply_filters('info_format_custom_field', $result, [
338: $companyName = hooks()->apply_filters('customer_info_format_company_name', $companyName, $filterData);
416: return hooks()->apply_filters('customer_info_text', $format, $filterData);
489: return hooks()->apply_filters('proposal_info_text', $format, ['proposal' => $proposal, 'for' => $for]);
527: return hooks()->apply_filters('organization_info_text', $format);
538: return hooks()->apply_filters('app_decimal_places', 2);
812: $class = hooks()->apply_filters('items_table_class', $class, $transaction, $type, $for, $admin_preview);
840: return hooks()->apply_filters('sales_number_format', $number, [
## File: <perfexcrm_root>/application/helpers/sms_helper.php:
5: hooks()->add_action('admin_init', 'maybe_test_sms_gateway');
36: hooks()->add_action('admin_init', '_maybe_sms_gateways_settings_group');
54: hooks()->add_action('app_init', 'app_init_sms_gateways');
66: $gateways = hooks()->apply_filters('sms_gateways', $gateways);
## File: <perfexcrm_root>/application/helpers/staff_helper.php:
178: return hooks()->apply_filters('staff_permissions', $corePermissions, $data);
358: $totalRecentSearches = hooks()->apply_filters('total_recent_searches', 5);
## File: <perfexcrm_root>/application/helpers/subscriptions_helper.php:
94: $new_invoice_data = hooks()->apply_filters('subscription_invoice_data', $new_invoice_data);
173: return hooks()->apply_filters('subscription_statuses', [
## File: <perfexcrm_root>/application/helpers/table_helper.php:
5: hooks()->add_action('admin_init', function () {
## File: <perfexcrm_root>/application/helpers/tasks_helper.php:
19: $status_name = e(hooks()->apply_filters('task_status_name', $status_name, $status));
43: return hooks()->apply_filters('tasks_priorities', [
323: $table_data = hooks()->apply_filters('tasks_related_table_columns', $table_data);
555: return hooks()->apply_filters('before_get_task_timer_round_off_options', $options);
567: return hooks()->apply_filters('before_get_task_timer_round_off_times', [5, 10, 15, 20, 25, 30, 35, 40, 45]);
## File: <perfexcrm_root>/application/helpers/template_helper.php:
14: if (empty($content) || hooks()->apply_filters('html_purify_content', true) === false) {
34: // $regex = hooks()->apply_filters('html_purify_safe_iframe_regexp', '%^(https?:)?//(www\.youtube(?:-nocookie)?\.com/embed/|player\.vimeo\.com/video/)%');
47: hooks()->apply_filters('html_purifier_config', $config);
306: hooks()->do_action('app_external_form_head');
324: $logoURL = hooks()->apply_filters('logo_href', $logoURL);
336: $logo = hooks()->apply_filters('company_logo', $logo);
417: return hooks()->apply_filters('admin_header_logo_url', $url);
## File: <perfexcrm_root>/application/helpers/themes_helper.php:
16: hooks()->add_action('app_customers_head', '_inject_no_index');
136: hooks()->do_action('app_customers_footer');
154: hooks()->do_action('app_customers_head');
162: return hooks()->apply_filters('customers_theme_assets_url', base_url('assets/themes/' . get_option('clients_default_theme'))) . '/';
171: return hooks()->apply_filters('customers_theme_assets_path', 'assets/themes/' . get_option('clients_default_theme'));
180: return hooks()->apply_filters('terms_and_condition_url', site_url('terms-and-conditions'));
188: return hooks()->apply_filters('privacy_policy_url', site_url('privacy-policy'));
## File: <perfexcrm_root>/application/helpers/tickets_helper.php:
137: return hooks()->apply_filters('show_ticket_submitter_on_clients_area_table', $show_submitter_on_table);
168: return hooks()->apply_filters('clients_area_tickets_summary', $statuses);
192: $forbidden = hooks()->apply_filters('forbidden_ticket_statuses_to_change_in_clients_area', [3, 4]);
## File: <perfexcrm_root>/application/helpers/upload_helper.php:
13: $hookData = hooks()->apply_filters('before_handle_estimate_request_attachment', [
51: hooks()->do_action('before_upload_estimate_request_attachment', $estimateRequestId);
121: $hookData = hooks()->apply_filters('before_handle_newsfeed_post_attachments', [
145: hooks()->do_action('before_upload_newsfeed_attachment', $postid);
188: $hookData = hooks()->apply_filters('before_handle_project_file_uploads', [
205: hooks()->do_action('before_upload_project_attachment', $project_id);
311: $hookData = hooks()->apply_filters('before_handle_contract_attachment', [
329: hooks()->do_action('before_upload_contract_attachment', $id);
362: $hookData = hooks()->apply_filters('before_handle_lead_attachment', [
430: $hookData = hooks()->apply_filters('before_handle_task_attachments_array', [
500: $hookData = hooks()->apply_filters('before_handle_sales_attachments', [
584: $hookData = hooks()->apply_filters('before_handle_client_attachment', [
614: hooks()->do_action('before_upload_client_attachment', $id);
667: $hookData = hooks()->apply_filters('before_handle_expense_attachment', [
684: hooks()->do_action('before_upload_expense_attachment', $id);
713: $hookData = hooks()->apply_filters('before_handle_ticket_attachment', [
732: hooks()->do_action('before_upload_ticket_attachment', $ticketid);
788: $hookData = hooks()->apply_filters('before_handle_company_logo_upload', [
797: hooks()->do_action('before_upload_company_logo_attachment');
815: hooks()->apply_filters('company_logo_upload_allowed_extensions', $allowed_extensions)
854: $hookData = hooks()->apply_filters('before_handle_company_signature_upload', [
866: hooks()->do_action('before_upload_signature_image_attachment');
908: $hookData = hooks()->apply_filters('before_handle_favicon_upload', [
920: hooks()->do_action('before_upload_favicon_attachment');
957: $hookData = hooks()->apply_filters('before_handle_staff_profile_image_upload', [
970: hooks()->do_action('before_upload_staff_profile_image');
984: $allowed_extensions = hooks()->apply_filters('staff_profile_image_upload_allowed_extensions', $allowed_extensions);
1002: $config['width'] = hooks()->apply_filters('staff_profile_image_thumb_width', 320);
1003: $config['height'] = hooks()->apply_filters('staff_profile_image_thumb_height', 320);
1011: $config['width'] = hooks()->apply_filters('staff_profile_image_small_width', 96);
1012: $config['height'] = hooks()->apply_filters('staff_profile_image_small_height', 96);
1037: $hookData = hooks()->apply_filters('before_handle_contact_profile_image_upload', [
1050: hooks()->do_action('before_upload_contact_profile_image');
1068: $allowed_extensions = hooks()->apply_filters('contact_profile_image_upload_allowed_extensions', $allowed_extensions);
1086: $config['width'] = hooks()->apply_filters('contact_profile_image_thumb_width', 320);
1087: $config['height'] = hooks()->apply_filters('contact_profile_image_thumb_height', 320);
1095: $config['width'] = hooks()->apply_filters('contact_profile_image_small_width', 32);
1096: $config['height'] = hooks()->apply_filters('contact_profile_image_small_height', 32);
1130: $hookData = hooks()->apply_filters('before_handle_project_discussion_comment_attachment', [
1145: hooks()->do_action('before_upload_project_discussion_comment_attachment');
1357: return hooks()->apply_filters('get_upload_path_by_type', $path, $type);
## File: <perfexcrm_root>/application/helpers/widgets_helper.php:
68: return hooks()->apply_filters('get_dashboard_widgets', $widgets);
## File: <perfexcrm_root>/application/hooks/InitHook.php:
55: hooks()->do_action('modules_loaded');
## File: <perfexcrm_root>/application/hooks/InitModules.php:
23: hooks()->add_filter('csrf_exclude_uris', function ($current) use ($uris) {
## File: <perfexcrm_root>/application/language/bulgarian/bulgarian_num_words_lang.php:
128: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/catalan/catalan_num_words_lang.php:
133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/chinese/chinese_num_words_lang.php:
137: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/czech/czech_num_words_lang.php:
134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/dutch/dutch_num_words_lang.php:
133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/english/english_num_words_lang.php:
142: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/finnish/finnish_num_words_lang.php:
132: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/francais_canada/francais_canada_num_words_lang.php:
139: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/french/french_num_words_lang.php:
133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/german/german_num_words_lang.php:
133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/greek/greek_num_words_lang.php:
127: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies',$currencies);
## File: <perfexcrm_root>/application/language/indonesia/indonesia_num_words_lang.php:
134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/italian/italian_num_words_lang.php:
133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/japanese/japanese_num_words_lang.php:
134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/norwegian/norwegian_num_words_lang.php:
134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/persian/persian_num_words_lang.php:
133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/polish/polish_num_words_lang.php:
134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/portuguese/portuguese_num_words_lang.php:
133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/portuguese_br/portuguese_br_num_words_lang.php:
133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/romanian/romanian_num_words_lang.php:
135: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/russian/russian_num_words_lang.php:
134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/slovak/slovak_num_words_lang.php:
133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/spanish/spanish_num_words_lang.php:
133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/swedish/swedish_num_words_lang.php:
134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/turkish/turkish_num_words_lang.php:
134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/ukrainian/ukrainian_num_words_lang.php:
134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/language/vietnamese/vietnamese_num_words_lang.php:
134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies);
## File: <perfexcrm_root>/application/libraries/App_bulk_pdf_export.php:
182: if (!hooks()->has_filter('bulk_pdf_export_class')) {
185: $class = hooks()->apply_filters('bulk_pdf_export_class', null, $this->type);
## File: <perfexcrm_root>/application/libraries/App_clients_area_constructor.php:
49: hooks()->do_action('clients_init');
62: $vars = hooks()->apply_filters('customers_area_autoloaded_vars', $vars);
## File: <perfexcrm_root>/application/libraries/App_items_table_template.php:
205: $itemHTML .= hooks()->apply_filters('item_tax_table_row', $item_tax, $item);
208: $itemHTML .= hooks()->apply_filters('item_tax_table_row', '0%', $item);
478: return hooks()->apply_filters('items_table_amounts_exclude_currency_symbol', $exclude, [
486: return $this->tax_per_item && hooks()->apply_filters('show_tax_per_item', true, [
## File: <perfexcrm_root>/application/libraries/App_items_table.php:
100: $rate = hooks()->apply_filters(
118: $item_amount_with_quantity = hooks()->apply_filters(
236: $item_width = hooks()->apply_filters('item_description_td_width', 38);
## File: <perfexcrm_root>/application/libraries/App_menu.php:
102: $items = hooks()->apply_filters('nav_user_menu_items', $this->user_menu_items);
155: $items = hooks()->apply_filters("{$group}_menu_items", $items);
164: $children = hooks()->apply_filters("{$group}_menu_child_items", $children, $parent_slug);
## File: <perfexcrm_root>/application/libraries/App_module_installer.php:
30: hooks()->do_action('pre_upload_module', $_FILES['module']);
48: hooks()->do_action('module_installed', $_FILES['module']);
## File: <perfexcrm_root>/application/libraries/App_modules.php:
86: hooks()->do_action('pre_activate_module', $module);
91: hooks()->do_action("activate_{$name}_module");
102: hooks()->do_action('module_activated', $module);
123: hooks()->do_action('pre_deactivate_module', $module);
128: hooks()->do_action("deactivate_{$name}_module");
140: hooks()->do_action('module_deactivated', $module);
168: hooks()->do_action('pre_uninstall_module', $module);
183: hooks()->do_action("uninstall_{$name}_module");
197: hooks()->do_action('module_uninstalled', $module);
356: hooks()->add_action('module_' . $name . '_update_handler', $retVal['update_handler']);
365: hooks()->do_action('module_' . $name . '_update_handler', $data['update_handler']);
## File: <perfexcrm_root>/application/libraries/App_number_to_word.php:
165: return hooks()->apply_filters('before_return_num_word', $final_val, [
## File: <perfexcrm_root>/application/libraries/App_pusher.php:
31: $pusher_options = hooks()->apply_filters('pusher_options', []);
## File: <perfexcrm_root>/application/libraries/App_table.php:
222: $rulesMap = hooks()->apply_filters('table_custom_field_rules_map', $this->customFieldsToRuleMap);
285: $rule = hooks()->apply_filters('table_' . $this->id() . '_custom_field_rule', $rule, $field);
343: return hooks()->apply_filters(
617: $params = hooks()->apply_filters('table_' . $this->id() . '_output_params', $params);
## File: <perfexcrm_root>/application/libraries/App_tabs.php:
119: hooks()->do_action('before_get_tabs', $group);
128: $tabs = hooks()->apply_filters("{$group}_tabs", $tabs);
143: $children = hooks()->apply_filters("{$group}_tabs_child_items", $children, $parent_slug);
## File: <perfexcrm_root>/application/libraries/App_tags.php:
85: hooks()->do_action('new_tag_created', $tag_id);
## File: <perfexcrm_root>/application/libraries/App.php:
95: hooks()->do_action('app_base_after_construct_action');
267: return hooks()->apply_filters('before_get_languages', $this->available_languages);
300: $params = hooks()->apply_filters('table_params', $params, $table);
359: return hooks()->apply_filters('get_option', $val, $name);
383: return hooks()->apply_filters('quick_actions_links', app_sort_by_position($this->quick_actions));
403: return hooks()->apply_filters('show_setup_menu', $this->show_setup_menu);
413: return hooks()->apply_filters('tables_with_currency', $this->tables_with_currency);
423: return hooks()->apply_filters('get_media_folder', $this->media_folder);
447: hooks()->do_action('before_update_database', $updateToVersion);
459: hooks()->do_action('database_updated', $updateToVersion);
498: $this->media_folder = hooks()->apply_filters('before_set_media_folder', 'media');
## File: <perfexcrm_root>/application/libraries/Stripe_core.php:
118: return hooks()->apply_filters('stripe_webhook_events', $events);
## File: <perfexcrm_root>/application/libraries/assets/App_css.php:
44: hooks()->do_action('before_compile_css_assets', $group);
## File: <perfexcrm_root>/application/libraries/assets/App_scripts.php:
43: hooks()->do_action('before_compile_scripts_assets', $group);
## File: <perfexcrm_root>/application/libraries/gateways/App_gateway.php:
53: hooks()->add_action('before_get_payment_gateways', [$this, 'tryToAutoRegisterPaymentGateway'], 11, 1);
## File: <perfexcrm_root>/application/libraries/gateways/Authorize_acceptjs_gateway.php:
73: hooks()->add_action('before_render_payment_gateway_settings', 'authorize_acceptjs_notice');
## File: <perfexcrm_root>/application/libraries/gateways/Paypal_checkout_gateway.php:
96: $data = hooks()->apply_filters('paypal_checkout_button_style_params', [
132: $data = hooks()->apply_filters('paypal_checkout_order_create_data', $data);
221: $data = hooks()->apply_filters('paypal_checkout_payer_data', $payer, $invoice);
## File: <perfexcrm_root>/application/libraries/gateways/Paypal_gateway.php:
90: $gateway->setlogoImageUrl(hooks()->apply_filters('paypal_logo_url', $logoURL));
## File: <perfexcrm_root>/application/libraries/gateways/Stripe_gateway.php:
65: hooks()->add_action('before_render_payment_gateway_settings', 'stripe_gateway_webhook_check');
## File: <perfexcrm_root>/application/libraries/gateways/Stripe_ideal_gateway.php:
72: hooks()->add_action('before_render_payment_gateway_settings', 'stripe_ideal_gateway_webhook_check');
73: hooks()->add_action('before_render_payment_gateway_settings', 'stripe_ideal_gateway_depreciation_notice');
## File: <perfexcrm_root>/application/libraries/gateways/Two_checkout_gateway.php:
62: hooks()->add_action('before_render_payment_gateway_settings', 'two_checkout_gateway_webhook_notice');
## File: <perfexcrm_root>/application/libraries/import/Import_customers.php:
16: $this->notImportableFields = hooks()->apply_filters('not_importable_clients_fields', ['userid', 'id', 'is_primary', 'password', 'datecreated', 'last_ip', 'last_login', 'last_password_change', 'active', 'new_pass_key', 'new_pass_key_requested', 'leadid', 'default_currency', 'profile_image', 'default_language', 'direction', 'show_primary_contact', 'invoice_emails', 'estimate_emails', 'project_emails', 'task_emails', 'contract_emails', 'credit_note_emails', 'ticket_emails', 'addedfrom', 'registration_confirmed', 'last_active_time', 'email_verified_at', 'email_verification_key', 'email_verification_sent_at']);
## File: <perfexcrm_root>/application/libraries/import/Import_expenses.php:
23: $this->notImportableFields = hooks()->apply_filters('not_importable_expense_fields', [
## File: <perfexcrm_root>/application/libraries/import/Import_leads.php:
20: $this->notImportableFields = hooks()->apply_filters('not_importable_leads_fields', ['id', 'assigned', 'dateadded', 'last_status_change', 'addedfrom', 'leadorder', 'date_converted', 'lost', 'junk', 'is_imported_from_email_integration', 'email_integration_uid', 'is_public', 'dateassigned', 'client_id', 'lastcontact', 'last_lead_status', 'from_form_id', 'default_language', 'hash']);
## File: <perfexcrm_root>/application/libraries/mails/App_mail_template.php:
104: $this->send_to = hooks()->apply_filters('send_email_template_to', $this->send_to);
127: hooks()->do_action('failed_to_send_email_template', [
138: $this->template = hooks()->apply_filters('before_parse_email_template_message', $this->template);
142: $this->template = hooks()->apply_filters('after_parse_email_template_message', $this->template);
167: $hook_data = hooks()->apply_filters('before_email_template_send', $hook_data);
209: hooks()->do_action('email_template_sent', [
291: if (hooks()->apply_filters('use_deprecated_from_email_header_template_field', false)) {
310: return hooks()->apply_filters('email_template_from_headers', [
518: return hooks()->apply_filters('email_template_language', $language, ['template' => $this, 'email' => $email]);
## File: <perfexcrm_root>/application/libraries/merge_fields/App_merge_fields.php:
53: $this->registered = hooks()->apply_filters('register_merge_fields', []);
210: return hooks()->apply_filters('available_merge_fields', $available);
## File: <perfexcrm_root>/application/libraries/merge_fields/Client_merge_fields.php:
495: return hooks()->apply_filters('client_contact_merge_fields', $fields, [
519: return hooks()->apply_filters('client_statement_merge_fields', $fields, [
## File: <perfexcrm_root>/application/libraries/merge_fields/Contract_merge_fields.php:
120: return hooks()->apply_filters('contract_merge_fields', $fields, [
## File: <perfexcrm_root>/application/libraries/merge_fields/Credit_note_merge_fields.php:
95: return hooks()->apply_filters('credit_note_merge_fields', $fields, [
## File: <perfexcrm_root>/application/libraries/merge_fields/Estimate_merge_fields.php:
117: return hooks()->apply_filters('estimate_merge_fields', $fields, [
## File: <perfexcrm_root>/application/libraries/merge_fields/Estimate_request_merge_fields.php:
130: return hooks()->apply_filters('estimate_request_merge_fields', $fields, [
## File: <perfexcrm_root>/application/libraries/merge_fields/Event_merge_fields.php:
71: return hooks()->apply_filters('event_merge_fields', $fields, [
## File: <perfexcrm_root>/application/libraries/merge_fields/Invoice_batch_payments_merge_fields.php:
40: return hooks()->apply_filters('invoice_batch_payments_merge_fields', $fields);
## File: <perfexcrm_root>/application/libraries/merge_fields/Invoice_merge_fields.php:
217: return hooks()->apply_filters('invoice_merge_fields', $fields, [
## File: <perfexcrm_root>/application/libraries/merge_fields/Leads_merge_fields.php:
262: return hooks()->apply_filters('lead_merge_fields', $fields, ['id' => $lead->id, 'lead' => $lead]);
## File: <perfexcrm_root>/application/libraries/merge_fields/Notifications_merge_fields.php:
42: return hooks()->apply_filters('notifications_merge_fields', $fields);
## File: <perfexcrm_root>/application/libraries/merge_fields/Other_merge_fields.php:
27: $available_for = hooks()->apply_filters('other_merge_fields_available_for', $available_for);
98: $logo_width = hooks()->apply_filters('merge_field_logo_img_width', '');
132: return hooks()->apply_filters('other_merge_fields', $fields);
## File: <perfexcrm_root>/application/libraries/merge_fields/Projects_merge_fields.php:
234: return hooks()->apply_filters('project_merge_fields', $fields, [
## File: <perfexcrm_root>/application/libraries/merge_fields/Proposals_merge_fields.php:
188: return hooks()->apply_filters('proposal_merge_fields', $fields, [
## File: <perfexcrm_root>/application/libraries/merge_fields/Staff_merge_fields.php:
189: return hooks()->apply_filters('staff_merge_fields', $fields, [
212: return hooks()->apply_filters('staff_reminder_merge_fields', $fields, [
## File: <perfexcrm_root>/application/libraries/merge_fields/Subscriptions_merge_fields.php:
84: return hooks()->apply_filters('subscription_merge_fields', $fields, [
## File: <perfexcrm_root>/application/libraries/merge_fields/Tasks_merge_fields.php:
200: return hooks()->apply_filters('task_merge_fields', $fields, [
## File: <perfexcrm_root>/application/libraries/merge_fields/Ticket_merge_fields.php:
208: return hooks()->apply_filters('ticket_merge_fields', $fields, [
## File: <perfexcrm_root>/application/libraries/pdf/App_pdf.php:
78: hooks()->do_action('pdf_construct', ['pdf_instance' => $this, 'type' => $this->type()]);
174: if (hooks()->apply_filters('process_pdf_signature_on_close', true)) {
178: hooks()->do_action('pdf_close', ['pdf_instance' => $this, 'type' => $this->type()]);
187: hooks()->do_action('pdf_header', ['pdf_instance' => $this, 'type' => $this->type()]);
197: hooks()->do_action('pdf_footer', ['pdf_instance' => $this, 'type' => $this->type()]);
253: return hooks()->apply_filters($this->type() . '_pdf_build_path', $this->file_path());
## File: <perfexcrm_root>/application/libraries/pdf/Contract_pdf.php:
14: $contract = hooks()->apply_filters('contract_html_pdf_data', $contract);
## File: <perfexcrm_root>/application/libraries/pdf/Estimate_pdf.php:
17: $estimate = hooks()->apply_filters('estimate_html_pdf_data', $estimate);
## File: <perfexcrm_root>/application/libraries/pdf/Invoice_pdf.php:
16: $invoice = hooks()->apply_filters('invoice_html_pdf_data', $invoice);
## File: <perfexcrm_root>/application/libraries/pdf/PDF_Signature.php:
49: hooks()->apply_filters('pdf_signature_break_lines', 1)
65: hooks()->do_action('before_customer_pdf_signature', $hookData);
70: $customerSignatureSize = hooks()->apply_filters('customer_pdf_signature_size', 0);
74: hooks()->do_action('after_customer_pdf_signature', $hookData);
90: $blankSignatureLine = hooks()->apply_filters('blank_signature_line', '_________________________');
100: $blankSignatureLine .= str_repeat('<br />', hooks()->apply_filters('pdf_signature_break_lines', 1)) . '<img src="@' . $imageData . '" / />';
119: return hooks()->apply_filters(
## File: <perfexcrm_root>/application/libraries/pdf/Proposal_pdf.php:
26: $proposal = hooks()->apply_filters('proposal_html_pdf_data', $proposal);
## File: <perfexcrm_root>/application/libraries/sms/App_sms.php:
88: return hooks()->apply_filters('get_sms_gateways', self::$gateways);
110: $triggers = hooks()->apply_filters('sms_gateway_available_triggers', $this->triggers);
144: hooks()->do_action('sms_trigger_triggered', ['message' => $message, 'trigger' => $trigger, 'phone' => $phone]);
414: $this->triggers = hooks()->apply_filters('sms_triggers', $triggers);
## File: <perfexcrm_root>/application/libraries/sms/Sms_msg91.php:
51: hooks()->add_action('after_sms_trigger_textarea_content', [$this, 'addDltTemplateIdField']);
199: return hooks()->apply_filters('msg91_common_options', array_filter([
## File: <perfexcrm_root>/application/models/Announcements_model.php:
99: $data = hooks()->apply_filters('before_announcement_added', $data);
104: hooks()->do_action('announcement_created', $insert_id);
125: $data = hooks()->apply_filters('before_announcement_updated', $data, $id);
130: hooks()->do_action('announcement_updated', $id);
148: hooks()->do_action('before_delete_announcement', $id);
156: hooks()->do_action('announcement_deleted', $id);
## File: <perfexcrm_root>/application/models/Authentication_model.php:
40: hooks()->do_action('failed_login_attempt', [
51: hooks()->do_action('non_existent_user_login_attempt', [
62: hooks()->do_action('inactive_user_login_attempt', [
78: hooks()->do_action('before_staff_login', [
95: hooks()->do_action('before_client_login', [
134: hooks()->do_action('before_contact_logout', get_client_user_id());
139: hooks()->do_action('before_staff_logout', get_staff_user_id());
288: hooks()->do_action('set_password_email_sent', ['is_staff_member' => false, 'user' => $user]);
350: hooks()->do_action('forgot_password_email_sent', ['is_staff_member' => $staff, 'user' => $user]);
546: hooks()->do_action('before_staff_login', [
## File: <perfexcrm_root>/application/models/Client_groups_model.php:
93: hooks()->do_action('customer_group_deleted', $id);
## File: <perfexcrm_root>/application/models/Client_vault_entries_model.php:
99: hooks()->do_action('customer_vault_entry_deleted', ['vault_id' => $id, 'customer_id' => $vault->customer_id]);
## File: <perfexcrm_root>/application/models/Clients_model.php:
15: $this->contact_columns = hooks()->apply_filters('contact_columns', ['firstname', 'lastname', 'email', 'phonenumber', 'title', 'password', 'send_set_password_email', 'donotsendwelcomeemail', 'permissions', 'direction', 'invoice_emails', 'estimate_emails', 'credit_note_emails', 'contract_emails', 'task_emails', 'project_emails', 'ticket_emails', 'is_primary']);
131: $data = hooks()->apply_filters('before_client_added', $data);
209: hooks()->do_action('after_client_created', [
235: $data = hooks()->apply_filters('before_client_updated', $data, $id);
302: hooks()->do_action('client_updated', [
366: $data = hooks()->apply_filters('before_update_contact', $data, $id);
430: hooks()->do_action('contact_updated', $id, $data);
527: $data = hooks()->apply_filters('before_create_contact', $data);
616: hooks()->do_action('contact_created', $contact_id);
653: $data = hooks()->apply_filters('before_create_contact', $data);
690: hooks()->do_action('contact_created', $contact_id);
736: $data = hooks()->apply_filters('customer_update_company_info', $data, $id);
744: hooks()->do_action('customer_updated_company_info', $id);
856: hooks()->do_action('before_client_deleted', $id);
1023: hooks()->do_action('after_client_deleted', $id);
1046: hooks()->do_action('before_delete_contact', $id);
1212: hooks()->do_action('contact_deleted', $id, $result);
1325: $status = hooks()->apply_filters('change_contact_status', $status, $id);
1332: hooks()->do_action('contact_status_changed', [
1359: hooks()->do_action('client_status_changed', [
1680: hooks()->do_action('before_remove_contact_profile_image');
## File: <perfexcrm_root>/application/models/Contracts_model.php:
119: $data = hooks()->apply_filters('before_contract_added', $data);
128: hooks()->do_action('after_contract_added', $insert_id);
174: $data = hooks()->apply_filters('before_contract_updated', $data, $id);
188: hooks()->do_action('after_contract_updated', $id);
445: hooks()->do_action('before_contract_deleted', $id);
485: hooks()->do_action('after_contract_deleted', $id);
## File: <perfexcrm_root>/application/models/Credit_notes_model.php:
17: return hooks()->apply_filters('before_get_credit_notes_statuses', [
124: hooks()->do_action('credit_note_sent', $id);
196: $hook = hooks()->apply_filters('before_create_credit_note', ['data' => $data, 'items' => $items]);
225: hooks()->do_action('after_create_credit_note', $insert_id);
270: $hook = hooks()->apply_filters('before_update_credit_note', [
355: hooks()->do_action('after_update_credit_note', $id);
411: hooks()->do_action('before_credit_note_deleted', $id);
458: hooks()->do_action('after_credit_note_deleted', $id);
472: hooks()->do_action('credit_note_status_changed', $id, ['status' => $status]);
643: hooks()->do_action('created_credit_note_from_invoice', ['invoice_id' => $invoice_id, 'credit_note_id' => $id]);
674: hooks()->do_action('credit_note_refund_created', ['data' => $data, 'credit_note_id' => $id]);
703: hooks()->do_action('credit_note_refund_updated', ['data' => $data, 'refund_id' => $refund->credit_note_id]);
752: hooks()->do_action('credit_note_refund_deleted', ['refund_id' => $refund_id, 'credit_note_id' => $credit_note_id]);
810: hooks()->do_action('credits_applied', ['data' => $data, 'credit_note_id' => $id]);
## File: <perfexcrm_root>/application/models/Cron_model.php:
57: hooks()->do_action('before_cron_run', $manually);
103: $retryQueue = hooks()->apply_filters('cron_retry_email_queue_seconds', 600);
114: hooks()->do_action('after_cron_run', $manually);
180: $older_than_days = hooks()->apply_filters('delete_two_checkout_log_older_than_days', 40);
205: $eventNotifications = hooks()->apply_filters('event_notifications', true);
247: $eventNotifications = hooks()->apply_filters('event_notifications', true);
313: hooks()->do_action('after_ticket_status_changed', [
470: hooks()->do_action('before_check_recurring_tasks');
501: 'status' => hooks()->apply_filters('recurring_task_status', 1),
547: hooks()->do_action('after_check_recurring_tasks');
660: hooks()->do_action('after_recurring_expense_created', ['original_expense' => $expense, 'new_expense_id' => $insert_id]);
663: $send_recurring_expenses_email = hooks()->apply_filters('send_recurring_system_expenses_email', 'true');
894: hooks()->do_action('after_recurring_invoice_created', ['original_invoice' => $invoice, 'new_invoice_id' => $id]);
899: $send_recurring_invoices_email = hooks()->apply_filters('send_recurring_invoices_system_email', 'true');
1406: $body = hooks()->apply_filters(
1434: $task_data = hooks()->apply_filters('before_add_task', $task_data);
1446: hooks()->do_action('after_add_task', $task_id);
1466: $lead = hooks()->apply_filters('leads_email_integration_lead_check', $lead, $message);
1510: hooks()->do_action('existing_lead_email_inserted_from_email_integration', [
1534: $lead_data = hooks()->apply_filters('before_insert_lead_from_email_integration', $lead_data);
1596: hooks()->do_action('lead_created', $insert_id);
1598: hooks()->do_action('lead_created_from_email_integration', $insert_id);
1732: if (hooks()->apply_filters('imap_fetch_from_email_by_reply_to_header', true)) {
1754: $data = hooks()->apply_filters('imap_auto_import_ticket_data', $data, $message);
## File: <perfexcrm_root>/application/models/Departments_model.php:
67: $data = hooks()->apply_filters('before_department_added', $data);
71: hooks()->do_action('after_department_added', $insert_id);
125: $data = hooks()->apply_filters('before_department_updated', $data, $id);
153: hooks()->do_action('before_delete_department', $id);
## File: <perfexcrm_root>/application/models/Emails_model.php:
199: $cnf = hooks()->apply_filters('before_send_simple_email', $cnf);
281: $email = hooks()->apply_filters('send_email_template_to', $email);
342: $template = hooks()->apply_filters('before_parse_email_template_message', $template);
346: $template = hooks()->apply_filters('after_parse_email_template_message', $template);
412: $hook_data = hooks()->apply_filters('before_email_template_send', $hook_data);
491: hooks()->do_action('email_template_sent', ['template' => $template, 'email' => $email]);
## File: <perfexcrm_root>/application/models/Estimate_request_model.php:
31: hooks()->do_action('estimate_request_assigned_changed', [
87: hooks()->do_action('estimate_request_status_changed', [
257: hooks()->do_action('before_estimate_request_deleted', $id);
320: $data['color'] = hooks()->apply_filters('default_estimate_request_status_color', '#757575');
## File: <perfexcrm_root>/application/models/Estimates_model.php:
18: $this->statuses = hooks()->apply_filters('before_set_estimate_statuses', [
283: hooks()->do_action('estimate_converted_to_invoice', ['invoice_id' => $id, 'estimate_id' => $_estimate->id]);
510: $hook = hooks()->apply_filters('before_estimate_added', [
553: hooks()->do_action('after_estimate_added', $insert_id);
633: $hook = hooks()->apply_filters('before_estimate_updated', [
781: hooks()->do_action('after_estimate_updated', $id);
853: hooks()->do_action('estimate_accepted', $id);
880: hooks()->do_action('estimate_declined', $id);
978: hooks()->do_action('before_estimate_deleted', $id);
1073: hooks()->do_action('after_estimate_deleted', $id);
1258: $hook = hooks()->apply_filters('send_estimate_to_customer_file_name', [
1282: hooks()->do_action('estimate_sent', $id);
## File: <perfexcrm_root>/application/models/Expenses_model.php:
126: $data = hooks()->apply_filters('before_expense_added', $data);
152: hooks()->do_action('after_expense_added', $insert_id);
393: $data = hooks()->apply_filters('before_expense_updated', $data, $id);
409: hooks()->do_action('expense_updated', [
469: hooks()->do_action('after_expense_deleted', $id);
628: hooks()->do_action('expense_converted_to_invoice', ['expense_id' => $expense->expenseid, 'invoice_id' => $invoiceid]);
## File: <perfexcrm_root>/application/models/Invoice_items_model.php:
63: hooks()->do_action('item_coppied', $insert_id);
169: $data = hooks()->apply_filters('before_item_created', $data);
179: hooks()->do_action('item_created', $insert_id);
227: $data = hooks()->apply_filters('before_update_item', $data, $itemid);
243: hooks()->do_action('after_item_updated', [
289: hooks()->do_action('item_deleted', $id);
## File: <perfexcrm_root>/application/models/Invoices_model.php:
131: return hooks()->apply_filters('get_invoice', $invoice);
164: hooks()->do_action('invoice_marked_as_cancelled', $id);
182: hooks()->do_action('invoice_unmarked_as_cancelled', $id);
384: $hook = hooks()->apply_filters('before_invoice_added', [
537: hooks()->do_action('after_invoice_added', $insert_id);
591: $invoices = hooks()->apply_filters('invoices_ids_available_for_merging', $invoices);
713: hooks()->do_action('invoice_copied', ['copy_from' => $_invoice->id, 'copy_id' => $id]);
830: $hook = hooks()->apply_filters('before_update_invoice', $hookData, $id);
917: hooks()->do_action('invoice_updated', array_merge($hookData, ['updated' => &$updated]));
1203: hooks()->do_action('before_invoice_deleted', $id);
1353: hooks()->do_action('after_invoice_deleted', $id);
1425: $attach_pdf = hooks()->apply_filters('invoice_overdue_notice_attach_pdf', true);
1483: hooks()->do_action('invoice_overdue_reminder_sent', [
1511: if ($attach_pdf = hooks()->apply_filters('invoice_due_notice_attach_pdf', true) === true) {
1567: hooks()->do_action('invoice_due_reminder_sent', [
1596: $invoice = hooks()->apply_filters(
1606: $template_name = hooks()->apply_filters('after_invoice_sent_template_statement', $template_name);
1701: hooks()->do_action('invoice_sent', $id);
## File: <perfexcrm_root>/application/models/Knowledge_base_model.php:
47: $total_related_articles = hooks()->apply_filters('total_related_articles', 5);
91: $data = hooks()->apply_filters('before_add_kb_article', $data);
## File: <perfexcrm_root>/application/models/Leads_model.php:
96: $data = hooks()->apply_filters('before_lead_added', $data);
126: hooks()->do_action('lead_created', $insert_id);
191: hooks()->do_action('after_lead_assigned_member_notification_sent', $lead_id);
286: hooks()->do_action('lead_status_changed', [
308: hooks()->do_action('after_lead_updated', $id);
313: hooks()->do_action('after_lead_updated', $id);
329: hooks()->do_action('before_lead_deleted', $id);
391: hooks()->do_action('after_lead_deleted', $id);
423: hooks()->do_action('lead_marked_as_lost', $id);
484: hooks()->do_action('lead_marked_as_junk', $id);
735: $data['color'] = hooks()->apply_filters('default_lead_status_color', '#757575');
835: hooks()->do_action('lead_status_changed', [
873: $sorting = hooks()->apply_filters('lead_activity_log_default_sort', 'ASC');
## File: <perfexcrm_root>/application/models/Misc_model.php:
19: return hooks()->apply_filters('notifications_limit', $this->notifications_limit);
283: return hooks()->apply_filters('get_notes', $notes, ['rel_id' => $rel_id, 'rel_type' => $rel_type]);
294: $data = hooks()->apply_filters('create_note_data', $data, $rel_type, $rel_id);
300: hooks()->do_action('note_created', $insert_id, $data);
310: hooks()->do_action('before_update_note', [
321: hooks()->do_action('note_updated', $id, $data);
339: hooks()->do_action('before_delete_note', $note_id);
351: hooks()->do_action('note_deleted', $note_id, $note);
799: $result = hooks()->apply_filters('global_search_result_query', $result, $q, $limit);
## File: <perfexcrm_root>/application/models/Payment_modes_model.php:
104: $data = hooks()->apply_filters('before_paymentmode_added', $data);
121: hooks()->do_action('after_paymentmode_added', [
162: hooks()->do_action('after_update_paymentmode', [
215: hooks()->do_action('before_get_payment_gateways');
223: $this->gateways = hooks()->apply_filters('app_payment_gateways', $this->payment_gateways);
330: if (hooks()->has_filter('app_payment_gateways', [ $class, 'initMode']) === false) {
331: hooks()->add_filter('app_payment_gateways', [$class, 'initMode']);
## File: <perfexcrm_root>/application/models/Payments_model.php:
131: $data = hooks()->apply_filters('before_process_gateway_func', $data);
215: $data = hooks()->apply_filters('before_payment_recorded', $data);
377: hooks()->do_action('after_payment_added', $insert_id);
398: $data = hooks()->apply_filters('before_payment_updated', $data, $id);
411: hooks()->do_action('after_payment_updated', [
435: hooks()->do_action('before_payment_deleted', [
449: hooks()->do_action('after_payment_deleted', [
475: $data = hooks()->apply_filters('before_payment_recorded', $data);
512: hooks()->do_action('after_payment_added', $insert_id);
## File: <perfexcrm_root>/application/models/Projects_model.php:
39: $this->project_settings = hooks()->apply_filters('project_settings', $project_settings);
44: $statuses = hooks()->apply_filters('before_get_project_statuses', [
271: $project = hooks()->apply_filters('project_get', $project);
369: $orderByString = hooks()->apply_filters('project_tasks_array_default_order', 'FIELD(status, 5), duedate IS NULL ASC, duedate');
383: $tasks = hooks()->apply_filters('get_projects_tasks', $tasks, [
479: hooks()->do_action('before_remove_project_file', $id);
758: $data = hooks()->apply_filters('before_add_project', $data);
851: hooks()->do_action('after_add_project', $insert_id);
1021: $data = hooks()->apply_filters('before_update_project', $data, $id);
1049: hooks()->do_action('project_status_changed', [
1067: hooks()->do_action('after_update_project', $id);
1092: hooks()->do_action('after_project_customer_email_sent', [
1112: hooks()->do_action('project_status_changed', [
1320: hooks()->do_action('after_project_staff_added_as_member', [
1604: $_data = hooks()->apply_filters('before_add_project_discussion_comment', $_data, $discussion_id);
1691: hooks()->do_action('after_add_discussion_comment', $insert_id);
2088: hooks()->do_action('project_copied', [
2146: hooks()->do_action('before_project_deleted', $project_id);
2241: hooks()->do_action('after_project_deleted', $project_id);
2323: $data = hooks()->apply_filters('before_log_project_activity', $data);
## File: <perfexcrm_root>/application/models/Proposals_model.php:
17: $this->statuses = hooks()->apply_filters('before_set_proposal_statuses', [
96: $hook = hooks()->apply_filters('before_create_proposal', [
162: hooks()->do_action('proposal_created', $insert_id);
225: $hook = hooks()->apply_filters('before_proposal_updated', [
324: hooks()->do_action('after_proposal_updated', $id);
513: hooks()->do_action('after_proposal_client_add_comment', $proposal->id);
521: hooks()->do_action('after_proposal_staff_add_comment', $proposal->id);
764: hooks()->do_action('proposal_accepted', $id);
772: hooks()->do_action('proposal_declined', $id);
800: hooks()->do_action('before_proposal_deleted', $id);
866: hooks()->do_action('after_proposal_deleted', $id);
967: hooks()->do_action('after_proposal_expiry_reminder_sent', $id);
992: hooks()->do_action('proposal_sent', $id);
1166: hooks()->do_action('after_proposal_converted_to_invoice', ['proposal_id' => $id, 'invoice_id' => $invoice_id]);
## File: <perfexcrm_root>/application/models/Settings_model.php:
35: $data = hooks()->apply_filters('before_settings_updated', $data);
75: $hook_data = hooks()->apply_filters('before_single_setting_updated_in_loop', $hook_data);
## File: <perfexcrm_root>/application/models/Staff_model.php:
17: hooks()->do_action('before_delete_staff_member', [
326: hooks()->do_action('staff_member_deleted', [
405: $data = hooks()->apply_filters('before_create_staff_member', $data);
500: hooks()->do_action('staff_member_created', $staffid);
523: $data = hooks()->apply_filters('before_update_staff_member', $data, $id);
651: hooks()->do_action('staff_member_updated', $id);
684: $data = hooks()->apply_filters('before_staff_update_profile', $data, $id);
700: hooks()->do_action('staff_member_profile_updated', $id);
717: $data = hooks()->apply_filters('before_staff_change_password', $data, $userid);
761: $status = hooks()->apply_filters('before_staff_status_change', $status, $id);
769: hooks()->do_action('after_staff_status_change', $id);
## File: <perfexcrm_root>/application/models/Statement_model.php:
234: return hooks()->apply_filters('statement', $result);
## File: <perfexcrm_root>/application/models/Tasks_model.php:
39: $statuses = hooks()->apply_filters('before_get_task_statuses', [
133: return hooks()->apply_filters('get_task', $task);
210: $_new_task_data = hooks()->apply_filters('before_add_task', $_new_task_data);
255: hooks()->do_action('after_add_task', $insert_id);
532: $data = hooks()->apply_filters('before_add_task', $data);
659: hooks()->do_action('after_add_task', $insert_id);
759: $data = hooks()->apply_filters('before_update_task', $data, $id);
795: hooks()->do_action('after_update_task', $id);
868: hooks()->do_action('task_checklist_item_created', ['task_id' => $data['taskid'], 'checklist_id' => $insert_id]);
1016: hooks()->do_action('task_comment_added', ['task_id' => $data['taskid'], 'comment_id' => $insert_id]);
1073: hooks()->do_action('task_follower_added', [
1158: hooks()->do_action('task_assignee_added', [
1294: $task_attachment_as_comment = hooks()->apply_filters('add_task_attachment_as_comment', 'true');
1352: $task_comments_order = hooks()->apply_filters('task_comments_order', 'DESC');
1400: hooks()->do_action('task_comment_updated', [
1449: hooks()->do_action('task_comment_deleted', ['task_id' => $comment->taskid, 'comment_id' => $id]);
1575: hooks()->do_action('task_status_changed', ['status' => $status, 'task_id' => $task_id]);
1623: hooks()->do_action('task_status_changed', ['status' => $status, 'task_id' => $id]);
1700: hooks()->do_action('task_deleted', $id);
1911: hooks()->do_action('task_timer_started', ['task_id' => $task_id, 'timer_id' => $_new_timer_id]);
1922: $end_time = hooks()->apply_filters('before_task_timer_stopped', time(), [
2204: hooks()->do_action('task_timer_deleted', $timesheet);
2283: return hooks()->apply_filters('should_staff_receive_task_notification', ($this->is_task_assignee($staffid, $taskid)
## File: <perfexcrm_root>/application/models/Taxes_model.php:
40: $data = hooks()->apply_filters('before_tax_created', $data);
48: hooks()->do_action('after_tax_created', [
82: $data = hooks()->apply_filters('before_update_tax', $data, $taxid);
105: hooks()->do_action('after_update_tax', [
## File: <perfexcrm_root>/application/models/Templates_model.php:
16: $data = hooks()->apply_filters('before_template_added', $data);
25: hooks()->do_action('new_template_added', $template_id);
72: $data = hooks()->apply_filters('before_template_updated', $data, $id);
80: hooks()->do_action('after_template_updated', $id);
96: hooks()->do_action('before_template_deleted', $id);
105: hooks()->do_action('after_template_deleted', $id);
## File: <perfexcrm_root>/application/models/Tickets_model.php:
51: $data = hooks()->apply_filters('piped_ticket_data', $data);
471: hooks()->apply_filters('ticket_message_without_html_for_non_admin', true)
482: $data = hooks()->apply_filters('before_ticket_reply_add', $data, $id, $admin);
499: $newStatus = hooks()->apply_filters(
534: hooks()->do_action('after_ticket_status_changed', [
608: hooks()->do_action('after_ticket_reply_added', [
629: hooks()->do_action('before_delete_ticket_reply', ['ticket_id' => $ticket_id, 'reply_id' => $reply_id]);
726: $ticket_replies_order = hooks()->apply_filters('ticket_replies_order', $ticket_replies_order);
819: hooks()->apply_filters('ticket_message_without_html_for_non_admin', true)
841: $data = hooks()->apply_filters('before_ticket_created', $data, $admin);
935: hooks()->do_action('ticket_created', $ticketid);
974: hooks()->do_action('before_ticket_deleted', $ticketid);
1035: hooks()->do_action('after_ticket_deleted', $ticketid);
1051: $data = hooks()->apply_filters('before_ticket_settings_updated', $data);
1100: hooks()->do_action(
1184: hooks()->do_action('after_ticket_status_changed', [
## File: <perfexcrm_root>/application/models/Todo_model.php:
12: $this->todo_limit = hooks()->apply_filters('todos_limit', 10);
## File: <perfexcrm_root>/application/models/Utilities_model.php:
44: $data = hooks()->apply_filters('event_update_data', $data, $data['eventid']);
55: $data = hooks()->apply_filters('event_create_data', $data);
142: $data = hooks()->apply_filters('before_fetch_events', $data, $hook);
512: return hooks()->apply_filters('calendar_data', $data, [
## File: <perfexcrm_root>/application/services/CustomerProfileBadges.php:
36: $hook = hooks()->apply_filters('customers_profile_tab_badge', [
## File: <perfexcrm_root>/application/services/LeadProfileBadges.php:
28: $count = hooks()->apply_filters('lead_tab_badge_count', $count, [
## File: <perfexcrm_root>/application/services/ViewsTracking.php:
47: hooks()->do_action('before_insert_views_tracking', [
## File: <perfexcrm_root>/application/services/messages/IsCronSetupRequired.php:
87: $using_cron_features = hooks()->apply_filters('numbers_of_features_using_cron_job', $using_cron_features);
88: $used_features = hooks()->apply_filters('used_cron_features', $used_features);
## File: <perfexcrm_root>/application/services/upgrade/Response.php:
11: hooks()->do_action('auto_upgrade_failed_to_extract_zip_file', $zipFile);
## File: <perfexcrm_root>/application/third_party/action_hooks.php:
7: * Use hooks()->do_action, hooks()->apply_filters, hooks()->add_action, hooks()->add_filter
218: _deprecated_function('add_action','2.3.0','hooks()->add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1)');
220: return hooks()->add_filter($name, $function, $priority);
233: _deprecated_function('do_action','2.3.0','hooks()->do_action($tag, $arg = \'\')');
235: return hooks()->apply_filters($name, $arguments);
248: _deprecated_function('remove_action','2.3.0','hooks()->remove_action($tag, $function_to_remove, $priority = 10)');
250: return hooks()->remove_action($name, $function, $priority);
261: _deprecated_function('has_action','2.3.0','hooks()->has_action($tag, $function_to_check = false)');
263: return hooks()->has_action($name);
## File: <perfexcrm_root>/application/views/admin/search.php:
84: <li><?php echo hooks()->apply_filters('global_search_result_output', $output, ['result'=>$_result, 'type'=>$data['type']]); ?></li>
## File: <perfexcrm_root>/application/views/admin/clients/client_js.php:
182: <?php echo hooks()->apply_filters('projects_table_default_order', json_encode([5, 'asc'])); ?>);
292: <?php if (hooks()->apply_filters('contact_email_required', 'true') === 'true') { ?>
297: <?php if (hooks()->apply_filters('contact_email_unique', 'true') === 'true') { ?>
## File: <perfexcrm_root>/application/views/admin/clients/manage.php:
211: $table_data = hooks()->apply_filters('customers_table_columns', $table_data);
232: <?= hooks()->apply_filters('customers_table_default_order', json_encode([2, 'asc'])); ?>
## File: <perfexcrm_root>/application/views/admin/clients/groups/profile.php:
31: <?= hooks()->apply_filters('customer_profile_tab_custom_fields_text', _l('custom_fields')); ?>
41: <?php hooks()->do_action('after_customer_billing_and_shipping_tab', $client ?? false); ?>
52: <?php hooks()->do_action('after_customer_admins_tab', $client); ?>
58: <?php hooks()->do_action('after_custom_profile_tab_content', $client ?? false); ?>
87: <?php hooks()->do_action('before_customer_profile_company_field', $client ?? null); ?>
92: <?php hooks()->do_action('after_customer_profile_company_field', $client ?? null); ?>
97: <?php hooks()->do_action('before_customer_profile_phone_field', $client ?? null); ?>
100: <?php hooks()->do_action('after_customer_profile_company_phone', $client ?? null); ?>
## File: <perfexcrm_root>/application/views/admin/clients/groups/proposals.php:
42: $table_data = hooks()->apply_filters('proposals_relation_table_columns', $table_data);
## File: <perfexcrm_root>/application/views/admin/clients/groups/statement.php:
116: <?php hooks()->add_action('app_admin_footer', 'parse_customer_statement_html');
## File: <perfexcrm_root>/application/views/admin/clients/groups/vault.php:
158: <?php hooks()->add_action('app_admin_footer', 'vault_form_validate');
## File: <perfexcrm_root>/application/views/admin/clients/modals/contact.php:
311: <?php hooks()->do_action('after_contact_modal_content_loaded'); ?>
## File: <perfexcrm_root>/application/views/admin/contracts/contract.php:
95: <?php hooks()->do_action('after_contract_view_as_client_link', $contract); ?>
399: <?= hooks()->apply_filters('new_contract_default_content', '<span class="text-danger text-uppercase mtop15 editor-add-content-notice"> ' . _l('click_to_add_content') . '</span>') ?>
## File: <perfexcrm_root>/application/views/admin/contracts/manage.php:
117: <?= hooks()->apply_filters('contracts_table_default_order', json_encode([6, 'asc'])); ?>
## File: <perfexcrm_root>/application/views/admin/contracts/table_html.php:
31: $table_data = hooks()->apply_filters('contracts_table_columns', $table_data);
## File: <perfexcrm_root>/application/views/admin/credit_notes/credit_note_preview_template.php:
143: <?php hooks()->do_action('credit_note_menu_links_start', $credit_note); ?>
## File: <perfexcrm_root>/application/views/admin/credit_notes/credit_note.php:
239: $credit_note_currency_attr = hooks()->apply_filters('credit_note_currency_attributes', $credit_note_currency_attr);
## File: <perfexcrm_root>/application/views/admin/custom_fields/customfield.php:
101: <?php hooks()->do_action('after_custom_fields_select_options', $custom_field ?? null); ?>
## File: <perfexcrm_root>/application/views/admin/dashboard/dashboard.php:
19: <?php hooks()->do_action('before_start_render_dashboard_content'); ?>
27: <?php hooks()->do_action('after_dashboard_top_container'); ?>
36: <?php hooks()->do_action('after_dashboard_half_container'); ?>
57: <?php hooks()->do_action('after_dashboard'); ?>
## File: <perfexcrm_root>/application/views/admin/dashboard/widgets/user_data.php:
68: <?php hooks()->do_action('after_user_data_widget_tabs'); ?>
156: <?php hooks()->do_action('after_user_data_widge_tabs_content'); ?>
## File: <perfexcrm_root>/application/views/admin/emails/email_templates.php:
14: <?php hooks()->do_action('before_tickets_email_templates'); ?>
57: <?php hooks()->do_action('before_estimates_email_templates'); ?>
101: <?php hooks()->do_action('before_contracts_email_templates'); ?>
144: <?php hooks()->do_action('before_invoices_email_templates'); ?>
189: <?php hooks()->do_action('before_subscriptions_email_templates'); ?>
234: <?php hooks()->do_action('before_credit_notes_email_templates'); ?>
279: <?php hooks()->do_action('before_tasks_email_templates'); ?>
323: <?php hooks()->do_action('before_customers_email_templates'); ?>
371: <?php hooks()->do_action('before_proposals_email_templates'); ?>
415: <?php hooks()->do_action('before_projects_email_templates'); ?>
458: <?php hooks()->do_action('before_staff_email_templates'); ?>
502: <?php hooks()->do_action('before_leads_email_templates'); ?>
546: <?php hooks()->do_action('before_estimate_request_email_templates'); ?>
591: <?php hooks()->do_action('before_notifications_email_templates'); ?>
636: <?php hooks()->do_action('before_gdpr_email_templates'); ?>
682: <?php hooks()->do_action('after_email_templates'); ?>
## File: <perfexcrm_root>/application/views/admin/emails/template.php:
18: <div style="<?= hooks()->apply_filters('show_deprecated_from_email_header_template_field', false) === false
## File: <perfexcrm_root>/application/views/admin/estimate_request/estimate_request.php:
280: <?php if (hooks()->apply_filters('contact_email_required', 'true') === 'true') { ?>
284: <?php if (hooks()->apply_filters('contact_email_unique', 'true') === 'true') { ?>
## File: <perfexcrm_root>/application/views/admin/estimate_request/forms.php:
16: <?php hooks()->do_action('forms_table_start'); ?>
## File: <perfexcrm_root>/application/views/admin/estimate_request/manage_request.php:
51: $table_data = hooks()->apply_filters('estimate_request_table_columns', $table_data);
## File: <perfexcrm_root>/application/views/admin/estimates/estimate_preview_template.php:
93: <?php hooks()->do_action('after_admin_estimate_preview_template_tab_menu_last_item', $estimate); ?>
172: <?php hooks()->do_action('after_estimate_view_as_client_link', $estimate); ?>
634: <?php hooks()->do_action('after_admin_estimate_preview_template_tab_content_last_item', $estimate); ?>
## File: <perfexcrm_root>/application/views/admin/estimates/estimate_template.php:
247: $currency_attr = hooks()->apply_filters('estimate_currency_attributes', $currency_attr);
## File: <perfexcrm_root>/application/views/admin/estimates/table_html.php:
31: $table_data = hooks()->apply_filters('estimates_table_columns', $table_data);
## File: <perfexcrm_root>/application/views/admin/expenses/expense_preview_template.php:
301: <?php hooks()->do_action('after_left_panel_expense_preview_template', $expense); ?>
335: <?php hooks()->do_action('after_right_panel_expense_preview_template', $expense); ?>
## File: <perfexcrm_root>/application/views/admin/expenses/expense.php:
65: <?php hooks()->do_action('before_expense_form_name', $expense ?? null); ?>
178: $currency_attr = hooks()->apply_filters('expense_currency_attributes', $currency_attr);
417: <?php hooks()->do_action('before_expense_form_template_close', $expense ?? null); ?>
## File: <perfexcrm_root>/application/views/admin/expenses/manage.php:
133: <?= hooks()->apply_filters('expenses_table_default_order', json_encode([6, 'desc'])); ?>
## File: <perfexcrm_root>/application/views/admin/expenses/table_html.php:
49: $table_data = hooks()->apply_filters('expenses_table_columns', $table_data);
## File: <perfexcrm_root>/application/views/admin/gdpr/index.php:
65: <?php hooks()->do_action('before_admin_gdpr_settings'); ?>
## File: <perfexcrm_root>/application/views/admin/includes/alerts.php:
44: <?php hooks()->do_action('before_start_render_content'); ?>
## File: <perfexcrm_root>/application/views/admin/includes/aside.php:
65: hooks()->do_action('before_render_aside_menu');
123: <?php hooks()->do_action('after_render_single_aside_menu', $item); ?>
142: <?php hooks()->do_action('after_render_aside_menu'); ?>
## File: <perfexcrm_root>/application/views/admin/includes/elfinder_tinymce.php:
26: <?php hooks()->do_action('elfinder_tinymce_head'); ?>
## File: <perfexcrm_root>/application/views/admin/includes/head.php:
37: <?php hooks()->do_action('after_body_start'); ?>
## File: <perfexcrm_root>/application/views/admin/includes/header.php:
18: href="<?= hooks()->apply_filters('admin_header_logo_href', admin_url()); ?>">
23: href="<?= hooks()->apply_filters('admin_header_logo_href', admin_url()); ?>">
172: <?php hooks()->do_action('admin_navbar_start'); ?>
243: <?php hooks()->do_action('admin_navbar_end'); ?>
## File: <perfexcrm_root>/application/views/admin/includes/scripts.php:
4: <?php hooks()->do_action('before_js_scripts_render'); ?>
27: <?php $pusher_options = hooks()->apply_filters('pusher_options', [['disableStats' => true]]);
## File: <perfexcrm_root>/application/views/admin/includes/setup_menu.php:
76: <?php hooks()->do_action('after_render_single_setup_menu', $item); ?>
81: <a href="<?= hooks()->apply_filters('help_menu_item_link', 'https://help.perfexcrm.com'); ?>"
83: <?= hooks()->apply_filters('help_menu_item_text', _l('setup_help')); ?>
## File: <perfexcrm_root>/application/views/admin/includes/modals/newsfeed_form.php:
39: <?= form_hidden('total_pages_newsfeed', hooks()->apply_filters('total_pages_newsfeed', total_rows(db_prefix() . 'newsfeed_posts') / 10)); ?>
## File: <perfexcrm_root>/application/views/admin/invoice_items/item.php:
88: <?php hooks()->do_action('before_invoice_item_modal_form_close'); ?>
## File: <perfexcrm_root>/application/views/admin/invoice_items/manage.php:
44: <?php hooks()->do_action('before_items_page_content'); ?>
## File: <perfexcrm_root>/application/views/admin/invoices/invoice_preview_html.php:
105: <?php hooks()->do_action('after_left_panel_invoice_preview_template', $invoice); ?>
162: <?php hooks()->do_action('after_right_panel_invoice_preview_template', $invoice); ?>
## File: <perfexcrm_root>/application/views/admin/invoices/invoice_preview_template.php:
152: <?php hooks()->do_action('after_admin_invoice_preview_template_tab_menu_last_item', $invoice); ?>
229: <?php hooks()->do_action('after_invoice_view_as_client_link', $invoice); ?>
299: <?php hooks()->do_action('after_invoice_preview_more_menu'); ?>
519: <?php hooks()->do_action('after_admin_invoice_preview_template_tab_content_last_item', $invoice); ?>
540: <?php hooks()->do_action('after_invoice_preview_template_rendered', $invoice); ?>
## File: <perfexcrm_root>/application/views/admin/invoices/invoice_template.php:
27: <?php hooks()->do_action('before_render_invoice_template', $invoice ?? null); ?>
330: $currency_attr = hooks()->apply_filters('invoice_currency_attributes', $currency_attr);
808: <?php hooks()->do_action('after_admin_invoice_form_total_field', $invoice ?? null); ?>
829: <?php hooks()->do_action('after_render_invoice_template', $invoice ?? false); ?>
## File: <perfexcrm_root>/application/views/admin/invoices/record_payment_template.php:
93: hooks()->do_action('after_admin_last_record_payment_form_field', $invoice);
103: <?php hooks()->do_action('before_admin_add_payment_form_submit', $invoice); ?>
## File: <perfexcrm_root>/application/views/admin/invoices/table_html.php:
27: $table_data = hooks()->apply_filters('invoices_table_columns', $table_data);
## File: <perfexcrm_root>/application/views/admin/leads/_kan_ban_card.php:
63: <?php hooks()->do_action('before_leads_kanban_card_icons', $lead); ?>
74: <?php hooks()->do_action('after_leads_kanban_card_icons', $lead); ?>
## File: <perfexcrm_root>/application/views/admin/leads/email_integration.php:
18: <?php hooks()->do_action('before_leads_email_integration_form'); ?>
100: <?= render_input('check_every', 'leads_email_integration_check_every', $mail->check_every, 'number', ['min' => hooks()->apply_filters('leads_email_integration_check_every', 10), 'data-ays-ignore' => true]); ?>
## File: <perfexcrm_root>/application/views/admin/leads/forms.php:
15: <?php hooks()->do_action('forms_table_start'); ?>
## File: <perfexcrm_root>/application/views/admin/leads/lead.php:
67: <?= hooks()->apply_filters('lead_email_activity_subject', _l('lead_email_activity')); ?>
142: <?php hooks()->do_action('after_lead_lead_tabs', $lead ?? null); ?>
157: <?php hooks()->do_action('before_lead_email_activity', ['lead' => $lead, 'email_activity' => $mail_activity]); ?>
179: <?php hooks()->do_action('after_lead_email_activity', ['lead_id' => $lead->id, 'emails' => $mail_activity]); ?>
290: $table_data = hooks()->apply_filters('proposals_relation_table_columns', $table_data);
428: <?php hooks()->do_action('after_lead_tabs_content', $lead ?? null); ?>
433: <?php hooks()->do_action('lead_modal_profile_bottom', (isset($lead) ? $lead->id : '')); ?>
## File: <perfexcrm_root>/application/views/admin/leads/manage_leads.php:
275: $table_data = hooks()->apply_filters('leads_table_columns', $table_data);
## File: <perfexcrm_root>/application/views/admin/modules/list.php:
51: $action_links = hooks()->apply_filters("module_{$system_name}_action_links", $action_links);
105: hooks()->apply_filters("module_{$system_name}_description_info", $module_description_info);
## File: <perfexcrm_root>/application/views/admin/paymentmodes/paymentmode.php:
48: <?php hooks()->do_action('before_paymentmode_modal_form_close'); ?>
## File: <perfexcrm_root>/application/views/admin/payments/manage.php:
18: <?= hooks()->apply_filters('payments_table_default_order', json_encode([0, 'desc'])); ?>
## File: <perfexcrm_root>/application/views/admin/payments/payment.php:
210: <?php hooks()->do_action('before_admin_edit_payment_form_submit', $payment); ?>
## File: <perfexcrm_root>/application/views/admin/projects/manage.php:
60: <?= hooks()->apply_filters('projects_table_default_order', json_encode([5, 'asc'])); ?>
## File: <perfexcrm_root>/application/views/admin/projects/project_overview.php:
15: <?php hooks()->do_action('admin_area_after_project_progress') ?>
35: <?php hooks()->do_action('admin_project_overview_end_of_project_overview_left', $project) ?>
165: <?php hooks()->do_action('admin_project_overview_end_of_project_overview_right', $project) ?>
## File: <perfexcrm_root>/application/views/admin/projects/project_proposals.php:
15: <?php hooks()->add_action('app_admin_footer', function () { ?>
## File: <perfexcrm_root>/application/views/admin/projects/project_timesheets.php:
45: $table_data = hooks()->apply_filters('projects_timesheets_table_columns', $table_data);
## File: <perfexcrm_root>/application/views/admin/projects/table_html.php:
27: $table_data = hooks()->apply_filters('projects_table_columns', $table_data);
## File: <perfexcrm_root>/application/views/admin/projects/view.php:
195: <?php hooks()->do_action('before_render_project_view', $project->id); ?>
271: '<?= hooks()->apply_filters('admin_project_progress_color', '#84c529'); ?>';
## File: <perfexcrm_root>/application/views/admin/proposals/list_template.php:
83: $table_data = hooks()->apply_filters('proposals_table_columns', $table_data);
## File: <perfexcrm_root>/application/views/admin/proposals/proposal.php:
148: $currency_attr = hooks()->apply_filters('proposal_currency_attributes', $currency_attr);
## File: <perfexcrm_root>/application/views/admin/proposals/proposals_preview_template.php:
117: <?php hooks()->do_action('after_admin_proposal_preview_template_tab_menu_last_item', $proposal); ?>
173: <?php hooks()->do_action('after_proposal_view_as_client_link', $proposal); ?>
520: <?php hooks()->do_action('after_admin_invoice_proposal_template_tab_content_last_item', $proposal); ?>
## File: <perfexcrm_root>/application/views/admin/settings/all.php:
94: <?php hooks()->do_action('before_settings_group_view', $group); ?>
96: <?php hooks()->do_action('after_settings_group_view', $group); ?>
315: <?php hooks()->do_action('settings_group_end', $group); ?>
## File: <perfexcrm_root>/application/views/admin/settings/includes/cronjob.php:
40: <?php hooks()->do_action('after_cron_settings_last_tab'); ?>
264: <?php hooks()->do_action('after_cron_settings_last_tab_content'); ?>
## File: <perfexcrm_root>/application/views/admin/settings/includes/e_sign.php:
9: <?php hooks()->do_action('after_settings_e_sign_fields'); ?>
## File: <perfexcrm_root>/application/views/admin/settings/includes/info.php:
1: <?php hooks()->do_action('before_system_info'); ?>
538: hooks()->do_action('after_system_info_files_permissions');
540: $permissionsIssues = hooks()->apply_filters('system_info_files_permissions_issue', $permissionsIssues);
548: <?php hooks()->do_action('after_system_last_info_row'); ?>
## File: <perfexcrm_root>/application/views/admin/settings/includes/leads.php:
2: <?php hooks()->do_action('before_leads_settings'); ?>
36: $validationFields = hooks()->apply_filters('lead_available_dupicate_validation_fields_option', $validationFields);
88: <?php hooks()->do_action('after_leads_settings'); ?>
## File: <perfexcrm_root>/application/views/admin/settings/includes/localization.php:
38: $subtext = hooks()->apply_filters('settings_language_subtext', '', $availableLanguage);
## File: <perfexcrm_root>/application/views/admin/settings/includes/misc.php:
50: <?php hooks()->do_action('after_misc_settings'); ?>
## File: <perfexcrm_root>/application/views/admin/settings/includes/payment_gateways.php:
40: <?php hooks()->do_action('before_render_payment_gateway_settings', $gateway); ?>
## File: <perfexcrm_root>/application/views/admin/settings/includes/pdf.php:
95: <?php hooks()->do_action('after_pdf_signature_settings_fields'); ?>
216: <?php hooks()->do_action('after_pdf_document_formats'); ?>
## File: <perfexcrm_root>/application/views/admin/settings/includes/pusher.php:
8: <?php hooks()->do_action('after_pusher_cluster_option'); ?>
## File: <perfexcrm_root>/application/views/admin/settings/includes/sms.php:
2: hooks()->do_action('before_sms_gateways_settings');
119: hooks()->do_action('after_sms_trigger_textarea_content', ['name' => $trigger_name, 'options' => $trigger_opts]);
## File: <perfexcrm_root>/application/views/admin/settings/includes/tickets.php:
68: <code><?= hooks()->apply_filters('cpanel_tickets_forwarder_path', FCPATH . 'pipe.php'); ?></code>
89: <code><?= hooks()->apply_filters('ticket_form_file_location_settings', VIEWPATH . 'forms/ticket.php'); ?></code>
## File: <perfexcrm_root>/application/views/admin/staff/member.php:
298: hooks()->do_action('staff_render_permissions');
## File: <perfexcrm_root>/application/views/admin/staff/myprofile.php:
10: <?php hooks()->do_action('before_staff_myprofile'); ?>
## File: <perfexcrm_root>/application/views/admin/subscriptions/manage.php:
50: <?php hooks()->do_action('before_subscriptions_table'); ?>
## File: <perfexcrm_root>/application/views/admin/subscriptions/table_html.php:
49: hooks()->add_action('app_admin_footer', function () {
55: <?php echo hooks()->apply_filters('subscriptions_table_default_order', json_encode([6, 'desc'])); ?>
## File: <perfexcrm_root>/application/views/admin/tables/all_contacts.php:
131: $row = hooks()->apply_filters('all_contacts_table_row', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/clients.php:
45: $join = hooks()->apply_filters('customers_table_sql_join', $join);
51: $aColumns = hooks()->apply_filters('customers_table_sql_columns', $aColumns);
164: $row = hooks()->apply_filters('customers_table_row_data', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/contacts.php:
105: $row = hooks()->apply_filters('admin_customer_contacts_table_row', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/contracts.php:
67: $aColumns = hooks()->apply_filters('contracts_table_sql_columns', $aColumns);
143: $row = hooks()->apply_filters('contracts_table_row_data', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/estimate_request.php:
49: $aColumns = hooks()->apply_filters('estimate_request_table_sql_columns', $aColumns);
51: $additionalColumns = hooks()->apply_filters('estimate_request_table_additional_columns_sql', [
138: $row = hooks()->apply_filters('estimate_request_table_row_data', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/estimates.php:
65: $aColumns = hooks()->apply_filters('estimates_table_sql_columns', $aColumns);
150: $row = hooks()->apply_filters('estimates_table_row_data', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/expenses.php:
60: $aColumns = hooks()->apply_filters('expenses_table_sql_columns', $aColumns);
186: $row = hooks()->apply_filters('expenses_table_row_data', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/invoices.php:
63: $aColumns = hooks()->apply_filters('invoices_table_sql_columns', $aColumns);
144: $row = hooks()->apply_filters('invoices_table_row_data', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/leads.php:
132: $aColumns = hooks()->apply_filters('leads_table_sql_columns', $aColumns);
139: $additionalColumns = hooks()->apply_filters('leads_table_additional_columns_sql', [
280: $row = hooks()->apply_filters('leads_table_row_data', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/projects.php:
55: $aColumns = hooks()->apply_filters('projects_table_sql_columns', $aColumns);
140: $row = hooks()->apply_filters('projects_table_row_data', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/proposals_relations.php:
50: $aColumns = hooks()->apply_filters('proposals_relation_table_sql_columns', $aColumns);
## File: <perfexcrm_root>/application/views/admin/tables/proposals.php:
60: $aColumns = hooks()->apply_filters('proposals_table_sql_columns', $aColumns);
134: $row = hooks()->apply_filters('proposals_table_row_data', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/staff.php:
36: $where = hooks()->apply_filters('staff_table_sql_where', []);
103: $row = hooks()->apply_filters('staff_table_row', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/tasks_relations.php:
88: $aColumns = hooks()->apply_filters('tasks_related_table_sql_columns', $aColumns);
237: $row = hooks()->apply_filters('tasks_related_table_row_data', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/tasks.php:
54: $aColumns = hooks()->apply_filters('tasks_table_sql_columns', $aColumns);
222: $row = hooks()->apply_filters('tasks_table_row_data', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/tickets.php:
247: $row = hooks()->apply_filters('admin_tickets_table_row_data', $row, $aRow);
## File: <perfexcrm_root>/application/views/admin/tables/timesheets.php:
18: $aColumns = hooks()->apply_filters('projects_timesheets_table_sql_columns', $aColumns);
25: $join = hooks()->apply_filters('projects_timesheets_table_sql_join', $join);
## File: <perfexcrm_root>/application/views/admin/tables/includes/tasks_filter.php:
68: $where = hooks()->apply_filters('tasks_table_sql_where', $where);
## File: <perfexcrm_root>/application/views/admin/tasks/_table.php:
35: $table_data = hooks()->apply_filters('tasks_table_columns', $table_data);
## File: <perfexcrm_root>/application/views/admin/tasks/task.php:
52: $task_copy_statuses = hooks()->apply_filters('task_copy_statuses', $task_statuses);
54: $copy_template .= "<div class='radio radio-primary'><input type='radio' value='" . $copy_status['id'] . "' name='copy_task_status' id='copy_task_status_" . $copy_status['id'] . "'" . ($copy_status['id'] == hooks()->apply_filters('copy_task_default_status', 1) ? ' checked' : '') . "><label for='copy_task_status_" . $copy_status['id'] . "'>" . $copy_status['name'] . '</label></div>';
200: <?php hooks()->do_action('task_priorities_select', (isset($task) ? $task : 0)); ?>
365: hooks()->do_action('task_modal_rel_type_select', ['task' => (isset($task) ? $task : 0), 'rel_type' => $rel_type]);
## File: <perfexcrm_root>/application/views/admin/tasks/tasks_filter_by.php:
5: hooks()->do_action('tasks_filters_hidden_html');
## File: <perfexcrm_root>/application/views/admin/tasks/view_task_template.php:
425: <?php hooks()->do_action('before_task_description_section', $task); ?>
526: $show_more_link_task_attachments = hooks()->apply_filters('show_more_link_task_attachments', 2);
784: $task_copy_statuses = hooks()->apply_filters('task_copy_statuses', $task_statuses);
787: $copy_template .= "<div class='radio'><input type='radio' value='" . $copy_status['id'] . "' name='copy_task_status' id='copy_task_status_" . $copy_status['id'] . "'" . ($copy_status['id'] == hooks()->apply_filters('copy_task_default_status', 1) ? ' checked' : '') . "><label for='copy_task_status_" . $copy_status['id'] . "'>" . e($copy_status['name']) . '</label></div>';
836: $task_single_mark_as_statuses = hooks()->apply_filters('task_single_mark_as_statuses', $task_statuses);
## File: <perfexcrm_root>/application/views/admin/taxes/manage.php:
52: <?php hooks()->do_action('before_taxes_modal_form_close'); ?>
## File: <perfexcrm_root>/application/views/admin/tickets/add.php:
99: echo render_select('priority', $priorities, ['priorityid', 'name'], 'ticket_settings_priority', hooks()->apply_filters('new_ticket_priority_selected', 2), ['required' => 'true']); ?>
234: <?php hooks()->do_action('new_ticket_admin_page_loaded'); ?>
## File: <perfexcrm_root>/application/views/admin/tickets/list.php:
68: <?php hooks()->do_action('before_render_tickets_list_table'); ?>
## File: <perfexcrm_root>/application/views/admin/tickets/single.php:
171: <?php hooks()->do_action('after_admin_single_ticket_tab_menu_last_item', $ticket); ?>
185: <?php hooks()->do_action('after_admin_single_ticket_tab_menu_last_content', $ticket); ?>
264: <?php hooks()->do_action('ticket_admin_single_page_loaded', $ticket); ?>
## File: <perfexcrm_root>/application/views/admin/tickets/partials/ticket-tabpanel-add-reply.php:
5: <?php hooks()->do_action('before_admin_ticket_addreply_tabpanel_content', $ticket); ?>
165: <?= hooks()->apply_filters('ticket_add_response_and_back_to_list_default', 'checked'); ?>
## File: <perfexcrm_root>/application/views/admin/utilities/bulk_pdf_exporter.php:
124: <?php hooks()->do_action('after_bulk_pdf_export_options'); ?>
## File: <perfexcrm_root>/application/views/admin/utilities/calendar_filters.php:
7: <?php hooks()->do_action('before_calendar_filters'); ?>
104: <?php hooks()->do_action('after_calendar_filters'); ?>
## File: <perfexcrm_root>/application/views/admin/utilities/calendar.php:
19: <?php hooks()->do_action('after_calendar_loaded');?>
## File: <perfexcrm_root>/application/views/authentication/login_admin.php:
29: <?php hooks()->do_action('after_admin_login_form_start'); ?>
72: <?php hooks()->do_action('before_admin_login_form_close'); ?>
## File: <perfexcrm_root>/application/views/authentication/includes/head.php:
58: <?php hooks()->do_action('app_admin_authentication_head'); ?>
## File: <perfexcrm_root>/application/views/forms/estimate_request.php:
11: <?php hooks()->do_action('app_estimate_request_form_head'); ?>
33: <?php hooks()->do_action('estimate_request_form_start'); ?>
72: <?php hooks()->do_action('estimate_request_form_end'); ?>
166: <?php hooks()->do_action('app_estimate_request_form_footer'); ?>
## File: <perfexcrm_root>/application/views/forms/public_ticket.php:
2: <?php hooks()->do_action('public_ticket_start', $ticket); ?>
9: <?php hooks()->do_action('public_ticket_end', $ticket); ?>
## File: <perfexcrm_root>/application/views/forms/ticket.php:
9: <title><?php echo hooks()->apply_filters('ticket_form_title', _l('new_ticket')); ?></title>
16: <?php hooks()->do_action('app_ticket_form_head'); ?>
32: <?php hooks()->do_action('ticket_form_start'); ?>
35: <?php hooks()->do_action('ticket_form_after_subject'); ?>
40: <?php hooks()->do_action('ticket_form_after_name'); ?>
44: <?php hooks()->do_action('ticket_form_after_email'); ?>
56: <?php hooks()->do_action('ticket_form_after_department'); ?>
58: <?php echo render_select('priority', $priorities, ['priorityid', 'name'], 'ticket_form_priority', hooks()->apply_filters('new_ticket_priority_selected', 2), ['required' => 'true']); ?>
59: <?php hooks()->do_action('ticket_form_after_priority'); ?>
66: hooks()->do_action('ticket_form_after_service');
71: <?php hooks()->do_action('ticket_form_after_custom_fields'); ?>
74: <?php hooks()->do_action('ticket_form_after_message'); ?>
95: <?php hooks()->do_action('ticket_form_after_attachments'); ?>
131: <?php hooks()->do_action('ticket_form_after_submit_button'); ?>
133: <?php hooks()->do_action('ticket_form_end'); ?>
217: <?php hooks()->do_action('app_ticket_form_footer'); ?>
## File: <perfexcrm_root>/application/views/forms/web_to_lead.php:
11: <?php hooks()->do_action('app_web_to_lead_form_head'); ?>
32: <?php hooks()->do_action('web_to_lead_form_start'); ?>
67: <?php hooks()->do_action('web_to_lead_form_end'); ?>
154: <?php hooks()->do_action('app_web_to_lead_form_footer'); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/functions.php:
8: hooks()->add_action('app_customers_head', 'app_theme_head_hook');
14: hooks()->add_action('clients_init', 'add_default_theme_menu_items');
## File: <perfexcrm_root>/application/views/themes/perfex/head.php:
21: <?php hooks()->do_action('customers_after_body_start'); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/index.php:
15: <?php hooks()->do_action('customers_content_container_start'); ?>
23: <?php hooks()->do_action('before_customers_area_sub_menu_start'); ?>
50: <?php hooks()->do_action('after_customers_area_sub_menu_end'); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/template_parts/identity_confirmation_form.php:
15: <?php hooks()->do_action('before_confirmation_identity_fields'); ?>
70: <?php hooks()->do_action('after_confirmation_identity_fields'); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/template_parts/navigation.php:
18: <?php hooks()->do_action('customers_navigation_start'); ?>
33: <?php hooks()->do_action('customers_navigation_end'); ?>
120: <?= hooks()->do_action('customers_navigation_before_logout'); ?>
130: <?php hooks()->do_action('customers_navigation_after_profile'); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/template_parts/projects/edit_task.php:
34: <?php hooks()->apply_filters('task_priorities_select', $task); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/template_parts/projects/new_task.php:
36: <?php hooks()->apply_filters('task_priorities_select', 0); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/template_parts/projects/project_tabs.php:
15: <?php hooks()->do_action('after_customers_area_project_overview_tab', $project); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/template_parts/projects/project_task.php:
144: $show_more_link_task_attachments = hooks()->apply_filters('show_more_link_task_attachments_customers_area', 3);
## File: <perfexcrm_root>/application/views/themes/perfex/views/consent.php:
12: <?= e(hooks()->apply_filters('consent_public_page_heading', get_option('companyname'))); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/views/credit_note_pdf.php:
43: $credit_note_info = hooks()->apply_filters('credit_note_pdf_header_after_shipping_info', $credit_note_info, $credit_note);
47: $credit_note_info = hooks()->apply_filters('credit_note_pdf_header_after_date', $credit_note_info, $credit_note);
51: $credit_note_info = hooks()->apply_filters('credit_note_pdf_header_after_reference_no', $credit_note_info, $credit_note);
56: $credit_note_info = hooks()->apply_filters('credit_note_pdf_header_after_project', $credit_note_info, $credit_note);
59: $credit_note_info = hooks()->apply_filters('credit_note_pdf_header_before_custom_fields', $credit_note_info, $credit_note);
69: $credit_note_info = hooks()->apply_filters('credit_note_pdf_header_after_custom_fields', $credit_note_info, $credit_note);
77: $pdf->Ln(hooks()->apply_filters('pdf_info_and_table_separator', 6));
## File: <perfexcrm_root>/application/views/themes/perfex/views/estimatehtml.php:
226: <?php hooks()->do_action('after_total_summary_estimatehtml', $estimate); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/views/estimatepdf.php:
68: $organization_info = hooks()->apply_filters('estimatepdf_organization_info', $organization_info, $estimate);
76: $pdf->Ln(hooks()->apply_filters('pdf_info_and_table_separator', 6));
## File: <perfexcrm_root>/application/views/themes/perfex/views/files.php:
5: <?php hooks()->do_action('after_customers_area_files_heading'); ?>
11: <?php hooks()->do_action('after_customers_area_files_dropzone'); ?>
102: <?php hooks()->do_action('after_customers_area_files'); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/views/home.php:
11: <?php hooks()->do_action('client_area_after_project_overview'); ?>
85: <?php hooks()->do_action('client_area_dashboard_end'); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/views/invoicehtml.php:
75: <?php hooks()->do_action('after_left_panel_invoicehtml', $invoice); ?>
136: <?php hooks()->do_action('after_right_panel_invoicehtml', $invoice); ?>
242: <?php hooks()->do_action('after_total_summary_invoicehtml', $invoice); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/views/invoicepdf.php:
52: $invoice_info = hooks()->apply_filters('invoice_pdf_header_after_date', $invoice_info, $invoice);
56: $invoice_info = hooks()->apply_filters('invoice_pdf_header_after_due_date', $invoice_info, $invoice);
61: $invoice_info = hooks()->apply_filters('invoice_pdf_header_after_sale_agent', $invoice_info, $invoice);
66: $invoice_info = hooks()->apply_filters('invoice_pdf_header_after_project_name', $invoice_info, $invoice);
69: $invoice_info = hooks()->apply_filters('invoice_pdf_header_before_custom_fields', $invoice_info, $invoice);
79: $invoice_info = hooks()->apply_filters('invoice_pdf_header_after_custom_fields', $invoice_info, $invoice);
80: $organization_info = hooks()->apply_filters('invoicepdf_organization_info', $organization_info, $invoice);
81: $invoice_info = hooks()->apply_filters('invoice_pdf_info', $invoice_info, $invoice);
89: $pdf->Ln(hooks()->apply_filters('pdf_info_and_table_separator', 6));
## File: <perfexcrm_root>/application/views/themes/perfex/views/knowledge_base_article.php:
31: <?php hooks()->do_action('after_single_knowledge_base_article_customers_area', $article->articleid); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/views/knowledge_base.php:
19: hooks()->do_action('after_kb_groups_customers_area');
## File: <perfexcrm_root>/application/views/themes/perfex/views/login.php:
11: <?php hooks()->do_action('clients_login_form_start'); ?>
80: <?php hooks()->do_action('clients_login_form_end'); ?>
## File: <perfexcrm_root>/application/views/themes/perfex/views/open_ticket.php:
8: <?php hooks()->do_action('before_client_open_ticket_form_start'); ?>
70: <?= set_select('priority', $priority['priorityid'], hooks()->apply_filters('new_ticket_priority_selected', 2) == $priority['priorityid']); ?>>
## File: <perfexcrm_root>/application/views/themes/perfex/views/profile.php:
6: <?php hooks()->do_action('before_client_profile_form_loaded'); ?>
156: <?php hooks()->do_action('after_client_profile_form_loaded'); ?>
206: <?php hooks()->do_action('after_client_profile_password_form_loaded'); ?>
## File: <perfexcrm_root>/modules/backup/backup.php:
21: hooks()->add_action('after_cron_run', 'backup_perform');
22: hooks()->add_action('after_system_last_info_row', 'backup_set_info_manager');
23: hooks()->add_filter('module_backup_action_links', 'module_backup_action_links');
24: hooks()->add_action('admin_init', 'backup_module_init_menu_items');
26: hooks()->add_filter('numbers_of_features_using_cron_job', 'backup_numbers_of_features_using_cron_job');
27: hooks()->add_filter('used_cron_features', 'backup_used_cron_features');
## File: <perfexcrm_root>/modules/backup/controllers/Backup.php:
39: hooks()->do_action('before_make_backup');
57: hooks()->do_action('before_update_backup_options');
## File: <perfexcrm_root>/modules/exports/exports.php:
13: hooks()->add_action('admin_init', 'export_module_init_menu_items');
## File: <perfexcrm_root>/modules/exports/libraries/Exports_module.php:
30: $this->features = hooks()->apply_filters('csv_export_features', [
## File: <perfexcrm_root>/modules/exports/services/CSVExport.php:
37: $this->batchSize = hooks()->apply_filters('csv_export_batch_size', 100);
## File: <perfexcrm_root>/modules/goals/goals.php:
14: hooks()->add_action('after_cron_run', 'goals_notification');
15: hooks()->add_action('admin_init', 'goals_module_init_menu_items');
16: hooks()->add_action('staff_member_deleted', 'goals_staff_member_deleted');
17: hooks()->add_action('admin_init', 'goals_permissions');
19: hooks()->add_filter('migration_tables_to_replace_old_links', 'goals_migration_tables_to_replace_old_links');
20: hooks()->add_filter('global_search_result_query', 'goals_global_search_result_query', 10, 3);
21: hooks()->add_filter('global_search_result_output', 'goals_global_search_result_output', 10, 2);
22: hooks()->add_filter('get_dashboard_widgets', 'goals_add_dashboard_widget');
225: return hooks()->apply_filters('get_goal_types', $types);
## File: <perfexcrm_root>/modules/goals/models/Goals_model.php:
274: $sql = hooks()->apply_filters('calculate_goal_achievement_sql', '', $goal);
## File: <perfexcrm_root>/modules/ideal/ideal.php:
86: hooks()->add_action('before_update_system_options', 'prevent_activate_ideal_gateway');
## File: <perfexcrm_root>/modules/ideal/libraries/Ideal_gateway.php:
52: hooks()->add_action('before_render_payment_gateway_settings', 'idealModuleWebhookCheck');
## File: <perfexcrm_root>/modules/menu_setup/menu_setup.php:
16: hooks()->add_filter('sidebar_menu_items', 'app_admin_sidebar_custom_options', 999);
17: hooks()->add_filter('sidebar_menu_items', 'app_admin_sidebar_custom_positions', 998);
19: hooks()->add_filter('setup_menu_items', 'app_admin_setup_menu_custom_options', 999);
20: hooks()->add_filter('setup_menu_items', 'app_admin_setup_menu_custom_positions', 998);
21: hooks()->add_filter('module_menu_setup_action_links', 'module_menu_setup_action_links');
22: hooks()->add_action('admin_init', 'menu_setup_init_menu_items');
## File: <perfexcrm_root>/modules/menu_setup/controllers/Menu_setup.php:
18: hooks()->remove_filter('sidebar_menu_items', 'app_admin_sidebar_custom_options', 999);
30: hooks()->do_action('before_update_aside_menu');
37: hooks()->do_action('aside_menu_resetted');
43: hooks()->remove_filter('setup_menu_items', 'app_admin_setup_menu_custom_options', 999);
49: $data['no_disable'] = hooks()->apply_filters('setup_menu_no_disable_items', [
62: hooks()->do_action('before_update_setup_menu');
70: hooks()->do_action('setup_menu_resetted');
## File: <perfexcrm_root>/modules/surveys/surveys.php:
16: hooks()->add_action('after_cron_run', 'surveys_send');
17: hooks()->add_action('admin_init', 'surveys_module_init_menu_items');
18: hooks()->add_action('admin_init', 'surveys_permissions');
19: hooks()->add_action('after_cron_settings_last_tab', 'survey_cron_settings_tab');
20: hooks()->add_action('after_cron_settings_last_tab_content', 'survey_cron_settings_tab_content');
21: hooks()->add_action('contact_deleted', 'survey_contact_deleted_hook', 10, 2);
23: hooks()->add_filter('numbers_of_features_using_cron_job', 'surveys_numbers_of_features_using_cron_job');
24: hooks()->add_filter('used_cron_features', 'surveys_used_cron_features');
25: hooks()->add_filter('migration_tables_to_replace_old_links', 'surveys_migration_tables_to_replace_old_links');
26: hooks()->add_filter('global_search_result_query', 'surveys_global_search_result_query', 10, 3);
27: hooks()->add_filter('global_search_result_output', 'surveys_global_search_result_output', 10, 2);
## File: <perfexcrm_root>/modules/surveys/controllers/Participate.php:
46: set_alert('success', hooks()->apply_filters('survey_success_message', 'Thank you for participating in this survey. Your answers are very important to us.'));
48: redirect(hooks()->apply_filters('survey_default_redirect', site_url('surveys/survey/' . $id . '/' . $hash . '?participated=yes')));
## File: <perfexcrm_root>/modules/theme_style/theme_style.php:
39: hooks()->add_action('app_admin_head', 'theme_style_admin_head');
40: hooks()->add_action('app_admin_authentication_head', 'theme_style_admin_head');
41: hooks()->add_action('app_customers_head', 'theme_style_clients_area_head');
42: hooks()->add_action('app_admin_authentication_head', 'theme_style_general_and_buttons');
43: hooks()->add_action('app_external_form_head', 'theme_style_general_and_buttons');
44: hooks()->add_filter('module_theme_style_action_links', 'module_theme_style_action_links');
45: hooks()->add_action('admin_init', 'theme_style_init_menu_items');
46: hooks()->add_filter('admin_header_logo_url', 'determine_header_logo_url_based_on_background_color');
## File: <perfexcrm_root>/modules/theme_style/controllers/Theme_style.php:
30: hooks()->do_action('before_save_theme_style');
## File: <perfexcrm_root>/modules/theme_style/helpers/theme_style_helper.php:
364: $areas = hooks()->apply_filters('get_styling_areas', $areas);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment