function import_diy($importfile, $primaltplname, $targettplname) { global $_G; $css = $html = ''; $arr = array(); $content = file_get_contents(realpath($importfile)); if (empty($content)) { return $arr; } require_once DISCUZ_ROOT . './source/class/class_xml.php'; $diycontent = xml2array($content); if ($diycontent) { foreach ($diycontent['layoutdata'] as $key => $value) { if (!empty($value)) { getframeblock($value); } } $newframe = array(); foreach ($_G['curtplframe'] as $value) { $newframe[] = $value['type'] . random(6); } $mapping = array(); if (!empty($diycontent['blockdata'])) { $mapping = block_import($diycontent['blockdata']); unset($diycontent['bockdata']); } $oldbids = $newbids = array(); if (!empty($mapping)) { foreach ($mapping as $obid => $nbid) { $oldbids[] = 'portal_block_' . $obid; $newbids[] = 'portal_block_' . $nbid; } } require_once DISCUZ_ROOT . './source/class/class_xml.php'; $xml = array2xml($diycontent['layoutdata'], true); $xml = str_replace($oldbids, $newbids, $xml); $xml = str_replace((array) array_keys($_G['curtplframe']), $newframe, $xml); $diycontent['layoutdata'] = xml2array($xml); $css = str_replace($oldbids, $newbids, $diycontent['spacecss']); $css = str_replace((array) array_keys($_G['curtplframe']), $newframe, $css); $arr['spacecss'] = $css; $arr['layoutdata'] = $diycontent['layoutdata']; $arr['style'] = $diycontent['style']; save_diy_data($primaltplname, $targettplname, $arr, true); } return $arr; }
function import_diy($file) { global $_G; $css = ''; $html = array(); $arr = array(); $content = file_get_contents($file); require_once libfile('class/xml'); if (empty($content)) { return $arr; } $content = preg_replace("/\\<\\!\\-\\-\\[name\\](.+?)\\[\\/name\\]\\-\\-\\>\\s+/i", '', $content); $diycontent = xml2array($content); if ($diycontent) { foreach ($diycontent['layoutdata'] as $key => $value) { if (!empty($value)) { getframeblock($value); } } $newframe = array(); foreach ($_G['curtplframe'] as $value) { $newframe[] = $value['type'] . random(6); } $mapping = array(); if (!empty($diycontent['blockdata'])) { $mapping = block_import($diycontent['blockdata']); unset($diycontent['blockdata']); } $oldbids = $newbids = array(); if (!empty($mapping)) { foreach ($mapping as $obid => $nbid) { $oldbids[] = '#portal_block_' . $obid . ' '; $newbids[] = '#portal_block_' . $nbid . ' '; $oldbids[] = '[portal_block_' . $obid . ']'; $newbids[] = '[portal_block_' . $nbid . ']'; $oldbids[] = '~portal_block_' . $obid . '"'; $newbids[] = '~portal_block_' . $nbid . '"'; } } require_once libfile('class/xml'); $xml = array2xml($diycontent['layoutdata'], true); $xml = str_replace($oldbids, $newbids, $xml); $xml = str_replace((array) array_keys($_G['curtplframe']), $newframe, $xml); $diycontent['layoutdata'] = xml2array($xml); $css = str_replace($oldbids, $newbids, $diycontent['spacecss']); $css = str_replace((array) array_keys($_G['curtplframe']), $newframe, $css); foreach ($diycontent['layoutdata'] as $key => $value) { $html[$key] = getframehtml($value); } } if (!empty($html)) { $xml = array2xml($html, true); require_once libfile('function/block'); block_get_batch(implode(',', $mapping)); foreach ($mapping as $bid) { $blocktag[] = '<!--{block/' . $bid . '}-->'; $blockcontent[] = block_fetch_content($bid); } $xml = str_replace($blocktag, $blockcontent, $xml); $html = xml2array($xml); $arr = array('html' => $html, 'css' => $css, 'mapping' => $mapping); } return $arr; }