function.included.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. <?php
  2. if(!defined('IN_DISCUZ')) {
  3. exit('Access Denied');
  4. }
  5. //google_query_included('d');
  6. //百度收录查询
  7. function baidu_query_included($article_url){
  8. global $_G;
  9. $url = 'http://www.baidu.com/s?wd='.urlencode($article_url);
  10. $content = st_get_contents($url);
  11. preg_match("/<span class=\"g\">(.*)<\/span>/", $content, $temp);
  12. preg_match('/<\/b>&nbsp;(.*)&nbsp;/', $temp[1], $screenshot);
  13. $included_str = $screenshot[1];
  14. if(!$included_str) return FALSE;
  15. $dateline = included_time_format($included_str);
  16. return $dateline;
  17. }
  18. //谷歌收录查询
  19. function google_query_included($article_url){
  20. global $_G;
  21. $url = 'http://www.google.com.hk/search?q='.urlencode($article_url);
  22. $article_url = urlencode($article_url);
  23. $url = "http://www.google.com.hk/search?source=hp&q=$article_url&fp=f22d456bb24e9df3";
  24. $content = st_get_contents($url, array('referer' => $url, 'cache' => -1));
  25. $content = dstripslashes($content);
  26. if(strexists($content, '<form action="Captcha" method="get">')) {
  27. cpmsg_error(stlang('google_limit'));
  28. }
  29. $cut_temp_arr = st_str_cut($content, 'classx3dx22f slpx22x3e', 'x3c/divx3ex3cspan classx3d');//论坛
  30. $temp_arr[1] = $cut_temp_arr[0];
  31. if($temp_arr[1]){
  32. $dateline_str = $temp_arr[1];
  33. $dateline_arr = explode('-', $dateline_str);
  34. $dateline_str = trim($dateline_arr[0]);
  35. }else{
  36. $temp_arr = array();
  37. $cut_temp_arr = st_str_cut($content, 'x3cspan classx3dx22fx22x3e', '- x3c/spanx3e');//非论坛
  38. $temp_arr[1] = $cut_temp_arr[0];
  39. if($temp_arr[1]){
  40. $dateline_str = $temp_arr[1];
  41. }
  42. }
  43. $dateline = included_time_format($dateline_str);
  44. return $dateline;
  45. }
  46. function article_ping($article_url, $type = 'baidu'){
  47. global $_G;
  48. $ping_func = $type.'_ping';
  49. $result = $ping_func($article_url, $_G['sitename'], $_G['siteurl'], $rss_url);
  50. return $result;
  51. }
  52. function baidu_ping($article_url, $sitename, $siteurl, $rssurl = ''){
  53. $ping_rpcurl = 'http://ping.baidu.com/ping/RPC2';;
  54. $xml = "
  55. <?xml version=\"1.0\" encoding=\"UTF-8\"?>
  56. <methodCall>
  57. <methodName>weblogUpdates.extendedPing</methodName>
  58. <params>
  59. <param><value><string>$sitename</string></value></param>
  60. <param><value><string>$siteurl</string></value></param>
  61. <param><value><string>$article_url</string></value></param>
  62. <param><value><string>$rssurl</string></value></param>
  63. </params>
  64. </methodCall>";
  65. $result = dfsockopen($ping_rpcurl, 0, $xml, '', FALSE, '', 15, TRUE, 1, false);
  66. if (strexists($result, "<int>0</int>")){//成功
  67. return 1;
  68. }else{
  69. return -1;
  70. }
  71. }
  72. function google_ping($article_url, $sitename, $siteurl, $rssurl = ''){
  73. $ping_rpcurl = 'http://blogsearch.google.com/ping/RPC2';
  74. $xml = "
  75. <?xml version=\"1.0\" encoding=\"UTF-8\"?>
  76. <methodCall>
  77. <methodName>weblogUpdates.extendedPing</methodName>
  78. <params>
  79. <param><value>$sitename</value></param>
  80. <param><value>$siteurl</value></param>
  81. <param><value>$article_url</value></param>
  82. <param><value>$rssurl</value></param>
  83. </params>
  84. </methodCall>";
  85. //$result = dfsockopen($ping_rpcurl, 0, $xml);
  86. $result = dfsockopen($ping_rpcurl, 0, $xml, '', FALSE, '', 15, TRUE, 1, false);
  87. if (strexists($result, "<boolean>0</boolean>")){//成功
  88. return 1;
  89. }else{
  90. return -1;
  91. }
  92. }
  93. function included_time_format($time_str){
  94. global $_G;
  95. if(!$time_str) return FALSE;
  96. if(strexists($time_str, stlang('hour_before'))){
  97. $hour = str_replace(stlang('hour_before'), '', $time_str);
  98. $dateline = $_G['timestamp'] - trim($hour)*3600;
  99. }else if(strexists($time_str, stlang('minute_before'))){
  100. $minute = str_replace(stlang('minute_before'), '', $time_str);
  101. $dateline = $_G['timestamp'] - trim($minute)*60;
  102. }else if(strexists($time_str, stlang('day_before'))){
  103. $day = str_replace(stlang('day_before'), '', $time_str);
  104. $dateline = $_G['timestamp'] - trim($day)*3600*24;
  105. }else{
  106. $time_str_arr = explode('|', stlang('time_str'));
  107. $time_str = str_replace($time_str_arr, array('-', '-', '', ':', ':', ''), $time_str);
  108. $dateline = strtotime($time_str);
  109. }
  110. return $dateline;
  111. }
  112. //$op_type = 1 百度收录查询 2谷歌收录查询 3百度ping 4谷歌ping
  113. function batch_run($ids_arr, $op_type, $data_type){
  114. global $_G;
  115. foreach((array)$ids_arr as $k => $aid){
  116. $article_url = get_article_url($aid, $data_type);
  117. $setarr = array();
  118. if($op_type == 1){//百度收录
  119. $setarr['baidu_included'] = baidu_query_included($article_url);
  120. $setarr['baidu_modify_dateline'] = $_G['timestamp'];
  121. }else if($op_type == 2){//谷歌收录
  122. $setarr['google_included'] = google_query_included($article_url);
  123. $setarr['google_modify_dateline'] = $_G['timestamp'];
  124. }else if($op_type == 3){//百度ping
  125. $setarr['baidu_ping'] = article_ping($article_url, 'baidu') > 0 ? $_G['timestamp'] : -1;
  126. }else if($op_type == 4){//谷歌ping
  127. $setarr['google_ping'] = article_ping($article_url, 'google') > 0 ? $_G['timestamp'] : -1;
  128. }
  129. update_included_data($aid, $setarr, $data_type);//更新状态
  130. }
  131. }
  132. //$data_type 0论坛 1门户
  133. function get_article_url($aid, $data_type = 0){
  134. global $_G;
  135. if($data_type == 1){
  136. if($_G['setting']['rewritestatus'] && in_array('portal_article', $_G['setting']['rewritestatus'])) {
  137. $url = rewriteoutput('portal_article', 1, '', $aid, 1, '', '');
  138. } else {
  139. $url = 'portal.php?mod=view&aid='.$aid;
  140. }
  141. }else{
  142. if($_G['setting']['rewritestatus'] && in_array('forum_viewthread', $_G['setting']['rewritestatus'])) {
  143. $url = rewriteoutput('forum_viewthread', 1, '', $aid, 1, '', '');
  144. } else {
  145. $url = 'forum.php?mod=viewthread&tid='.$aid;
  146. }
  147. }
  148. $url = !strexists($url, 'http://') ? $_G['siteurl'].$url : $url;
  149. return $url;
  150. }
  151. function update_included_data($aid, $setarr, $data_type = 0){
  152. if(!$setarr) return;
  153. $info = DB::fetch_first("SELECT id FROM ".DB::table('milu_seotool_included')." WHERE data_type='$data_type' AND data_id='$aid'");
  154. if($info['id']){
  155. DB::update("milu_seotool_included", $setarr, array("id" => $info['id']));
  156. }else{
  157. $setarr['data_id'] = $aid;
  158. $setarr['data_type'] = $data_type;
  159. DB::insert('milu_seotool_included', $setarr, TRUE);
  160. }
  161. }
  162. //文章总数 0论坛 1门户
  163. function get_article_count($data_type = 0, $where = ''){
  164. if($data_type != 1){
  165. return DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('forum_thread')." WHERE displayorder='0' $where"), 0);
  166. }else{
  167. return DB::result(DB::query("SELECT COUNT(*) FROM ".DB::table('portal_article_title')." WHERE status='0' $where"), 0);
  168. }
  169. }
  170. function filter_article_data($ids_arr, $op_type, $data_type = 0){
  171. if(!$ids_arr) return array();
  172. $where_sql = " AND data_type='$data_type' AND data_id IN(".dimplode($ids_arr).")";
  173. if($op_type == 1){//百度收录查询
  174. $query = DB::query("SELECT data_id FROM ".DB::table('milu_seotool_included')." WHERE baidu_included>0 $where_sql");
  175. }else if($op_type == 2){//谷歌收录
  176. $query = DB::query("SELECT data_id FROM ".DB::table('milu_seotool_included')." WHERE google_included>0 $where_sql");
  177. }else if($op_type == 3){//百度ping
  178. $query = DB::query("SELECT data_id FROM ".DB::table('milu_seotool_included')." WHERE baidu_ping>0 $where_sql");
  179. }else if($op_type == 4){//谷歌ping
  180. $query = DB::query("SELECT data_id FROM ".DB::table('milu_seotool_included')." WHERE google_ping>0 $where_sql");
  181. }
  182. while($rs = DB::fetch($query)) {
  183. $no_id_arr[] = $rs['data_id'];
  184. }
  185. $ids_arr = $no_id_arr ? array_diff($ids_arr, $no_id_arr) : $ids_arr;
  186. return $ids_arr;
  187. }
  188. ?>