<?php /* Plugin Name: Theme Demo Data Installer Plugin URI: http://quanticalabs.com Description: Theme Demo Data Installer helps install dummy content (posts, pages, images etc.), widget settings and setup theme options in QuanticaLabs themes. Author: QuanticaLabs Version: 2.9 Author URI: http://quanticalabs.com */ require_once plugin_dir_path(__FILE__) . 'include.php'; load_plugin_textdomain(PLUGIN_THEME_INSTALLER_DOMAIN, false, dirname(plugin_basename(__FILE__)) . '/languages/'); /******************************************************************************/ $ThemeInstaller = new TIThemeInstaller(); TIInclude::includeFile(get_template_directory() . '/ti_config.php'); register_activation_hook(__FILE__, array($ThemeInstaller, 'pluginActivation')); if (is_admin()) { add_action('admin_init', array($ThemeInstaller, 'adminInit')); add_action('admin_menu', array($ThemeInstaller, 'adminMenuInit')); add_action('wp_ajax_' . PLUGIN_THEME_INSTALLER_CONTEXT . '_install', array($ThemeInstaller, 'installSampleData')); } /******************************************************************************/ /******************************************************************************/
<?php /******************************************************************************/ /******************************************************************************/ require_once plugin_dir_path(__FILE__) . 'define.php'; /******************************************************************************/ require_once PLUGIN_THEME_INSTALLER_CLASS_PATH . 'TI.File.class.php'; require_once PLUGIN_THEME_INSTALLER_CLASS_PATH . 'TI.Include.class.php'; TIInclude::includeFileFromDir(PLUGIN_THEME_INSTALLER_CLASS_PATH); /******************************************************************************/ /******************************************************************************/
function installSampleData() { error_reporting(E_ALL); ob_start(); ob_clean(); $this->code = 0; $this->buffer = null; $dataImport = array(); if (array_key_exists('code', $_POST)) { $this->code = (int) $_POST['code']; } if (array_key_exists('buffer', $_POST)) { $this->buffer = stripslashes($_POST['buffer']); } if (array_key_exists('data_import', $_POST)) { $dataImport = (array) $_POST['data_import']; } if (count($dataImport) == 0) { $this->createResponse(__('Please select at least one option of data which need to be imported.', PLUGIN_THEME_INSTALLER_DOMAIN), true); } global $ti_data; if (!ini_get('safe_mode')) { set_time_limit(0); ini_set('memory_limit', '512M'); } if (in_array(1, $dataImport)) { /***/ if (array_key_exists('plugin_timetable', $ti_data)) { if ($this->checkCode(10000)) { global $wpdb; $wpdb->query($ti_data['plugin_timetable']['sql']); $this->createResponse(null, false, 10001); } } /***/ if (array_key_exists('plugin_revslider', $ti_data)) { if (class_exists('ThemePunch_Fonts')) { if (array_key_exists('font', $ti_data['plugin_revslider'])) { if ($this->checkCode(10001)) { $Font = new ThemePunch_Fonts(); foreach ($ti_data['plugin_revslider']['font'] as $fontValue) { $Font->add_new_font($fontValue); } $this->createResponse(null, false, 10002); } } } if (class_exists('RevSlider')) { if (array_key_exists('path', $ti_data['plugin_revslider'])) { if ($this->checkCode(10002)) { $Slider = new RevSlider(); $Slider->importSliderFromPost(true, true, $ti_data['plugin_revslider']['path']); $this->createResponse(null, false, 10003); } } } } /***/ if (!defined('WP_LOAD_IMPORTERS')) { define('WP_LOAD_IMPORTERS', true); } TIInclude::includeFile(ABSPATH . 'wp-admin/includes/import.php'); $includeClass = array(array('class' => 'WP_Importer', 'path' => ABSPATH . 'wp-admin/includes/class-wp-importer.php'), array('class' => 'WP_Import', 'path' => PLUGIN_THEME_INSTALLER_LIBRARY_PATH . 'wordpress-importer.php')); foreach ($includeClass as $value) { $r = TIInclude::includeClass($value['path'], array($value['class'])); if ($r !== true) { break; } } if ($r === false) { $this->createResponse(__('Auto import feature couldn\'t be loaded. Please make import manually. You can find import dummy files in folder dummy_content.', PLUGIN_THEME_INSTALLER_DOMAIN)); } foreach ($ti_data['value']['dummy_content_file'] as $index => $value) { if ($this->checkCode(20000 + $index)) { $Import = new WP_Import(); $Import->fetch_attachments = true; $Import->import($value['path']); $this->createResponse(null, false, 20000 + $index + 1); } } /***/ if ($this->checkCode(30000)) { if (array_key_exists('meta', $ti_data)) { foreach ($ti_data['meta'] as $aIndex => $aValue) { switch ($aIndex) { case 'post_menu': $post = get_page_by_title($aValue['post_title'], 'OBJECT', $aValue['post_type']); if (is_null($post)) { break; } $menu = get_term_by('name', $aValue['menu_title'], 'nav_menu'); if ($menu === false) { break; } $meta = get_post_meta($post->ID, THEME_OPTION_PREFIX, true); if ($meta === false) { $meta = array(); } $meta[$aValue['meta_name']] = $menu->term_id; update_post_meta($post->ID, THEME_OPTION_PREFIX, $meta); break; } } } $this->createResponse(null, false, 40000); } } /**********************************************************************/ if ($this->checkCode(40000)) { if (in_array(2, $dataImport)) { if (array_key_exists('widget_settings_file', $ti_data['value'])) { foreach ($ti_data['value']['widget_settings_file'] as $file) { $json_data = json_decode(file_get_contents($file['path']), true); $widget_data = $json_data[1]; $sidebars_data = $json_data[0]; $current_sidebars = get_option('sidebars_widgets'); $current_sidebars['wp_inactive_widgets'] = array(); update_option('sidebars_widgets', $current_sidebars); $new_widgets = array(); foreach ($sidebars_data as $import_sidebar => $import_widgets) { foreach ($import_widgets as $import_widget) { $title = trim(substr($import_widget, 0, strrpos($import_widget, '-'))); $index = trim(substr($import_widget, strrpos($import_widget, '-') + 1)); $current_widget_data = get_option('widget_' . $title); $new_widget_name = $this->getNewWidgetName($title, $index); $new_index = trim(substr($new_widget_name, strrpos($new_widget_name, '-') + 1)); if (!empty($new_widgets[$title]) && is_array($new_widgets[$title])) { while (array_key_exists($new_index, $new_widgets[$title])) { $new_index++; } } $current_sidebars[$import_sidebar][] = $title . '-' . $new_index; if (array_key_exists($title, $new_widgets)) { $new_widgets[$title][$new_index] = $widget_data[$title][$index]; $multiwidget = $new_widgets[$title]['_multiwidget']; unset($new_widgets[$title]['_multiwidget']); $new_widgets[$title]['_multiwidget'] = $multiwidget; } else { $current_widget_data[$new_index] = $widget_data[$title][$index]; $current_multiwidget = null; if (array_key_exists('_multiwidget', $current_widget_data)) { $current_multiwidget = $current_widget_data['_multiwidget']; } $new_multiwidget = $widget_data[$title]['_multiwidget']; $multiwidget = $current_multiwidget != $new_multiwidget ? $current_multiwidget : 1; unset($current_widget_data['_multiwidget']); $current_widget_data['_multiwidget'] = $multiwidget; $new_widgets[$title] = $current_widget_data; } } } if (isset($new_widgets) && isset($current_sidebars)) { update_option('sidebars_widgets', $current_sidebars); foreach ($new_widgets as $title => $content) { update_option('widget_' . $title, $content); } } } $menu = get_terms('nav_menu'); foreach ($menu as $menuValue) { $option = get_option('widget_nav_menu'); if (is_array($option)) { foreach ($option as $optionIndex => $optionValue) { if ($optionValue['title'] == $menuValue->name) { $option[$optionIndex]['nav_menu'] = $menuValue->term_id; update_option('widget_nav_menu', $option); break; } } } } } } $this->createResponse(null, false, 50000); } /**********************************************************************/ if ($this->checkCode(50000)) { if (in_array(3, $dataImport)) { $option = array(); foreach ($ti_data as $aIndex => $aValue) { foreach ($aValue as $bIndex => $bValue) { $result = null; switch ($aIndex) { case 'path': if (array_key_exists('title', $bValue)) { $result = get_page_by_title($bValue['title'], 'OBJECT', $bValue['postType']); } if (is_null($result)) { break; } list($result) = wp_get_attachment_image_src($result->ID, 'full'); break; case 'post_id': if (array_key_exists('title', $bValue)) { $result = get_page_by_title($bValue['title'], 'OBJECT', $bValue['postType']); } if (is_null($result)) { break; } $result = $result->ID; break; case 'term_id': if (array_key_exists('title', $bValue)) { $result = get_term_by('name', $bValue['title'], $bValue['taxonomy']); } if ($result === false) { $result = null; break; } $result = $result->term_id; break; case 'value': if (array_key_exists('value', $bValue)) { $result = $bValue['value']; } break; case 'option': if ($bIndex == 'permalink_structure') { global $wp_rewrite; $wp_rewrite->set_permalink_structure($bValue); $result = null; } else { $result = $bValue; } break; } if (!is_null($result)) { if (preg_match('/^' . THEME_OPTION_PREFIX . '_/', $bIndex)) { $key = mb_substr($bIndex, mb_strlen(THEME_OPTION_PREFIX) + 1); $option[THEME_OPTION_PREFIX][$key] = $result; } else { $option['option'][$bIndex] = $result; } } } } foreach ($option as $aIndex => $aValue) { switch ($aIndex) { case 'option': foreach ($aValue as $bIndex => $bValue) { update_option($bIndex, $bValue); } break; case THEME_OPTION_PREFIX: if (class_exists('ThemeOption')) { ThemeOption::updateOption($option[THEME_OPTION_PREFIX]); } break; } } } } /**********************************************************************/ $page = get_page_by_title('Sample page', 'OBJECT', 'page'); if (!is_null($page)) { wp_delete_post($page->ID); } $post = get_page_by_title('Hello world!', 'OBJECT', 'post'); if (!is_null($post)) { wp_delete_post($post->ID); } /**********************************************************************/ flush_rewrite_rules(); /**********************************************************************/ $this->createResponse(__('Seems, that demo data has been imported. To make sure if this process has been sucessfully completed, please check below content of buffer returned by external applications.', PLUGIN_THEME_INSTALLER_DOMAIN), false); }