/** * load module skins */ protected function load_module_skins() { $skins_file = $this->get_module()->get_module_wxr_files('skins'); if ($skins_file) { $skins = HW_WXR_Parser_SimpleXML::read_simplexml_object($skins_file); if (!is_wp_error($skins) && !empty($skins) && isset($skins->xml)) { foreach ($skins->xml->xpath('/rss/skins/hw:skin') as $item) { $name = (string) $item->attributes()->name; $skin = HW_WXR_Parser_SimpleXML::parse_skin_data($item); //parse hw skin data if (!isset($skin['apply_plugin'])) { $skin['apply_plugin'] = $this->get_module()->option('module_name'); } //fix apply_module to current $this->skins->add_skin($name, $skin); } } } }
/** * get non-action wxr data * @param string $item */ public static function get_theme_data($item = '') { $wxr_files = array(); if (file_exists(get_stylesheet_directory() . '/config/skins.xml')) { $wxr_files['skins'] = HW_WXR_Parser_SimpleXML::read_simplexml_object(get_stylesheet_directory() . '/config/skins.xml'); } if (file_exists(get_stylesheet_directory() . '/config/widgets.xml')) { $wxr_files['widgets'] = HW_WXR_Parser_SimpleXML::read_simplexml_object(get_stylesheet_directory() . '/config/widgets.xml'); } return $item ? isset($wxr_files[$item]) ? $wxr_files[$item] : null : $wxr_files; }
/** * main class construct * @param $file */ function __construct($file = '') { if ($file && is_string($file)) { $this->xml = HW_SimpleXMLElement::parser_xml($file); } elseif (is_object($file) && $file instanceof HW_SimpleXMLElement) { $this->xml = $file; } //get doc namespaces if (!empty($this->xml)) { $this->namespaces = $this->xml->getDocNamespaces(); } if (!isset($this->namespaces['wp'])) { $this->namespaces['wp'] = 'http://wordpress.org/export/1.1/'; } if (!isset($this->namespaces['excerpt'])) { $this->namespaces['excerpt'] = 'http://wordpress.org/export/1.1/excerpt/'; } //get config data $parser = new HW_WXR_Parser_SimpleXML(); $this->config_data = $parser->parse($this->xml); }
/** * fetch wp plugins package * @return mixed */ public static function fetch_plugins_package() { include_once HW_HOANGWEB_PLUGINS . '/hw-importer/includes/parsers.php'; $xml = HW_WXR_Parser_SimpleXML::read_simplexml_object(HW_HOANGWEB_PLUGINS . '/plugins-package.xml'); return $xml; }
/** * parse theme config using wrx format * @param $file */ public function parse($file) { $site = $menus = $assets = $libs = $modules = $plugins = $positions = $configuration = array(); $xml = HW_WXR_Parser_SimpleXML::read_simplexml_object($file); $namespaces = $xml->namespaces; $xml = $xml->xml; $xml_parser = new HW_WXR_Parser(); //::get_instance(); $simplexml_parser = $xml_parser->simplexml_parser; //site meta if (isset($xml->site)) { $hw = $xml->site->children($namespaces['hw']); if (isset($hw->name)) { $site['name'] = (string) $hw->name; } if (isset($hw->description)) { $site['description'] = (string) $hw->description; } if (isset($hw->logo)) { $site['logo'] = (string) $hw->logo; } if (isset($hw->banner)) { $site['banner'] = (string) $hw->banner; } if (isset($hw->phone)) { $site['phone'] = (string) $hw->phone; } if (isset($hw->email)) { $site['admin_email'] = (string) $hw->email; } if (isset($hw->address)) { $site['address'] = (string) $hw->address; } if (isset($hw->testimonials)) { $site['testimonials'] = (string) $hw->testimonials; } if (!empty($hw->footer_text)) { $site['footer'] = (string) $hw->footer_text; } } //configuration if (isset($xml->configuration)) { $hw = $xml->configuration->children($namespaces['hw']); $configuration['sample_data'] = (string) $hw->sample_data; $media = $hw->media->children('hw'); $configuration['media'] = array(); foreach ($media as $image) { foreach ($image as $size) { $atts = $size->attributes(); $configuration['media'][$size->getName()] = array('width' => (string) $atts->width, 'height' => (string) $atts->height, 'crop' => (string) $atts->crop); } } /*if(!empty($media->thumbnail)) $configuration['media']['thumbnail'] = (string) $media->thumbnail; if(!empty($media->medium)) $configuration['media']['medium'] = (string) $media->medium; if(!empty($media->large)) $configuration['media']['large'] = (string) $media->large;*/ $configuration['locale'] = (string) $hw->locale; } //fetch menus foreach ($xml->xpath('/theme/menus/hw:menu') as $menu) { $atts = $menu->attribute(); $menus[(string) $atts['slug']] = (string) $menu; } //fetch sidebars $sidebars = array(); #$simplexml_parser->grab_sidebars($xml->xpath('/theme')[0], $namespaces); foreach ($xml->xpath('/theme/sidebars/hw:sidebar') as $sidebar_widgets) { $atts = $sidebar_widgets->attributes(); $skin = (string) $atts['skin']; //sidebar skin $sidebar_name = (string) $atts['name']; if (!isset($sidebars[(string) $atts['name']])) { $sidebars[$sidebar_name] = array('skin' => $skin, 'widgets' => array(), 'params' => array()); } //get widgets in sidebar $hw = $sidebar_widgets->children($namespaces['hw']); foreach ($hw->widget as $widget) { $name = (string) $widget->attributes()->name; $sidebars[$sidebar_name]['widgets'][] = $name; } //sidebar params $sidebars[$sidebar_name]['params'] = array('name' => $sidebar_name); if (!empty($hw->params)) { $sidebars[$sidebar_name]['params'] = array_merge($sidebars[$sidebar_name]['params'], $simplexml_parser->recursive_option_data($hw->params[0]->children())->option); } } //fetch assets foreach ($xml->xpath('/theme/assets') as $items) { $atts = $items->attributes(); $page = isset($atts['page']) ? (string) $atts['page'] : '__all__'; //group by page if (!isset($assets[$page])) { $assets[$page] = array(); } foreach ($items as $item) { $atts = $item->attributes(); $file = array(); $file['type'] = !empty($atts['type']) ? (string) $atts['type'] : ''; //dependencies if (!empty($atts['depends'])) { $file['depends'] = explode(',', (string) $atts['depends']); } else { $file['depends'] = false; } //handle if (!empty($atts['handle'])) { $file['handle'] = (string) $atts['handle']; } if (!empty($atts['ver'])) { $file['ver'] = (string) $atts['ver']; } //version $file['name'] = (string) $item; $assets[$page][] = $file; } } //fetch libs foreach ($xml->xpath('/theme/libs/lib') as $item) { $atts = $item->attributes(); $lib = isset($atts['name']) ? (string) $atts['name'] : (string) $item; $libs[] = $lib; } //fetch modules $modules_list = $xml->xpath('/theme/modules'); if ($modules_list) { $only_list = (string) $modules_list[0]->attributes()->only_list; } else { $only_list = 0; } if (!$only_list) { $installed_modules = HW_TGM_Module_Activation::get_register_modules(array('active' => 1, 'core' => 1), 'or'); #HW_Logger::log_file($installed_modules); //get installed modules, refer to core modules foreach ($installed_modules as $slug => $module) { $modules[$slug] = array('name' => $slug, 'status' => 1, 'core' => !empty($module['force_activation']), 'active' => 1); } } foreach ($xml->xpath('/theme/modules/module') as $item) { $atts = $item->attributes(); $module['name'] = isset($atts['name']) ? (string) $atts['name'] : (string) $item; $module['status'] = isset($atts['status']) ? (string) $atts['status'] : 1; //active module as default $modules[$module['name']] = $module; } //fetch wp plugins foreach ($xml->xpath('/theme/plugins/plugin') as $item) { $atts = $item->attributes(); $plugin['name'] = isset($atts['name']) ? (string) $atts['name'] : (string) $item; $plugin['status'] = isset($atts['status']) ? (string) $atts['status'] : 1; //active plugin as default $plugins[$plugin['name']] = $plugin; } //positions foreach ($xml->xpath('/theme/positions/position') as $item) { $atts = $item->attributes(); //valid hook name $name = isset($atts['name']) ? (string) $atts['name'] : (string) $item; $name = strtolower(HW_Validation::valid_objname($name)); //display text $text = (string) $item; if (empty($text) && $name) { $text = $name; } $positions[] = array('name' => $name, 'text' => $text); } unset($xml); return array('assets' => $assets, 'libs' => $libs, 'modules' => $modules, 'plugins' => $plugins, 'positions' => $positions, 'sidebars' => $sidebars, 'menus' => $menus, 'site' => $site, 'configuration' => $configuration); }
/** * start configure data for the module * @param $file */ public function setup_demo($file) { if ($this->get_config()) { $xml = HW_WXR_Parser_SimpleXML::read_simplexml_object($file); if (!$this->get_module_exporter()) { return; } //update data on exporter $this->get_module_exporter()->xml_data = $xml->xml; $this->get_module_exporter()->namespaces = $xml->namespaces; $this->get_config()->setup_user_data($xml->xml, $xml->namespaces); } }