コード例 #1
1
 /**
  * Log plugin installations
  *
  * @action transition_post_status
  *
  * @param \WP_Upgrader $upgrader
  * @param array $extra
  *
  * @return bool
  */
 public function callback_upgrader_process_complete($upgrader, $extra)
 {
     $logs = array();
     $success = !is_wp_error($upgrader->skin->result);
     $error = null;
     if (!$success) {
         $errors = $upgrader->skin->result->errors;
         list($error) = reset($errors);
     }
     // This would have failed down the road anyway
     if (!isset($extra['type'])) {
         return false;
     }
     $type = $extra['type'];
     $action = $extra['action'];
     if (!in_array($type, array('plugin', 'theme'))) {
         return false;
     }
     if ('install' === $action) {
         if ('plugin' === $type) {
             $path = $upgrader->plugin_info();
             if (!$path) {
                 return false;
             }
             $data = get_plugin_data($upgrader->skin->result['local_destination'] . '/' . $path);
             $slug = $upgrader->result['destination_name'];
             $name = $data['Name'];
             $version = $data['Version'];
         } else {
             // theme
             $slug = $upgrader->theme_info();
             if (!$slug) {
                 return false;
             }
             wp_clean_themes_cache();
             $theme = wp_get_theme($slug);
             $name = $theme->name;
             $version = $theme->version;
         }
         $action = 'installed';
         $message = _x('Installed %1$s: %2$s %3$s', 'Plugin/theme installation. 1: Type (plugin/theme), 2: Plugin/theme name, 3: Plugin/theme version', 'stream');
         $logs[] = compact('slug', 'name', 'version', 'message', 'action');
     } elseif ('update' === $action) {
         $action = 'updated';
         $message = _x('Updated %1$s: %2$s %3$s', 'Plugin/theme update. 1: Type (plugin/theme), 2: Plugin/theme name, 3: Plugin/theme version', 'stream');
         if ('plugin' === $type) {
             if (isset($extra['bulk']) && true === $extra['bulk']) {
                 $slugs = $extra['plugins'];
             } else {
                 $slugs = array($upgrader->skin->plugin);
             }
             $_plugins = $this->get_plugins();
             foreach ($slugs as $slug) {
                 $plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $slug);
                 $name = $plugin_data['Name'];
                 $version = $plugin_data['Version'];
                 $old_version = $_plugins[$slug]['Version'];
                 $logs[] = compact('slug', 'name', 'old_version', 'version', 'message', 'action');
             }
         } else {
             // theme
             if (isset($extra['bulk']) && true === $extra['bulk']) {
                 $slugs = $extra['themes'];
             } else {
                 $slugs = array($upgrader->skin->theme);
             }
             foreach ($slugs as $slug) {
                 $theme = wp_get_theme($slug);
                 $stylesheet = $theme['Stylesheet Dir'] . '/style.css';
                 $theme_data = get_file_data($stylesheet, array('Version' => 'Version'));
                 $name = $theme['Name'];
                 $old_version = $theme['Version'];
                 $version = $theme_data['Version'];
                 $logs[] = compact('slug', 'name', 'old_version', 'version', 'message', 'action');
             }
         }
     } else {
         return false;
     }
     $context = $type . 's';
     foreach ($logs as $log) {
         $name = isset($log['name']) ? $log['name'] : null;
         $version = isset($log['version']) ? $log['version'] : null;
         $slug = isset($log['slug']) ? $log['slug'] : null;
         $old_version = isset($log['old_version']) ? $log['old_version'] : null;
         $message = isset($log['message']) ? $log['message'] : null;
         $action = isset($log['action']) ? $log['action'] : null;
         $this->log($message, compact('type', 'name', 'version', 'slug', 'success', 'error', 'old_version'), null, $context, $action);
     }
     return true;
 }