/**
  * Determines whether or not BuddyPress is installed.
  *
  * @package s2Member\Utilities
  * @since 110720
  *
  * @param bool $query_active_plugins Optional. If true, this conditional will query active plugins too. Defaults to true if {@link s2Member\WS_PLUGIN__S2MEMBER_ONLY} is true, else false.
  * @return bool True if BuddyPress is installed, else false.
  */
 public static function bp_is_installed($query_active_plugins = NULL)
 {
     if (defined("BP_VERSION") && did_action("bp_core_loaded")) {
         return true;
     }
     /* Quickest/easiest way to determine. */
     /**/
     $s2o = defined("WS_PLUGIN__S2MEMBER_ONLY") && WS_PLUGIN__S2MEMBER_ONLY ? true : false;
     /**/
     if ($query_active_plugins = !isset($query_active_plugins) && $s2o ? true : $query_active_plugins) {
         $buddypress = "buddypress/bp-loader.php";
         /* BuddyPress. */
         /**/
         $active_plugins = is_multisite() ? wp_get_active_network_plugins() : array();
         $active_plugins = array_unique(array_merge($active_plugins, wp_get_active_and_valid_plugins()));
         /**/
         foreach ($active_plugins as $active_plugin) {
             /* Search. */
             if (plugin_basename($active_plugin) === $buddypress) {
                 return true;
             }
         }
         /* BuddyPress active. */
     }
     return false;
     /* Default return false. */
 }
 private function collect_data()
 {
     $active_plugins = wp_get_active_and_valid_plugins();
     $this->init_bundle($active_plugins);
     foreach ($active_plugins as $plugin) {
         $this->add_installed_plugin($plugin);
     }
 }
 /**
  * Generate a hash with all the system support information
  *
  * @return string of encoded support info
  * @author Peter Chester
  */
 public static function generateSupportHash()
 {
     $user = wp_get_current_user();
     $plugins_raw = wp_get_active_and_valid_plugins();
     $plugins = array();
     foreach ($plugins_raw as $k => $v) {
         $plugins[] = basename($v);
     }
     $systeminfo = array('URL' => 'http://' . $_SERVER["HTTP_HOST"] . $_SERVER['REQUEST_URI'], 'NAME' => $user->display_name, 'EMAIL' => $user->user_email, 'PLUGIN VERSION' => TribeEvents::VERSION, 'WORDPRESS VERSION' => get_bloginfo('version'), 'PHP VERSION' => phpversion(), 'PLUGINS' => $plugins, 'THEME' => get_current_theme(), 'MU INSTALL' => is_multisite() ? 'TRUE' : 'FALSE', 'SETTINGS' => TribeEvents::getOptions(), 'ERRORS' => self::$debug_log);
     $systeminfo = apply_filters('tribe-events-pro-support', $systeminfo);
     $systeminfo = serialize($systeminfo);
     $systeminfo = base64_encode($systeminfo);
     return $systeminfo;
 }
 /**
  * Get list of active plugins with a given prefix in the plugin folder path.
  *
  * @param string|array $prefix Prefixes you want to retrieve.
  *
  * @return array List of plugins with prefix in path.
  */
 public static function get_plugins_with_prefix($prefix)
 {
     $full_list = wp_get_active_and_valid_plugins();
     if (is_multisite()) {
         $full_list = array_merge($full_list, wp_get_active_network_plugins());
     }
     $filtered_list = array();
     foreach ($full_list as $plugin) {
         $base = plugin_basename($plugin);
         if (0 === Tribe__Utils__Array::strpos($base, $prefix)) {
             $filtered_list[] = $plugin;
         }
     }
     return $filtered_list;
 }
Beispiel #5
0
 public static function get_plugin_details($args = array())
 {
     if (!is_callable('get_plugins')) {
         include_once ABSPATH . 'wp-admin/includes/plugin.php';
     }
     if (!is_callable('get_plugins')) {
         return false;
     }
     $plugins = get_plugins();
     $active_plugins = is_callable('wp_get_active_and_valid_plugins') ? wp_get_active_and_valid_plugins() : array();
     $network_active_plugins = is_callable('wp_get_active_network_plugins') ? wp_get_active_network_plugins() : array();
     //		$mu_plugins = ( is_callable( 'get_mu_plugins' ) ) ? get_mu_plugins() : array();
     //		$dropins = ( is_callable( 'get_dropins' ) ) ? get_dropins() : array();
     array_walk($active_plugins, array(__CLASS__, 'strip_plugin_dir'));
     array_walk($network_active_plugins, array(__CLASS__, 'strip_plugin_dir'));
     foreach ($plugins as $plugin => $data) {
         if (in_array($plugin, $active_plugins)) {
             $plugins[$plugin]['status'] = 'active';
         } else {
             if (in_array($plugin, $network_active_plugins)) {
                 $plugins[$plugin]['status'] = 'network_active';
             } else {
                 $plugins[$plugin]['status'] = 'inactive';
             }
         }
         if (empty($args['verbose'])) {
             unset($plugins[$plugin]['PluginURI']);
             unset($plugins[$plugin]['Description']);
             unset($plugins[$plugin]['Author']);
             unset($plugins[$plugin]['AuthorURI']);
             unset($plugins[$plugin]['TextDomain']);
             unset($plugins[$plugin]['DomainPath']);
             unset($plugins[$plugin]['Title']);
             unset($plugins[$plugin]['AuthorName']);
         } else {
             $path = WP_PLUGIN_DIR . '/' . dirname($plugin);
             $vcs_details = self::get_repository_directory_details($path);
             if (false !== $vcs_details) {
                 $plugins[$plugin]['vcs'] = $vcs_details;
             }
         }
     }
     return $plugins;
 }
 /**
  * Lists any non-multisite plugins.
  *
  * @return array
  */
 static function get_plugins()
 {
     $plugins = array();
     if (function_exists('get_plugin_data')) {
         $plugins_raw = wp_get_active_and_valid_plugins();
         foreach ($plugins_raw as $k => $v) {
             $plugin_details = get_plugin_data($v);
             $plugin = $plugin_details['Name'];
             if (!empty($plugin_details['Version'])) {
                 $plugin .= sprintf(' version %s', $plugin_details['Version']);
             }
             if (!empty($plugin_details['Author'])) {
                 $plugin .= sprintf(' by %s', $plugin_details['Author']);
             }
             if (!empty($plugin_details['AuthorURI'])) {
                 $plugin .= sprintf('(%s)', $plugin_details['AuthorURI']);
             }
             $plugins[] = $plugin;
         }
     }
     return $plugins;
 }
function podpress_wp_e_commerce_compatibility()
{
    global $wp_version;
    $wp_ecommerce_is_active = FALSE;
    if (version_compare($wp_version, '3.0', '<')) {
        $current_plugins = get_option('active_plugins');
    } else {
        $current_plugins = wp_get_active_and_valid_plugins();
    }
    if (TRUE === is_array($current_plugins)) {
        foreach ($current_plugins as $current_plugin) {
            if (FALSE !== stripos($current_plugin, 'wp-shopping-cart.php')) {
                $wp_ecommerce_is_active = TRUE;
                break;
            }
        }
    }
    if (TRUE === $wp_ecommerce_is_active) {
        if (!defined('PODPRESS_WP_ECOMMERCE_IS_ACTIVE')) {
            define('PODPRESS_WP_ECOMMERCE_IS_ACTIVE', TRUE);
        }
    }
}
Beispiel #8
0
function _pp_support_upload($args = array())
{
    require_once dirname(__FILE__) . '/plugin_pp.php';
    //$args['post_id'] = 1;
    //$args['term_taxonomy_id'] = 1;
    $request_vars = array('site' => site_url(''));
    global $wpdb;
    $ok = (array) pp_get_option('support_data');
    $pp_config = array();
    $pp_old = array();
    //if ( ! empty( $ok['pp_options'] ) ) {
    global $pp_site_options;
    $options = array();
    foreach (array('default_category', 'permalink_structure', '_bbp_default_role', '_bbp_private_forums', '_bbp_use_wp_editor', '_bbp_allow_anonymous', '_bbp_allow_global_access', '_bbp_db_version', 'bp-active-components', 'users_can_register', 'comment_moderation', 'comment_registration', 'registration', 'default_role', 'db_version', 'enable_app', 'enable_xmlrpc', 'sticky_posts', 'initial_db_version') as $opt) {
        $options[$opt] = get_option($opt);
    }
    ksort($options);
    $pp_config['options'] = gzcompress(serialize($options));
    ksort($pp_site_options);
    $pp_config['pp_options'] = gzcompress(serialize($pp_site_options));
    $pp_config['rvy_options'] = gzcompress(serialize($wpdb->get_results("SELECT option_name, option_value, option_id FROM {$wpdb->options} WHERE option_name LIKE 'rvy_%' ORDER BY option_name", ARRAY_N)));
    if (PP_MULTISITE) {
        global $pp_netwide_options, $pp_net_options;
        if (is_array($pp_net_options)) {
            ksort($pp_net_options);
            if (!empty($pp_net_options)) {
                $pp_config['pp_net_options'] = gzcompress(serialize($pp_net_options));
            }
        }
        ksort($pp_netwide_options);
        if (!empty($pp_netwide_options)) {
            $pp_config['pp_netwide_options'] = gzcompress(serialize($pp_netwide_options));
        }
        $sitemeta_table = $wpdb->base_prefix . 'sitemeta';
        if ($rvy_net_options = $wpdb->get_results("SELECT meta_key, meta_value, site_id, meta_id FROM {$sitemeta_table} WHERE meta_key LIKE 'rvy_%' ORDER BY meta_key", ARRAY_N)) {
            $pp_config['rvy_net_options'] = gzcompress(serialize($rvy_net_options));
        }
    }
    //}
    if (!empty($ok['wp_roles_types'])) {
        global $wp_post_types, $wp_taxonomies, $wp_post_statuses, $wp_roles;
        // strip labels, label_count props
        $pp_config['wp_roles'] = gzcompress(serialize($wp_roles));
        // strip out labels and some other properties for perf
        foreach (array('wp_post_types', 'wp_taxonomies', 'wp_post_statuses') as $var) {
            $wp_data = ${$var};
            $arr = array();
            foreach (array_keys($wp_data) as $member) {
                $arr[$member] = array();
                foreach (array_keys(get_object_vars($wp_data[$member])) as $prop) {
                    if (!in_array($prop, array('labels', 'label_count', 'can_export', 'description'))) {
                        $arr[$member][$prop] = $wp_data[$member]->{$prop};
                    }
                }
            }
            $pp_config[$var] = gzcompress(serialize($arr));
        }
    }
    if (!empty($ok['theme'])) {
        $th = wp_get_theme();
        $theme_data = array();
        foreach (array('name', 'title', 'version', 'parent_theme', 'template') as $prop) {
            $theme_data[$prop] = $th->{$prop};
        }
        $theme_data['errors'] = $th->errors();
        $pp_config['theme'] = gzcompress(serialize($theme_data));
        $pp_config['widgets'] = gzcompress(serialize((array) get_option('sidebars_widgets')));
    }
    if (file_exists(ABSPATH . 'wp-admin/includes/plugin.php')) {
        include_once ABSPATH . 'wp-admin/includes/plugin.php';
    }
    if (!empty($ok['active_plugins']) && function_exists('get_plugin_data')) {
        $active_plugins = array();
        foreach (wp_get_active_and_valid_plugins() as $file) {
            // reduce to relative path for privacy
            $slug = array();
            if ($part = @basename(dirname(dirname(dirname($file))))) {
                $slug[] = $part;
            }
            if ($part = @basename(dirname(dirname($file)))) {
                $slug[] = $part;
            }
            if ($part = @basename(dirname($file))) {
                $slug[] = $part;
            }
            $slug[] = basename($file);
            $slug = implode('/', $slug);
            $active_plugins[$slug] = array_diff_key(get_plugin_data($file), array_fill_keys(array('Author', 'AuthorURI', 'TextDomain', 'DomainPath', 'Title', 'AuthorName', 'Description'), true));
        }
        $pp_config['active_plugins'] = gzcompress(serialize($active_plugins));
        if (function_exists('get_dropins')) {
            $pp_config['dropins'] = gzcompress(serialize(get_dropins()));
        }
    }
    if (!empty($ok['installed_plugins']) && function_exists('get_plugins')) {
        if ($installed_plugins = get_plugins()) {
            foreach (array_keys($installed_plugins) as $key) {
                $installed_plugins[$key] = array_diff_key($installed_plugins[$key], array_fill_keys(array('Author', 'AuthorURI', 'TextDomain', 'DomainPath', 'Title', 'AuthorName', 'Description', 'PluginURI', 'Network'), true));
            }
            $pp_config['installed_plugins'] = gzcompress(serialize($installed_plugins));
        }
    }
    // if uploading for a specific post or term
    if (!empty($args['term_taxonomy_id']) && !empty($ok['post_data'])) {
        $pp_config['term_data'] = gzcompress(serialize($wpdb->get_results($wpdb->prepare("SELECT term_taxonomy_id, taxonomy, term_id FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id = %d", $args['term_taxonomy_id']), ARRAY_A)));
    }
    if (!empty($args['post_id']) && !empty($ok['post_data'])) {
        $pp_config['post_data'] = gzcompress(serialize($wpdb->get_row($wpdb->prepare("SELECT ID, post_type, post_author, post_status, post_parent FROM {$wpdb->posts} WHERE ID = %d LIMIT 1", $args['post_id']))));
        $post_terms = $wpdb->get_results($wpdb->prepare("SELECT tr.term_taxonomy_id, tr.object_id, tt.taxonomy, tt.term_id FROM {$wpdb->term_relationships} AS tr INNER JOIN {$wpdb->term_taxonomy} AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tr.object_id = %d ORDER BY tt.taxonomy, tt.term_taxonomy_id", $args['post_id']), ARRAY_A);
        $pp_config['post_terms'] = gzcompress(serialize($post_terms));
        if (!empty($ok['pp_permissions'])) {
            if (!empty($wpdb->pp_conditions) && !empty($pp_config['post_terms'])) {
                $pp_config['pp_post_conditions'] = gzcompress(serialize($wpdb->get_results("SELECT * FROM {$wpdb->pp_conditions} WHERE scope = 'term' AND item_id IN ('" . implode("','", array_keys($post_terms)) . "') ORDER BY item_source, item_id, attribute, scope", ARRAY_N)));
            }
        }
    }
    if (!empty($ok['pp_permissions'])) {
        $pp_config['ppc_roles'] = gzcompress(serialize($wpdb->get_results("SELECT assignment_id as id, agent_id AS agent, agent_type AS a_type, role_name as r, assigner_id as by_id  FROM {$wpdb->ppc_roles} ORDER BY assignment_id DESC LIMIT 5000")));
        $pp_config['ppc_exceptions'] = gzcompress(serialize($wpdb->get_results("SELECT e.*, COUNT(i.eitem_id) AS count FROM {$wpdb->ppc_exceptions} AS e INNER JOIN {$wpdb->ppc_exception_items} AS i ON e.exception_id = i.exception_id GROUP BY e.exception_id ORDER BY e.exception_id DESC LIMIT 5000", ARRAY_N)));
        $pp_config['ppc_exception_items'] = gzcompress(serialize($wpdb->get_results("SELECT eitem_id AS eitem, exception_id AS eid, item_id AS item, assign_for AS a_for, inherited_from AS inh FROM {$wpdb->ppc_exception_items} ORDER BY eitem_id DESC LIMIT 10000", ARRAY_N)));
    }
    if (!empty($ok['pp_groups'])) {
        $pp_config['pp_groups'] = gzcompress(serialize($wpdb->get_results("SELECT ID, group_name AS gname, metagroup_id AS mid, metagroup_type AS mtype FROM {$wpdb->pp_groups} ORDER BY ID DESC LIMIT 1000", ARRAY_N)));
        if (PP_MULTISITE) {
            $wpdb->pp_groups_netwide = $wpdb->base_prefix . 'pp_groups';
            if (mysql_num_rows(mysql_query("SHOW TABLES LIKE '{$wpdb->pp_groups_netwide}'"))) {
                $pp_config['pp_net_groups'] = gzcompress(serialize($wpdb->get_results("SELECT ID, group_name AS gname, metagroup_id AS mid, metagroup_type AS mtype FROM {$wpdb->pp_groups_netwide} ORDER BY ID DESC LIMIT 1000", ARRAY_N)));
            }
        }
        if (!empty($wpdb->pp_circles)) {
            $pp_config['pp_circles'] = gzcompress(serialize($wpdb->get_results("SELECT * FROM {$wpdb->pp_circles} ORDER BY group_type, group_id", ARRAY_N)));
        }
    }
    if (!empty($ok['pp_group_members'])) {
        $pp_config['pp_wp_group_members'] = gzcompress(serialize($wpdb->get_results("SELECT gm.group_id AS g, gm.user_id AS u FROM {$wpdb->pp_group_members} AS gm INNER JOIN {$wpdb->pp_groups} AS g ON gm.group_id = g.ID AND g.metagroup_type = 'wp_role' ORDER BY gm.add_date_gmt DESC LIMIT 5000", ARRAY_N)));
        $pp_config['pp_group_members'] = gzcompress(serialize($wpdb->get_results("SELECT gm.group_id AS g, gm.user_id AS u FROM {$wpdb->pp_group_members} AS gm INNER JOIN {$wpdb->pp_groups} AS g ON gm.group_id = g.ID AND g.metagroup_type != 'wp_role' ORDER BY gm.add_date_gmt DESC LIMIT 2500", ARRAY_N)));
        if (PP_MULTISITE) {
            $wpdb->pp_group_members_netwide = $wpdb->base_prefix . 'pp_group_members';
            if (mysql_num_rows(mysql_query("SHOW TABLES LIKE '{$wpdb->pp_group_members_netwide}'"))) {
                $pp_config['pp_net_group_members'] = gzcompress(serialize($wpdb->get_results("SELECT group_id AS g, user_id AS u FROM {$wpdb->pp_group_members_netwide} LIMIT 2500", ARRAY_N)));
            }
        }
    }
    $wpdb->ppi_imported = $wpdb->prefix . 'ppi_imported';
    if (@mysql_num_rows(@mysql_query("SHOW TABLES LIKE '{$wpdb->ppi_imported}'"))) {
        $wpdb->ppi_runs = $wpdb->prefix . 'ppi_runs';
        $wpdb->ppi_errors = $wpdb->prefix . 'ppi_errors';
    }
    if (!empty($wpdb->ppi_runs)) {
        if (!empty($ok['ppc_roles']) || !empty($ok['pp_imports'])) {
            if (mysql_num_rows(mysql_query("SHOW TABLES LIKE '{$wpdb->ppi_runs}'"))) {
                $pp_old['ppi_runs'] = gzcompress(serialize($wpdb->get_results("SELECT * FROM {$wpdb->ppi_runs} ORDER BY import_date", ARRAY_N)));
            }
            if (mysql_num_rows(mysql_query("SHOW TABLES LIKE '{$wpdb->ppi_errors}'"))) {
                $pp_old['ppi_errors'] = gzcompress(serialize($wpdb->get_results("SELECT * FROM {$wpdb->ppi_errors} ORDER BY run_id, ID", ARRAY_N)));
            }
        }
        if (!empty($ok['pp_imports'])) {
            if ($ppi_ver = (array) get_option('ppi_version')) {
                $prefix = PP_MULTISITE ? $wpdb->base_prefix : $wpdb->prefix;
                if ($wpdb->query("SHOW COLUMNS FROM {$wpdb->ppi_imported} LIKE 'source_tbl'")) {
                    if (defined('PPI_LEGACY_UPLOAD') && $wpdb->query("SHOW COLUMNS FROM {$wpdb->ppi_imported} LIKE 'source_table'")) {
                        $extra_cols = ", REPLACE( source_table, '{$prefix}', '' ), REPLACE( import_table, '{$prefix}', '' )";
                    } else {
                        $extra_cols = '';
                    }
                    $pp_old['ppi_imported'] = gzcompress(serialize($wpdb->get_results("SELECT run_id, source_tbl AS src, source_id AS src_id, rel_id, import_tbl AS tbl, import_id AS to_id{$extra_cols} FROM {$wpdb->ppi_imported} ORDER BY run_id DESC, source_tbl, source_id LIMIT 25000", ARRAY_N)));
                } else {
                    $pp_old['ppi_imported'] = gzcompress(serialize($wpdb->get_results("SELECT run_id, REPLACE( source_table, '{$prefix}', '' ) AS src, source_id AS src_id, rel_id, REPLACE( import_table, '{$prefix}', '' ) AS tbl, import_id AS to_id FROM {$wpdb->ppi_imported} ORDER BY run_id DESC, source_table, source_id LIMIT 25000", ARRAY_N)));
                }
            }
        }
    }
    if (!empty($ok['pp_imports'])) {
        // RS
        $wpdb->user2role2object_rs = $wpdb->prefix . 'user2role2object_rs';
        $wpdb->role_scope_rs = $wpdb->prefix . 'role_scope_rs';
        $wpdb->groups_rs = $wpdb->prefix . 'groups_rs';
        $wpdb->user2group_rs = $wpdb->prefix . 'user2group_rs';
        //if ( ! empty( $ok['pp_options'] ) ) {
        $pp_old['rs_options'] = gzcompress(serialize($wpdb->get_results("SELECT option_name AS name, option_value AS val, option_id AS id FROM {$wpdb->options} WHERE option_name LIKE 'scoper_%' ORDER BY option_name", ARRAY_N)));
        if (PP_MULTISITE) {
            $pp_old['rs_net_options'] = gzcompress(serialize($wpdb->get_results("SELECT meta_key AS mkey, meta_value AS val, site_id AS site, meta_id AS mid FROM {$sitemeta_table} WHERE meta_key LIKE 'scoper_%' ORDER BY meta_key", ARRAY_N)));
        }
        //}
        if (!empty($ok['pp_permissions'])) {
            if (mysql_num_rows(mysql_query("SHOW TABLES LIKE '{$wpdb->user2role2object_rs}'"))) {
                $pp_old['rs_wp_roles'] = gzcompress(serialize($wpdb->get_results("SELECT assignment_id AS id, user_id, role_name AS r, date_limited AS dlim, content_date_limited AS clim FROM {$wpdb->user2role2object_rs} WHERE scope = 'blog' AND role_type = 'wp' ORDER BY assignment_id DESC LIMIT 5000", ARRAY_N)));
                $pp_old['rs_site_roles'] = gzcompress(serialize($wpdb->get_results("SELECT assignment_id AS id, user_id, group_id, role_name AS r, date_limited AS dlim, content_date_limited AS clim FROM {$wpdb->user2role2object_rs} WHERE scope = 'blog' ORDER BY assignment_id DESC LIMIT 2500", ARRAY_N)));
                $pp_old['rs_term_roles'] = gzcompress(serialize($wpdb->get_results("SELECT assignment_id AS id, user_id, group_id, role_name AS r, src_or_tx_name AS st_name, obj_or_term_id AS ot_id, assign_for AS a_for, inherited_from AS inh, date_limited AS dlim, content_date_limited AS clim FROM {$wpdb->user2role2object_rs} WHERE scope = 'term' ORDER BY assignment_id DESC LIMIT 1000", ARRAY_N)));
                $pp_old['rs_obj_roles'] = gzcompress(serialize($wpdb->get_results("SELECT assignment_id AS id, user_id, group_id, role_name AS r, obj_or_term_id AS ot_id, assign_for AS a_for, inherited_from AS inh, date_limited AS dlim FROM {$wpdb->user2role2object_rs} WHERE scope = 'object' ORDER BY assignment_id DESC LIMIT 10000", ARRAY_N)));
            }
            if (mysql_num_rows(mysql_query("SHOW TABLES LIKE '{$wpdb->role_scope_rs}'"))) {
                $pp_old['rs_restrictions'] = gzcompress(serialize($wpdb->get_results("SELECT requirement_id AS id, role_name AS r, topic AS topic, src_or_tx_name AS st_name, obj_or_term_id AS ot_id, max_scope, require_for AS r_for, inherited_from AS inh FROM {$wpdb->role_scope_rs} ORDER BY requirement_id DESC LIMIT 5000", ARRAY_N)));
            }
        }
        if (!empty($ok['pp_groups'])) {
            if (mysql_num_rows(mysql_query("SHOW TABLES LIKE '{$wpdb->groups_rs}'"))) {
                $pp_old['rs_groups'] = gzcompress(serialize($wpdb->get_results("SELECT ID, group_name AS name, group_meta_id AS gmid FROM {$wpdb->groups_rs} ORDER BY ID DESC LIMIT 500", ARRAY_N)));
            }
            if (PP_MULTISITE) {
                $wpdb->net_groups_rs = $wpdb->base_prefix . 'groups_rs';
                if (!empty($ok['pp_groups']) && mysql_num_rows(mysql_query("SHOW TABLES LIKE '{$wpdb->net_groups_rs}'"))) {
                    $pp_old['rs_net_groups'] = gzcompress(serialize($wpdb->get_results("SELECT ID, group_name AS name, group_meta_id AS gmid FROM {$wpdb->net_groups_rs} ORDER BY ID DESC LIMIT 500", ARRAY_N)));
                }
            }
        }
        if (!empty($ok['pp_group_members']) && mysql_num_rows(mysql_query("SHOW TABLES LIKE '{$wpdb->user2group_rs}'"))) {
            $pp_old['rs_group_members'] = gzcompress(serialize($wpdb->get_results("SELECT group_id AS gid, user_id AS uid FROM {$wpdb->user2group_rs} LIMIT 5000", ARRAY_N)));
        }
        // PP One
        $wpdb->pp_roles = $wpdb->prefix . 'pp_roles';
        $wpdb->pp_conditions = $wpdb->prefix . 'pp_conditions';
        $wpdb->pp_circles = $wpdb->prefix . 'pp_circles';
        if (!empty($ok['pp_groups']) && empty($pp_config['pp_circles']) && mysql_num_rows(mysql_query("SHOW TABLES LIKE '{$wpdb->pp_circles}'"))) {
            $pp_old['pp_circles'] = gzcompress(serialize($wpdb->get_results("SELECT * FROM {$wpdb->pp_circles} ORDER BY group_type, group_id", ARRAY_N)));
        }
        if (!empty($ok['pp_permissions']) && mysql_num_rows(mysql_query("SHOW TABLES LIKE '{$wpdb->pp_roles}'"))) {
            $pp_old['pp1_site_roles'] = gzcompress(serialize($wpdb->get_results("SELECT assignment_id AS id, group_type AS gtype, group_id AS gid, role_name AS r FROM {$wpdb->pp_roles} WHERE scope = 'site' ORDER BY assignment_id DESC LIMIT 5000", ARRAY_N)));
            $pp_old['pp1_term_roles'] = gzcompress(serialize($wpdb->get_results("SELECT assignment_id AS id, group_type AS gtype, group_id AS gid, role_name AS r, item_id, assign_for AS a_for, inherited_from AS inh FROM {$wpdb->pp_roles} WHERE scope = 'term' ORDER BY assignment_id DESC LIMIT 1000", ARRAY_N)));
            $pp_old['pp1_obj_roles'] = gzcompress(serialize($wpdb->get_results("SELECT assignment_id AS id, group_type AS gtype, group_id AS gid, role_name AS r, item_id, assign_for AS a_for, inherited_from AS inh FROM {$wpdb->pp_roles} WHERE scope = 'object' ORDER BY assignment_id DESC LIMIT 10000", ARRAY_N)));
        }
    }
    if (!empty($ok['error_log'])) {
        $base_path = str_replace('\\', '/', ABSPATH);
        $base_path_back = str_replace('/', '\\', ABSPATH);
        if ($path = _pp_get_errlog_path()) {
            $size = filesize($path);
            if (defined('PPI_ERROR_LOG_UPLOAD_LIMIT') && PPI_ERROR_LOG_UPLOAD_LIMIT > 1000 && PPI_ERROR_LOG_UPLOAD_LIMIT < 750000) {
                $limit = PPI_ERROR_LOG_UPLOAD_LIMIT;
            } else {
                $limit = 125000;
            }
            // with typical compression rate of 15 and base64 encoding, compressed size ~ 10k
            if ($size) {
                if ($size > $limit) {
                    $fp = fopen($path, 'r');
                    fseek($fp, $size - $limit);
                    $data = fread($fp, $size);
                } else {
                    $data = file_get_contents($path);
                }
                // trim to relative paths for privacy
                if ($base_path) {
                    $data = str_replace($base_path, './', $data);
                }
                if ($base_path_back) {
                    $data = str_replace($base_path_back, '.\\', $data);
                }
                $error_log = base64_encode(gzcompress($data));
            }
        }
    } else {
        $error_log = '';
    }
    $hashes = array();
    foreach (array('pp_config', 'pp_old', 'error_log') as $var) {
        if (!empty(${$var})) {
            if (PP_MULTISITE && 'error_log' != $var) {
                global $blog_id;
                ${$var}['site'] = $blog_id;
            }
            ${$var} = base64_encode(gzcompress(serialize(${$var})));
            $hashes[$var] = md5(${$var});
        }
        unset($var);
    }
    if ($response = PP_Plugin_Status::callhome('config-check', $request_vars, $hashes)) {
        $need_data = json_decode($response);
    } else {
        $need_data = false;
    }
    if ($need_data) {
        $post_data = array();
        // add each data array to $post_data unless config-check did not indicate it is needed
        if (in_array('pp_config', $need_data)) {
            $post_data['pp_config'] = $pp_config;
        }
        if (in_array('pp_old', $need_data)) {
            $post_data['pp_old'] = $pp_old;
        }
        if (in_array('error_log', $need_data)) {
            $post_data['error_log'] = $error_log;
        }
        $response = PP_Plugin_Status::callhome('config-upload', $request_vars, $post_data);
        return $response;
    } else {
        return -1;
    }
}
 private function init_plugins()
 {
     if (!isset($this->installed_plugins) || !$this->installed_plugins) {
         if (!function_exists('get_plugin_data')) {
             include_once ABSPATH . '/wp-admin/includes/plugin.php';
         }
         if (function_exists('get_plugin_data')) {
             $active_plugins = wp_get_active_and_valid_plugins();
             foreach ($active_plugins as $plugin) {
                 $this->add_installed_plugin($plugin);
             }
         }
     }
 }
Beispiel #10
0
 function layers_get_plugins()
 {
     $active_plugins = wp_get_active_and_valid_plugins();
     $layers_plugins = array();
     foreach ((array) $active_plugins as $plugin_key) {
         $plugin_data = get_plugin_data($plugin_key);
         if (isset($plugin_data['Layers Plugin']) && 'true' == strtolower($plugin_data['Layers Plugin'])) {
             $layers_plugins[$plugin_key] = $plugin_data;
         }
     }
     return $layers_plugins;
 }
function vp_register_hooks()
{
    global $versionPressContainer;
    /** @var Committer $committer */
    $committer = $versionPressContainer->resolve(VersionPressServices::COMMITTER);
    /** @var Mirror $mirror */
    $mirror = $versionPressContainer->resolve(VersionPressServices::MIRROR);
    /** @var DbSchemaInfo $dbSchemaInfo */
    $dbSchemaInfo = $versionPressContainer->resolve(VersionPressServices::DB_SCHEMA);
    /** @var VpidRepository $vpidRepository */
    $vpidRepository = $versionPressContainer->resolve(VersionPressServices::VPID_REPOSITORY);
    /** @var WpdbMirrorBridge $wpdbMirrorBridge */
    $wpdbMirrorBridge = $versionPressContainer->resolve(VersionPressServices::WPDB_MIRROR_BRIDGE);
    /** @var \VersionPress\Database\Database $database */
    $database = $versionPressContainer->resolve(VersionPressServices::DATABASE);
    /** @var ActionsInfoProvider $actionsInfoProvider */
    $actionsInfoProvider = $versionPressContainer->resolve(VersionPressServices::ACTIONSINFO_PROVIDER_ACTIVE_PLUGINS);
    if (!function_exists('get_plugins')) {
        require_once ABSPATH . 'wp-admin/includes/plugin.php';
    }
    $plugins = wp_get_active_and_valid_plugins();
    foreach ($plugins as $pluginFile) {
        $pluginDir = dirname($pluginFile);
        $hooksFile = $pluginDir . '/.versionpress/hooks.php';
        if (file_exists($hooksFile)) {
            require_once $hooksFile;
        }
    }
    add_filter('update_feedback', function () {
        touch(ABSPATH . 'versionpress.maintenance');
    });
    WordPressMissingFunctions::pipeAction('_core_updated_successfully', 'vp_wordpress_updated');
    add_action('activated_plugin', function ($pluginFile) {
        $plugins = get_plugins();
        $pluginName = $plugins[$pluginFile]['Name'];
        do_action('vp_plugin_changed', 'activate', $pluginFile, $pluginName);
    });
    add_action('deactivated_plugin', function ($pluginFile) {
        $plugins = get_plugins();
        $pluginName = $plugins[$pluginFile]['Name'];
        do_action('vp_plugin_changed', 'deactivate', $pluginFile, $pluginName);
    });
    add_action('upgrader_process_complete', function ($upgrader, $hook_extra) {
        if ($hook_extra['type'] === 'theme') {
            $themes = isset($hook_extra['bulk']) && $hook_extra['bulk'] === true ? $hook_extra['themes'] : [$upgrader->result['destination_name']];
            foreach ($themes as $stylesheet) {
                $themeName = wp_get_theme($stylesheet)->get('Name');
                if ($themeName === $stylesheet && isset($upgrader->skin->api, $upgrader->skin->api->name)) {
                    $themeName = $upgrader->skin->api->name;
                }
                // action can be "install" or "update", see WP_Upgrader and search for `'hook_extra' =>`
                $action = $hook_extra['action'];
                do_action('vp_theme_changed', $action, $stylesheet, $themeName);
            }
        }
        if (!($hook_extra['type'] === 'plugin' && $hook_extra['action'] === 'update')) {
            return;
            // handled by different hook
        }
        if (isset($hook_extra['bulk']) && $hook_extra['bulk'] === true) {
            $pluginFiles = $hook_extra['plugins'];
        } else {
            $pluginFiles = [$hook_extra['plugin']];
        }
        $plugins = get_plugins();
        foreach ($pluginFiles as $pluginFile) {
            $pluginName = $plugins[$pluginFile]['Name'];
            do_action('vp_plugin_changed', 'update', $pluginFile, $pluginName);
        }
    }, 10, 2);
    add_filter('upgrader_pre_install', function ($_, $hook_extra) {
        if (!(isset($hook_extra['type']) && $hook_extra['type'] === 'plugin' && $hook_extra['action'] === 'install')) {
            return;
        }
        $pluginsBeforeInstallation = get_plugins();
        $postInstallHook = function ($_, $hook_extra) use($pluginsBeforeInstallation, &$postInstallHook) {
            if (!($hook_extra['type'] === 'plugin' && $hook_extra['action'] === 'install')) {
                return;
            }
            wp_cache_delete('plugins', 'plugins');
            $pluginsAfterInstallation = get_plugins();
            $installedPlugins = array_diff_key($pluginsAfterInstallation, $pluginsBeforeInstallation);
            foreach ($installedPlugins as $pluginFile => $plugin) {
                do_action('vp_plugin_changed', 'install', $pluginFile, $plugin['Name']);
            }
            remove_filter('upgrader_post_install', $postInstallHook);
        };
        add_filter('upgrader_post_install', $postInstallHook, 10, 2);
    }, 10, 2);
    add_filter('upgrader_pre_download', function ($reply, $_, $upgrader) use($committer) {
        if (!isset($upgrader->skin->language_update)) {
            return $reply;
        }
        $languages = get_available_languages();
        $postInstallHook = function ($_, $hook_extra) use($committer, $languages, &$postInstallHook) {
            if (!isset($hook_extra['language_update_type'])) {
                return;
            }
            $type = $hook_extra['language_update_type'];
            $languageCode = $hook_extra['language_update']->language;
            $name = $type === "core" ? null : $hook_extra['language_update']->slug;
            $action = in_array($languageCode, $languages) ? "update" : "install";
            do_action('vp_translation_changed', $action, $languageCode, $type, $name);
            remove_filter('upgrader_post_install', $postInstallHook);
        };
        add_filter('upgrader_post_install', $postInstallHook, 10, 2);
        return false;
    }, 10, 3);
    add_action('switch_theme', function () use($committer) {
        if (defined('WP_CLI') && WP_CLI) {
            wp_remote_get(admin_url());
            //
        } else {
            $committer->disableCommit();
            // the change will be committed on next load
        }
    });
    add_action('after_switch_theme', function () use($committer) {
        $theme = wp_get_theme();
        $stylesheet = $theme->get_stylesheet();
        $themeName = $theme->get('Name');
        do_action('vp_theme_changed', 'switch', $stylesheet, $themeName);
    });
    function _vp_get_language_name_by_code($code)
    {
        require_once ABSPATH . 'wp-admin/includes/translation-install.php';
        $translations = wp_get_available_translations();
        return isset($translations[$code]) ? $translations[$code]['native_name'] : 'English (United States)';
    }
    add_action('add_option_WPLANG', function ($option, $value) use($committer) {
        $defaultLanguage = defined('WPLANG') ? WPLANG : '';
        if ($value === $defaultLanguage) {
            return;
            // It's just submitted settings form without changing language
        }
        do_action('vp_translation_changed', 'activate', $value);
    }, 10, 2);
    add_action('update_option_WPLANG', function ($oldValue, $newValue) use($committer) {
        do_action('vp_translation_changed', 'activate', $newValue);
    }, 10, 2);
    add_action('wp_update_nav_menu_item', function ($menu_id, $menu_item_db_id) use($committer) {
        $key = 'menu-item-' . $menu_item_db_id;
        if (defined('DOING_AJAX') && DOING_AJAX && isset($_POST['action']) && $_POST['action'] === 'add-menu-item') {
            $committer->postponeCommit($key);
            $committer->commit();
        } elseif (isset($_POST['action']) && $_POST['action'] === 'update') {
            $committer->usePostponedChangeInfos($key);
        }
    }, 10, 2);
    add_action('pre_delete_term', function ($termId, $taxonomy) use($committer, $vpidRepository, $dbSchemaInfo, $actionsInfoProvider) {
        $termVpid = $vpidRepository->getVpidForEntity('term', $termId);
        $term = get_term($termId, $taxonomy);
        $termEntityInfo = $dbSchemaInfo->getEntityInfo('term');
        $actionsInfo = $actionsInfoProvider->getActionsInfo('term');
        $changeInfo = new EntityChangeInfo($termEntityInfo, $actionsInfo, 'delete', $termVpid, ['VP-Term-Name' => $term->name, 'VP-Term-Taxonomy' => $taxonomy]);
        $committer->forceChangeInfo($changeInfo);
    }, 10, 2);
    add_filter('wp_save_image_editor_file', function ($saved, $filename, $image, $mime_type, $post_id) use($vpidRepository, $committer, $dbSchemaInfo, $actionsInfoProvider) {
        $vpid = $vpidRepository->getVpidForEntity('post', $post_id);
        $post = get_post($post_id);
        $actionsInfo = $actionsInfoProvider->getActionsInfo('post');
        $changeInfo = new EntityChangeInfo($dbSchemaInfo->getEntityInfo('post'), $actionsInfo, 'edit', $vpid, ['VP-Post-Type' => $post->post_type, 'VP-Post-Title' => $post->post_title]);
        $committer->forceChangeInfo($changeInfo);
    }, 10, 5);
    add_filter('plugin_install_action_links', function ($links, $plugin) {
        $compatibility = CompatibilityChecker::testCompatibilityBySlug($plugin['slug']);
        if ($compatibility === CompatibilityResult::COMPATIBLE) {
            $cssClass = 'vp-compatible';
            $compatibilityAdjective = 'Compatible';
        } elseif ($compatibility === CompatibilityResult::INCOMPATIBLE) {
            $cssClass = 'vp-incompatible';
            // @codingStandardsIgnoreLine
            $compatibilityAdjective = '<a href="http://docs.versionpress.net/en/integrations/plugins" target="_blank" title="This plugin is not compatible with VersionPress. These plugins will not work correctly when used together.">Incompatible</a>';
        } else {
            $cssClass = 'vp-untested';
            // @codingStandardsIgnoreLine
            $compatibilityAdjective = '<a href="http://docs.versionpress.net/en/integrations/plugins" target="_blank" title="This plugin was not yet tested with VersionPress. Some functionality may not work as intended.">Untested</a>';
        }
        // @codingStandardsIgnoreLine
        $compatibilityNotice = '<span class="vp-compatibility %s" data-plugin-name="%s"><strong>%s</strong> with VersionPress</span>';
        $links[] = sprintf($compatibilityNotice, $cssClass, $plugin['name'], $compatibilityAdjective);
        return $links;
    }, 10, 2);
    add_filter('plugin_row_meta', function ($plugin_meta, $plugin_file, $plugin_data, $status) {
        if ($status === "dropins") {
            return $plugin_meta;
        }
        $compatibility = CompatibilityChecker::testCompatibilityByPluginFile($plugin_file);
        if ($compatibility === CompatibilityResult::COMPATIBLE) {
            $cssClass = 'vp-compatible';
            $compatibilityAdjective = 'Compatible';
        } elseif ($compatibility === CompatibilityResult::INCOMPATIBLE) {
            $cssClass = 'vp-incompatible';
            // @codingStandardsIgnoreLine
            $compatibilityAdjective = '<a href="http://docs.versionpress.net/en/integrations/plugins" target="_blank" title="This plugin is not compatible with VersionPress. These plugins will not work correctly when used together.">Incompatible</a>';
        } elseif ($compatibility === CompatibilityResult::UNTESTED) {
            $cssClass = 'vp-untested';
            // @codingStandardsIgnoreLine
            $compatibilityAdjective = '<a href="http://docs.versionpress.net/en/integrations/plugins" target="_blank" title="This plugin was not yet tested with VersionPress. Some functionality may not work as intended.">Untested</a>';
        } else {
            return $plugin_meta;
        }
        // @codingStandardsIgnoreLine
        $compatibilityNotice = '<span class="vp-compatibility %s" data-plugin-name="%s"><strong>%s</strong> with VersionPress</span>';
        $plugin_meta[] = sprintf($compatibilityNotice, $cssClass, $plugin_data['Name'], $compatibilityAdjective);
        return $plugin_meta;
    }, 10, 4);
    add_filter('plugin_action_links', function ($actions, $plugin_file) {
        $compatibility = CompatibilityChecker::testCompatibilityByPluginFile($plugin_file);
        if (isset($actions['activate'])) {
            if ($compatibility === CompatibilityResult::UNTESTED) {
                $actions['activate'] = "<span class=\"vp-plugin-list vp-untested\">{$actions['activate']}</span>";
            } elseif ($compatibility === CompatibilityResult::INCOMPATIBLE) {
                $actions['activate'] = "<span class=\"vp-plugin-list vp-incompatible\">{$actions['activate']}</span>";
            }
        }
        return $actions;
    }, 10, 2);
    add_action('vp_revert', function ($modifiedFiles) {
        // We have to flush the rewrite rules in the next request, because
        // in the current one the changed rewrite rules are not yet effective.
        set_transient('vp_flush_rewrite_rules', 1);
        vp_flush_regenerable_options();
        // Update composer dependencies
        if (array_search('composer.lock', $modifiedFiles) || array_search('composer.json', $modifiedFiles)) {
            putenv('COMPOSER_HOME=' . VP_PROJECT_ROOT . '/vendor/bin/composer');
            $originalCwd = getcwd();
            chdir(VP_PROJECT_ROOT);
            $input = new \Symfony\Component\Console\Input\ArrayInput(['command' => 'install']);
            $output = new \Symfony\Component\Console\Output\NullOutput();
            $application = new \Composer\Console\Application();
            $application->setAutoExit(false);
            // prevent `$application->run` method from exitting the script
            $application->run($input, $output);
            $application->getComposer();
            chdir($originalCwd);
        }
    });
    add_action('pre_delete_term', function ($term, $taxonomy) use($database, $wpdbMirrorBridge) {
        if (!is_taxonomy_hierarchical($taxonomy)) {
            return;
        }
        $term = get_term($term, $taxonomy);
        if (is_wp_error($term)) {
            return;
        }
        $wpdbMirrorBridge->update($database->term_taxonomy, ['parent' => $term->parent], ['parent' => $term->term_id]);
    }, 10, 2);
    add_action('before_delete_post', function ($postId) use($database, $wpdbMirrorBridge) {
        // Fixing bug in WP (#34803) and WP-CLI (#2246);
        $post = get_post($postId);
        if (!is_wp_error($post) && $post->post_type === 'nav_menu_item') {
            $newParent = get_post_meta($post->ID, '_menu_item_menu_item_parent', true);
            $wpdbMirrorBridge->update($database->postmeta, ['meta_value' => $newParent], ['meta_key' => '_menu_item_menu_item_parent', 'meta_value' => $post->ID]);
            $database->update($database->postmeta, ['meta_value' => $newParent], ['meta_key' => '_menu_item_menu_item_parent', 'meta_value' => $post->ID]);
        }
    });
    //----------------------------------------
    // URL and WP-CLI "hooks"
    //----------------------------------------
    $requestDetector = new \VersionPress\Utils\RequestDetector();
    if ($requestDetector->isThemeDeleteRequest()) {
        $themeIds = $requestDetector->getThemeStylesheets();
        foreach ($themeIds as $stylesheet) {
            $themeName = wp_get_theme($stylesheet)->get('Name');
            do_action('vp_theme_changed', 'delete', $stylesheet, $themeName);
        }
    }
    if ($requestDetector->isPluginDeleteRequest()) {
        $pluginNames = $requestDetector->getPluginNames();
        $plugins = get_plugins();
        foreach ($pluginNames as $plugin) {
            do_action('vp_plugin_changed', 'delete', $plugin, $plugins[$plugin]['Name']);
        }
    }
    if ($requestDetector->isCoreLanguageUninstallRequest()) {
        $languageCode = $requestDetector->getLanguageCode();
        do_action('vp_translation_changed', 'uninstall', $languageCode);
    }
    if (basename($_SERVER['PHP_SELF']) === 'theme-editor.php' && isset($_GET['updated']) && $_GET['updated'] === 'true') {
        $stylesheet = $_GET['theme'];
        $themeName = wp_get_theme($stylesheet)->get('Name');
        do_action('vp_theme_changed', 'edit', $stylesheet, $themeName);
    }
    if (basename($_SERVER['PHP_SELF']) === 'plugin-editor.php' && (isset($_POST['action']) && $_POST['action'] === 'update' || isset($_GET['liveupdate']))) {
        $committer->disableCommit();
    }
    if (basename($_SERVER['PHP_SELF']) === 'plugin-editor.php' && isset($_GET['a']) && $_GET['a'] === 'te') {
        if (!function_exists('get_plugins')) {
            require_once ABSPATH . 'wp-admin/includes/plugin.php';
        }
        $editedFile = $_GET['file'];
        $editedFilePathParts = preg_split("~[/\\\\]~", $editedFile);
        $plugins = get_plugins();
        $pluginNames = array_keys($plugins);
        $bestRank = 0;
        $bestMatch = "";
        foreach ($pluginNames as $plugin) {
            $rank = 0;
            $pluginPathParts = preg_split("~[/\\\\]~", $plugin);
            $maxEqualParts = min(count($editedFilePathParts), count($pluginPathParts));
            for ($part = 0; $part < $maxEqualParts; $part++) {
                if ($editedFilePathParts[$part] !== $pluginPathParts[$part]) {
                    break;
                }
                $rank += 1;
            }
            if ($rank > $bestRank) {
                $bestRank = $rank;
                $bestMatch = $plugin;
            }
        }
        do_action('vp_plugin_changed', 'edit', $bestMatch, $plugins[$bestMatch]['Name']);
    }
    add_filter('cron_schedules', function ($schedules) use($dbSchemaInfo) {
        $intervals = $dbSchemaInfo->getIntervalsForFrequentlyWrittenEntities();
        foreach ($intervals as $interval) {
            if (isset($schedules[$interval])) {
                continue;
            }
            $seconds = strtotime($interval, 0);
            $schedules[$interval] = ['interval' => $seconds, 'display' => $interval];
        }
        return $schedules;
    });
    $r = $dbSchemaInfo->getRulesForFrequentlyWrittenEntities();
    $groupedByInterval = [];
    foreach ($r as $entityName => $rules) {
        foreach ($rules as $rule) {
            $groupedByInterval[$rule['interval']][$entityName][] = $rule;
        }
    }
    foreach ($groupedByInterval as $interval => $allRulesInInterval) {
        $actionName = "vp_commit_frequently_written_entities_{$interval}";
        if (!wp_next_scheduled($actionName)) {
            wp_schedule_event(time(), $interval, $actionName);
        }
        add_action($actionName, function () use($allRulesInInterval) {
            vp_save_frequently_written_entities($allRulesInInterval);
        });
    }
    if (!function_exists('get_plugins')) {
        require_once ABSPATH . 'wp-admin/includes/plugin.php';
    }
    register_shutdown_function([$committer, 'commit']);
}
 /**
  * Return array of active plugins for current instance
  *
  * Improvement over wp_get_active_and_valid_plugins() which doesn't return any plugins when in MS
  *
  * @method get_active_plugins
  * @for Utility
  *
  * @since 0.2.0
  */
 public static function get_active_plugins()
 {
     $mu_plugins = (array) wp_get_mu_plugins();
     $regular_plugins = (array) wp_get_active_and_valid_plugins();
     if (is_multisite()) {
         $network_plugins = (array) wp_get_active_network_plugins();
     } else {
         $network_plugins = array();
     }
     return array_merge($regular_plugins, $mu_plugins, $network_plugins);
 }
 /**
  * Get active GravityView Extensions and Gravity Forms Add-ons to help debug issues.
  *
  * @since 1.15
  * @return string List of active extensions related to GravityView or Gravity Forms, separated by HTML line breaks
  */
 private static function get_related_plugins_and_extensions()
 {
     if (!function_exists('wp_get_active_and_valid_plugins')) {
         return 'Running < WP 3.0';
     }
     $extensions = get_site_transient(self::related_plugins_key);
     if (empty($extensions)) {
         $active_plugins = wp_get_active_and_valid_plugins();
         $extensions = array();
         foreach ($active_plugins as $active_plugin) {
             // Match gravityview, gravity-forms, gravityforms, gravitate
             if (!preg_match('/(gravityview|gravity-?forms|gravitate)/ism', $active_plugin)) {
                 continue;
             }
             $plugin_data = get_plugin_data($active_plugin);
             $extensions[] = sprintf('%s %s', $plugin_data['Name'], $plugin_data['Version']);
         }
         if (!empty($extensions)) {
             set_site_transient(self::related_plugins_key, $extensions, HOUR_IN_SECONDS);
         } else {
             return 'There was an error fetching related plugins.';
         }
     }
     return implode('<br />', $extensions);
 }
 /**
  * Collect system information for support
  *
  * @return array of system data for support
  * @author Peter Chester
  */
 public static function getSupportStats()
 {
     $user = wp_get_current_user();
     $plugins = array();
     if (function_exists('get_plugin_data')) {
         $plugins_raw = wp_get_active_and_valid_plugins();
         foreach ($plugins_raw as $k => $v) {
             $plugin_details = get_plugin_data($v);
             $plugin = $plugin_details['Name'];
             if (!empty($plugin_details['Version'])) {
                 $plugin .= sprintf(' version %s', $plugin_details['Version']);
             }
             if (!empty($plugin_details['Author'])) {
                 $plugin .= sprintf(' by %s', $plugin_details['Author']);
             }
             if (!empty($plugin_details['AuthorURI'])) {
                 $plugin .= sprintf('(%s)', $plugin_details['AuthorURI']);
             }
             $plugins[] = $plugin;
         }
     }
     $network_plugins = array();
     if (is_multisite() && function_exists('get_plugin_data')) {
         $plugins_raw = wp_get_active_network_plugins();
         foreach ($plugins_raw as $k => $v) {
             $plugin_details = get_plugin_data($v);
             $plugin = $plugin_details['Name'];
             if (!empty($plugin_details['Version'])) {
                 $plugin .= sprintf(' version %s', $plugin_details['Version']);
             }
             if (!empty($plugin_details['Author'])) {
                 $plugin .= sprintf(' by %s', $plugin_details['Author']);
             }
             if (!empty($plugin_details['AuthorURI'])) {
                 $plugin .= sprintf('(%s)', $plugin_details['AuthorURI']);
             }
             $network_plugins[] = $plugin;
         }
     }
     $mu_plugins = array();
     if (function_exists('get_mu_plugins')) {
         $mu_plugins_raw = get_mu_plugins();
         foreach ($mu_plugins_raw as $k => $v) {
             $plugin = $v['Name'];
             if (!empty($v['Version'])) {
                 $plugin .= sprintf(' version %s', $v['Version']);
             }
             if (!empty($v['Author'])) {
                 $plugin .= sprintf(' by %s', $v['Author']);
             }
             if (!empty($v['AuthorURI'])) {
                 $plugin .= sprintf('(%s)', $v['AuthorURI']);
             }
             $mu_plugins[] = $plugin;
         }
     }
     $keys = apply_filters('tribe-pue-install-keys', array());
     $systeminfo = array('url' => 'http://' . $_SERVER["HTTP_HOST"], 'name' => $user->display_name, 'email' => $user->user_email, 'install keys' => $keys, 'WordPress version' => get_bloginfo('version'), 'PHP version' => phpversion(), 'plugins' => $plugins, 'network plugins' => $network_plugins, 'mu plugins' => $mu_plugins, 'theme' => wp_get_theme()->get('Name'), 'multisite' => is_multisite(), 'settings' => TribeEvents::getOptions());
     $systeminfo = apply_filters('tribe-events-pro-support', $systeminfo);
     return $systeminfo;
 }
Beispiel #15
0
 /**
  * Collect system information for support
  *
  * @return array of system data for support
  */
 public function getSupportStats()
 {
     $user = wp_get_current_user();
     $plugins = array();
     if (function_exists('get_plugin_data')) {
         $plugins_raw = wp_get_active_and_valid_plugins();
         foreach ($plugins_raw as $k => $v) {
             $plugin_details = get_plugin_data($v);
             $plugin = $plugin_details['Name'];
             if (!empty($plugin_details['Version'])) {
                 $plugin .= sprintf(' version %s', $plugin_details['Version']);
             }
             if (!empty($plugin_details['Author'])) {
                 $plugin .= sprintf(' by %s', $plugin_details['Author']);
             }
             if (!empty($plugin_details['AuthorURI'])) {
                 $plugin .= sprintf('(%s)', $plugin_details['AuthorURI']);
             }
             $plugins[] = $plugin;
         }
     }
     $network_plugins = array();
     if (is_multisite() && function_exists('get_plugin_data')) {
         $plugins_raw = wp_get_active_network_plugins();
         foreach ($plugins_raw as $k => $v) {
             $plugin_details = get_plugin_data($v);
             $plugin = $plugin_details['Name'];
             if (!empty($plugin_details['Version'])) {
                 $plugin .= sprintf(' version %s', $plugin_details['Version']);
             }
             if (!empty($plugin_details['Author'])) {
                 $plugin .= sprintf(' by %s', $plugin_details['Author']);
             }
             if (!empty($plugin_details['AuthorURI'])) {
                 $plugin .= sprintf('(%s)', $plugin_details['AuthorURI']);
             }
             $network_plugins[] = $plugin;
         }
     }
     $mu_plugins = array();
     if (function_exists('get_mu_plugins')) {
         $mu_plugins_raw = get_mu_plugins();
         foreach ($mu_plugins_raw as $k => $v) {
             $plugin = $v['Name'];
             if (!empty($v['Version'])) {
                 $plugin .= sprintf(' version %s', $v['Version']);
             }
             if (!empty($v['Author'])) {
                 $plugin .= sprintf(' by %s', $v['Author']);
             }
             if (!empty($v['AuthorURI'])) {
                 $plugin .= sprintf('(%s)', $v['AuthorURI']);
             }
             $mu_plugins[] = $plugin;
         }
     }
     $keys = apply_filters('tribe-pue-install-keys', array());
     $systeminfo = array('url' => 'http://' . $_SERVER['HTTP_HOST'], 'name' => $user->display_name, 'email' => $user->user_email, 'install keys' => $keys, 'WordPress version' => get_bloginfo('version'), 'PHP version' => phpversion(), 'plugins' => $plugins, 'network plugins' => $network_plugins, 'mu plugins' => $mu_plugins, 'theme' => wp_get_theme()->get('Name'), 'multisite' => is_multisite(), 'settings' => Tribe__Events__Main::getOptions(), 'WordPress timezone' => get_option('timezone_string', __('Unknown or not set', 'the-events-calendar')), 'server timezone' => date_default_timezone_get());
     if ($this->rewrite_rules_purged) {
         $systeminfo['rewrite rules purged'] = __('Rewrite rules were purged on load of this help page. Chances are there is a rewrite rule flush occurring in a plugin or theme!', 'the-events-calendar');
     }
     $systeminfo = apply_filters('tribe-events-pro-support', $systeminfo);
     return $systeminfo;
 }
/**
 * @since 3.4
 */
function qtranxf_search_config_files()
{
    $found = qtranxf_search_config_files_theme();
    $plugins = wp_get_active_and_valid_plugins();
    $plugin_dir = WP_PLUGIN_DIR . '/' . qtranxf_plugin_dirname();
    //qtranxf_dbg_log('qtranxf_search_config_files: $plugin_dir: ', $plugin_dir);
    foreach ($plugins as $plugin) {
        $dir = dirname($plugin);
        $bnm = basename($dir);
        //qtranxf_dbg_log('$dir='.$dir.'; $bnm: ',$bnm);
        if (strpos($bnm, 'qtranslate-x') === 0) {
            continue;
        }
        if ($bnm == basename(QTRANSLATE_DIR)) {
            continue;
        }
        $fn = $dir . '/i18n-config.json';
        if (!file_exists($fn)) {
            $fn = $plugin_dir . '/i18n-config/plugins/' . $bnm . '/i18n-config.json';
            if (!file_exists($fn)) {
                continue;
            }
        }
        $found[] = $fn;
    }
    return qtranxf_normalize_config_files($found);
}
function qtranxf_find_plugin_config_files(&$fn_bnm, &$fn_qtx, $bnm)
{
    $plugins = wp_get_active_and_valid_plugins();
    $fn_bnm = null;
    if (!qtranxf_find_plugin_by_foder($bnm . '-qtranslate-x', $plugins)) {
        $fn_bnm = qtranxf_find_plugin_file($bnm . '/i18n-config.json');
        while (!$fn_bnm) {
            $fn_bnm = qtranxf_plugin_dirname() . '/i18n-config/plugins/' . $bnm . '/i18n-config.json';
            $fn_bnm = qtranxf_find_plugin_file($fn_bnm);
            if ($fn_bnm) {
                break;
            }
            $fn_bnm = qtranxf_plugin_dirname() . '/i18n-config/themes/' . $bnm . '/i18n-config.json';
            $fn_bnm = qtranxf_find_plugin_file($fn_bnm);
            break;
        }
    }
    $fn_qtx = null;
    while (qtranxf_endsWith($bnm, '-qtranslate-x')) {
        $bnm_qtx = substr($bnm, 0, -13);
        $plugins = wp_get_active_and_valid_plugins();
        $fn_qtx = qtranxf_plugin_dirname() . '/i18n-config/plugins/' . $bnm_qtx . '/i18n-config.json';
        $fn_qtx = qtranxf_find_plugin_file($fn_qtx);
        if ($fn_qtx) {
            break;
        }
        $fn_qtx = qtranxf_plugin_dirname() . '/i18n-config/themes/' . $bnm_qtx . '/i18n-config.json';
        $fn_qtx = qtranxf_find_plugin_file($fn_qtx);
        break;
    }
    return $fn_bnm || $fn_qtx;
}
 public function active_plugin_data()
 {
     $active_plugins = wp_get_active_and_valid_plugins();
     $output_data = array('Name', 'Version', 'Author', 'PluginURI', 'Description');
     if (!empty($active_plugins)) {
         foreach ($active_plugins as $plugin_file) {
             $plugin_data = get_plugin_data($plugin_file, true, false);
             echo '<i> - File:</i> ' . $plugin_file . '<br />';
             if (!empty($plugin_data)) {
                 foreach ($output_data as $data_value) {
                     if ($plugin_data[$data_value]) {
                         echo '   - <strong>' . $data_value . ':</strong> ' . $plugin_data[$data_value] . '<br />';
                     }
                 }
             }
             echo '-- <br />';
         }
     }
 }
Beispiel #19
0
 /**
  * Determines whether or not BuddyPress is installed.
  *
  * @package s2Member\Utilities
  * @since 110720
  *
  * @param bool $query_active_plugins Optional. If true, this conditional will query active plugins too.
  *    Defaults to true if {@link s2Member\WS_PLUGIN__S2MEMBER_ONLY} is true, else false.
  *
  * @return bool True if BuddyPress is installed, else false.
  */
 public static function bp_is_installed($query_active_plugins = NULL)
 {
     if (defined('BP_VERSION') && did_action('bp_core_loaded')) {
         return TRUE;
     }
     // Quickest/easiest way to determine.
     $s2o = defined('WS_PLUGIN__S2MEMBER_ONLY') && WS_PLUGIN__S2MEMBER_ONLY ? TRUE : FALSE;
     if ($query_active_plugins = !isset($query_active_plugins) && $s2o ? TRUE : $query_active_plugins) {
         $buddypress = 'buddypress/bp-loader.php';
         // BuddyPress.
         $active_plugins = is_multisite() ? wp_get_active_network_plugins() : array();
         $active_plugins = array_unique(array_merge($active_plugins, wp_get_active_and_valid_plugins()));
         foreach ($active_plugins as $active_plugin) {
             // Search.
             if (plugin_basename($active_plugin) === $buddypress) {
                 return TRUE;
             }
         }
         // BuddyPress active.
     }
     return FALSE;
     // Default return false.
 }
 /**
  * Returns a formatted HTML list of all active plugins
  *
  * @return string
  */
 private function get_current_plugins()
 {
     $updates_avail = get_site_transient('update_plugins');
     $msg = '';
     foreach (wp_get_active_and_valid_plugins() as $plugin) {
         $plugin_data = get_plugin_data($plugin);
         $plugin_file = str_replace(trailingslashit(WP_PLUGIN_DIR), '', $plugin);
         if (isset($updates_avail->response[$plugin_file])) {
             $msg .= '<i class="icon-close1"></i> ';
         }
         $msg .= '<a href="' . $plugin_data['PluginURI'] . '">' . $plugin_data['Name'] . '</a> v' . $plugin_data['Version'] . '<br/>';
     }
     return $msg;
 }
/**
 * Track plugin activity in MixPanel
 *
 * @param   string
 *
 * @return  array
 */
function inboundrocket_track_plugin_activity($activity_desc, $custom_properties = array())
{
    if (!function_exists('curl_init')) {
        return false;
    }
    $inboundrocket_user = inboundrocket_get_current_user();
    global $wp_version;
    global $current_user;
    get_currentuserinfo();
    $user_id = md5(get_site_url());
    $plugins = wp_get_active_and_valid_plugins();
    $default_properties = array("distinct_id" => $user_id, '$wp-url' => get_site_url(), '$wp-version' => $wp_version, '$ir-version' => INBOUNDROCKET_PLUGIN_VERSION, '$wp-plugins' => $plugins);
    $properties = array_merge((array) $default_properties, (array) $custom_properties);
    $mp = Mixpanel::getInstance(INBOUNDROCKET_MIXPANEL_PROJECT_TOKEN, array("debug" => true));
    $mp->track($activity_desc, $properties);
    return true;
}
 /**
  * Collect system information for support
  *
  * @return array of system data for support
  */
 public function getSupportStats()
 {
     global $wpdb;
     $user = wp_get_current_user();
     $plugins = array();
     if (function_exists('get_plugin_data')) {
         $plugins_raw = wp_get_active_and_valid_plugins();
         foreach ($plugins_raw as $k => $v) {
             $plugin_details = get_plugin_data($v);
             $plugin = $plugin_details['Name'];
             if (!empty($plugin_details['Version'])) {
                 $plugin .= sprintf(' version %s', $plugin_details['Version']);
             }
             if (!empty($plugin_details['Author'])) {
                 $plugin .= sprintf(' by %s', $plugin_details['Author']);
             }
             if (!empty($plugin_details['AuthorURI'])) {
                 $plugin .= sprintf('(%s)', $plugin_details['AuthorURI']);
             }
             $plugins[] = $plugin;
         }
     }
     $network_plugins = array();
     if (is_multisite() && function_exists('get_plugin_data')) {
         $plugins_raw = wp_get_active_network_plugins();
         foreach ($plugins_raw as $k => $v) {
             $plugin_details = get_plugin_data($v);
             $plugin = $plugin_details['Name'];
             if (!empty($plugin_details['Version'])) {
                 $plugin .= sprintf(' version %s', $plugin_details['Version']);
             }
             if (!empty($plugin_details['Author'])) {
                 $plugin .= sprintf(' by %s', $plugin_details['Author']);
             }
             if (!empty($plugin_details['AuthorURI'])) {
                 $plugin .= sprintf('(%s)', $plugin_details['AuthorURI']);
             }
             $network_plugins[] = $plugin;
         }
     }
     $mu_plugins = array();
     if (function_exists('get_mu_plugins')) {
         $mu_plugins_raw = get_mu_plugins();
         foreach ($mu_plugins_raw as $k => $v) {
             $plugin = $v['Name'];
             if (!empty($v['Version'])) {
                 $plugin .= sprintf(' version %s', $v['Version']);
             }
             if (!empty($v['Author'])) {
                 $plugin .= sprintf(' by %s', $v['Author']);
             }
             if (!empty($v['AuthorURI'])) {
                 $plugin .= sprintf('(%s)', $v['AuthorURI']);
             }
             $mu_plugins[] = $plugin;
         }
     }
     $keys = apply_filters('tribe-pue-install-keys', array());
     //Obfuscate the License Keys for Security
     if (is_array($keys) && !empty($keys)) {
         $secure_keys = array();
         foreach ($keys as $plugin => $license) {
             $secure_keys[$plugin] = preg_replace('/^(.{4}).*(.{4})$/', '$1' . str_repeat('#', 32) . '$2', $license);
         }
         $keys = $secure_keys;
     }
     //Server
     $server = explode(' ', $_SERVER['SERVER_SOFTWARE']);
     $server = explode('/', reset($server));
     //PHP Information
     $php_info = array();
     $php_vars = array('max_execution_time', 'memory_limit', 'upload_max_filesize', 'post_max_size', 'display_errors', 'log_errors');
     foreach ($php_vars as $php_var) {
         if (isset($wpdb->qm_php_vars) && isset($wpdb->qm_php_vars[$php_var])) {
             $val = $wpdb->qm_php_vars[$php_var];
         } else {
             $val = ini_get($php_var);
         }
         $php_info[$php_var] = $val;
     }
     $systeminfo = array('Home URL' => get_home_url(), 'Site URL' => get_site_url(), 'Site Language' => get_option('WPLANG') ? get_option('WPLANG') : esc_html__('English', 'tribe-common'), 'Character Set' => get_option('blog_charset'), 'Name' => $user->display_name, 'Email' => $user->user_email, 'Install keys' => $keys, 'WordPress version' => get_bloginfo('version'), 'PHP version' => phpversion(), 'PHP' => $php_info, 'Server' => $server[0], 'SAPI' => php_sapi_name(), 'Plugins' => $plugins, 'Network Plugins' => $network_plugins, 'MU Plugins' => $mu_plugins, 'Theme' => wp_get_theme()->get('Name'), 'Multisite' => is_multisite(), 'Settings' => Tribe__Settings_Manager::get_options(), 'WP Timezone' => get_option('timezone_string') ? get_option('timezone_string') : esc_html__('Unknown or not set', 'tribe-common'), 'WP GMT Offset' => get_option('gmt_offset') ? ' ' . get_option('gmt_offset') : esc_html__('Unknown or not set', 'tribe-common'), 'Server Timezone' => date_default_timezone_get(), 'WP Date Format' => get_option('date_format'), 'WP Time Format' => get_option('time_format'), 'Week Starts On' => get_option('start_of_week'), 'Common Library Dir' => $GLOBALS['tribe-common-info']['dir'], 'Common Library Version' => $GLOBALS['tribe-common-info']['version']);
     if ($this->rewrite_rules_purged) {
         $systeminfo['rewrite rules purged'] = esc_html__('Rewrite rules were purged on load of this help page. Chances are there is a rewrite rule flush occurring in a plugin or theme!', 'tribe-common');
     }
     $systeminfo = apply_filters('tribe-events-pro-support', $systeminfo);
     return $systeminfo;
 }
Beispiel #23
0
 /**
  * Load third-party plugin compatibility
  *
  * Cycle through /connections/ folder and load any files for installed plugins.
  *
  * @since 0.21
  *
  */
 static function load_plugin_compatibility()
 {
     $asset_directories = array(WP_CRM_Connections);
     //** Load any existing assets for active plugins */
     foreach (wp_get_active_and_valid_plugins() as $plugin_path) {
         $plugin_slug = basename(plugin_basename(trim(dirname($plugin_path))));
         //** Get plugin name from directory name, or file name (if plugin has no directory and is in root) */
         if ($plugin_slug == 'plugins' || empty($plugin_slug)) {
             $plugin_slug = basename(plugin_basename(trim($plugin_path)));
         }
         //** Look for plugin-specific styles and load them */
         foreach ($asset_directories as $directory) {
             $file_path = trailingslashit($directory) . $plugin_slug . '.php';
             if (file_exists($file_path)) {
                 if (WP_DEBUG == true) {
                     include_once $file_path;
                 } else {
                     @(include_once $file_path);
                 }
             }
         }
     }
 }
 function get_plugins()
 {
     if (false === ($result = get_transient('sk_' . SK_CACHE_PREFIX . '_get_plugins'))) {
         $active_plugins = wp_get_active_and_valid_plugins();
         $mu_plugins = get_mu_plugins();
         $result = array();
         if (is_array($active_plugins)) {
             foreach ($active_plugins as $plugins_key => $plugin) {
                 $data = get_plugin_data($plugin, false, false);
                 $slug = explode('/', plugin_basename($plugin));
                 $slug = str_replace('.php', '', $slug[1]);
                 if ($data['Version']) {
                     $result[$slug] = $data['Version'];
                 } else {
                     $result[$slug] = '1.0.0';
                 }
             }
         }
         if (is_array($mu_plugins)) {
             foreach ($mu_plugins as $plugins_key => $plugin) {
                 $data = get_plugin_data(WPMU_PLUGIN_DIR . '/' . $plugins_key, false, false);
                 $slug = explode('/', plugin_basename($plugins_key));
                 $slug = str_replace('.php', '', $slug[0]);
                 if ($data['Version']) {
                     $result[$slug] = $data['Version'];
                 } else {
                     $result[$slug] = '1.0.0';
                 }
             }
         }
         if (is_multisite()) {
             $plugins = get_site_option('active_sitewide_plugins');
             foreach ($plugins as $plugins_key => $plugin) {
                 $data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugins_key, false, false);
                 $slug = explode('/', plugin_basename($plugins_key));
                 $slug = str_replace('.php', '', $slug[1]);
                 if ($data['Version']) {
                     $result[$slug] = $data['Version'];
                 } else {
                     $result[$slug] = '1.0.0';
                 }
             }
         }
         set_transient('sk_' . SK_CACHE_PREFIX . '_get_plugins', $result, $this->cache_time);
     }
     return $result;
 }
Beispiel #25
0
 /**
  * create manifest file
  * @return bool
  */
 public function create_manifest()
 {
     $this->substeps_todo = 3;
     $this->log(sprintf(__('%d. Trying to generate a manifest file&#160;&hellip;', 'backwpup'), $this->steps_data[$this->step_working]['STEP_TRY']));
     //build manifest
     $manifest = array();
     // add blog information
     $manifest['blog_info']['url'] = home_url();
     $manifest['blog_info']['wpurl'] = site_url();
     $manifest['blog_info']['prefix'] = $GLOBALS['wpdb']->prefix;
     $manifest['blog_info']['description'] = get_option('blogdescription');
     $manifest['blog_info']['stylesheet_directory'] = get_template_directory_uri();
     $manifest['blog_info']['activate_plugins'] = wp_get_active_and_valid_plugins();
     $manifest['blog_info']['activate_theme'] = wp_get_theme()->get('Name');
     $manifest['blog_info']['admin_email'] = get_option('admin_email');
     $manifest['blog_info']['charset'] = get_bloginfo('charset');
     $manifest['blog_info']['version'] = BackWPup::get_plugin_data('wp_version');
     $manifest['blog_info']['backwpup_version'] = BackWPup::get_plugin_data('version');
     $manifest['blog_info']['language'] = get_bloginfo('language');
     $manifest['blog_info']['name'] = get_bloginfo('name');
     $manifest['blog_info']['abspath'] = ABSPATH;
     $manifest['blog_info']['uploads'] = wp_upload_dir(null, false, true);
     $manifest['blog_info']['contents']['basedir'] = WP_CONTENT_DIR;
     $manifest['blog_info']['contents']['baseurl'] = WP_CONTENT_URL;
     $manifest['blog_info']['plugins']['basedir'] = WP_PLUGIN_DIR;
     $manifest['blog_info']['plugins']['baseurl'] = WP_PLUGIN_URL;
     $manifest['blog_info']['themes']['basedir'] = get_theme_root();
     $manifest['blog_info']['themes']['baseurl'] = get_theme_root_uri();
     // add job settings
     $manifest['job_settings'] = $this->job;
     // add archive info
     foreach ($this->additional_files_to_backup as $file) {
         $manifest['archive']['extra_files'][] = basename($file);
     }
     if (isset($this->steps_data['JOB_FILE'])) {
         if ($this->job['backuproot']) {
             $manifest['archive']['abspath'] = trailingslashit($this->get_destination_path_replacement(ABSPATH));
         }
         if ($this->job['backupuploads']) {
             $manifest['archive']['uploads'] = trailingslashit($this->get_destination_path_replacement(BackWPup_File::get_upload_dir()));
         }
         if ($this->job['backupcontent']) {
             $manifest['archive']['contents'] = trailingslashit($this->get_destination_path_replacement(WP_CONTENT_DIR));
         }
         if ($this->job['backupplugins']) {
             $manifest['archive']['plugins'] = trailingslashit($this->get_destination_path_replacement(WP_PLUGIN_DIR));
         }
         if ($this->job['backupthemes']) {
             $manifest['archive']['themes'] = trailingslashit($this->get_destination_path_replacement(get_theme_root()));
         }
     }
     if (!file_put_contents(BackWPup::get_plugin_data('TEMP') . 'manifest.json', json_encode($manifest))) {
         return false;
     }
     $this->substeps_done = 1;
     //Create backwpup_readme.txt
     $readme_text = __('You may have noticed the manifest.json file in this archive.', 'backwpup') . PHP_EOL;
     $readme_text .= __('manifest.json might be needed for later restoring a backup from this archive.', 'backwpup') . PHP_EOL;
     $readme_text .= __('Please leave manifest.json untouched and in place. Otherwise it is safe to be ignored.', 'backwpup') . PHP_EOL;
     if (!file_put_contents(BackWPup::get_plugin_data('TEMP') . 'backwpup_readme.txt', $readme_text)) {
         return false;
     }
     $this->substeps_done = 2;
     //add file to backup files
     if (is_readable(BackWPup::get_plugin_data('TEMP') . 'manifest.json')) {
         $this->additional_files_to_backup[] = BackWPup::get_plugin_data('TEMP') . 'manifest.json';
         $this->additional_files_to_backup[] = BackWPup::get_plugin_data('TEMP') . 'backwpup_readme.txt';
         $this->log(sprintf(__('Added manifest.json file with %1$s to backup file list.', 'backwpup'), size_format(filesize(BackWPup::get_plugin_data('TEMP') . 'manifest.json'), 2)));
     }
     $this->substeps_done = 3;
     return true;
 }
 function get_plugins()
 {
     $active_plugins = wp_get_active_and_valid_plugins();
     $mu_plugins = get_mu_plugins();
     $output = array();
     if (is_array($active_plugins)) {
         foreach ($active_plugins as $plugins_key => $plugin) {
             $data = get_plugin_data($plugin, false, false);
             $slug = explode('/', plugin_basename($plugin));
             $slug = str_replace('.php', '', $slug[1]);
             $output[$slug] = $data['Version'];
         }
     }
     if (is_array($mu_plugins)) {
         foreach ($mu_plugins as $plugins_key => $plugin) {
             $slug = str_replace('.php', '', $plugins_key);
             $output[$slug] = '1.0.0';
         }
     }
     return $output;
 }
    ms_cookie_constants();
}
// Define constants after multisite is loaded. Cookie-related constants may be overridden in ms_network_cookies().
wp_cookie_constants();
// Define and enforce our SSL constants
wp_ssl_constants();
// Create common globals.
require ABSPATH . WPINC . '/vars.php';
// Make taxonomies and posts available to plugins and themes.
// @plugin authors: warning: these get registered again on the init hook.
create_initial_taxonomies();
create_initial_post_types();
// Register the default theme directory root
register_theme_directory(get_theme_root());
// Load active plugins.
foreach (wp_get_active_and_valid_plugins() as $plugin) {
    include_once $plugin;
}
unset($plugin);
// Load pluggable functions.
require ABSPATH . WPINC . '/pluggable.php';
require ABSPATH . WPINC . '/pluggable-deprecated.php';
// Set internal encoding.
wp_set_internal_encoding();
// Run wp_cache_postload() if object cache is enabled and the function exists.
if (WP_CACHE && function_exists('wp_cache_postload')) {
    wp_cache_postload();
}
do_action('plugins_loaded');
// Define constants which affect functionality if not already defined.
wp_functionality_constants();
 public function getScriptData()
 {
     //Pass the list of installed plugins and their state (active/inactive) to UI JavaScript.
     $installedPlugins = get_plugins();
     $activePlugins = array_map('plugin_basename', wp_get_active_and_valid_plugins());
     $activeNetworkPlugins = array();
     if (function_exists('wp_get_active_network_plugins')) {
         //This function is only available on Multisite.
         $activeNetworkPlugins = array_map('plugin_basename', wp_get_active_network_plugins());
     }
     $plugins = array();
     foreach ($installedPlugins as $pluginFile => $header) {
         $isActiveForNetwork = in_array($pluginFile, $activeNetworkPlugins);
         $isActive = in_array($pluginFile, $activePlugins);
         $plugins[] = array('fileName' => $pluginFile, 'name' => $header['Name'], 'description' => isset($header['Description']) ? $header['Description'] : '', 'isActive' => $isActive || $isActiveForNetwork);
     }
     //Flag roles that can manage plugins.
     $canManagePlugins = array();
     $wpRoles = ameRoleUtils::get_roles();
     foreach ($wpRoles->role_objects as $id => $role) {
         $canManagePlugins[$id] = $this->canManagePlugins($id, $role);
     }
     return array('settings' => $this->getSettings(), 'installedPlugins' => $plugins, 'canManagePlugins' => $canManagePlugins, 'isMultisite' => is_multisite(), 'isProVersion' => $this->menuEditor->is_pro_version(), 'dismissNoticeNonce' => wp_create_nonce('ws_ame_dismiss_pv_usage_notice'), 'adminAjaxUrl' => admin_url('admin-ajax.php'));
 }
Beispiel #29
0
function M_remove_old_plugin($plugins)
{
    if (array_key_exists('membership/membership.php', $plugins) && !in_array('membership.php', (array) array_map('basename', wp_get_active_and_valid_plugins()))) {
        unset($plugins['membership/membership.php']);
    }
    return $plugins;
}
 /**
  * put your comment there...
  * 
  * @param mixed $reload
  * @return CJTExtensions
  */
 public function &getExtensions($reload = false)
 {
     // Get cached extensions or cache then if not yest cached!
     extract($this->onreloadcacheparameters(compact('reload')));
     if ($reload || !($extensions = $this->extensions) && !($extensions = get_option(self::CACHE_OPTION_NAME, array()))) {
         //Resting!
         $this->file2Classmap = array();
         $extensions = array();
         # Get all active plugins
         $activePlugins = wp_get_active_and_valid_plugins();
         # Get Network plugins
         if (is_multisite()) {
             $activePlugins = array_merge(wp_get_active_network_plugins(), $activePlugins);
         }
         // filter all installed Plugins to fetch all out Extensions!
         $activePlugins = $this->ongetactiveplugins($activePlugins);
         foreach ($activePlugins as $file) {
             $pluginDir = dirname($file);
             $pluginName = basename($pluginDir);
             // Any plugin with our prefix is a CJT extension!
             if (strpos($pluginName, $this->prefix[0]) === 0 || strpos($pluginName, $this->prefix[1]) === 0) {
                 // CJT Extsnsion must has the definition XML file!
                 // First try for Edition-Specific file
                 // if not exists try the generic one.
                 $xmlFile = "{$pluginDir}/{$pluginName}.xml";
                 if (file_exists($xmlFile)) {
                     // Get Plugin primary data!
                     $extension = array();
                     $extension['pluginFile'] = $file;
                     $extension['file'] = basename($file);
                     $extension['defFile'] = basename($pluginDir) . DIRECTORY_SEPARATOR . basename($xmlFile);
                     // Its useful to use ABS path only at runtime as it might changed as host might get moved.
                     $extension['dir'] = basename($pluginDir);
                     $extension['name'] = $pluginName;
                     // Cache XML file.
                     $extension['definition']['raw'] = file_get_contents($xmlFile);
                     // Filer!
                     $extension = $this->ondetectextension($extension);
                     // Read Basic XML Definition!
                     $definitionXML = $this->onloaddefinition(new SimpleXMLElement($extension['definition']['raw']));
                     $attrs = $definitionXML->attributes();
                     $extension['defDoc'] = $definitionXML;
                     $extension['definition']['primary']['loadMethod'] = (string) $attrs->loadMethod;
                     $extension['definition']['primary']['requiredLicense'] = (string) $definitionXML->license;
                     $className = (string) $attrs->class;
                     // Add to list!
                     $extensions[$className] = $extension;
                     // Map Plugin FILE-2-CLASS name!
                     $this->file2Classmap["{$extension['dir']}/{$extension['file']}"] = $className;
                 }
             }
         }
     }
     $this->extensions = $this->onload($extensions);
     // Chaining
     return $this->extensions;
 }