Example #1
2
 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}'");
    }
}