public static function enqueue_scripts($hook_suffix)
 {
     self::$pointers = apply_filters('hackrepair_plugin_archiver_pointers', self::$pointers);
     // Check if screen related pointer is registered
     if (empty(self::$pointers[$hook_suffix])) {
         return;
     }
     $pointers = (array) self::$pointers[$hook_suffix];
     // Get dismissed pointers
     $dismissed = explode(',', (string) get_user_meta(get_current_user_id(), 'dismissed_wp_pointers', true));
     $got_pointers = false;
     foreach ($pointers as $key => $pointer) {
         if (in_array($key, $dismissed)) {
             continue;
         }
         if (isset($pointer['caps'])) {
             foreach ($pointer['caps'] as $cap) {
                 if (!current_user_can($cap)) {
                     continue 2;
                 }
             }
         }
         $callback = is_callable($pointer['callback']) ? $pointer['callback'] : array('HackRepair_Plugin_Archiver_Pointer', $pointer['callback']);
         add_action('admin_print_footer_scripts', $callback);
         $got_pointers = true;
     }
     if (!$got_pointers) {
         return;
     }
     // Add pointers script and style to queue
     wp_enqueue_style('wp-pointer');
     wp_enqueue_script('wp-pointer');
 }
 public static function pointer_content()
 {
     $content = '<h3>' . __('Pick active plugin archive', 'hackrepair-plugin-archiver') . '</h3>';
     $content .= '<p>' . __('Choose the active plugin archive directory.', 'hackrepair-plugin-archiver') . '</p>';
     HackRepair_Plugin_Archiver_Pointer::print_js('test3', 'ul.subsubsub', array('content' => $content, 'position' => array('edge' => 'top', 'align' => 'left')));
 }