settings = $settings; $this->repository = $repository; $this->providers = $providers; } public function register() { add_action( 'admin_init', array( $this, 'setting' ) ); add_action( 'admin_post_anar_toolkit_retry', array( $this, 'retry' ) ); add_action( 'admin_post_anar_toolkit_forget', array( $this, 'forget' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'assets' ) ); } public function menu() { add_submenu_page( 'anar-login', __( 'Commerce toolkit', 'anar-toolkit' ), __( 'Commerce toolkit', 'anar-toolkit' ), 'manage_options', 'anar-toolkit-commerce', array( $this, 'render' ) ); } public function setting() { register_setting( 'anar_toolkit_commerce', Settings::OPTION, array( 'type' => 'array', 'sanitize_callback' => array( $this->settings, 'sanitize' ), 'default' => $this->settings->defaults() ) ); } public function assets( $hook ) { if ( false !== strpos( $hook, 'anar-toolkit-' ) ) { wp_enqueue_style( 'anar-toolkit-commerce', ANAR_LOGIN_URL . 'assets/css/commerce-suite.css', array(), ANAR_LOGIN_VERSION ); } } private function guard() { if ( ! current_user_can( 'manage_options' ) ) { wp_die( esc_html__( 'You cannot manage these settings.', 'anar-toolkit' ), '', array( 'response' => 403 ) ); } } public function retry() { $this->guard(); check_admin_referer( 'anar_toolkit_retry' ); $this->repository->retry( isset( $_POST['message_id'] ) ? absint( $_POST['message_id'] ) : 0 ); wp_safe_redirect( admin_url( 'admin.php?page=anar-toolkit-commerce&tab=messages' ) ); exit; } public function forget() { $this->guard(); check_admin_referer( 'anar_toolkit_forget' ); $raw = isset( $_POST['phone'] ) && is_string( $_POST['phone'] ) ? sanitize_text_field( wp_unslash( $_POST['phone'] ) ) : ''; $phone = Identity::normalize( $raw ); if ( ! is_wp_error( $phone ) && 'sms' === $phone['channel'] ) { ( new Privacy( $this->repository, $this->settings ) )->erase_phone( $phone['identity'] ); } wp_safe_redirect( admin_url( 'admin.php?page=anar-toolkit-commerce&tab=privacy' ) ); exit; } private function input( $key, $label, $value, $type = 'text', $help = '' ) { $id = 'anar-commerce-' . sanitize_key( str_replace( array( '[', ']' ), '-', $key ) ); $direction = 'admin_phones' === $key || false !== strpos( $key, '][params' ) || false !== strpos( $key, '][template' ) ? 'ltr' : 'auto'; ?>