Exemplo n.º 1
0
function getdotstring($string, $vartype, $allownull = false, $varscope = array(), $sqlmode = 1, $unique = true)
{
    if (is_array($string)) {
        $stringarr = $string;
    } else {
        if (substr($string, 0, 1) == '$') {
            return $string;
        }
        $string = str_replace(',', ',', $string);
        $string = str_replace(' ', ',', $string);
        $stringarr = explode(',', $string);
    }
    $newarr = array();
    foreach ($stringarr as $value) {
        $value = trim($value);
        if ($vartype == 'int') {
            $value = intval($value);
        }
        if (!empty($varscope)) {
            if (in_array($value, $varscope)) {
                $newarr[] = $value;
            }
        } else {
            if ($allownull) {
                $newarr[] = $value;
            } else {
                if (!empty($value)) {
                    $newarr[] = $value;
                }
            }
        }
    }
    if ($unique) {
        $newarr = sarray_unique($newarr);
    }
    if ($vartype == 'int') {
        $string = implode(',', $newarr);
    } else {
        if ($sqlmode) {
            $string = '\'' . implode('\',\'', $newarr) . '\'';
        } else {
            $string = implode(',', $newarr);
        }
    }
    return $string;
}
Exemplo n.º 2
0
function get_content_page($url, $content, $rules)
{
    $base_url = get_base_url($content);
    $base_url = $base_url ? $base_url : $url;
    if ($rules['content_page_get_type'] == 1) {
        $html = get_htmldom_obj($content);
        if (!$html) {
            return false;
        }
        foreach ($html->find($rules['content_page_rules']) as $v) {
            $a_url = convert_url($v->attr['href']);
            if (!$a_url || $a_url == '#' || $v->innertext == milu_lang('up_page')) {
                continue;
            }
            $item[] = _expandlinks($a_url, $base_url);
            $re_arr = sarray_unique($item);
        }
        $html->clear();
        unset($html);
    } else {
        $re_arr = string_page_link($content, $rules['content_page_rules'], $url);
        //字符串
    }
    return $re_arr;
}
Exemplo n.º 3
0
function pregmessagearray($messagetext, $rulearr, $mnum, $getpage = 0, $getsubject = 0, $msgurl = '')
{
    global $_SGLOBAL, $alang;
    if ($getsubject) {
        $mnum = $mnum + 1;
    }
    $msgarr = array('subject' => '', 'dateline' => '', 'itemfrom' => '', 'author' => '', 'message' => '', 'importcatid' => $rulearr['importcatid'], 'importtype' => $rulearr['importtype'], 'pagearr' => array(), 'picarr' => array(), 'flasharr' => array(), 'patharr' => array());
    $nextprogress = true;
    #Modify  by jiangyanfeng
    $msgarr['newsfromurl'] = $msgurl;
    #End
    //文章标题识别
    if ($getsubject && $messagetext && !empty($rulearr['subjectrule'])) {
        $subjectarr = pregmessage($messagetext, $rulearr['subjectrule'], 'subject');
        $msgarr['subject'] = $subjectarr[0];
    }
    //文章标题过滤
    if ($getsubject && $msgarr['subject'] && !empty($rulearr['subjectfilter'])) {
        $rule = convertrule($rulearr['subjectfilter']);
        $msgarr['subject'] = preg_replace("/({$rule})/s", '', $msgarr['subject']);
    }
    //文章标题文字替换
    if ($getsubject && $msgarr['subject'] && !empty($rulearr['subjectreplace'])) {
        $rulearr['subjectreplace'] = explode("\n", $rulearr['subjectreplace']);
        $rulearr['subjectreplaceto'] = explode("\n", $rulearr['subjectreplaceto']);
        $msgarr['subject'] = stringreplace($rulearr['subjectreplace'], $rulearr['subjectreplaceto'], $msgarr['subject']);
    }
    //文章标题包含关键字
    if ($getsubject && $msgarr['subject'] && !empty($rulearr['subjectkey'])) {
        $rule = convertrule($rulearr['subjectkey']);
        $newsubject = preg_replace("/({$rule})/s", '', $msgarr['subject']);
        if ($newsubject == $msgarr['subject']) {
            showprogress('[' . $mnum . '] ' . $msgarr['subject'] . ' ' . $alang['robot_robot_subject_no_key']);
            $nextprogress = false;
            $msgarr['subject'] = '';
        }
    }
    //文章标题关键字剔除过滤
    if ($getsubject && $msgarr['subject'] && !empty($rulearr['subjectkeycancel'])) {
        $rule = convertrule($rulearr['subjectkeycancel']);
        $newsubject = preg_replace("/({$rule})/s", '', $msgarr['subject']);
        if ($newsubject != $msgarr['subject']) {
            showprogress('[' . $mnum . '] ' . $msgarr['subject'] . ' ' . $alang['robot_robot_subject_key_cancel']);
            $nextprogress = false;
            $msgarr['subject'] = '';
        }
    }
    $msgarr['subject'] = trim($msgarr['subject']);
    if ($getsubject && $nextprogress && empty($msgarr['subject'])) {
        showprogress('[' . $mnum . '] ' . $alang['robot_robot_subject_null']);
        $nextprogress = false;
    }
    if ($getsubject && $nextprogress && !$rulearr['subjectallowrepeat']) {
        $query = $_SGLOBAL['db']->query('SELECT COUNT(*) FROM ' . tname('robotlog') . ' WHERE hash=\'' . md5($msgarr['subject']) . '\'');
        if ($_SGLOBAL['db']->result($query, 0)) {
            showprogress('[' . $mnum . '] ' . $msgarr['subject'] . ' ' . $alang['robot_robot_subject_exists']);
            $nextprogress = false;
        }
    }
    if ($nextprogress && $getsubject && $msgarr['subject']) {
        showprogress('[' . $mnum . '] [<b>' . $msgarr['subject'] . '</b>] ' . $alang['robot_robot_deal'] . '<b>' . '<b>' . $alang['robot_robot_subject'] . '</b>' . $alang['robot_robot_success']);
    }
    if (!$nextprogress) {
        $msgarr['subject'] = '';
    }
    //DATELINE
    if (empty($rulearr['defaultdateline'])) {
        $msgarr['dateline'] = $_SGLOBAL['timestamp'];
    } else {
        $msgarr['dateline'] = intval($rulearr['defaultdateline']);
    }
    //信息来源识别
    if ($getsubject && $nextprogress && !empty($rulearr['fromrule'])) {
        if (preg_match("/\\[from\\]/", $rulearr['fromrule'])) {
            $fromarr = pregmessage($messagetext, $rulearr['fromrule'], 'from');
        } else {
            $fromarr[0] = $rulearr['fromrule'];
        }
        $msgarr['itemfrom'] = $fromarr[0];
        if ($msgarr['itemfrom']) {
            showprogress('[' . $mnum . '] [<b>' . $msgarr['itemfrom'] . '</b>] ' . $alang['robot_robot_deal'] . '<b>' . $alang['robot_robot_itemfrom'] . '</b>' . $alang['robot_robot_success']);
        } else {
            showprogress('[' . $mnum . '] ' . $alang['robot_robot_deal'] . '<b>' . '<b>' . $alang['robot_robot_itemfrom'] . '</b>' . $alang['robot_robot_failed']);
        }
    }
    //作者识别
    if ($getsubject && $nextprogress && !empty($rulearr['authorrule'])) {
        if (preg_match("/\\[author\\]/", $rulearr['authorrule'])) {
            $authorarr = pregmessage($messagetext, $rulearr['authorrule'], 'author');
        } else {
            $rulearr['authorrule'] = explode('|', $rulearr['authorrule']);
            $rulearr['authorrule'] = strim($rulearr['authorrule']);
            if (is_array($rulearr['authorrule'])) {
                foreach ($rulearr['authorrule'] as $tmpkey => $tmpvalue) {
                    if (empty($tmpvalue)) {
                        unset($rulearr['authorrule'][$tmpkey]);
                    }
                }
                $tmprand = 0;
                $tmprand = rand(0, count($rulearr['authorrule']) - 1);
                $authorarr[0] = $rulearr['authorrule'][$tmprand];
            } else {
                $authorarr[0] = $rulearr['authorrule'];
            }
        }
        $msgarr['author'] = $authorarr[0];
        if ($msgarr['author']) {
            showprogress('[' . $mnum . '] [<b>' . $msgarr['author'] . '</b>] ' . $alang['robot_robot_deal'] . '<b>' . $alang['robot_robot_author'] . '</b>' . $alang['robot_robot_success']);
        } else {
            showprogress('[' . $mnum . '] ' . $alang['robot_robot_deal'] . '<b>' . $alang['robot_robot_author'] . '</b>' . $alang['robot_robot_failed']);
        }
    }
    //发布者UID
    if ($getsubject && $nextprogress && !empty($rulearr['uidrule'])) {
        $rulearr['uidrule'] = explode('|', $rulearr['uidrule']);
        $rulearr['uidrule'] = strim($rulearr['uidrule']);
        if (is_array($rulearr['uidrule'])) {
            foreach ($rulearr['uidrule'] as $tmpkey => $tmpvalue) {
                if (empty($tmpvalue)) {
                    unset($rulearr['uidrule'][$tmpkey]);
                }
            }
            $tmprand = 0;
            $tmprand = rand(0, count($rulearr['uidrule']) - 1);
            $msgarr['uid'] = intval($rulearr['uidrule'][$tmprand]);
        } else {
            $msgarr['uid'] = intval($rulearr['uidrule']);
        }
    }
    //文章内容识别
    if ($nextprogress && !empty($rulearr['messagerule'])) {
        if (empty($rulearr['messagerule'])) {
            $rsmessagearr = getrobotmessage($messagetext, $msgurl, 2);
            $messagearr[0] = $rsmessagearr['leachmessage'];
        } else {
            $messagearr = pregmessage($messagetext, $rulearr['messagerule'], 'message');
        }
        $msgarr['message'] = $messagearr[0];
    }
    //文章内容过滤
    if ($nextprogress && $msgarr['message'] && !empty($rulearr['messagefilter'])) {
        $rule = convertrule($rulearr['messagefilter']);
        $msgarr['message'] = preg_replace("/({$rule})/s", '', $msgarr['message']);
    }
    //文章内容文字替换
    if ($nextprogress && $msgarr['message'] && !empty($rulearr['messagereplace'])) {
        $rulearr['messagereplace'] = explode("\n", $rulearr['messagereplace']);
        $rulearr['messagereplaceto'] = explode("\n", $rulearr['messagereplaceto']);
        $msgarr['message'] = stringreplace($rulearr['messagereplace'], $rulearr['messagereplaceto'], $msgarr['message']);
    }
    //文章内容包含关键字
    if ($nextprogress && $msgarr['message'] && !empty($rulearr['messagekey'])) {
        $rule = convertrule($rulearr['messagekey']);
        $newmessage = preg_replace("/({$rule})/s", '', $msgarr['message']);
        if ($newmessage == $msgarr['message']) {
            showprogress('[' . $mnum . '] ' . $msgarr['subject'] . ' ' . $alang['robot_robot_message_no_key']);
            $nextprogress = false;
            $msgarr['message'] = '';
        }
    }
    //文章内容关键字剔除过滤
    if ($nextprogress && $msgarr['message'] && !empty($rulearr['messagekeycancel'])) {
        $rule = convertrule($rulearr['messagekeycancel']);
        $newmessage = preg_replace("/({$rule})/s", '', $msgarr['message']);
        if (md5($newmessage) != md5($msgarr['message'])) {
            showprogress('[' . $mnum . '] ' . $msgarr['subject'] . ' ' . $alang['robot_robot_message_key_cancel']);
            $nextprogress = false;
            $msgarr['message'] = '';
        }
    }
    //文章内容格式化
    if ($nextprogress && $msgarr['message'] && !empty($rulearr['messageformat'])) {
        $rsmessagearr = getrobotmessage($msgarr['message'], $msgurl);
        $msgarr['message'] = $rsmessagearr['leachmessage'];
    }
    if ($nextprogress) {
        if ($msgarr['message']) {
            showprogress('[' . $mnum . '] ' . $alang['robot_robot_deal'] . '<b>' . $alang['robot_robot_message'] . '</b>' . $alang['robot_robot_success']);
        } else {
            $msgarr['subject'] = '';
            $nextprogress = false;
            showprogress('[' . $mnum . '] ' . $alang['robot_robot_deal'] . '<b>' . $alang['robot_robot_message'] . '</b>' . $alang['robot_robot_failed']);
        }
    }
    //LOCAL PIC URL
    if ($nextprogress && (!empty($rulearr['picurllinkpre']) || $rulearr['savepic'])) {
        preg_match_all("/\\<img\\s+.*?src=[\\'\"]*([a-z0-9\\/\\-_+=.~!%@?#%&;:\$\\()|]+)[\\'\"\\s\\>]+/is", $msgarr['message'], $picurlarr);
        if (!empty($picurlarr[1])) {
            $msgarr['picarr'] = sarray_unique($picurlarr[1]);
        }
        if (!empty($rulearr['picurllinkpre'])) {
            foreach ($msgarr['picarr'] as $pickey => $picurl) {
                if (strpos($picurl, '://') === false) {
                    $msgarr['picarr'][$pickey] = $rulearr['picurllinkpre'] . $picurl;
                    $msgarr['message'] = str_replace($picurl, $rulearr['picurllinkpre'] . $picurl, $msgarr['message']);
                }
            }
        } else {
            $url = array();
            $posturl = parse_url($msgurl);
            foreach ($msgarr['picarr'] as $pickey => $picurl) {
                if (!empty($picurl)) {
                    $url = parse_url($picurl);
                    if (!empty($url['host'])) {
                        $msgarr['picarr'][$pickey] = $picurl;
                    } else {
                        $offset = strpos($picurl, '/');
                        if (!is_bool($offset) && $offset == 0) {
                            $msgarr['picarr'][$pickey] = $posturl['scheme'] . '://' . $posturl['host'] . $picurl;
                        } else {
                            $msgarr['picarr'][$pickey] = substr($msgurl, 0, strrpos($msgurl, '/')) . '/' . $picurl;
                        }
                    }
                    $msgarr['message'] = str_replace($picurl, $msgarr['picarr'][$pickey], $msgarr['message']);
                }
            }
        }
        if ($rulearr['savepic']) {
            $msgarr = saveurlarr($msgarr, 'picarr');
            showprogress('[' . $mnum . '] ' . $alang['robot_robot_deal'] . '<b>' . $alang['robot_robot_picarr'] . '</b>' . $alang['robot_robot_success']);
        }
    }
    //LOCAL FLASH URL
    if ($nextprogress && (!empty($rulearr['picurllinkpre']) || $rulearr['saveflash'])) {
        preg_match_all("/\\<embed\\s+.*?src=[\\'\"]*([a-z0-9\\/\\-_+=.~!%@?#%&;:\$\\()|])[\\'\"\\s\\>]+/is", $msgarr['message'], $flashurlarr);
        if (!empty($flashurlarr[1])) {
            $msgarr['flasharr'] = sarray_unique($flashurlarr[1]);
        }
        if (!empty($rulearr['picurllinkpre'])) {
            foreach ($msgarr['flasharr'] as $flashkey => $flashurl) {
                if (strpos($flashurl, '://') === false) {
                    $msgarr['flasharr'][$flashkey] = $rulearr['picurllinkpre'] . $flashurl;
                    $msgarr['message'] = str_replace($flashurl, $rulearr['picurllinkpre'] . $flashurl, $msgarr['message']);
                }
            }
        } else {
            $url = array();
            $posturl = parse_url($msgurl);
            foreach ($msgarr['flasharr'] as $flashkey => $flashurl) {
                if (!empty($flashurl)) {
                    $url = parse_url($flashurl);
                    if (!empty($url['host'])) {
                        $msgarr['flasharr'][$flashkey] = $flashurl;
                    } else {
                        $offset = strpos($flashurl, '/');
                        if (!is_bool($offset) && $offset == 0) {
                            $msgarr['flasharr'][$flashkey] = $posturl['scheme'] . '://' . $posturl['host'] . $flashurl;
                        } else {
                            $msgarr['flasharr'][$flashkey] = substr($msgurl, 0, strrpos($msgurl, '/')) . '/' . $flashurl;
                        }
                    }
                    $msgarr['message'] = str_replace($flashurl, $msgarr['flasharr'][$flashkey], $msgarr['message']);
                }
            }
        }
        if ($rulearr['saveflash']) {
            $msgarr = saveurlarr($msgarr, 'flasharr');
            showprogress('[' . $mnum . '] ' . $alang['robot_robot_deal'] . '<b>' . $alang['robot_robot_flasharr'] . '</b>' . $alang['robot_robot_success']);
        }
    }
    //PAGE URL
    if ($getpage && $nextprogress && !empty($rulearr['messagepagerule'])) {
        $messagepagearr = pregmessage($messagetext, $rulearr['messagepagerule'], 'pagearea');
        $messagepage = $messagepagearr[0];
        if ($messagepage && !empty($rulearr['messagepageurlrule'])) {
            $msgarr['pagearr'] = pregmessage($messagepage, $rulearr['messagepageurlrule'], 'page', -1);
            $msgarr['pagearr'] = sarray_unique($msgarr['pagearr']);
        }
        if ($msgarr['pagearr']) {
            if (!empty($rulearr['messagepageurllinkpre'])) {
                foreach ($msgarr['pagearr'] as $pkey => $purl) {
                    if (strpos($purl, '://') === false) {
                        $msgarr['pagearr'][$pkey] = $rulearr['messagepageurllinkpre'] . $purl;
                    }
                }
            } else {
                $url = array();
                $posturl = parse_url($msgurl);
                foreach ($msgarr['pagearr'] as $pkey => $purl) {
                    if (!empty($purl)) {
                        $url = parse_url($purl);
                        if (!empty($url['host'])) {
                            $msgarr['pagearr'][$pkey] = $purl;
                        } else {
                            $offset = strpos($purl, '/');
                            if (!is_bool($offset) && $offset == 0) {
                                $msgarr['pagearr'][$pkey] = $posturl['scheme'] . '://' . $posturl['host'] . $purl;
                            } else {
                                $msgarr['pagearr'][$pkey] = substr($msgurl, 0, strrpos($msgurl, '/')) . '/' . $purl;
                            }
                        }
                    }
                }
            }
            if (!empty($rulearr['messagepageurllinkpf'])) {
                foreach ($msgarr['pagearr'] as $pkey => $purl) {
                    if (!empty($purl)) {
                        $msgarr['pagearr'][$pkey] = $purl . $rulearr['messagepageurllinkpf'];
                    }
                }
            }
            showprogress('[' . $mnum . '] ' . $alang['robot_robot_deal'] . '<b>' . $alang['robot_robot_pagearr'] . '</b>' . $alang['robot_robot_success']);
        } else {
            showprogress('[' . $mnum . '] ' . $alang['robot_robot_deal'] . '<b>' . $alang['robot_robot_pagearr'] . '</b>' . $alang['robot_robot_failed']);
        }
    }
    return $msgarr;
}
Exemplo n.º 4
0
 $_POST['cronid'] = intval($_POST['cronid']);
 $_POST['name'] = shtmlspecialchars($_POST['name']);
 if (!is_readable(S_ROOT . './include/cron/' . $_POST['filename'])) {
     showmessage('cron_error_no_filename');
 }
 if ($_POST['weekday'] != '-1') {
     $_POST['day'] = '-1';
 }
 if (is_array($_POST['minute']) && $_POST['minute']) {
     foreach ($_POST['minute'] as $key => $var) {
         if ($var < 0 || $var > 59) {
             unset($_POST['minute'][$key]);
         }
     }
     sort($_POST['minute']);
     $_POST['minute'] = sarray_unique($_POST['minute']);
 }
 $postminute = implode("\t", $_POST['minute']);
 if ($_POST['weekday'] == -1 && $_POST['day'] == -1 && $_POST['hour'] == -1 && $postminute == '') {
     showmessage('cron_error_no_time');
 }
 $sqlarr = array('name' => $_POST['name'], 'filename' => $_POST['filename'], 'available' => $_POST['available'], 'weekday' => $_POST['weekday'], 'day' => $_POST['day'], 'hour' => $_POST['hour'], 'minute' => $postminute);
 if (empty($_POST['cronid'])) {
     //ADD
     $insertsqlarr = $sqlarr;
     $insertsqlarr['type'] = 'user';
     $insertsqlarr['nextrun'] = $_SGLOBAL['timestamp'];
     inserttable('crons', $insertsqlarr);
     //更新缓存
     updatecronscache();
     updatecroncache();
Exemplo n.º 5
0
function test_window($get_type, $url_test, $is_fiter, $rules, $replace_rules, $filter_data, $show_type, $login_cookie, $filter_html_arr)
{
    $url_test = rpc_str($url_test);
    $rules = rpc_str($rules);
    $replace_rules = rpc_str($replace_rules);
    $login_cookie = rpc_str(urlencode($login_cookie));
    foreach ($filter_data as $k => $v) {
        if ($v) {
            $filter_data[$k][1] = rpc_str($v[1]);
        }
    }
    $filter_html_arr = sarray_unique($filter_html_arr);
    //去重
    if ($show_type == 'title') {
        $show_name = milu_lang('title');
    } else {
        if ($show_type == 'body') {
            $show_name = milu_lang('body');
        } else {
            $show_name = milu_lang('reply');
        }
    }
    $contents = get_contents($url_test, array('cookie' => $login_cookie));
    $contents = dz_attach_format($url_test, $contents);
    $c_arr = format_article_imgurl($url_test, $contents);
    $contents = $c_arr['message'];
    if ($get_type == 1) {
        //dom
        if ($show_type == 'reply') {
            $result_data = dom_get_manytext($contents, $rules);
        } else {
            if ($show_type == 'title') {
                $dom_rules['title'] = $rules;
            } else {
                $dom_rules['content'] = $rules;
            }
            $re = dom_single_article($contents, $dom_rules);
            $result_data = $show_type == 'title' ? $re['title'] : $re['content'];
        }
    } else {
        if ($get_type == 2) {
            //字符串
            if ($contents != -1) {
                if ($show_type == 'reply') {
                    $rules = str_replace('[body]', '[reply]', $rules);
                    $result_data = str_get_str($contents, $rules, $show_type, -1);
                    unset($result_data[0]);
                } else {
                    $result_data = str_get_str($contents, $rules, $show_type, 1);
                }
            }
        } else {
            //智能获取
            if ($contents != -1) {
                $re = get_single_article($contents, $url_test);
                if ($show_type == 'title') {
                    $result_data = $re['title'];
                } else {
                    $result_data = $re['content'];
                }
            }
        }
    }
    if ($result_data == -1) {
        echo milu_lang('unable_pick');
        return;
    } else {
        if ($result_data == -2) {
            echo milu_lang('get_time_out');
            return;
        }
    }
    if (!$result_data) {
        echo milu_lang('no_get_data') . $show_name;
        return;
    }
    $format_args = array('is_fiter' => $is_fiter, 'show_type' => $show_type, 'result_data' => $result_data, 'replace_rules' => $replace_rules, 'filter_data' => $filter_data, 'test' => 1, 'filter_html' => $filter_html_arr);
    $result_data = filter_article($format_args);
    if ($show_type == 'reply') {
        $body = show_reply_output($result_data);
    } else {
        $body .= $result_data;
    }
    $body .= $notice;
    echo $body;
}
Exemplo n.º 6
0
 } else {
     $tbodydisplay = 'none';
     $thecfarr = array();
 }
 $tbodynum++;
 $cfhtml .= '<tbody id="cf_' . $tbodynum . '" style="display:' . $tbodydisplay . '">';
 foreach ($cfarr as $ckey => $cvalue) {
     $inputstr = '';
     if (empty($thecfarr[$ckey])) {
         $thecfarr[$ckey] = '';
     }
     $cfoptionarr = array();
     if ($cvalue['type'] == 'select' || $cvalue['type'] == 'checkbox') {
         $cfoptionstr = $cvalue['option'];
         $coarr = explode("\n", $cfoptionstr);
         $coarr = sarray_unique($coarr);
         foreach ($coarr as $covalue) {
             $covalue = trim($covalue);
             $cfoptionarr[$covalue] = $covalue;
         }
     }
     switch ($cvalue['type']) {
         case 'input':
             $inputstr = '<input name="customfieldtext[' . $cfvalue['customfieldid'] . '][' . $ckey . ']" type="text" size="30" value="' . $thecfarr[$ckey] . '" />';
             break;
         case 'textarea':
             $inputstr = '<textarea name="customfieldtext[' . $cfvalue['customfieldid'] . '][' . $ckey . ']" rows="5" cols="60">' . $thecfarr[$ckey] . '</textarea>';
             break;
         case 'select':
             $inputstr = getselectstr('customfieldtext[' . $cfvalue['customfieldid'] . '][' . $ckey . ']', $cfoptionarr, $thecfarr[$ckey]);
             break;