Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Copyright (c) 2018. Code by https://kiro.tech
- */
- if(!defined('ABSPATH')) {
- exit; // Exit if accessed directly
- }
- class VeroDate_DemoImport
- {
- public function __construct()
- {
- //Just do nothing here
- }
- public function createPosts($title, $type)
- {
- $author_id = 1;
- $slug = $title;
- $get_posts = get_page_by_title($title);
- if(NULL == $get_posts) {
- $post_id = wp_insert_post(
- array(
- 'comment_status' => 'closed',
- 'ping_status' => 'closed',
- 'post_author' => $author_id,
- 'post_name' => $slug,
- 'post_title' => $title,
- 'post_status' => 'publish',
- 'post_type' => $type
- )
- );
- echo '<p>' . __("Post type : {$type} created", 'verodate') . '</p>';
- }
- }
- /**
- * @param $args
- *
- * Insert default VeroDate pages
- */
- protected function __insertPages($args)
- {
- $page = array();
- foreach($args as $arg) {
- $page['name'] = $arg['post_title'];
- $page['id'] = wp_insert_post($arg);
- echo '<p>' . __("Page {$arg['post_title']} created", 'verodate') . '</p>';
- }
- }
- /**
- * Import demo content from xml file.
- */
- public function importDemoXml($xml)
- {
- $xmlImported = get_option('verodate_xml_import_' . $xml);
- if(empty($xmlImported)):
- define('WP_LOAD_IMPORTERS', TRUE);
- require_once(get_template_directory() . '/inc/demo_import/wordpress-importer.php');
- $wp_import = new WP_Import();
- $wp_import->base_url = get_site_url();
- $wp_import->fetch_attachments = TRUE;
- $wp_import->import(get_template_directory() . '/demo/' . $xml);
- /* Option for check or XML file already imported */
- update_option('verodate_xml_import_' . $xml, 1);
- else:
- echo '<p>' . __('Posts already imported.', 'verodate') . '</p>';
- endif;
- }
- /*
- * @since 1.0.1
- */
- public function import_widget()
- {
- /*
- * Create Category widget for Left Sidebar.
- * Category object widget : WP_Widget_Categories
- * List widget which will be needed : WP_Widget_Categories , WP_Widget_Tag_Cloud , WP_Widget_Recent_Posts , WC_Widget_Price_Filter , WC_Widget_Products
- */
- /* Blog left sidebar*/
- $blog_sidebars = [
- 'blog-left-sidebar',
- 'blog-right-sidebar',
- 'page-left-sidebar',
- 'page-right-sidebar',
- ];
- $this->__create_widget($blog_sidebars, 'WP_Widget_Categories', 'categories');
- $this->__create_widget($blog_sidebars, 'WP_Widget_Recent_Posts', 'recent-posts');
- $this->__create_widget($blog_sidebars, 'WP_Widget_Tag_Cloud', 'tag_cloud');
- /*
- * Shop widgets
- */
- if(class_exists('WooCommerce')) {
- $shop_sidebars = [
- 'shop-left-sidebar',
- 'shop-right-sidebar',
- ];
- $this->__create_widget($shop_sidebars, 'WP_Widget_Categories', 'categories');
- $this->__create_widget($shop_sidebars, 'WC_Widget_Price_Filter', 'woocommerce_price_filter');
- $this->__create_widget($shop_sidebars, 'WC_Widget_Products', 'woocommerce_products');
- $this->__create_widget($shop_sidebars, 'WC_Widget_Product_Tag_Cloud', 'woocommerce_product_tag_cloud');
- }
- }
- /**
- * @param $sidebar
- * @param $object
- * @param $widget
- *
- * @since 1.0.1
- * Get all widgets and insert new widget here.
- */
- protected function __create_widget($sidebars = array(), $object, $widget)
- {
- /* Get all sidebars */
- $sidebars_widgets = get_option('sidebars_widgets', array());
- /* Get all widgets */
- $widgets = $GLOBALS['wp_widget_factory']->widgets;
- /* Get widget base name */
- $control = $widgets[$object]->control_options['id_base'];
- /* Generate new widget name */
- /* insert new widget name into sidebar array */
- $number = $widgets[$object]->number + 1;
- $full_widget_name = $control . '-' . $number;
- foreach($sidebars as $sidebar):
- $sidebars_widgets[$sidebar][] = $full_widget_name;
- /* Get widget settings content */
- $pages[$number] = $this->__widget_content($widget);
- update_option('widget_' . $widget, $pages);
- update_option('sidebars_widgets', $sidebars_widgets);
- $number++;
- endforeach;
- }
- /**
- * @param $widget
- * Create widget settings content.
- *
- * @return array
- * @since 1.0.1
- */
- protected function __widget_content($widget)
- {
- $widget_content = array();
- switch($widget) {
- case 'categories':
- $widget_content = [
- 'title' => 'Categories',
- 'count' => 0,
- 'hierarchical' => 0,
- 'dropdown' => 0
- ];
- break;
- case 'tag_cloud':
- $widget_content = [
- 'title' => 'Tags',
- 'count' => 0,
- 'taxonomy' => 'post_tag',
- ];
- break;
- case 'recent-posts':
- $widget_content = [
- 'title' => 'Recent Post',
- 'number' => 5,
- 'show_date' => 0,
- ];
- break;
- case 'woocommerce_price_filter':
- $widget_content = [
- 'title' => 'Select Price'
- ];
- break;
- case 'woocommerce_products':
- $widget_content = [
- 'title' => 'Latest Products',
- 'number' => 6,
- 'show' => 0,
- 'orderby' => 'date',
- 'order' => 'desc',
- 'hide_free' => 1,
- 'show_hidden' => 1,
- ];
- break;
- case 'woocommerce_product_tag_cloud':
- $widget_content = [
- 'title' => 'Tags',
- ];
- break;
- }
- return $widget_content;
- }
- /*
- * Import groups
- */
- public function verodate_import_groups($users = FALSE)
- {
- $groups = array();
- $group_ids = array();
- if(!bp_is_active('groups')) {
- return $group_ids;
- }
- // Use currently available users from DB if no default were specified.
- if(empty($users)) {
- $users = get_users();
- }
- $groups = array(
- 0 => array(
- 'name' => 'Gone in 60 Seconds',
- 'description' => 'A retired master car thief must come back to the industry and steal 50 cars with his crew in one night to save his brother\'s life.',
- 'status' => 'public',
- 'enable_forum' => 1,
- ),
- 1 => array(
- 'name' => 'Next',
- 'description' => 'A Las Vegas magician who can see into the future is pursued by FBI agents seeking to use his abilities to prevent a nuclear terrorist attack.',
- 'status' => 'hidden',
- 'enable_forum' => 0,
- ),
- 2 => array(
- 'name' => 'RocknRolla',
- 'description' => 'In London, a real-estate scam puts millions of pounds up for grabs, attracting some of the city\'s scrappiest tough guys and its more established underworld types, all of whom are looking to get rich quick. While the city\'s seasoned criminals vie for the cash, an unexpected player -- a drugged out rock \'n\' roller presumed to be dead but very much alive...',
- 'status' => 'public',
- 'enable_forum' => 1,
- ),
- 3 => array(
- 'name' => 'Sherlock Holmes',
- 'description' => 'Detective Sherlock Holmes and his stalwart partner Watson engage in a battle of wits and brawn with a nemesis whose plot is a threat to all of England.',
- 'status' => 'public',
- 'enable_forum' => 0,
- ),
- 4 => array(
- 'name' => 'Snatch',
- 'description' => 'Unscrupulous boxing promoters, violent bookmakers, a Russian gangster, incompetent amateur robbers, and supposedly Jewish jewelers fight to track down a priceless stolen diamond.',
- 'status' => 'public',
- 'enable_forum' => 1,
- )
- );
- foreach($groups as $group) {
- $creator_id = is_object($users[array_rand($users)]) ? $users[array_rand($users)]->ID : $users[array_rand($users)];
- $cur = groups_create_group(array(
- 'creator_id' => $creator_id,
- 'name' => $group['name'],
- 'description' => $group['description'],
- 'slug' => groups_check_slug(sanitize_title(esc_attr($group['name']))),
- 'status' => $group['status'],
- 'date_created' => verodate_get_random_date(30, 5),
- 'enable_forum' => $group['enable_forum']
- ));
- groups_update_groupmeta($cur, 'last_activity', verodate_get_random_date(10));
- // create forums if Forum Component is active
- if(bp_is_active('forums') && bp_forums_is_installed_correctly()) {
- groups_new_group_forum($cur, $group['name'], $group['description']);
- }
- $group_ids[] = $cur;
- }
- return $group_ids;
- }
- /**
- * GENERATE RANDOM DUMMY DATA
- * Generating random users with some content
- */
- public function generate_users()
- {
- for($i = 1; $i <= 25; $i++) {
- $role = get_option('default_role');
- $password = '1234566778';
- $firstname = $this->verodate_generate_word(mt_rand(6, 12));
- $lastname = $this->verodate_generate_word(mt_rand(8, 12));
- $name = $this->verodate_generate_word(mt_rand(6, 12));
- $email_address = $name . '@' . $_SERVER['SERVER_NAME'] . '.invalid';
- $name = $this->verodate_generate_word(mt_rand(6, 12));
- $website = 'http://' . $name . '.com';
- $description = $this->verodate_generate_word(mt_rand(6, 12));
- $user_id = wp_create_user($email_address, $password, $email_address);
- wp_update_user(
- array(
- 'ID' => $user_id,
- 'nickname' => $email_address,
- 'first_name' => $firstname,
- 'last_name' => $lastname,
- 'user_url' => $website,
- 'description' => $description,
- )
- );
- // Set the role
- $user = new WP_User($user_id);
- $user->set_role($role);
- $avater = $this->verodate_random(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12));
- avatar_image_upload('avatars', $user_id, $avater, 'members');
- }
- $this->_set_users_recently_active();
- }
- /*
- * It's for BuddyPress.
- * Without recently active BuddyPress won't show users in members list.
- */
- private function _set_users_recently_active()
- {
- global $wpdb;
- foreach($wpdb->get_col("SELECT ID FROM $wpdb->users") as $user_id) {
- bp_update_user_meta($user_id, 'last_activity', verodate_get_random_date(10));
- }
- }
- /**
- * @param $length
- *
- * @return bool|string
- *
- * Generate random word.
- */
- public static function verodate_generate_word($length)
- {
- mt_srand((double)microtime() * 1000000);
- $vowels = array("a", "e", "i", "o", "u");
- $cons = array("b", "c", "d", "g", "h", "j", "k", "l", "m", "n", "p", "r", "s", "t", "u", "v", "w", "tr",
- "cr", "br", "fr", "th", "dr", "ch", "ph", "wr", "st", "sp", "sw", "pr", "sl", "cl", "sh");
- $num_vowels = count($vowels);
- $num_cons = count($cons);
- $word = '';
- while(strlen($word) < $length) {
- $word .= $cons[mt_rand(0, $num_cons - 1)] . $vowels[mt_rand(0, $num_vowels - 1)];
- }
- return substr($word, 0, $length);
- }
- /**
- * @return string
- * Generate random date
- */
- public static function verodate_random_date()
- {
- $curr_year = date('Y');
- $dob_year = rand($curr_year - 18, $curr_year - 47);
- $dob_month = rand(01, 12);
- $dob_day = rand(01, 30);
- $dob_month = str_pad($dob_month, 2, '0', STR_PAD_LEFT);
- $dob_day = str_pad($dob_day, 2, '0', STR_PAD_LEFT);
- return $dob_year . '-' . $dob_month . '-' . $dob_day . ' ' . '00:00:00';
- }
- /**
- * @param array $array
- *
- * @return mixed
- */
- public static function verodate_random($array = array('Male', 'Female'))
- {
- $array_number = array_rand($array);
- $array_value = $array[$array_number];
- return $array_value;
- }
- /**
- *
- */
- public function verodate_update_options()
- {
- $this->_verodate_set_wordpress_settings();
- if(class_exists('BuddyPress')) {
- $this->_set_active_BuddyPress_components();
- }
- }
- /*
- * Set wordpress setings.
- */
- private function _verodate_set_wordpress_settings()
- {
- update_option('users_can_register', 1);
- }
- /*
- * Set BuddyPress settings
- */
- /* Set all BuddyPress components to active.
- */
- private function _set_active_BuddyPress_components()
- {
- $bp = buddypress();
- $buddypress_components = [
- 'xprofile' => '1',
- 'settings' => '1',
- 'friends' => '1',
- 'messages' => '1',
- 'activity' => '1',
- 'notifications' => '1',
- 'groups' => '1',
- 'blogs' => '1',
- 'members' => '1'
- ];
- // Save settings and upgrade schema.
- require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
- require_once($bp->plugin_dir . '/bp-core/admin/bp-core-admin-schema.php');
- $bp->active_components = bp_core_admin_get_active_components_from_submitted_settings($buddypress_components);
- bp_core_install($bp->active_components);
- bp_core_add_page_mappings($bp->active_components);
- bp_update_option('bp-active-components', $bp->active_components);
- /* Set BuddyPress template to legacy template.
- * Default is : nouveau.
- */
- bp_update_option('_bp_theme_package_id', 'legacy');
- echo '<p>' . __('BuddyPress components activated') . '</p>';
- }
- /*
- * INSERT DEMO MENU
- *
- * @since 1.0.1
- */
- public function set_menu_items($menus)
- {
- // Check if the menu exists
- $verodate_menu = 'verodate menu';
- $menu_exists = wp_get_nav_menu_object($verodate_menu);
- if(!$menu_exists) {
- /* Create new menu */
- $menu_id = wp_create_nav_menu($verodate_menu);
- foreach($menus as $key => $menu):
- /* Create menu parents */
- if(is_array($menu)):
- $menu_item = $this->verodate_update_menu($menu_id, $menu[0], '#');
- foreach($menu as $men):
- /* Get page object */
- if($men === 'Blog' || $men === 'Shop' || $men === 'Members') {
- $this->set_page_templates($menu_id, $menu_item, $men);
- } else {
- $page_item = get_page_by_title($men);
- /* Create menu item */
- $this->verodate_update_menu($menu_id, $men, $page_item->guid, $menu_item);
- }
- /* Set different templates for these pages */
- endforeach;
- else:
- $page_item = get_page_by_title($menu);
- $this->verodate_update_menu($menu_id, $page_item->post_title, $page_item->guid);
- endif;
- endforeach;
- /* set menu as primary */
- $locations = get_theme_mod('nav_menu_locations');
- $locations['primary-menu'] = $menu_id;
- set_theme_mod('nav_menu_locations', $locations);
- }
- }
- /*
- * Create page templates for parent page
- */
- public function set_page_templates($menu_id, $menu_item, $item)
- {
- /* BLOG */
- if($item === 'Blog') {
- /* Blog full width, left sidebar, right sidebar */
- $menu_template[] = get_page_by_title($item);
- /* Post full width, left sidebar, right sidebar */
- $menu_template[] = get_page_by_title('Ea Immitto', OBJECT, 'post');
- } /* Shop */
- elseif ($item === 'Shop') {
- /* Shop full width, left sidebar , right sidebar */
- $menu_template[] = get_page_by_title($item);
- /* Product full width, left sidebar, right sidebar */
- $menu_template[] = get_page_by_title('Woo Logo', OBJECT, 'product');
- error_log(print_r($menu_template,1));
- }
- /* Members */
- else{
- $page_members = get_page_by_title($item);
- $member_details = get_userdata(1);
- $this->verodate_update_menu($menu_id, $item, $page_members->guid , $menu_item);
- $this->verodate_update_menu($menu_id, 'Members Details', $page_members->guid .''.$member_details->user_login , $menu_item);
- return TRUE;
- }
- /* Add items to menu */
- foreach($menu_template as $item) {
- $template_style = [
- 'Full width',
- 'Right Sidebar',
- 'Left Sidebar',
- ];
- for($i = 1; $i < 4; $i++){
- $this->verodate_update_menu($menu_id, $item->post_title .' ' . $template_style[$i - 1], $item->guid . '?template=' . $i, $menu_item);
- }
- }
- }
- /**
- * Insert item to menu.
- * @param $menu_id
- * @param $item
- * @param $url
- * @param string $menu_item
- *
- * @return int|WP_Error
- */
- public function verodate_update_menu($menu_id, $item, $url, $menu_item = '')
- {
- $menuID = wp_update_nav_menu_item($menu_id, 0, array(
- 'menu-item-title' => $item,
- 'menu-item-url' => $url,
- 'menu-item-status' => 'publish',
- 'menu-item-parent-id' => $menu_item)
- );
- return $menuID;
- }
- /* Setting up menu items
- * Working only with existing pages.
- * If page not exist error will be : Trying to get property of non-object.
- */
- public function createMenu()
- {
- /*
- Primary VeroDate menu items
- */
- $menu_items = [
- 'front_page' => 'Front Page',
- 'blog' => ['Blog'],
- 'shop' => ['Shop', 'Shop Cart', 'Checkout'],
- 'commnity' => ['Community', 'Members', 'Discussions', 'Forums', 'Groups'],
- 'pages' => ['Stories', 'Why us', 'About us', 'Pricing', 'Search'],
- 'contact_us' => 'Contact us',
- ];
- $this->set_menu_items($menu_items);
- }
- /*
- *
- * Insert demo menu END
- *
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement