pearweb
[ class tree: pearweb ] [ index: pearweb ] [ all elements ]

Source for file trackback.php

Documentation is available at trackback.php

  1. <?php
  2.  
  3. /*
  4.    +----------------------------------------------------------------------+
  5.    | PEAR Web site version 1.0                                            |
  6.    +----------------------------------------------------------------------+
  7.    | Copyright (c) 2001-2005 The PHP Group                                |
  8.    +----------------------------------------------------------------------+
  9.    | This source file is subject to version 2.02 of the PHP license,      |
  10.    | that is bundled with this package in the file LICENSE, and is        |
  11.    | available at through the world-wide-web at                           |
  12.    | http://www.php.net/license/2_02.txt.                                 |
  13.    | If you did not receive a copy of the PHP license and are unable to   |
  14.    | obtain it through the world-wide-web, please send a note to          |
  15.    | license@php.net so we can mail you a copy immediately.               |
  16.    +----------------------------------------------------------------------+
  17.    | Authors: Tobias Schlitt <toby@php.net>                               |
  18.    |                                                                      |
  19.    +----------------------------------------------------------------------+
  20.    $Id: trackback.php,v 1.23 2006/10/19 02:21:19 cellog Exp $
  21. */
  22.  
  23.  
  24. require_once 'Damblan/Trackback.php';
  25. require_once 'Damblan/Mailer.php';
  26. require_once 'Damblan/URL.php';
  27.  
  28. $site = new Damblan_URL;
  29.  
  30. $params = array('action' => '''id' => '');
  31. $site->getElements($params);
  32.  
  33. $id htmlentities($params['id']);
  34.  
  35. // This mostly occurs, when the URL is called by a human instead of a script
  36. if (count($_POST== 0{
  37.     PEAR::raiseError("This page is not intended for being viewed in a webbrowser, but to communicate with computer programs.");
  38. }
  39.  
  40.  
  41. // Switch error handling, to avoid further PEARWeb style error output
  42. PEAR::setErrorHandling(PEAR_ERROR_RETURN);
  43.  
  44. // Data sanity check
  45. if (!isset($params['id'])) {
  46.     echo Services_Trackback::getResponseError('No package with ID transmited. Trackback not possible.'1);
  47.     exit;
  48. }
  49.  
  50. // Sanity check, if package exists
  51. $pkgInfo package::info($id);
  52. if (!isset($pkgInfo|| PEAR::isError($pkgInfo)) {
  53.     echo Services_Trackback::getResponseError('No package with ID '.$id.' found. Trackback not possible.'1);
  54.     exit;
  55. }
  56.  
  57. if ($pkgInfo['blocktrackbacks']{
  58.     echo Services_Trackback::getResponseError('Package ' $id ' does not allow trackbacks.'1);
  59.     exit;
  60. }
  61.  
  62. // Creating new trackback
  63. $trackback = new Damblan_Trackback(array(
  64.     'id' => $id,
  65.     'timestamp' => time(),
  66. ));
  67.  
  68. $res $trackback->receive();
  69. if (PEAR::isError($res)) {
  70.     echo $res->getMessage();
  71.     echo Services_Trackback::getResponseError('The data you submited was invalid, please recheck.'1);
  72.     exit;
  73. }
  74.  
  75. if ($trackback->checkRepost($dbhTRACKBACK_REPOST_COUNTTRACKBACK_REPOST_TIMESPAN!== false{
  76.     echo Services_Trackback::getResponseError('Only '.TRACKBACK_REPOST_COUNT.' trackbacks from 1 IP address within '.TRACKBACK_REPOST_TIMESPAN.' secs are allowed on this site. Please try again later.'1);
  77.     exit;
  78. }
  79.  
  80. $trackback->createSpamCheck('Akismet'$trackback->akismetOptions);
  81.  
  82. if ($trackback->checkSpam(=== true{
  83.     echo Services_Trackback::getResponseError('Your trackback seems to be spam. If it is not, please contact the webmaster of this site.'1);
  84.     exit;
  85. }
  86.  
  87.  
  88. $res $trackback->save($dbh);
  89. if (PEAR::isError($res)) {
  90.     echo Services_Trackback::getResponseError('Your trackback could not be saved, please try again or inform the administrator.'1);
  91.     exit;
  92. }
  93.  
  94. $mailData = array(
  95.     'id' => $trackback->get('id'),
  96.     'blog_name' => $trackback->get('blog_name'),
  97.     'title' => $trackback->get('title'),
  98.     'url' => $trackback->get('url'),
  99.     'excerpt' => $trackback->get('excerpt'),
  100.     'date' => make_utc_date($trackback->get('timestamp')),
  101.     'timestamp' => $trackback->get('timestamp'),
  102. );
  103.  
  104. $mailer Damblan_Mailer::create('Trackback_New'$mailData);
  105.  
  106. // Get active maintainers only
  107. $additionalHeaders['To'$trackback->getMaintainers(true);
  108. if (!DEVBOX{
  109.     $res $mailer->send($additionalHeaders);
  110. else {
  111.     $res = true;
  112. }
  113.  
  114. if (PEAR::isError($res)) {
  115.     echo Services_Trackback::getResponseError('The notification email for your trackback could not be send. Please inform ' PEAR_WEBMASTER_EMAIL . '.'1);
  116.     exit;
  117. }
  118.  
  119. echo Services_Trackback::getResponseSuccess();
  120.  
  121. ?>

Documentation generated on Wed, 13 Dec 2006 14:03:02 -0500 by phpDocumentor 1.3.0. PEAR Logo Copyright © PHP Group 2004.