Beispiel #1
0
function fastpick_edit()
{
    global $head_url, $header_config;
    $id = intval($_GET['id']);
    $copy = $_GET['copy'];
    if (!submitcheck('addsubmit')) {
        num_limit('strayer_fastpick', 3000, 'f_num_limit');
        $trun_info = get_trun_data();
        $info = $trun_info ? $trun_info : fastpick_info($id);
        $info['theme_url_test'] = $info['theme_url_test'] ? $info['theme_url_test'] : $info['detail_ID_test'];
        $info = pstripslashes($info);
        $info['title_filter_rules'] = dunserialize($info['title_filter_rules']);
        $info['content_filter_rules'] = dunserialize($info['content_filter_rules']);
        $info['content_filter_html'] = dunserialize($info['content_filter_html']);
        $info['header'] = pick_header_output($header_config, $head_url);
        $info['id'] = $id;
        return $info;
    } else {
        $setarr = $_GET['set'];
        $setarr['detail_ID'] = trim($setarr['detail_ID']);
        $setarr = dstripslashes($setarr);
        $setarr['title_filter_rules'] = serialize(dstripslashes($_GET['title_filter_rules']));
        $setarr['content_filter_rules'] = serialize(dstripslashes($_GET['content_filter_rules']));
        $setarr['content_filter_html'] = serialize(dstripslashes($_GET['content_filter_html']));
        if (empty($setarr['rules_name'])) {
            cpmsg_error(milu_lang('rules_no_empty'));
        }
        $setarr = paddslashes($setarr);
        if ($id && !$copy) {
            $msg = milu_lang('modify');
            DB::update('strayer_fastpick', $setarr, array('id' => $id));
        } else {
            $setarr['rules_hash'] = create_hash();
            $id = DB::insert('strayer_fastpick', $setarr, TRUE);
            $msg = milu_lang('add');
        }
        $url = PICK_GO . 'fast_pick&myac=fastpick_edit&id=' . $id;
        if (!$id) {
            cpmsg_error($msg . milu_lang('fail'));
        }
        del_search_index(1);
        cpmsg(milu_lang('rules_notice', array('msg' => $msg)), $url, 'succeed');
    }
}
Beispiel #2
0
function rules_get_article($content, $rules_info)
{
    $url = $_GET['url'];
    $rules_info = pstripslashes($rules_info);
    $rules_info['title_filter_rules'] = dstripslashes(unserialize($rules_info['title_filter_rules']));
    $rules_info['content_filter_rules'] = dstripslashes(unserialize($rules_info['content_filter_rules']));
    require_once libfile('function/home');
    //先取标题
    if ($rules_info['theme_get_type'] == 3) {
        //智能识别
        $data = get_single_article($content);
    } else {
        if ($rules_info['theme_get_type'] == 1) {
            //dom获取
            $data = dom_single_article($content, array('title' => $rules_info['theme_rules']));
        } else {
            if ($rules_info['theme_get_type'] == 2) {
                //字符串
                $re = pregmessage($content, '<title>[title]</title>', 'title', -1);
                $data['other']['old_title'] = $re[0];
                $re = pregmessage($content, $rules_info['theme_rules'], 'title', -1);
                $data['title'] = $re[0];
            }
        }
    }
    if (!trim($data['title'])) {
        return $data;
    }
    //如果标题都取不到,不必浪费时间获取内容
    $data['content'] = rules_get_contents($content, $rules_info);
    if ($rules_info['content_page_rules'] && $data['content']) {
        //分页文章
        $content_page_arr = get_content_page($url, $content, $rules_info);
        if ($content_page_arr) {
            $args = array('oldurl' => array(), 'content_arr' => array(), 'content_page_arr' => $content_page_arr, 'page_hash' => array(), 'rules' => $rules_info, 'url' => $url);
            $data['content_arr'] = page_get_content($content, $args);
            foreach ((array) $data['content_arr'] as $k => $v) {
                $content_arr[] = $v['content'];
            }
            $data['content'] = implode('', $content_arr);
        }
    }
    $data['title'] = unhtmlentities(strip_tags($data['title'], '&nbsp;'));
    $data['content'] = unhtmlentities($data['content']);
    $data['title'] = getstr(trim($data['title']), 80, 1, 1, 0, 1);
    $data['content'] = getstr($data['content'], 0, 1, 1, 0, 1);
    //print_r($data);
    //处理文章标题和内容,包括替换和过滤
    $format_args_title = array('is_fiter' => $rules_info['is_fiter_title'], 'show_type' => 'title', 'test' => 2, 'result_data' => $data['title'], 'replace_rules' => $rules_info['title_replace_rules'], 'filter_data' => $rules_info['title_filter_rules']);
    $data['title'] = filter_article($format_args_title);
    $data['content'] = dstripslashes($data['content']);
    $format_args_content = array('is_fiter' => $rules_info['is_fiter_content'], 'show_type' => 'title', 'test' => 2, 'filter_html' => dunserialize($rules_info['content_filter_html']), 'result_data' => $data['content'], 'replace_rules' => $rules_info['content_replace_rules'], 'filter_data' => $rules_info['content_filter_rules']);
    $data['content'] = filter_article($format_args_content);
    //$data['content'] = dz_attach_format($url, $data['content']);
    $format_arr = format_article_imgurl($url, $data['content']);
    $data['content'] = $format_arr['message'];
    //$data['content'] = media_htmlbbcode($data['content'], $url);
    unset($data['other']);
    return $data;
}
Beispiel #3
0
function member_edit()
{
    global $head_url, $header_config;
    if (!submitcheck('editsubmit')) {
        $uid = intval($_GET['uid']);
        $info = member_info($uid);
        $info = pstripslashes($info);
        $info = dhtmlspecialchars($info);
        $yearselect = $monthselect = $dayselect = "<option value=\"\">" . cplang('nolimit') . "</option>\n";
        $yy = dgmdate(TIMESTAMP, 'Y');
        for ($y = $yy; $y >= $yy - 100; $y--) {
            $y = sprintf("%04d", $y);
            $yearselect .= "<option value=\"{$y}\" " . ($info['birthyear'] == $y ? 'selected' : '') . ">{$y}</option>\n";
        }
        $info['yearselect'] = $yearselect;
        for ($m = 1; $m <= 12; $m++) {
            $m = sprintf("%02d", $m);
            $monthselect .= "<option value=\"{$m}\" " . ($info['birthmonth'] == $m ? 'selected' : '') . ">{$m}</option>\n";
        }
        $info['monthselect'] = $monthselect;
        for ($d = 1; $d <= 31; $d++) {
            $d = sprintf("%02d", $d);
            $dayselect .= "<option value=\"{$d}\" " . ($info['birthday'] == $d ? 'selected' : '') . ">{$d}</option>\n";
        }
        $info['dayselect'] = $dayselect;
        $info['bloodtype_select'] = select_output(array('A', 'B', 'AB', milu_lang('other')), milu_lang('other'), 'set[bloodtype]', $info['bloodtype']);
        $info['education_select'] = select_output(array(milu_lang('boshi'), milu_lang('shuoshi'), milu_lang('benke'), milu_lang('zuanke'), milu_lang('zhongxue'), milu_lang('xiaoxue'), milu_lang('other')), milu_lang('other'), 'set[education]', $info['education']);
        $info['regdate'] = $info['regdate'] ? dgmdate($info['regdate'], 'Y-m-d H:i') : '';
        $info['lastvisit'] = $info['lastactivity'] ? dgmdate($info['lastvisit'], 'Y-m-d H:i') : '';
        $info['lastactivity'] = $info['lastactivity'] ? dgmdate($info['lastactivity'], 'Y-m-d H:i') : '';
        $info['lastpost'] = $info['lastpost'] ? dgmdate($info['lastpost'], 'Y-m-d H:i') : '';
        $info['header'] = pick_header_output($header_config, $head_url, array('current' => 'member_list'));
        return $info;
    } else {
        $uid = intval($_GET['uid']);
        if (!$uid) {
            cpmsg_error(milu_lang('err'));
        }
        $setarr = paddslashes($_GET['set']);
        DB::update('strayer_member', $setarr, array('uid' => $uid));
        cpmsg(milu_lang('op_success'), PICK_GO . "member&myac=member_edit&uid=" . $uid, 'succeed');
    }
}
 function evo_set($info)
 {
     global $_G;
     if (!$info) {
         return;
     }
     if (strlen($info['text']['html']) < 200 || strlen($info['title']['html']) < 10) {
         return;
     }
     //标题和内容太短都不行
     $link_count = own_link_count($info['text']['html'], $this->url);
     if ($link_count > 10) {
         return FALSE;
     }
     //有10个指向自己的链接,就不行
     $milu_set = pick_common_get();
     if ($milu_set['fp_open_evo'] != 1) {
         return FALSE;
     }
     $text_info = $this->dom_info_arr[$info['text']['key']];
     $title_info = $this->dom_info_arr[$info['title']['key']];
     $text_info['html'] = $info['text']['html'];
     $title_info['html'] = $info['title']['html'];
     $info['title_split_arr'] = $this->get_split_arr($title_info);
     $info['text_split_arr'] = $split_arr = $this->get_split_arr($text_info);
     unset($text_info['outertext'], $text_info['parent']['outertext'], $title_info['outertext'], $title_info['parent']['outertext'], $text_info['html'], $title_info['html']);
     if (strlen($split_arr[0]) < 14) {
         return FALSE;
     }
     pload('F:copyright');
     $host_info = GetHostInfo($this->url);
     $domain = $host_info['host'];
     $domain_hash = md5($domain);
     if (preg_match('/\\d+/', $split_arr[0])) {
         $s_arr = preg_split("/[\\d]+/", $split_arr[0]);
         $split_arr[0] = $s_arr[0];
         foreach ((array) $s_arr as $k => $v) {
             if (strlen($v) > strlen($split_arr[0])) {
                 $split_arr[0] = $v;
             }
         }
     }
     if (!$title_info) {
         return FALSE;
     }
     $result_info['evo_title_info'] = $title_info;
     $setarr = array('content_get_type' => 0, 'detail_ID' => $split_arr[0], 'detail_ID_hash' => md5($split_arr[0]), 'detail_ID_test' => $this->url, 'content_rules' => '', 'evo_text_info' => serialize($text_info), 'evo_title_info' => serialize($title_info), 'domain_hash' => $domain_hash, 'domain' => $domain, 'status' => 0, 'dateline' => $_G['timestamp']);
     $setarr = paddslashes($setarr);
     $base_sql = "SELECT * FROM " . DB::table('strayer_evo') . " WHERE domain_hash='{$domain_hash}' AND detail_ID_hash='" . $setarr['detail_ID_hash'] . "' AND status=0";
     $data_info = DB::fetch_first($base_sql . " AND detail_ID_test!='{$this->url}'");
     $data_info = pstripslashes($data_info);
     if (!$data_info) {
         //还没有资料
         if (!($check = DB::result(DB::query("SELECT COUNT(*) FROM " . DB::table('strayer_evo') . " WHERE domain_hash='{$domain_hash}' AND detail_ID_hash='" . $setarr['detail_ID_hash'] . "' AND status=0 AND detail_ID_test='{$this->url}'"), 0))) {
             DB::insert('strayer_evo', $setarr, TRUE);
         }
         $result_info['status'] = 'no';
         return $result_info;
     } else {
         //有了资料
         $title_rules = $this->get_rules($info, $title_info, $data_info, 'title');
         $text_rules = $this->get_rules($info, $text_info, $data_info, 'text');
         //删除之前的一些记录,防止没有索引的情况下重复生成规则
         $check_info = DB::fetch_first("SELECT * FROM " . DB::table('strayer_evo') . " WHERE domain_hash='{$domain_hash}' AND detail_ID_hash='" . $setarr['detail_ID_hash'] . "' AND status=1");
         DB::query('DELETE FROM ' . DB::table('strayer_evo') . " WHERE id='{$check_info['id']}'");
         DB::query('DELETE FROM ' . DB::table('strayer_searchindex') . " WHERE id='{$check_info['id']}' AND type='34'");
         if ($text_rules) {
             $setarr = array('content_get_type' => $text_rules['get_type'], 'content_rules' => $text_rules['rules'], 'theme_get_type' => $title_rules['get_type'], 'theme_rules' => $title_rules['rules'], 'status' => 1);
             DB::update("strayer_evo", $setarr, array("id" => $data_info['id']));
             $pash_hash = get_path_hash($this->url);
             add_search_index($domain_hash, $path_hash, 34, $data_info['id']);
             //添加索引 4是本地缓存
             $pick_set = get_pick_set();
             if ($pick_set['open_cloud_pick'] == 1) {
                 //开启云采集,将规则上传到服务端
                 $rpcClient = rpcClient();
                 unset($setarr['status']);
                 $data_info['content_get_type'] = $setarr['content_get_type'];
                 $data_info['content_rules'] = $setarr['content_rules'];
                 $data_info['theme_get_type'] = $setarr['theme_get_type'];
                 $data_info['theme_rules'] = $setarr['theme_rules'];
                 $client_info = get_client_info();
                 $re = $rpcClient->upload_evo_data($data_info, $client_info);
             }
             del_search_index(3);
             $result_info['status'] = 'ok';
             return $result_info;
         }
     }
 }
Beispiel #5
0
 function _ini_config($pid = 0, $is_cron = 0)
 {
     global $_G;
     $this->error = '';
     if ($pid == 0 && $is_cron > 0) {
         $this->error = 1;
         return;
     }
     $this->pid = $pid > 0 ? intval($pid) : intval($_GET['pid']);
     $this->pick_cache_data = load_cache('pick' . $this->pid);
     $this->i = $this->pick_cache_data['i'] ? $this->pick_cache_data['i'] : 1;
     $this->v_i = $this->pick_cache_data['v_i'] ? $this->pick_cache_data['v_i'] : 0;
     $this->a = $this->pick_cache_data['a'] ? $this->pick_cache_data['a'] : 0;
     $this->v_a = $this->pick_cache_data['v_a'] ? $this->pick_cache_data['v_a'] : 0;
     $this->all_get_time = $this->pick_cache_data['all_get_time'] ? $this->pick_cache_data['all_get_time'] : 0;
     $this->temp_arr['have_reply'] = 0;
     $this->plugin_set = get_pick_set();
     if ($is_cron > 0 && $this->plugin_set['is_log_cron'] > 0) {
         $is_log = 1;
     }
     $this->msg_args = array('is_cron' => $is_cron, 'pid' => $this->pid, 'is_log' => $is_log);
     if ($this->i == 1) {
         show_pick_info(milu_lang('pick_start'), '', $this->msg_args);
     }
     $p_arr = get_pick_info($this->pid);
     $p_arr = pstripslashes($p_arr);
     //if(!VIP) unset($p_arr['reply_rules'],$p_arr['reply_is_extend'], $p_arr['content_page_rules']);
     if ($p_arr['rules_type'] == 3) {
         $p_arr['url_range_type'] = '';
     }
     //新增
     $this->pick_set = pick_common_get();
     //插件设置
     $this->pick_config = $_G['cache']['evn_milu_pick'];
     $p_arr['rules_var'] = dstripslashes(unserialize($p_arr['rules_var']));
     $p_arr['many_page_list'] = dstripslashes(unserialize($p_arr['many_page_list']));
     $p_arr['title_filter_rules'] = dstripslashes(unserialize($p_arr['title_filter_rules']));
     $p_arr['content_filter_rules'] = dstripslashes(unserialize($p_arr['content_filter_rules']));
     $p_arr['reply_filter_rules'] = dstripslashes(unserialize($p_arr['reply_filter_rules']));
     $p_arr['content_filter_html'] = dstripslashes(unserialize($p_arr['content_filter_html']));
     $p_arr['reply_filter_html'] = dstripslashes(unserialize($p_arr['reply_filter_html']));
     $p_arr['public_class'] = dstripslashes(unserialize($p_arr['public_class']));
     //发布分类
     //if(!VIP) $p_arr['is_auto_public'] = 0;
     if ($p_arr['is_login'] == 2) {
         $p_arr['login_cookie'] = '';
     }
     if (!$p_arr['reply_max_num']) {
         $p_arr['reply_max_num'] = 200000;
     }
     //如果没有设置回复,这个就是最大数目了
     if ($p_arr['reply_is_extend']) {
         //继承内容规则
         $p_arr['reply_get_type'] = $p_arr['content_get_type'];
         $p_arr['reply_rules'] = $p_arr['content_rules'];
         if ($p_arr['is_fiter_content'] == 1) {
             //内容是过滤的
             if ($p_arr['is_fiter_reply'] == 1) {
                 //回复是过滤的
                 $p_arr['reply_replace_rules'] = array_merge((array) $p_arr['reply_replace_rules'], (array) $p_arr['content_replace_rules']);
                 $p_arr['reply_filter_rules'] = array_merge((array) $p_arr['content_filter_rules'], (array) $p_arr['reply_filter_rules']);
                 $p_arr['reply_filter_html'] = array_merge((array) $p_arr['content_filter_html'], (array) $p_arr['reply_filter_html']);
             } else {
                 //内容过滤,回复不过滤
                 $p_arr['reply_replace_rules'] = $p_arr['content_replace_rules'];
                 $p_arr['reply_filter_rules'] = $p_arr['content_filter_rules'];
                 $p_arr['reply_filter_html'] = $p_arr['content_filter_html'];
                 $p_arr['is_fiter_reply'] = 1;
             }
         }
     }
     $p_arr['stop_time'] = explode(',', $p_arr['stop_time']);
     $p_arr['stop_time'] = array_map('intval', $p_arr['stop_time']);
     $this->p_arr = $p_arr;
     $rules_hash = $this->p_arr['rules_hash'];
     if ($this->p_arr['is_auto_public'] == 1 && !$this->p_arr['public_class'][0]) {
         //既设置了自动发布,又没有设置发布栏目
         $this->error = 1;
         show_pick_info(milu_lang('no_set_public_class'), 'exit', $this->msg_args);
         return;
     }
     if ($this->p_arr['is_auto_public'] == 1 && $this->p_arr['is_word_replace'] == 1) {
         //即自动发布,又设置了同义词替换
         $this->words = get_replace_words();
     }
     pload('F:rules');
     if ($rules_hash) {
         $r_arr = get_rules_info($rules_hash);
     }
     $r_arr = pstripslashes($r_arr);
     $r_arr['url_var'] = dstripslashes(unserialize($r_arr['url_var']));
     $this->r_arr = $r_arr;
     $this->rid = $r_arr['rid'];
     $this->now_level = $this->pick_cache_data['now_level'];
     $this->max_level = $this->pick_cache_data['max_level'];
     if (!$this->pick_cache_data) {
         update_times($this->pid);
     }
     if (!$this->pick_cache_data['start_time']) {
         $this->pick_cache_data['start_time'] = TIMESTAMP;
     }
     $this->cache_time = PICK_ENABLE_CACHE ? 3600 * 24 : -1;
     //缓存
 }