function synved_option_wp_upgrader_pre_install($perform, $extra) { if (!isset($extra['plugin'])) { return $perform; } $upgrade_transfer = get_option('synved_option_wp_upgrade_addon_transfer'); if ($upgrade_transfer != null) { $upgrade_transfer_time = get_option('synved_option_wp_upgrade_addon_transfer_time'); if ($upgrade_transfer_time == null || time() - $upgrade_transfer_time > 60 * 60 * 1) { $upgrade_transfer = null; update_option('synved_option_wp_upgrade_addon_transfer', ''); } } $module_list = array(); if (function_exists('synved_plugout_get_module_list')) { $module_list = synved_plugout_get_module_list(); } else { global $synved_plugout; $module_list = array_keys($synved_plugout['module-list']); } $plugins_dir = WP_PLUGIN_DIR; $plugins_dir = rtrim(str_replace(array('\\', '/'), DIRECTORY_SEPARATOR, realpath($plugins_dir)), DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; $plugin = $extra['plugin']; $plugin_dir = rtrim(str_replace(array('\\', '/'), DIRECTORY_SEPARATOR, realpath(dirname($plugins_dir . $plugin))), DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; $dir = get_temp_dir(); $name = time(); $dir = rtrim($dir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . wp_unique_filename($dir, $name) . DIRECTORY_SEPARATOR; $list = array(); foreach ($module_list as $module_id) { $addon_list = synved_plugout_module_addon_list($module_id); if ($addon_list != null) { foreach ($addon_list as $addon_name => $addon_file) { if (file_exists($addon_file)) { $addon_dir = dirname($addon_file); $parent_dir = dirname($addon_dir); // clean names for comparison $addon_dir = rtrim(str_replace(array('\\', '/'), DIRECTORY_SEPARATOR, realpath($addon_dir)), DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; $parent_dir = rtrim(str_replace(array('\\', '/'), DIRECTORY_SEPARATOR, realpath($parent_dir)), DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; if (strtolower($parent_dir) != strtolower($plugins_dir) && strpos(strtolower($addon_dir), strtolower($plugin_dir)) !== false) { $path = $dir; $diff = substr($addon_dir, strlen($plugins_dir)); $path .= $diff; wp_mkdir_p($path); copy_dir($addon_dir, $path); $list[] = array('original' => $addon_dir, 'temporary' => $path); } } } } } if ($list != null) { update_option('synved_option_wp_upgrade_addon_transfer', array('directory' => $dir, 'list' => $list)); update_option('synved_option_wp_upgrade_addon_transfer_time', time()); } return $perform; }
function synved_option_item_addon_is_installed(array $item) { if ($item != null) { $type = synved_option_item_type($item); if ($type == 'addon') { $target = synved_option_item_property($item, 'target'); $folder = synved_option_item_property($item, 'folder'); $path = $target; if ($path != null) { $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path); if (substr($path, -1) != DIRECTORY_SEPARATOR) { $path .= DIRECTORY_SEPARATOR; } $path .= $folder; if (is_dir($path)) { return true; } } $module = synved_option_item_property($item, 'module'); if ($module != null) { $addon_list = synved_plugout_module_addon_list($module); if (isset($addon_list[$folder])) { return true; } } } } return false; }