.%s', $intention ), array( $class_name, $method, $is_private, $is_redirect, ) ); wd_di()->set( sprintf( 'route.%s', $intention ), $intention ); wd_di()->set( sprintf( 'nonce.%s', $intention ), wp_create_nonce( $intention ) ); } /** * Retrieves the route for a given method and class name. * * @param string $method The method name. * @param string $class_name The class name. * * @return mixed The route associated with the intention, or null if not found. */ public function get_route( $method, $class_name ) { $intention = $this->get_intention( $class_name, $method ); try { return wd_di()->get( sprintf( 'route.%s', $intention ) ); } catch ( Exception $e ) { $this->log( $e->getMessage(), self::INTERNAL_LOG ); } } /** * Retrieves the nonce for a given method and class name. * * @param string $method The method name. * @param string $class_name The class name. * * @return mixed The nonce associated with the intention, or null if not found. */ public function get_nonce( $method, $class_name ) { $intention = $this->get_intention( $class_name, $method ); try { return wd_di()->get( sprintf( 'nonce.%s', $intention ) ); } catch ( Exception $e ) { $this->log( $e->getMessage(), self::INTERNAL_LOG ); } } /** * Check OPcache is enabled or not. */ private function check_opcache() { if ( $this->is_opcache_save_comments_disabled() ) { wp_send_json_error( array( 'message' => sprintf( /* translators: %s: Name settings. */ esc_html__( '%s is disabled. Please contact your hosting provider to enable it.', 'wpdef' ), 'OPcache Save Comments' ), 'type_notice' => 'opcache_disabled', ) ); } } /** * Check OPcache is enabled or not. * * @return bool */ public function is_opcache_save_comments_disabled() { // If OPcache is disabled. if ( ini_get( 'opcache.enable' ) !== '1' ) { return false; } // If OPcache is enabled and save comments disabled. if ( ini_get( 'opcache.save_comments' ) !== '1' ) { return true; } // Any other case. return false; } /** * Display message if OPcache is disabled. * * @return string */ public function display_opcache_message() { return sprintf( /* translators: 1. Option settings. 2. Name settings. */ esc_html__( 'We have detected that your %1$s is disabled on your hosting. For Defender to function properly, please contact your hosting provider and ask them to enable %2$s.', 'wpdef' ), 'opcache.save_comments', 'OPcache Save Comments' ); } /** * Verify is ajax call is private. * Here private stands for only authenticated user can do ajax call. * * @param string $route Route md5 hash. * * @return bool Return true if the request is private else false. */ private function is_private_access( $route ) { $key = sprintf( 'controller.%s', $route ); try { $package = wd_di()->get( $key ); return isset( $package[2] ) && $package[2]; } catch ( Exception $e ) { $this->log( $e->getMessage(), self::INTERNAL_LOG ); } return false; } /** * Get intention. * * @param string $class_name Class name. * @param string $method Method name. * * @return string * @since 3.11.0 */ private function get_intention( string $class_name, string $method ) { $intention = sprintf( '%s.%s', $class_name, $method ); if ( ! defined( 'DEFENDER_DEBUG' ) || false === DEFENDER_DEBUG ) { $intention = hash( 'md5', $intention ); } return $intention; } /** * Add redirect URL in response. * * @param string $route Route md5 hash. * * @return bool Return true if redirect URL is required in response else false. * @since 3.11.0 */ private function is_redirect( $route ) { $key = sprintf( 'controller.%s', $route ); try { $package = wd_di()->get( $key ); return isset( $package[3] ) && $package[3]; } catch ( Exception $e ) { $this->log( $e->getMessage(), self::INTERNAL_LOG ); } return false; } }