Skip to content

Lưu ý: Đây là bộ tài liệu chưa hoàn thiện, đang trong quá trình cập nhật nên nội dung có thể không đúng hoặc chưa đủ. Nếu phát hiện sai lệch, xin báo lại qua GitHub Issues hoặc gửi Pull Request để sửa.

Danh sách hook ​

Danh sách được sinh từ các lời gọi nv_apply_hook trong mã nguồn. Hàm xử lý nhận $vars là mảng dữ liệu đầu vào, $from_data là thông tin module nguồn, $receive_data là thông tin module nhận.

Hook hệ thống ​

before_rss_output_xml ​

Trước khi xuất dữ liệu RSS hoặc Atom

Dữ liệu đầu vào ($vars)

  • $vars[0] là $channel array: Thông tin kênh
  • $vars[1] là $items array: Các mục tin
  • $vars[2] là $xsl string: URL file XSL
  • $vars[3] là $type string: rss hoặc atom
  • $vars[4] là $timemode string: GMT hoặc ISO8601

Giá trị trả về

  • Hàm xử lý trả về array: [$channel, $items, $xsl, $type, $timemode]
  • Gán vào [$channel, $items, $xsl, $type, $timemode]
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: [$channel, $items, $xsl, $type, $timemode]

Ví dụ

php
nv_add_hook($module_name, 'before_rss_output_xml', $priority, function ($vars, $from_data, $receive_data) {
    $channel = $vars[0];
    $items = $vars[1];
    $xsl = $vars[2];
    $type = $vars[3];
    $timemode = $vars[4];

    // Xử lý tại đây

    return [$channel, $items, $xsl, $type, $timemode];
});

change_site_buffer ​

Trước khi xuất nội dung trang, sau khi đã tối ưu HTML

Dữ liệu đầu vào ($vars)

  • $vars[0] là $global_config array: Cấu hình hệ thống
  • $vars[1] là [$contents, $headers] array: Mảng gồm nội dung HTML và các header HTTP

Giá trị trả về

  • Hàm xử lý trả về array: [$contents, $headers]
  • Gán vào [$contents, $headers]
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: [$contents, $headers]

Ví dụ

php
nv_add_hook($module_name, 'change_site_buffer', $priority, function ($vars, $from_data, $receive_data) {
    $global_config = $vars[0];
    [$contents, $headers] = $vars[1];

    // Xử lý tại đây

    return [$contents, $headers];
});

check_inform ​

Khi trình duyệt kiểm tra định kỳ số thông báo mới của thành viên, trước khi đọc số thông báo

Dữ liệu đầu vào ($vars)

  • $vars[0] là $userid int: ID thành viên
  • $vars[1] là $groups string: Các nhóm của thành viên, ngăn cách bởi dấu phẩy

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'check_inform', $priority, function ($vars, $from_data, $receive_data) {
    $userid = $vars[0];
    $groups = $vars[1];

    // Xử lý tại đây
});

check_server ​

Sau khi nạp các plugin, trước khi thiết lập CDN. Dùng để kiểm tra yêu cầu truy cập ở mức máy chủ, VD chuyển hướng tên miền

Dữ liệu đầu vào ($vars)

Không có.

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'check_server', $priority, function ($vars, $from_data, $receive_data) {
    // Xử lý tại đây
});

cron_user_datadeletion_handling ​

Đầu tiến trình tự động xóa dữ liệu thành viên đã lên lịch xóa

Dữ liệu đầu vào ($vars)

Không có.

Giá trị trả về

  • Hàm xử lý trả về mixed: Khác null thì bỏ qua xử lý mặc định của hệ thống
  • Gán vào $skiped

Ví dụ

php
nv_add_hook($module_name, 'cron_user_datadeletion_handling', $priority, function ($vars, $from_data, $receive_data) {
    // Xử lý tại đây

    return $skiped;
});

cron_user_datadeletion_handling_row ​

Sau khi tiến trình tự động xóa xong dữ liệu của một thành viên

Dữ liệu đầu vào ($vars)

  • $vars[0] là $row array: Yêu cầu xóa dữ liệu, bảng users_deleted
  • $vars[1] là $user_info array: Thông tin thành viên đã xóa

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'cron_user_datadeletion_handling_row', $priority, function ($vars, $from_data, $receive_data) {
    $row = $vars[0];
    $user_info = $vars[1];

    // Xử lý tại đây
});

emailtemplates_after_delete ​

Sau khi xóa một mẫu email

Dữ liệu đầu vào ($vars)

  • $vars[0] là $emailid int: ID mẫu email đã xóa

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'emailtemplates_after_delete', $priority, function ($vars, $from_data, $receive_data) {
    $emailid = $vars[0];

    // Xử lý tại đây
});

emailtemplates_content_after_save ​

Sau khi thêm mới hoặc cập nhật mẫu email thành công

Dữ liệu đầu vào ($vars)

  • $vars[0] là $array array: Dữ liệu mẫu email đã lưu

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'emailtemplates_content_after_save', $priority, function ($vars, $from_data, $receive_data) {
    $array = $vars[0];

    // Xử lý tại đây
});

emailtemplates_content_correct_before_save ​

Xử lý dữ liệu mẫu email trước khi lưu vào CSDL, sau khi đã kiểm tra hợp lệ

Dữ liệu đầu vào ($vars)

  • $vars[0] là $array array: Dữ liệu mẫu email

Giá trị trả về

  • Hàm xử lý trả về array: Dữ liệu mẫu email sau khi xử lý
  • Gán vào $array
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: $array

Ví dụ

php
nv_add_hook($module_name, 'emailtemplates_content_correct_before_save', $priority, function ($vars, $from_data, $receive_data) {
    $array = $vars[0];

    // Xử lý tại đây

    return $array;
});

emailtemplates_content_from_db ​

Xử lý dữ liệu mẫu email sau khi đọc từ CSDL

Gọi khi mở form sửa mẫu email và khi gửi thử mẫu email

Dữ liệu đầu vào ($vars)

  • $vars[0] là $array array: Dữ liệu mẫu email

Giá trị trả về

  • Hàm xử lý trả về array: Dữ liệu mẫu email sau khi xử lý
  • Gán vào $array
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: $array

Ví dụ

php
nv_add_hook($module_name, 'emailtemplates_content_from_db', $priority, function ($vars, $from_data, $receive_data) {
    $array = $vars[0];

    // Xử lý tại đây

    return $array;
});

emailtemplates_on_emailtemplate_save_error ​

Khi lưu mẫu email vào CSDL bị lỗi

Dữ liệu đầu vào ($vars)

  • $vars[0] là $array array: Dữ liệu mẫu email
  • $vars[1] là $e Throwable: Lỗi phát sinh

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'emailtemplates_on_emailtemplate_save_error', $priority, function ($vars, $from_data, $receive_data) {
    $array = $vars[0];
    $e = $vars[1];

    // Xử lý tại đây
});

event_before_sending_test_mail ​

Trước khi gửi thử mẫu email, sau khi đã dựng nội dung

Dữ liệu đầu vào ($vars)

  • $vars[0] là $emailid int: ID mẫu email
  • $vars[1] là $email_data array: Dữ liệu mẫu email
  • $vars[2] là $merge_fields array: Các trường dữ liệu của mẫu email
  • $vars[3] là $field_data array: Dữ liệu thử của các trường

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'event_before_sending_test_mail', $priority, function ($vars, $from_data, $receive_data) {
    $emailid = $vars[0];
    $email_data = $vars[1];
    $merge_fields = $vars[2];
    $field_data = $vars[3];

    // Xử lý tại đây
});

generating_sitemap_module ​

Khi tạo sitemap index, gọi với từng module có sitemap

Dữ liệu đầu vào ($vars)

  • $vars[0] là $modname string: Tên module
  • $vars[1] là $sitemaps array: Các file funcs/sitemap*.php của module

Giá trị trả về

  • Hàm xử lý trả về array: [$modname, $sitemaps]
  • Gán vào [$modname, $sitemaps]
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: [$modname, $sitemaps]

Ví dụ

php
nv_add_hook($module_name, 'generating_sitemap_module', $priority, function ($vars, $from_data, $receive_data) {
    $modname = $vars[0];
    $sitemaps = $vars[1];

    // Xử lý tại đây

    return [$modname, $sitemaps];
});

get_email_content_before_send ​

Xử lý nội dung email theo mẫu trước khi gửi

Dữ liệu đầu vào ($vars)

  • $vars[0] là $email_content string: Nội dung email đã dựng
  • $vars[1] là $_email_data array: Dữ liệu mẫu email
  • $vars[2] là $row array: Dữ liệu gửi cho một lượt nhận
  • $vars[3] là $emailid int: ID mẫu email

Giá trị trả về

  • Hàm xử lý trả về string|array: Nội dung email, hoặc mảng [nội dung, ngôn ngữ] để đổi ngôn ngữ email
  • Gán vào $email_content
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: $email_content

Ví dụ

php
nv_add_hook($module_name, 'get_email_content_before_send', $priority, function ($vars, $from_data, $receive_data) {
    $email_content = $vars[0];
    $_email_data = $vars[1];
    $row = $vars[2];
    $emailid = $vars[3];

    // Xử lý tại đây

    return $email_content;
});

get_email_data_before_fetch ​

Xử lý dữ liệu email trước khi dựng nội dung bằng Smarty, khi gửi email theo mẫu

Dữ liệu đầu vào ($vars)

  • $vars[0] là $emailid int: ID mẫu email
  • $vars[1] là $email_data array: Dữ liệu mẫu email
  • $vars[2] là $merge_fields array: Các trường dữ liệu của mẫu email
  • $vars[3] là $row array: Dữ liệu gửi cho một lượt nhận, một phần tử của $data truyền vào nv_sendmail_from_template

Giá trị trả về

  • Hàm xử lý trả về array: Dữ liệu email sau khi xử lý
  • Gán vào $_email_data
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: $email_data

Ví dụ

php
nv_add_hook($module_name, 'get_email_data_before_fetch', $priority, function ($vars, $from_data, $receive_data) {
    $emailid = $vars[0];
    $email_data = $vars[1];
    $merge_fields = $vars[2];
    $row = $vars[3];

    // Xử lý tại đây

    return $_email_data;
});

get_email_data_before_fetch_test ​

Xử lý dữ liệu email trước khi dựng nội dung bằng Smarty, khi gửi thử mẫu email

Dữ liệu đầu vào ($vars)

  • $vars[0] là $emailid int: ID mẫu email
  • $vars[1] là $email_data array: Dữ liệu mẫu email
  • $vars[2] là $merge_fields array: Các trường dữ liệu của mẫu email
  • $vars[3] là $field_data array: Dữ liệu thử của các trường

Giá trị trả về

  • Hàm xử lý trả về array: Dữ liệu email sau khi xử lý
  • Gán vào $email_data
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: $email_data

Ví dụ

php
nv_add_hook($module_name, 'get_email_data_before_fetch_test', $priority, function ($vars, $from_data, $receive_data) {
    $emailid = $vars[0];
    $email_data = $vars[1];
    $merge_fields = $vars[2];
    $field_data = $vars[3];

    // Xử lý tại đây

    return $email_data;
});

get_email_merge_fields ​

Lấy các trường dữ liệu (merge field) dùng trong mẫu email

Mỗi trình xử lý trả về các trường của mình, kết quả được gộp lại.

Khi gửi email, mảng đầu vào có thêm dữ liệu truyền vào nv_sendmail_from_template

Dữ liệu đầu vào ($vars)

  • $vars là $args
  • $vars['mode'] string: PRE khi chỉ lấy danh sách trường, FULL khi lấy kèm dữ liệu để gửi email
  • $vars['setpids'] array: ID các trình xử lý được chọn cho mẫu email

Giá trị trả về

  • Hàm xử lý trả về array: Các trường dữ liệu, key là tên trường, value gồm name và data
  • Gán vào $merge_fields
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: []
  • Kết quả các hàm xử lý được gộp bằng array_merge

Ví dụ

php
nv_add_hook($module_name, 'get_email_merge_fields', $priority, function ($vars, $from_data, $receive_data) {
    // Xử lý tại đây

    return $merge_fields;
});

get_global_admin_theme ​

Chọn giao diện chung của khu vực quản trị

Dữ liệu đầu vào ($vars)

  • $vars[0] là $admin_info['admin_theme'] string: Giao diện quản trị đang dùng
  • $vars[1] là $module_name string: Module đang truy cập
  • $vars[2] là $module_info array: Thông tin module đang truy cập
  • $vars[3] là $op string: Chức năng đang truy cập

Giá trị trả về

  • Hàm xử lý trả về string: Tên giao diện, phải có file themes/<tên giao diện>/theme.php
  • Gán vào $admin_info['admin_theme']
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: $admin_info['admin_theme']

Ví dụ

php
nv_add_hook($module_name, 'get_global_admin_theme', $priority, function ($vars, $from_data, $receive_data) {
    $arg0 = $vars[0];
    $module_name = $vars[1];
    $module_info = $vars[2];
    $op = $vars[3];

    // Xử lý tại đây

    return $admin_info['admin_theme'];
});

get_module_admin_theme ​

Chọn giao diện cho phần quản trị của module đang truy cập

Dữ liệu đầu vào ($vars)

  • $vars[0] là $global_config['module_theme'] string: Giao diện đã chọn, rỗng nếu không có giao diện nào chứa module
  • $vars[1] là $module_name string: Module đang truy cập
  • $vars[2] là $module_info array: Thông tin module đang truy cập
  • $vars[3] là $op string: Chức năng đang truy cập

Giá trị trả về

  • Hàm xử lý trả về string: Tên giao diện chứa thư mục modules/<module_file>
  • Gán vào $global_config['module_theme']
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: $global_config['module_theme']

Ví dụ

php
nv_add_hook($module_name, 'get_module_admin_theme', $priority, function ($vars, $from_data, $receive_data) {
    $arg0 = $vars[0];
    $module_name = $vars[1];
    $module_info = $vars[2];
    $op = $vars[3];

    // Xử lý tại đây

    return $global_config['module_theme'];
});

get_qr_code ​

Ngoài site, xuất ảnh QR code khi có yêu cầu

Dữ liệu đầu vào ($vars)

  • $vars[0] là $nv_Request NukeViet\Core\Request: Đối tượng request

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'get_qr_code', $priority, function ($vars, $from_data, $receive_data) {
    $nv_Request = $vars[0];

    // Xử lý tại đây
});

get_rewrite_domain ​

Lấy tên miền đặt trước URL khi rewrite URL và khi tạo URL gọi API

Khi rewrite URL hook nhận 6 dữ liệu đầu vào, khi tạo URL gọi API hook không nhận dữ liệu đầu vào

Dữ liệu đầu vào ($vars)

  • $vars[0] là $op_rewrite_count int: Số phần op đã rewrite
  • $vars[1] là $op_rewrite array: Các phần op đã rewrite
  • $vars[2] là $rewrite_end string: Phần đuôi URL
  • $vars[3] là $query_array array: Các tham số còn lại trên URL
  • $vars[4] là $is_amp bool: Dùng &amp; để nối tham số
  • $vars[5] là $is_acp bool: URL khu vực quản trị

Giá trị trả về

  • Hàm xử lý trả về string: Tên miền kèm giao thức, VD https://example.com. Rỗng thì dùng đường dẫn tương đối
  • Gán vào $rewrite_string
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: ''

Ví dụ

php
nv_add_hook($module_name, 'get_rewrite_domain', $priority, function ($vars, $from_data, $receive_data) {
    $op_rewrite_count = $vars[0];
    $op_rewrite = $vars[1];
    $rewrite_end = $vars[2];
    $query_array = $vars[3];
    $is_amp = $vars[4];
    $is_acp = $vars[5];

    // Xử lý tại đây

    return $rewrite_string;
});

modify_global_config ​

Sau khi xác định ngôn ngữ, trước khi đọc danh sách module. Dùng để thay đổi $global_config

Dữ liệu đầu vào ($vars)

Không có.

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'modify_global_config', $priority, function ($vars, $from_data, $receive_data) {
    // Xử lý tại đây
});

modify_sso_login_url ​

Thay đổi URL đăng nhập SSO

Dữ liệu đầu vào ($vars)

  • $vars[0] là $url string: URL đăng nhập SSO

Giá trị trả về

  • Hàm xử lý trả về string: URL sau khi xử lý
  • Gán vào $url
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: $url

Ví dụ

php
nv_add_hook($module_name, 'modify_sso_login_url', $priority, function ($vars, $from_data, $receive_data) {
    $url = $vars[0];

    // Xử lý tại đây

    return $url;
});

nv_redirect_location ​

Trước khi chuyển hướng bằng nv_redirect_location

Dữ liệu đầu vào ($vars)

  • $vars[0] là $url string: URL chuyển đến
  • $vars[1] là $error_code int: Mã trạng thái HTTP
  • $vars[2] là $noreferrer bool: Có gửi header Referrer-Policy: no-referrer

Giá trị trả về

  • Hàm xử lý trả về string: URL chuyển đến sau khi xử lý
  • Gán vào $url
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: $url

Ví dụ

php
nv_add_hook($module_name, 'nv_redirect_location', $priority, function ($vars, $from_data, $receive_data) {
    $url = $vars[0];
    $error_code = $vars[1];
    $noreferrer = $vars[2];

    // Xử lý tại đây

    return $url;
});

sector1 ​

Sau khi kiểm tra chống flood, trước khi kết nối CSDL

Dữ liệu đầu vào ($vars)

Không có.

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'sector1', $priority, function ($vars, $from_data, $receive_data) {
    // Xử lý tại đây
});

sector2 ​

Cuối mainfile.php, sau khi đọc danh sách module $sys_mods

Dữ liệu đầu vào ($vars)

Không có.

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'sector2', $priority, function ($vars, $from_data, $receive_data) {
    // Xử lý tại đây
});

sector3 ​

Cuối mỗi lượt truy cập, trước khi đóng kết nối CSDL và gửi header

Dữ liệu đầu vào ($vars)

Không có.

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'sector3', $priority, function ($vars, $from_data, $receive_data) {
    // Xử lý tại đây
});

sector4 ​

Ngoài site, khi bắt đầu dựng giao diện chung của theme, sau khi đọc ngôn ngữ giao diện

Dữ liệu đầu vào ($vars)

Không có.

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'sector4', $priority, function ($vars, $from_data, $receive_data) {
    // Xử lý tại đây
});

sector5 ​

Ngoài site, sau khi kiểm tra thành viên đăng nhập, trước khi cập nhật trạng thái online và thống kê

Dữ liệu đầu vào ($vars)

Không có.

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'sector5', $priority, function ($vars, $from_data, $receive_data) {
    // Xử lý tại đây
});

sendmail_others_actions ​

Trước khi gửi email bằng nv_sendmail, dùng để thiết lập thêm cho đối tượng gửi mail

Dữ liệu đầu vào ($vars)

  • $vars[0] là $gconfigs array: Cấu hình gửi mail
  • $vars[1] là $mail NukeViet\Core\Sendmail: Đối tượng gửi mail

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'sendmail_others_actions', $priority, function ($vars, $from_data, $receive_data) {
    $gconfigs = $vars[0];
    $mail = $vars[1];

    // Xử lý tại đây
});

Module feeds ​

before_generate_rss ​

Trước khi lấy danh sách các module có RSS để hiển thị ở trang chính module feeds

Dữ liệu đầu vào ($vars)

  • $vars[0] là $rsscontents string: Nội dung giới thiệu trang RSS

Giá trị trả về

  • Hàm xử lý trả về array: Danh sách module có RSS, key là tên module, value là thông tin module. Rỗng thì dùng danh sách mặc định
  • Gán vào $rss_array
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: []

Ví dụ

php
nv_add_hook($module_name, 'before_generate_rss', $priority, function ($vars, $from_data, $receive_data) {
    $rsscontents = $vars[0];

    // Xử lý tại đây

    return $rss_array;
});

Module inform ​

Lấy link xem tất cả thông báo trong block thông báo

Dữ liệu đầu vào ($vars)

Không có.

Giá trị trả về

  • Hàm xử lý trả về string: URL trang danh sách thông báo
  • Gán vào $viewall_url
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: $module_url

Ví dụ

php
nv_add_hook($module_name, 'get_all_inform_link', $priority, function ($vars, $from_data, $receive_data) {
    // Xử lý tại đây

    return $viewall_url;
});

get_list_inform ​

Lấy danh sách thông báo của thành viên, dùng để thay cách lấy mặc định

Dữ liệu đầu vào ($vars)

  • $vars[0] là $user_info array: Thành viên đang đăng nhập
  • $vars[1] là $filter string: Bộ lọc: rỗng, unviewed, favorite, hidden
  • $vars[2] là $page int: Trang hiện tại
  • $vars[3] là $per_page int: Số thông báo mỗi trang

Giá trị trả về

  • Hàm xử lý trả về array: [$num_items, $items, $count] gồm tổng số thông báo, các thông báo, số thông báo mới hiển thị. Phần tử đầu là null thì dùng cách lấy mặc định
  • Gán vào [$num_items, $items, $count]
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: [null, null, null]

Ví dụ

php
nv_add_hook($module_name, 'get_list_inform', $priority, function ($vars, $from_data, $receive_data) {
    $user_info = $vars[0];
    $filter = $vars[1];
    $page = $vars[2];
    $per_page = $vars[3];

    // Xử lý tại đây

    return [$num_items, $items, $count];
});

inform_get_list_after ​

Sau khi lấy danh sách thông báo từ CSDL, trước khi đánh dấu đã hiển thị

Dữ liệu đầu vào ($vars)

  • $vars[0] là $items array: Các thông báo, key là ID
  • $vars[1] là $filter string: Bộ lọc: rỗng, unviewed, favorite, hidden
  • $vars[2] là $page int: Trang hiện tại
  • $vars[3] là $per_page int: Số thông báo mỗi trang

Giá trị trả về

  • Hàm xử lý trả về array: Các thông báo sau khi xử lý
  • Gán vào $items
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: $items

Ví dụ

php
nv_add_hook($module_name, 'inform_get_list_after', $priority, function ($vars, $from_data, $receive_data) {
    $items = $vars[0];
    $filter = $vars[1];
    $page = $vars[2];
    $per_page = $vars[3];

    // Xử lý tại đây

    return $items;
});

set_status_inform ​

Trước khi thành viên đổi trạng thái của một thông báo

Dữ liệu đầu vào ($vars)

  • $vars[0] là $id int: ID thông báo
  • $vars[1] là $status string: Trạng thái mới: viewed, unviewed, favorite, unfavorite, hidden, unhidden
  • $vars[2] là $user_info array: Thành viên đang đăng nhập

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'set_status_inform', $priority, function ($vars, $from_data, $receive_data) {
    $id = $vars[0];
    $status = $vars[1];
    $user_info = $vars[2];

    // Xử lý tại đây
});

Module news ​

before_detail_theme ​

Trước khi dựng giao diện trang chi tiết bài viết

Dữ liệu đầu vào ($vars)

  • $vars[0] là $news_contents array: Dữ liệu bài viết
  • $vars[1] là $array_keyword array: Các từ khóa của bài viết
  • $vars[2] là $related_new_array array: Bài viết mới hơn cùng chuyên mục
  • $vars[3] là $related_array array: Bài viết cũ hơn cùng chuyên mục
  • $vars[4] là $topic_array array: Bài viết cùng dòng sự kiện
  • $vars[5] là $content_comment string: HTML khu vực bình luận

Giá trị trả về

  • Hàm xử lý trả về array: Các dữ liệu đầu vào sau khi xử lý, đúng thứ tự
  • Gán vào [$news_contents, $array_keyword, $related_new_array, $related_array, $topic_array, $content_comment]
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: [$news_contents, $array_keyword, $related_new_array, $related_array, $topic_array, $content_comment]

Ví dụ

php
nv_add_hook($module_name, 'before_detail_theme', $priority, function ($vars, $from_data, $receive_data) {
    $news_contents = $vars[0];
    $array_keyword = $vars[1];
    $related_new_array = $vars[2];
    $related_array = $vars[3];
    $topic_array = $vars[4];
    $content_comment = $vars[5];

    // Xử lý tại đây

    return [$news_contents, $array_keyword, $related_new_array, $related_array, $topic_array, $content_comment];
});

Trước khi chuyển hướng sang nguồn tin gốc của bài viết có liên kết ngoài

Dữ liệu đầu vào ($vars)

  • $vars[0] là $news_contents array: Dữ liệu bài viết

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'before_redirect_external_link', $priority, function ($vars, $from_data, $receive_data) {
    $news_contents = $vars[0];

    // Xử lý tại đây
});

Module page ​

before_detail_theme ​

Trước khi dựng giao diện trang chi tiết

Dữ liệu đầu vào ($vars)

  • $vars[0] là $rowdetail array: Dữ liệu trang
  • $vars[1] là $other_links array: Các trang khác, key là ID
  • $vars[2] là $content_comment string: HTML khu vực bình luận

Giá trị trả về

  • Hàm xử lý trả về array: [$rowdetail, $other_links, $content_comment]
  • Gán vào [$rowdetail, $other_links, $content_comment]
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: [$rowdetail, $other_links, $content_comment]

Ví dụ

php
nv_add_hook($module_name, 'before_detail_theme', $priority, function ($vars, $from_data, $receive_data) {
    $rowdetail = $vars[0];
    $other_links = $vars[1];
    $content_comment = $vars[2];

    // Xử lý tại đây

    return [$rowdetail, $other_links, $content_comment];
});

Module users ​

admin_active_account ​

Khi quản trị kích hoạt tài khoản đang chờ, trước khi gửi email thông báo

Dữ liệu đầu vào ($vars)

  • $vars[0] là $user_id int: ID tài khoản vừa kích hoạt
  • $vars[1] là $post array: Dữ liệu tài khoản
  • $vars[2] là $userdata array: Dữ liệu đăng ký trong bảng chờ kích hoạt
  • $vars[3] là $maillang string: Ngôn ngữ email

Giá trị trả về

  • Hàm xử lý trả về bool: true thì không gửi email thông báo mặc định
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: false

Ví dụ

php
nv_add_hook($module_name, 'admin_active_account', $priority, function ($vars, $from_data, $receive_data) {
    $user_id = $vars[0];
    $post = $vars[1];
    $userdata = $vars[2];
    $maillang = $vars[3];

    // Xử lý tại đây
});

check_email_already_exists ​

Kiểm tra thêm email khi đăng ký hoặc đổi email

Dữ liệu đầu vào ($vars)

  • $vars[0] là $email string: Email đã chuẩn hóa

Giá trị trả về

  • Hàm xử lý trả về string: Thông báo lỗi để từ chối email, rỗng nếu chấp nhận
  • Gán vào $custom_check

Ví dụ

php
nv_add_hook($module_name, 'check_email_already_exists', $priority, function ($vars, $from_data, $receive_data) {
    $email = $vars[0];

    // Xử lý tại đây

    return $custom_check;
});

custom_login_openid_attribs ​

Xử lý thông tin tài khoản nhận từ nhà cung cấp OAuth/OpenID trước khi đăng nhập

Dữ liệu đầu vào ($vars)

  • $vars[0] là $server string: Nhà cung cấp
  • $vars[1] là $attribs array: Thông tin tài khoản từ nhà cung cấp

Giá trị trả về

  • Hàm xử lý trả về array: Thông tin tài khoản sau khi xử lý
  • Gán vào $attribs
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: $attribs

Ví dụ

php
nv_add_hook($module_name, 'custom_login_openid_attribs', $priority, function ($vars, $from_data, $receive_data) {
    $server = $vars[0];
    $attribs = $vars[1];

    // Xử lý tại đây

    return $attribs;
});

find_oauth_google_identity ​

Tìm tài khoản đã liên kết với Google Identity, dùng để thay cách tìm mặc định

Dữ liệu đầu vào ($vars)

  • $vars[0] là $credential array: Phần tử 1 là thông tin tài khoản Google đã giải mã

Giá trị trả về

  • Hàm xử lý trả về array: [$user_id, $op_email, $user_active, $safemode]. Null thì dùng cách tìm mặc định
  • Gán vào $custom_method

Ví dụ

php
nv_add_hook($module_name, 'find_oauth_google_identity', $priority, function ($vars, $from_data, $receive_data) {
    $credential = $vars[0];

    // Xử lý tại đây

    return $custom_method;
});

prehandling_oauth_google_identity ​

Trước khi lưu thông tin tài khoản Google Identity vào session

Dữ liệu đầu vào ($vars)

  • $vars[0] là $is_edit bool: true khi liên kết từ trang sửa thông tin, false khi đăng nhập
  • $vars[1] là $attribs array: Thông tin tài khoản Google

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'prehandling_oauth_google_identity', $priority, function ($vars, $from_data, $receive_data) {
    $is_edit = $vars[0];
    $attribs = $vars[1];

    // Xử lý tại đây
});

prepare_user_data_deletion ​

Chuẩn bị dữ liệu trang yêu cầu xóa tài khoản của thành viên đang đăng nhập

Dữ liệu đầu vào ($vars)

  • $vars[0] là $array array: Dữ liệu trang

Giá trị trả về

  • Hàm xử lý trả về array: Dữ liệu sau khi xử lý
  • Gán vào $array
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: $array

Ví dụ

php
nv_add_hook($module_name, 'prepare_user_data_deletion', $priority, function ($vars, $from_data, $receive_data) {
    $array = $vars[0];

    // Xử lý tại đây

    return $array;
});

prepare_user_data_deletion_show ​

Trước khi hiển thị trang trạng thái yêu cầu xóa dữ liệu cá nhân, truy cập bằng mã xác nhận

Dữ liệu đầu vào ($vars)

  • $vars[0] là $data array: Dữ liệu yêu cầu xóa

Giá trị trả về

  • Hàm xử lý trả về array: Dữ liệu sau khi xử lý
  • Gán vào $data
  • Mặc định khi không có hàm xử lý hoặc hàm xử lý trả về null: $data

Ví dụ

php
nv_add_hook($module_name, 'prepare_user_data_deletion_show', $priority, function ($vars, $from_data, $receive_data) {
    $data = $vars[0];

    // Xử lý tại đây

    return $data;
});

user_change_password ​

Sau khi thành viên đổi mật khẩu

Dữ liệu đầu vào ($vars)

  • $vars[0] là $row array: Dữ liệu tài khoản trước khi đổi
  • $vars[1] là $new_password string: Mật khẩu mới chưa mã hóa

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'user_change_password', $priority, function ($vars, $from_data, $receive_data) {
    $row = $vars[0];
    $new_password = $vars[1];

    // Xử lý tại đây
});

user_delete ​

Sau khi xóa một tài khoản thành viên

Gọi khi xóa thành viên trong module users và khi xóa quản trị kèm xóa tài khoản

Dữ liệu đầu vào ($vars)

  • $vars[0] là $admin_id int: ID tài khoản đã xóa
  • $vars[1] là $row_user array: Dữ liệu tài khoản trước khi xóa

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'user_delete', $priority, function ($vars, $from_data, $receive_data) {
    $admin_id = $vars[0];
    $row_user = $vars[1];

    // Xử lý tại đây
});

user_lostpass_success ​

Sau khi thành viên đặt lại mật khẩu thành công qua chức năng quên mật khẩu

Dữ liệu đầu vào ($vars)

  • $vars[0] là $row array: Dữ liệu tài khoản trước khi đổi
  • $vars[1] là $new_password string: Mật khẩu mới chưa mã hóa

Giá trị trả về

  • Không dùng giá trị trả về

Ví dụ

php
nv_add_hook($module_name, 'user_lostpass_success', $priority, function ($vars, $from_data, $receive_data) {
    $row = $vars[0];
    $new_password = $vars[1];

    // Xử lý tại đây
});

user_remove_2step ​

Khi thành viên đã xác minh mã để tắt xác thực hai bước, dùng để thay cách xử lý mặc định

Dữ liệu đầu vào ($vars)

  • $vars[0] là $row array: Dữ liệu tài khoản
  • $vars[1] là $global_users_config array: Cấu hình module users
  • $vars[2] là $greeting string: Lời chào dùng trong email

Giá trị trả về

  • Hàm xử lý trả về string: Thông báo hiển thị cho thành viên. Khác null thì bỏ qua xử lý mặc định
  • Gán vào $info

Ví dụ

php
nv_add_hook($module_name, 'user_remove_2step', $priority, function ($vars, $from_data, $receive_data) {
    $row = $vars[0];
    $global_users_config = $vars[1];
    $greeting = $vars[2];

    // Xử lý tại đây

    return $info;
});