| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- /**
- * Class that handles showing admin pointers.
- *
- * @since 1.10.3
- */
- final class FLBuilderAdminPointers {
- /**
- * @since 1.10.3
- * @var array $pointers
- */
- static private $pointers = array();
- /**
- * Initialize.
- *
- * @since 1.10.3
- * @return void
- */
- static public function init() {
- add_action( 'admin_enqueue_scripts', __CLASS__ . '::enqueue_scripts' );
- }
- /**
- * Register a pointer.
- *
- * @since 1.10.3
- * @param array $pointer
- * @return void
- */
- static public function register_pointer( $pointer ) {
- self::$pointers[] = $pointer;
- }
- /**
- * Enqueue scripts for showing pointers.
- *
- * @since 1.10.3
- * @return void
- */
- static public function enqueue_scripts() {
- $pointers = array();
- foreach ( self::$pointers as $pointer ) {
- if ( ! current_user_can( $pointer['cap'] ) || self::is_dismissed( $pointer['id'] ) ) {
- continue;
- }
- $pointers[] = $pointer;
- }
- if ( empty( $pointers ) ) {
- return;
- }
- wp_enqueue_style( 'wp-pointer' );
- wp_enqueue_script( 'wp-pointer' );
- wp_enqueue_script(
- 'fl-builder-admin-pointers',
- FL_BUILDER_URL . '/js/fl-builder-admin-pointers.js',
- array( 'jquery', 'wp-pointer' ),
- FL_BUILDER_VERSION,
- true
- );
- wp_localize_script( 'fl-builder-admin-pointers', 'FLBuilderAdminPointersConfig', array(
- 'pointers' => $pointers,
- 'ajaxurl' => admin_url( 'admin-ajax.php' ),
- ) );
- }
- /**
- * Check if a pointer has been dismissed by the current user.
- *
- * @since 1.10.3
- * @param string $pointer_id
- * @return bool
- */
- static private function is_dismissed( $pointer_id ) {
- $dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
- return in_array( $pointer_id, $dismissed );
- }
- }
- FLBuilderAdminPointers::init();
|