function getdata($style, $parameter) { $array = array(); foreach ($parameter as $key => $value) { if (is_array($value)) { $parameter[$key] = implode(',', $value); } } $parameter['clientid'] = $this->blockdata['clientid']; $parameter['op'] = 'getdata'; $parameter['charset'] = CHARSET; $parameter['version'] = $this->blockdata['version']; $xmlurl = $this->blockdata['url']; $parse = parse_url($xmlurl); if (!empty($parse['host'])) { define('IN_ADMINCP', true); require_once libfile('function/importdata'); $importtxt = @dfsockopen($xmlurl, 0, create_sign_url($parameter, $this->blockdata['key'], $this->blockdata['signtype'])); } else { $importtxt = @file_get_contents($xmlurl); } if ($importtxt) { require libfile('class/xml'); $array = xml2array($importtxt); } $idtype = 'xml_' . $this->blockdata['id']; foreach ($array['data'] as $key => $value) { $value['idtype'] = $idtype; $array['data'][$key] = $value; } if (empty($array['data'])) { $array['data'] = null; } return $array; }
function import_block($xmlurl, $clientid, $xmlkey = '', $signtype = '', $ignoreversion = 1, $update = 0) { global $_G, $importtxt; $_G['gp_importtype'] = $_G['gp_importtxt'] = ''; $xmlurl = strip_tags($xmlurl); $clientid = strip_tags($clientid); $xmlkey = strip_tags($xmlkey); $parse = parse_url($xmlurl); if (!empty($parse['host'])) { $queryarr = explode('&', $parse['query']); $para = array(); foreach ($queryarr as $value) { $k = $v = ''; list($k, $v) = explode('=', $value); if (!empty($k) && !empty($v)) { $para[$k] = $v; } } $para['clientid'] = $clientid; $para['op'] = 'getconfig'; $para['charset'] = CHARSET; $signurl = create_sign_url($para, $xmlkey, $signtype); $pos = strpos($xmlurl, '?'); $pos = $pos === false ? strlen($xmlurl) : $pos; $signurl = substr($xmlurl, 0, $pos) . '?' . $signurl; $importtxt = @dfsockopen($signurl); } else { $importtxt = @implode('', file($xmlurl)); } $blockarrays = getimportdata('Discuz! Block', 0); if (empty($blockarrays['name']) || empty($blockarrays['fields']) || empty($blockarrays['getsetting'])) { cpmsg(cplang('import_data_typeinvalid') . cplang($importtxt), '', 'error'); } if (empty($ignoreversion) && strip_tags($blockarrays['version']) != strip_tags($_G['setting']['version'])) { cpmsg(cplang('blockxml_import_version_invalid'), '', 'error', array('cur_version' => $blockarrays['version'], 'set_version' => $_G['setting']['version'])); } $data = array('name' => htmlspecialchars($blockarrays['name']), 'version' => htmlspecialchars($blockarrays['version']), 'url' => $xmlurl, 'clientid' => $clientid, 'key' => $xmlkey, 'signtype' => !empty($signtype) ? 'MD5' : '', 'data' => serialize($blockarrays)); $data = daddslashes($data); if (!$update) { DB::insert('common_block_xml', $data); } else { DB::update('common_block_xml', $data, "`id`='{$update}'"); } }