# Updated Full Perfex Hook List - For Perfex CRM Developers - Perfex CRM v3.2.1 ## File: /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: /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: /application/controllers/Contacts.php: 30: hooks()->do_action('after_clients_area_init', $this); ## File: /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: /application/controllers/Cron.php: 17: $seconds = hooks()->apply_filters('cron_functions_execute_seconds', 300); ## File: /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: /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: /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: /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: /application/controllers/Knowledge_base.php: 15: hooks()->do_action('customers_area_knowledge_base_construct'); 62: hooks()->add_action('app_customers_head', function () { ## File: /application/controllers/Migration.php: 212: $tables = hooks()->apply_filters('migration_tables_to_replace_old_links', $tables); ## File: /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: /application/controllers/Subscription.php: 143: $sessionData = hooks()->apply_filters('stripe_subscription_session_data', $sessionData, $subscription_hash); ## File: /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: /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: /application/controllers/admin/Auto_update.php: 14: hooks()->do_action('before_perform_update', $latest_version); ## File: /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: /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: /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: /application/controllers/admin/Estimates.php: 541: $fileNameHookData = hooks()->apply_filters('estimate_file_name_admin_area', [ ## File: /application/controllers/admin/Expenses.php: 164: hooks()->do_action('before_do_bulk_action_for_expenses'); ## File: /application/controllers/admin/Invoice_items.php: 172: hooks()->do_action('before_do_bulk_action_for_items'); ## File: /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: /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: /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: /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: /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: /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: /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: /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: /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: /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: /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: /application/controllers/gateways/Stripe.php: 213: hooks()->do_action('customer_subscribed_to_subscription', $dbSubscription); ## File: /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: /application/core/App_Controller.php: 93: hooks()->do_action('app_init'); ## File: /application/core/App_Loader.php: 22: $hook_data = hooks()->apply_filters('app_view_data', ['data' => $_ci_vars, 'path' => $_ci_view]); ## File: /application/core/App_Model.php: 22: hooks()->do_action('model_init', $this); ## File: /application/core/App_Security.php: 19: $exclude_uris = hooks()->apply_filters( ## File: /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: /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: /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: /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: /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: /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: /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: /application/helpers/database_helper.php: 94: $data = hooks()->apply_filters('notification_data', $data); 108: hooks()->do_action('notification_created', $notification_id); ## File: /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: /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: /application/helpers/email_templates_helper.php: 72: return hooks()->apply_filters('email_template_parsed', $template); ## File: /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: /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: /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: /application/helpers/func_helper.php: 133: return hooks()->apply_filters('sec2qty_formatted', $qty, $sec); ## File: /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: /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: /application/helpers/leads_helper.php: 5: hooks()->add_action('app_admin_head', 'leads_app_admin_head_data'); ## File: /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: /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: /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: /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: /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: /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: /application/helpers/proposals_helper.php: 154: return hooks()->apply_filters('proposal_number_format', $format, $id); ## File: /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: /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: /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: /application/helpers/staff_helper.php: 178: return hooks()->apply_filters('staff_permissions', $corePermissions, $data); 358: $totalRecentSearches = hooks()->apply_filters('total_recent_searches', 5); ## File: /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: /application/helpers/table_helper.php: 5: hooks()->add_action('admin_init', function () { ## File: /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: /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: /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: /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: /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: /application/helpers/widgets_helper.php: 68: return hooks()->apply_filters('get_dashboard_widgets', $widgets); ## File: /application/hooks/InitHook.php: 55: hooks()->do_action('modules_loaded'); ## File: /application/hooks/InitModules.php: 23: hooks()->add_filter('csrf_exclude_uris', function ($current) use ($uris) { ## File: /application/language/bulgarian/bulgarian_num_words_lang.php: 128: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/catalan/catalan_num_words_lang.php: 133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/chinese/chinese_num_words_lang.php: 137: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/czech/czech_num_words_lang.php: 134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/dutch/dutch_num_words_lang.php: 133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/english/english_num_words_lang.php: 142: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/finnish/finnish_num_words_lang.php: 132: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/francais_canada/francais_canada_num_words_lang.php: 139: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/french/french_num_words_lang.php: 133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/german/german_num_words_lang.php: 133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/greek/greek_num_words_lang.php: 127: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies',$currencies); ## File: /application/language/indonesia/indonesia_num_words_lang.php: 134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/italian/italian_num_words_lang.php: 133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/japanese/japanese_num_words_lang.php: 134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/norwegian/norwegian_num_words_lang.php: 134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/persian/persian_num_words_lang.php: 133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/polish/polish_num_words_lang.php: 134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/portuguese/portuguese_num_words_lang.php: 133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/portuguese_br/portuguese_br_num_words_lang.php: 133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/romanian/romanian_num_words_lang.php: 135: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/russian/russian_num_words_lang.php: 134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/slovak/slovak_num_words_lang.php: 133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/spanish/spanish_num_words_lang.php: 133: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/swedish/swedish_num_words_lang.php: 134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/turkish/turkish_num_words_lang.php: 134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/ukrainian/ukrainian_num_words_lang.php: 134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /application/language/vietnamese/vietnamese_num_words_lang.php: 134: $currencies = hooks()->apply_filters('before_number_format_render_languge_currencies', $currencies); ## File: /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: /application/libraries/App_clients_area_constructor.php: 49: hooks()->do_action('clients_init'); 62: $vars = hooks()->apply_filters('customers_area_autoloaded_vars', $vars); ## File: /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: /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: /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: /application/libraries/App_module_installer.php: 30: hooks()->do_action('pre_upload_module', $_FILES['module']); 48: hooks()->do_action('module_installed', $_FILES['module']); ## File: /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: /application/libraries/App_number_to_word.php: 165: return hooks()->apply_filters('before_return_num_word', $final_val, [ ## File: /application/libraries/App_pusher.php: 31: $pusher_options = hooks()->apply_filters('pusher_options', []); ## File: /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: /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: /application/libraries/App_tags.php: 85: hooks()->do_action('new_tag_created', $tag_id); ## File: /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: /application/libraries/Stripe_core.php: 118: return hooks()->apply_filters('stripe_webhook_events', $events); ## File: /application/libraries/assets/App_css.php: 44: hooks()->do_action('before_compile_css_assets', $group); ## File: /application/libraries/assets/App_scripts.php: 43: hooks()->do_action('before_compile_scripts_assets', $group); ## File: /application/libraries/gateways/App_gateway.php: 53: hooks()->add_action('before_get_payment_gateways', [$this, 'tryToAutoRegisterPaymentGateway'], 11, 1); ## File: /application/libraries/gateways/Authorize_acceptjs_gateway.php: 73: hooks()->add_action('before_render_payment_gateway_settings', 'authorize_acceptjs_notice'); ## File: /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: /application/libraries/gateways/Paypal_gateway.php: 90: $gateway->setlogoImageUrl(hooks()->apply_filters('paypal_logo_url', $logoURL)); ## File: /application/libraries/gateways/Stripe_gateway.php: 65: hooks()->add_action('before_render_payment_gateway_settings', 'stripe_gateway_webhook_check'); ## File: /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: /application/libraries/gateways/Two_checkout_gateway.php: 62: hooks()->add_action('before_render_payment_gateway_settings', 'two_checkout_gateway_webhook_notice'); ## File: /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: /application/libraries/import/Import_expenses.php: 23: $this->notImportableFields = hooks()->apply_filters('not_importable_expense_fields', [ ## File: /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: /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: /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: /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: /application/libraries/merge_fields/Contract_merge_fields.php: 120: return hooks()->apply_filters('contract_merge_fields', $fields, [ ## File: /application/libraries/merge_fields/Credit_note_merge_fields.php: 95: return hooks()->apply_filters('credit_note_merge_fields', $fields, [ ## File: /application/libraries/merge_fields/Estimate_merge_fields.php: 117: return hooks()->apply_filters('estimate_merge_fields', $fields, [ ## File: /application/libraries/merge_fields/Estimate_request_merge_fields.php: 130: return hooks()->apply_filters('estimate_request_merge_fields', $fields, [ ## File: /application/libraries/merge_fields/Event_merge_fields.php: 71: return hooks()->apply_filters('event_merge_fields', $fields, [ ## File: /application/libraries/merge_fields/Invoice_batch_payments_merge_fields.php: 40: return hooks()->apply_filters('invoice_batch_payments_merge_fields', $fields); ## File: /application/libraries/merge_fields/Invoice_merge_fields.php: 217: return hooks()->apply_filters('invoice_merge_fields', $fields, [ ## File: /application/libraries/merge_fields/Leads_merge_fields.php: 262: return hooks()->apply_filters('lead_merge_fields', $fields, ['id' => $lead->id, 'lead' => $lead]); ## File: /application/libraries/merge_fields/Notifications_merge_fields.php: 42: return hooks()->apply_filters('notifications_merge_fields', $fields); ## File: /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: /application/libraries/merge_fields/Projects_merge_fields.php: 234: return hooks()->apply_filters('project_merge_fields', $fields, [ ## File: /application/libraries/merge_fields/Proposals_merge_fields.php: 188: return hooks()->apply_filters('proposal_merge_fields', $fields, [ ## File: /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: /application/libraries/merge_fields/Subscriptions_merge_fields.php: 84: return hooks()->apply_filters('subscription_merge_fields', $fields, [ ## File: /application/libraries/merge_fields/Tasks_merge_fields.php: 200: return hooks()->apply_filters('task_merge_fields', $fields, [ ## File: /application/libraries/merge_fields/Ticket_merge_fields.php: 208: return hooks()->apply_filters('ticket_merge_fields', $fields, [ ## File: /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: /application/libraries/pdf/Contract_pdf.php: 14: $contract = hooks()->apply_filters('contract_html_pdf_data', $contract); ## File: /application/libraries/pdf/Estimate_pdf.php: 17: $estimate = hooks()->apply_filters('estimate_html_pdf_data', $estimate); ## File: /application/libraries/pdf/Invoice_pdf.php: 16: $invoice = hooks()->apply_filters('invoice_html_pdf_data', $invoice); ## File: /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('
', hooks()->apply_filters('pdf_signature_break_lines', 1)) . ''; 119: return hooks()->apply_filters( ## File: /application/libraries/pdf/Proposal_pdf.php: 26: $proposal = hooks()->apply_filters('proposal_html_pdf_data', $proposal); ## File: /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: /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: /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: /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: /application/models/Client_groups_model.php: 93: hooks()->do_action('customer_group_deleted', $id); ## File: /application/models/Client_vault_entries_model.php: 99: hooks()->do_action('customer_vault_entry_deleted', ['vault_id' => $id, 'customer_id' => $vault->customer_id]); ## File: /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: /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: /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: /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: /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: /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: /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: /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: /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: /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: /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: /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: /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: /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: /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: /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: /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: /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: /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: /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: /application/models/Statement_model.php: 234: return hooks()->apply_filters('statement', $result); ## File: /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: /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: /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: /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: /application/models/Todo_model.php: 12: $this->todo_limit = hooks()->apply_filters('todos_limit', 10); ## File: /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: /application/services/CustomerProfileBadges.php: 36: $hook = hooks()->apply_filters('customers_profile_tab_badge', [ ## File: /application/services/LeadProfileBadges.php: 28: $count = hooks()->apply_filters('lead_tab_badge_count', $count, [ ## File: /application/services/ViewsTracking.php: 47: hooks()->do_action('before_insert_views_tracking', [ ## File: /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: /application/services/upgrade/Response.php: 11: hooks()->do_action('auto_upgrade_failed_to_extract_zip_file', $zipFile); ## File: /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: /application/views/admin/search.php: 84:
  • apply_filters('global_search_result_output', $output, ['result'=>$_result, 'type'=>$data['type']]); ?>
  • ## File: /application/views/admin/clients/client_js.php: 182: apply_filters('projects_table_default_order', json_encode([5, 'asc'])); ?>); 292: apply_filters('contact_email_required', 'true') === 'true') { ?> 297: apply_filters('contact_email_unique', 'true') === 'true') { ?> ## File: /application/views/admin/clients/manage.php: 211: $table_data = hooks()->apply_filters('customers_table_columns', $table_data); 232: apply_filters('customers_table_default_order', json_encode([2, 'asc'])); ?> ## File: /application/views/admin/clients/groups/profile.php: 31: apply_filters('customer_profile_tab_custom_fields_text', _l('custom_fields')); ?> 41: do_action('after_customer_billing_and_shipping_tab', $client ?? false); ?> 52: do_action('after_customer_admins_tab', $client); ?> 58: do_action('after_custom_profile_tab_content', $client ?? false); ?> 87: do_action('before_customer_profile_company_field', $client ?? null); ?> 92: do_action('after_customer_profile_company_field', $client ?? null); ?> 97: do_action('before_customer_profile_phone_field', $client ?? null); ?> 100: do_action('after_customer_profile_company_phone', $client ?? null); ?> ## File: /application/views/admin/clients/groups/proposals.php: 42: $table_data = hooks()->apply_filters('proposals_relation_table_columns', $table_data); ## File: /application/views/admin/clients/groups/statement.php: 116: add_action('app_admin_footer', 'parse_customer_statement_html'); ## File: /application/views/admin/clients/groups/vault.php: 158: add_action('app_admin_footer', 'vault_form_validate'); ## File: /application/views/admin/clients/modals/contact.php: 311: do_action('after_contact_modal_content_loaded'); ?> ## File: /application/views/admin/contracts/contract.php: 95: do_action('after_contract_view_as_client_link', $contract); ?> 399: apply_filters('new_contract_default_content', ' ' . _l('click_to_add_content') . '') ?> ## File: /application/views/admin/contracts/manage.php: 117: apply_filters('contracts_table_default_order', json_encode([6, 'asc'])); ?> ## File: /application/views/admin/contracts/table_html.php: 31: $table_data = hooks()->apply_filters('contracts_table_columns', $table_data); ## File: /application/views/admin/credit_notes/credit_note_preview_template.php: 143: do_action('credit_note_menu_links_start', $credit_note); ?> ## File: /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: /application/views/admin/custom_fields/customfield.php: 101: do_action('after_custom_fields_select_options', $custom_field ?? null); ?> ## File: /application/views/admin/dashboard/dashboard.php: 19: do_action('before_start_render_dashboard_content'); ?> 27: do_action('after_dashboard_top_container'); ?> 36: do_action('after_dashboard_half_container'); ?> 57: do_action('after_dashboard'); ?> ## File: /application/views/admin/dashboard/widgets/user_data.php: 68: do_action('after_user_data_widget_tabs'); ?> 156: do_action('after_user_data_widge_tabs_content'); ?> ## File: /application/views/admin/emails/email_templates.php: 14: do_action('before_tickets_email_templates'); ?> 57: do_action('before_estimates_email_templates'); ?> 101: do_action('before_contracts_email_templates'); ?> 144: do_action('before_invoices_email_templates'); ?> 189: do_action('before_subscriptions_email_templates'); ?> 234: do_action('before_credit_notes_email_templates'); ?> 279: do_action('before_tasks_email_templates'); ?> 323: do_action('before_customers_email_templates'); ?> 371: do_action('before_proposals_email_templates'); ?> 415: do_action('before_projects_email_templates'); ?> 458: do_action('before_staff_email_templates'); ?> 502: do_action('before_leads_email_templates'); ?> 546: do_action('before_estimate_request_email_templates'); ?> 591: do_action('before_notifications_email_templates'); ?> 636: do_action('before_gdpr_email_templates'); ?> 682: do_action('after_email_templates'); ?> ## File: /application/views/admin/emails/template.php: 18:
    apply_filters('admin_header_logo_href', admin_url()); ?>"> 23: href="apply_filters('admin_header_logo_href', admin_url()); ?>"> 172: do_action('admin_navbar_start'); ?> 243: do_action('admin_navbar_end'); ?> ## File: /application/views/admin/includes/scripts.php: 4: do_action('before_js_scripts_render'); ?> 27: apply_filters('pusher_options', [['disableStats' => true]]); ## File: /application/views/admin/includes/setup_menu.php: 76: do_action('after_render_single_setup_menu', $item); ?> 81: apply_filters('help_menu_item_text', _l('setup_help')); ?> ## File: /application/views/admin/includes/modals/newsfeed_form.php: 39: apply_filters('total_pages_newsfeed', total_rows(db_prefix() . 'newsfeed_posts') / 10)); ?> ## File: /application/views/admin/invoice_items/item.php: 88: do_action('before_invoice_item_modal_form_close'); ?> ## File: /application/views/admin/invoice_items/manage.php: 44: do_action('before_items_page_content'); ?> ## File: /application/views/admin/invoices/invoice_preview_html.php: 105: do_action('after_left_panel_invoice_preview_template', $invoice); ?> 162: do_action('after_right_panel_invoice_preview_template', $invoice); ?> ## File: /application/views/admin/invoices/invoice_preview_template.php: 152: do_action('after_admin_invoice_preview_template_tab_menu_last_item', $invoice); ?> 229: do_action('after_invoice_view_as_client_link', $invoice); ?> 299: do_action('after_invoice_preview_more_menu'); ?> 519: do_action('after_admin_invoice_preview_template_tab_content_last_item', $invoice); ?> 540: do_action('after_invoice_preview_template_rendered', $invoice); ?> ## File: /application/views/admin/invoices/invoice_template.php: 27: do_action('before_render_invoice_template', $invoice ?? null); ?> 330: $currency_attr = hooks()->apply_filters('invoice_currency_attributes', $currency_attr); 808: do_action('after_admin_invoice_form_total_field', $invoice ?? null); ?> 829: do_action('after_render_invoice_template', $invoice ?? false); ?> ## File: /application/views/admin/invoices/record_payment_template.php: 93: hooks()->do_action('after_admin_last_record_payment_form_field', $invoice); 103: do_action('before_admin_add_payment_form_submit', $invoice); ?> ## File: /application/views/admin/invoices/table_html.php: 27: $table_data = hooks()->apply_filters('invoices_table_columns', $table_data); ## File: /application/views/admin/leads/_kan_ban_card.php: 63: do_action('before_leads_kanban_card_icons', $lead); ?> 74: do_action('after_leads_kanban_card_icons', $lead); ?> ## File: /application/views/admin/leads/email_integration.php: 18: do_action('before_leads_email_integration_form'); ?> 100: check_every, 'number', ['min' => hooks()->apply_filters('leads_email_integration_check_every', 10), 'data-ays-ignore' => true]); ?> ## File: /application/views/admin/leads/forms.php: 15: do_action('forms_table_start'); ?> ## File: /application/views/admin/leads/lead.php: 67: apply_filters('lead_email_activity_subject', _l('lead_email_activity')); ?> 142: do_action('after_lead_lead_tabs', $lead ?? null); ?> 157: do_action('before_lead_email_activity', ['lead' => $lead, 'email_activity' => $mail_activity]); ?> 179: 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: do_action('after_lead_tabs_content', $lead ?? null); ?> 433: do_action('lead_modal_profile_bottom', (isset($lead) ? $lead->id : '')); ?> ## File: /application/views/admin/leads/manage_leads.php: 275: $table_data = hooks()->apply_filters('leads_table_columns', $table_data); ## File: /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: /application/views/admin/paymentmodes/paymentmode.php: 48: do_action('before_paymentmode_modal_form_close'); ?> ## File: /application/views/admin/payments/manage.php: 18: apply_filters('payments_table_default_order', json_encode([0, 'desc'])); ?> ## File: /application/views/admin/payments/payment.php: 210: do_action('before_admin_edit_payment_form_submit', $payment); ?> ## File: /application/views/admin/projects/manage.php: 60: apply_filters('projects_table_default_order', json_encode([5, 'asc'])); ?> ## File: /application/views/admin/projects/project_overview.php: 15: do_action('admin_area_after_project_progress') ?> 35: do_action('admin_project_overview_end_of_project_overview_left', $project) ?> 165: do_action('admin_project_overview_end_of_project_overview_right', $project) ?> ## File: /application/views/admin/projects/project_proposals.php: 15: add_action('app_admin_footer', function () { ?> ## File: /application/views/admin/projects/project_timesheets.php: 45: $table_data = hooks()->apply_filters('projects_timesheets_table_columns', $table_data); ## File: /application/views/admin/projects/table_html.php: 27: $table_data = hooks()->apply_filters('projects_table_columns', $table_data); ## File: /application/views/admin/projects/view.php: 195: do_action('before_render_project_view', $project->id); ?> 271: 'apply_filters('admin_project_progress_color', '#84c529'); ?>'; ## File: /application/views/admin/proposals/list_template.php: 83: $table_data = hooks()->apply_filters('proposals_table_columns', $table_data); ## File: /application/views/admin/proposals/proposal.php: 148: $currency_attr = hooks()->apply_filters('proposal_currency_attributes', $currency_attr); ## File: /application/views/admin/proposals/proposals_preview_template.php: 117: do_action('after_admin_proposal_preview_template_tab_menu_last_item', $proposal); ?> 173: do_action('after_proposal_view_as_client_link', $proposal); ?> 520: do_action('after_admin_invoice_proposal_template_tab_content_last_item', $proposal); ?> ## File: /application/views/admin/settings/all.php: 94: do_action('before_settings_group_view', $group); ?> 96: do_action('after_settings_group_view', $group); ?> 315: do_action('settings_group_end', $group); ?> ## File: /application/views/admin/settings/includes/cronjob.php: 40: do_action('after_cron_settings_last_tab'); ?> 264: do_action('after_cron_settings_last_tab_content'); ?> ## File: /application/views/admin/settings/includes/e_sign.php: 9: do_action('after_settings_e_sign_fields'); ?> ## File: /application/views/admin/settings/includes/info.php: 1: 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: do_action('after_system_last_info_row'); ?> ## File: /application/views/admin/settings/includes/leads.php: 2: do_action('before_leads_settings'); ?> 36: $validationFields = hooks()->apply_filters('lead_available_dupicate_validation_fields_option', $validationFields); 88: do_action('after_leads_settings'); ?> ## File: /application/views/admin/settings/includes/localization.php: 38: $subtext = hooks()->apply_filters('settings_language_subtext', '', $availableLanguage); ## File: /application/views/admin/settings/includes/misc.php: 50: do_action('after_misc_settings'); ?> ## File: /application/views/admin/settings/includes/payment_gateways.php: 40: do_action('before_render_payment_gateway_settings', $gateway); ?> ## File: /application/views/admin/settings/includes/pdf.php: 95: do_action('after_pdf_signature_settings_fields'); ?> 216: do_action('after_pdf_document_formats'); ?> ## File: /application/views/admin/settings/includes/pusher.php: 8: do_action('after_pusher_cluster_option'); ?> ## File: /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: /application/views/admin/settings/includes/tickets.php: 68: apply_filters('cpanel_tickets_forwarder_path', FCPATH . 'pipe.php'); ?> 89: apply_filters('ticket_form_file_location_settings', VIEWPATH . 'forms/ticket.php'); ?> ## File: /application/views/admin/staff/member.php: 298: hooks()->do_action('staff_render_permissions'); ## File: /application/views/admin/staff/myprofile.php: 10: do_action('before_staff_myprofile'); ?> ## File: /application/views/admin/subscriptions/manage.php: 50: do_action('before_subscriptions_table'); ?> ## File: /application/views/admin/subscriptions/table_html.php: 49: hooks()->add_action('app_admin_footer', function () { 55: apply_filters('subscriptions_table_default_order', json_encode([6, 'desc'])); ?> ## File: /application/views/admin/tables/all_contacts.php: 131: $row = hooks()->apply_filters('all_contacts_table_row', $row, $aRow); ## File: /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: /application/views/admin/tables/contacts.php: 105: $row = hooks()->apply_filters('admin_customer_contacts_table_row', $row, $aRow); ## File: /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: /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: /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: /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: /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: /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: /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: /application/views/admin/tables/proposals_relations.php: 50: $aColumns = hooks()->apply_filters('proposals_relation_table_sql_columns', $aColumns); ## File: /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: /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: /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: /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: /application/views/admin/tables/tickets.php: 247: $row = hooks()->apply_filters('admin_tickets_table_row_data', $row, $aRow); ## File: /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: /application/views/admin/tables/includes/tasks_filter.php: 68: $where = hooks()->apply_filters('tasks_table_sql_where', $where); ## File: /application/views/admin/tasks/_table.php: 35: $table_data = hooks()->apply_filters('tasks_table_columns', $table_data); ## File: /application/views/admin/tasks/task.php: 52: $task_copy_statuses = hooks()->apply_filters('task_copy_statuses', $task_statuses); 54: $copy_template .= "
    apply_filters('copy_task_default_status', 1) ? ' checked' : '') . ">
    '; 200: 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: /application/views/admin/tasks/tasks_filter_by.php: 5: hooks()->do_action('tasks_filters_hidden_html'); ## File: /application/views/admin/tasks/view_task_template.php: 425: 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 .= "
    apply_filters('copy_task_default_status', 1) ? ' checked' : '') . ">
    '; 836: $task_single_mark_as_statuses = hooks()->apply_filters('task_single_mark_as_statuses', $task_statuses); ## File: /application/views/admin/taxes/manage.php: 52: do_action('before_taxes_modal_form_close'); ?> ## File: /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: do_action('new_ticket_admin_page_loaded'); ?> ## File: /application/views/admin/tickets/list.php: 68: do_action('before_render_tickets_list_table'); ?> ## File: /application/views/admin/tickets/single.php: 171: do_action('after_admin_single_ticket_tab_menu_last_item', $ticket); ?> 185: do_action('after_admin_single_ticket_tab_menu_last_content', $ticket); ?> 264: do_action('ticket_admin_single_page_loaded', $ticket); ?> ## File: /application/views/admin/tickets/partials/ticket-tabpanel-add-reply.php: 5: do_action('before_admin_ticket_addreply_tabpanel_content', $ticket); ?> 165: apply_filters('ticket_add_response_and_back_to_list_default', 'checked'); ?> ## File: /application/views/admin/utilities/bulk_pdf_exporter.php: 124: do_action('after_bulk_pdf_export_options'); ?> ## File: /application/views/admin/utilities/calendar_filters.php: 7: do_action('before_calendar_filters'); ?> 104: do_action('after_calendar_filters'); ?> ## File: /application/views/admin/utilities/calendar.php: 19: do_action('after_calendar_loaded');?> ## File: /application/views/authentication/login_admin.php: 29: do_action('after_admin_login_form_start'); ?> 72: do_action('before_admin_login_form_close'); ?> ## File: /application/views/authentication/includes/head.php: 58: do_action('app_admin_authentication_head'); ?> ## File: /application/views/forms/estimate_request.php: 11: do_action('app_estimate_request_form_head'); ?> 33: do_action('estimate_request_form_start'); ?> 72: do_action('estimate_request_form_end'); ?> 166: do_action('app_estimate_request_form_footer'); ?> ## File: /application/views/forms/public_ticket.php: 2: do_action('public_ticket_start', $ticket); ?> 9: do_action('public_ticket_end', $ticket); ?> ## File: /application/views/forms/ticket.php: 9: <?php echo hooks()->apply_filters('ticket_form_title', _l('new_ticket')); ?> 16: do_action('app_ticket_form_head'); ?> 32: do_action('ticket_form_start'); ?> 35: do_action('ticket_form_after_subject'); ?> 40: do_action('ticket_form_after_name'); ?> 44: do_action('ticket_form_after_email'); ?> 56: do_action('ticket_form_after_department'); ?> 58: apply_filters('new_ticket_priority_selected', 2), ['required' => 'true']); ?> 59: do_action('ticket_form_after_priority'); ?> 66: hooks()->do_action('ticket_form_after_service'); 71: do_action('ticket_form_after_custom_fields'); ?> 74: do_action('ticket_form_after_message'); ?> 95: do_action('ticket_form_after_attachments'); ?> 131: do_action('ticket_form_after_submit_button'); ?> 133: do_action('ticket_form_end'); ?> 217: do_action('app_ticket_form_footer'); ?> ## File: /application/views/forms/web_to_lead.php: 11: do_action('app_web_to_lead_form_head'); ?> 32: do_action('web_to_lead_form_start'); ?> 67: do_action('web_to_lead_form_end'); ?> 154: do_action('app_web_to_lead_form_footer'); ?> ## File: /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: /application/views/themes/perfex/head.php: 21: do_action('customers_after_body_start'); ?> ## File: /application/views/themes/perfex/index.php: 15: do_action('customers_content_container_start'); ?> 23: do_action('before_customers_area_sub_menu_start'); ?> 50: do_action('after_customers_area_sub_menu_end'); ?> ## File: /application/views/themes/perfex/template_parts/identity_confirmation_form.php: 15: do_action('before_confirmation_identity_fields'); ?> 70: do_action('after_confirmation_identity_fields'); ?> ## File: /application/views/themes/perfex/template_parts/navigation.php: 18: do_action('customers_navigation_start'); ?> 33: do_action('customers_navigation_end'); ?> 120: do_action('customers_navigation_before_logout'); ?> 130: do_action('customers_navigation_after_profile'); ?> ## File: /application/views/themes/perfex/template_parts/projects/edit_task.php: 34: apply_filters('task_priorities_select', $task); ?> ## File: /application/views/themes/perfex/template_parts/projects/new_task.php: 36: apply_filters('task_priorities_select', 0); ?> ## File: /application/views/themes/perfex/template_parts/projects/project_tabs.php: 15: do_action('after_customers_area_project_overview_tab', $project); ?> ## File: /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: /application/views/themes/perfex/views/consent.php: 12: apply_filters('consent_public_page_heading', get_option('companyname'))); ?> ## File: /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: /application/views/themes/perfex/views/estimatehtml.php: 226: do_action('after_total_summary_estimatehtml', $estimate); ?> ## File: /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: /application/views/themes/perfex/views/files.php: 5: do_action('after_customers_area_files_heading'); ?> 11: do_action('after_customers_area_files_dropzone'); ?> 102: do_action('after_customers_area_files'); ?> ## File: /application/views/themes/perfex/views/home.php: 11: do_action('client_area_after_project_overview'); ?> 85: do_action('client_area_dashboard_end'); ?> ## File: /application/views/themes/perfex/views/invoicehtml.php: 75: do_action('after_left_panel_invoicehtml', $invoice); ?> 136: do_action('after_right_panel_invoicehtml', $invoice); ?> 242: do_action('after_total_summary_invoicehtml', $invoice); ?> ## File: /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: /application/views/themes/perfex/views/knowledge_base_article.php: 31: do_action('after_single_knowledge_base_article_customers_area', $article->articleid); ?> ## File: /application/views/themes/perfex/views/knowledge_base.php: 19: hooks()->do_action('after_kb_groups_customers_area'); ## File: /application/views/themes/perfex/views/login.php: 11: do_action('clients_login_form_start'); ?> 80: do_action('clients_login_form_end'); ?> ## File: /application/views/themes/perfex/views/open_ticket.php: 8: do_action('before_client_open_ticket_form_start'); ?> 70: apply_filters('new_ticket_priority_selected', 2) == $priority['priorityid']); ?>> ## File: /application/views/themes/perfex/views/profile.php: 6: do_action('before_client_profile_form_loaded'); ?> 156: do_action('after_client_profile_form_loaded'); ?> 206: do_action('after_client_profile_password_form_loaded'); ?> ## File: /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: /modules/backup/controllers/Backup.php: 39: hooks()->do_action('before_make_backup'); 57: hooks()->do_action('before_update_backup_options'); ## File: /modules/exports/exports.php: 13: hooks()->add_action('admin_init', 'export_module_init_menu_items'); ## File: /modules/exports/libraries/Exports_module.php: 30: $this->features = hooks()->apply_filters('csv_export_features', [ ## File: /modules/exports/services/CSVExport.php: 37: $this->batchSize = hooks()->apply_filters('csv_export_batch_size', 100); ## File: /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: /modules/goals/models/Goals_model.php: 274: $sql = hooks()->apply_filters('calculate_goal_achievement_sql', '', $goal); ## File: /modules/ideal/ideal.php: 86: hooks()->add_action('before_update_system_options', 'prevent_activate_ideal_gateway'); ## File: /modules/ideal/libraries/Ideal_gateway.php: 52: hooks()->add_action('before_render_payment_gateway_settings', 'idealModuleWebhookCheck'); ## File: /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: /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: /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: /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: /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: /modules/theme_style/controllers/Theme_style.php: 30: hooks()->do_action('before_save_theme_style'); ## File: /modules/theme_style/helpers/theme_style_helper.php: 364: $areas = hooks()->apply_filters('get_styling_areas', $areas);