PageRenderTime 27ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/Services_Trackback/trackback.php

http://nothing-at-all.googlecode.com/
PHP | 181 lines | 147 code | 8 blank | 26 comment | 20 complexity | d7a74fd30be1e859dddb643a00996195 MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. /**
  3. * @file trackback.php ??TrackBack
  4. * @package TrackBack
  5. * @subpackage
  6. * @version $id: 0.1 UTF-8 2009-2-26 ??03:54:26 $
  7. * @author LD King (mifunny.info)
  8. * @copyright Copyright (c) 2007 - 2009 MiFunny China Inc. (http://mifunny.info)
  9. */
  10. $submit = $_POST['submit'];
  11. $blog_name = $_POST['blog_name'];
  12. $title = $_POST['title'];
  13. $excerpt = $_POST['excerpt'];
  14. $url = trim($_POST['url']);
  15. $trackback_url = $_POST['trackback_url'];
  16. $charset = 'UTF-8';
  17. $follow = $_POST['follow'];
  18. ?>
  19. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  20. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="zh-CN">
  21. <head profile="http://gmpg.org/xfn/11">
  22. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  23. <title>Send TrackBack | ???</title>
  24. <meta name="robots" content="nofollow" />
  25. <style type="text/css">
  26. #wrapper{ width:800px;margin:0 auto;}
  27. #header{height:18px;text-align:right;font-size:12px;position:relative;}
  28. #content{font-size:14px;}
  29. #footer {text-align:center;margin:75px 0 25px 0;position:relative;}
  30. .box{border:2px solid #999; background-color:#ffffce;margin:10px;padding:5px;}
  31. .error{color:red;}
  32. .success{color:blue;}
  33. .old{color:gray;}
  34. #content input{margin:5px;}
  35. </style>
  36. </head>
  37. <body>
  38. <div id="wrapper">
  39. <div id="header">
  40. <p><a href="checkurl.php">CHECK URL</a> | <a href="trackback.php">SEND TRACKBACK</a></p>
  41. </div>
  42. <div id="content">
  43. <?php
  44. // echo get_include_path(). PATH_SEPARATOR.dirname($_SERVER['SCRIPT_FILENAME']).'/pear/php';
  45. if (!empty($submit)){
  46. set_include_path( get_include_path(). PATH_SEPARATOR.dirname($_SERVER['SCRIPT_FILENAME']).'/pear/php' );
  47. // include class
  48. include "Services/Trackback.php";
  49. if ($follow != 1) $follow = 0;
  50. // Trackback ??s
  51. $tb_urls = preg_split('/[\n\r\t]/', $trackback_url, -1, PREG_SPLIT_NO_EMPTY);
  52. // ??
  53. $excerpt = substr($excerpt,0,230);
  54. $excerpt = '...'.utf8_trim($excerpt);
  55. // ?? SQLite
  56. try {
  57. $dbh = new PDO("sqlite:SQLTrackback.db", null, null, array(PDO::ATTR_PERSISTENT => true));
  58. }catch (PDOException $ex){
  59. die("[Error]: ".$ex->getMessage().'<br />\n');
  60. }
  61. // Useless but carefully is better, set encoding.
  62. // Sqlite always use utf-8 internaly, UTF-8 is also it's default value.
  63. $dbh->query('PRAGMA encoding = "UTF-8"');
  64. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  65. ?>
  66. <div class="box">
  67. <?php
  68. // ??
  69. for ($i=0; $i<count($tb_urls); $i++){
  70. $tb_url = trim($tb_urls[$i]);
  71. $sqlSelect = "SELECT id, url FROM tb WHERE url = \"".$tb_urls[$i]."\" ;";
  72. $result = $dbh->query($sqlSelect);
  73. $row = $result->fetch(PDO::FETCH_BOTH);
  74. if (empty($row[0])){ //???URL
  75. $trackbackData = array( 'title' => $title,
  76. 'excerpt' => $excerpt,
  77. 'url' => $url,
  78. 'blog_name' => $blog_name,
  79. 'charset' => $charset,
  80. 'trackback_url' => $tb_url );
  81. // initialize new instance
  82. $trackback = new Services_Trackback();
  83. foreach ($trackbackData as $k => $v) {
  84. $trackback->set($k, $v);
  85. }
  86. // send trackback
  87. $ret = $trackback->send();
  88. if (PEAR::isError($ret)) {
  89. ?>
  90. ERROR URL: <span class="error"><?php echo $tb_url; ?></span><br />
  91. <?php
  92. } else {
  93. $sqlInsert = "INSERT INTO tb VALUES(null, \"".$tb_url."\", ".$follow.", julianday('now') )";
  94. if ($dbh->exec($sqlInsert) != 1){
  95. ?>
  96. URL submit Error: <span class="error"><?php echo $tb_url; ?></span><br />
  97. <?php
  98. }else {
  99. ?>
  100. Submit Successfully: <span class="success"><?php echo $tb_url; ?></span><br />
  101. <?php
  102. }
  103. } //END Send trackback
  104. }else{ //if url empty
  105. ?>
  106. Old URL: <span class="old"><?php echo $tb_url; ?></span><br />
  107. <?php
  108. } //END trackback ????
  109. } //END for ???? trackback
  110. ?>
  111. </div><!-- .box -->
  112. <?php
  113. } //END submit
  114. /* ??????Wordpress????? http://yanfeng.org/blog/wordpress/kit */
  115. function utf8_trim($str) {
  116. //$len = strlen($str);
  117. for ($i=strlen($str)-1; $i>=0; $i-=1){
  118. $hex .= ' '.ord($str[$i]);
  119. $ch = ord($str[$i]);
  120. if (($ch & 128)==0) return(substr($str,0,$i));
  121. if (($ch & 192)==192) return(substr($str,0,$i));
  122. }
  123. return($str.$hex);
  124. }
  125. ?>
  126. <p>??????? TRACKBACK ??<br />?? TRACKBACK_URL ??????????????</p>
  127. <form method="post" action="trackback.php" onsubmit="return sendtb(this);">
  128. <b>TrackBack Ping URL</b>: <input type="checkbox" name="follow" value="1" checked="checked" /> Follow (1)
  129. <br /><textarea name="trackback_url" rows="6" cols="60"></textarea>
  130. <br />
  131. <br /><b>Weblog's Name</b>: <input name="blog_name" size="80" />
  132. <br /><b>Post Title</b>: <input name="title" size="80" />
  133. <br />Enter the name of your blog. Maximum of 80 characters.<br />
  134. <br /><b>Permalink URL</b>: <input name="url" size="80" value="http://" />
  135. <br />This is the permanent URL to your entry on <em>your</em> blog, which is referencing the post you're pinging. On most blogging systems the permanent link is often underneath the entry denoted by "link" or "permanent link" text. This must be a complete URL, so please include the http://<br />
  136. <br /><b>Excerpt</b>:
  137. <br /><textarea name="excerpt" rows="6" cols="60"></textarea>
  138. <br />This is an excerpt from your post. Max of 250 characters (if longer, the text will be cut shorted and have a "..." added to the end). HTML is allowed, but make sure not to include special characters that will render incorrectly (use ASCII or HTML entities).
  139. <br />
  140. <p>
  141. <input name="submit" type="submit" value="Submit Trackback" />
  142. <input type="reset" value="Clear Form" name="reset" />
  143. </p>
  144. <script language="Javascript" type="text/javascript">
  145. <!--
  146. function sendtb(theForm)
  147. {
  148. if (document.layers == null)
  149. {
  150. var error = "";
  151. error = (theForm.trackback_url.value == "") ? "Please enter a Trackback Ping URL\n" : "";
  152. error = (theForm.url.value == "") ? "Please enter a URL to link to\n" : "";
  153. error = (theForm.blog_name.value == "") ? "Please enter an Author/Site Name\n" : "";
  154. error = (theForm.title.value == "") ? "Please enter an Article/Entry Title\n" : "";
  155. if (error != "")
  156. {
  157. alert(error);
  158. return false;
  159. }
  160. theForm.action = theForm.tb_url.value;
  161. return true;
  162. }
  163. }
  164. // -->
  165. </script>
  166. </form>
  167. <div><!-- #content -->
  168. <div id="footer">
  169. <p>Copyright &copy; 2008 - 2009, <a href="http://mifunny.info/">???</a>, All right reserved.</p>
  170. </div>
  171. </div><!-- #wrapper -->
  172. </body>
  173. </html>