configuration = $configuration; $this->plugin_basename = $plugin_basename; } /** * Register the settings page. */ public function register_page(): void { $this->logger->log_info( 'Hook executed', __FUNCTION__, __CLASS__ ); add_submenu_page( $this->configuration->get_parent_page(), __( 'seQura', 'sequra' ), __( 'seQura', 'sequra' ), 'manage_options', $this->configuration->get_page(), array( $this, 'render_page' ) ); // Additionally remove WP version footer text if we are in the settings page. if ( $this->configuration->is_settings_page() ) { remove_filter( 'update_footer', 'core_update_footer' ); } } /** * Render the settings page. */ public function render_page(): void { $this->logger->log_info( 'Callback executed', __FUNCTION__, __CLASS__ ); wc_get_template( 'admin/settings_page.php', array(), '', $this->templates_path ); } /** * Get the settings page URL. */ public function get_settings_page_url( ?string $url = null ): string { return admin_url( 'admin.php?page=' . $this->configuration->get_page() ); } /** * Add action links to the plugin settings page. * * @param string[] $actions The actions. * @param string $plugin_file The plugin file. * @param string $plugin_data The plugin data. * @param string $context The context. * @return mixed[] */ public function add_action_link( $actions, $plugin_file, $plugin_data, $context ): array { $this->logger->log_info( 'Hook executed', __FUNCTION__, __CLASS__ ); $args = array( 'href' => $this->get_settings_page_url(), 'text' => esc_attr__( 'Settings', 'sequra' ), ); ob_start(); wc_get_template( 'admin/action_link.php', $args, '', $this->templates_path ); $actions['settings'] = ob_get_clean(); return $actions; } /** * Removes the WP footer message */ public function remove_footer_admin( string $text ): string { $this->logger->log_info( 'Hook executed', __FUNCTION__, __CLASS__ ); if ( ! $this->configuration->is_settings_page() ) { return $text; } return ''; } /** * Show row meta on the plugin screen. * * @param array $links Plugin Row Meta. * @param string $file Plugin Base file. */ public function add_plugin_row_meta( $links, $file ): array { if ( $this->plugin_basename === $file ) { $row_meta = array( 'docs' => sprintf( '%s', esc_url( /** * Filters the URL of the plugin documentation. * * @since 2.0.0 */ apply_filters( 'sequrapayment_docs_url', 'https://sequra.atlassian.net/wiki/spaces/DOC/pages/2247524378/WOOCOMMERCE' ) ), esc_attr__( 'View WooCommerce documentation', 'sequra' ), esc_html__( 'Docs', 'woocommerce' ) ), 'apidocs' => sprintf( '%s', esc_url( /** * Filters the URL of the plugin API documentation. * * @since 2.0.0 */ apply_filters( 'sequrapayment_apidocs_url', 'https://docs.sequrapi.com/' ) ), esc_attr__( 'View WooCommerce API docs', 'sequra' ), esc_html__( 'API docs', 'sequra' ) ), 'support' => sprintf( '%s', esc_url( /** * Filters the URL of the plugin support. * * @since 2.0.0 */ apply_filters( 'sequrapayment_support_url', 'https://sequra.atlassian.net/servicedesk/customer/portal/5/group/-1' ) ), esc_attr__( 'Support', 'sequra' ), esc_html__( 'Support', 'sequra' ) ), ); return array_merge( $links, $row_meta ); } return (array) $links; } }