diff --git a/code/BlogEntry.php b/code/BlogEntry.php
index 5528f78..db1c1b6 100644
--- a/code/BlogEntry.php
+++ b/code/BlogEntry.php
@@ -37,10 +37,6 @@ class BlogEntry extends Page {
'ShowInMenus' => false
);
- private static $extensions = array(
- 'TrackBackDecorator'
- );
-
/**
* Is WYSIWYG editing allowed?
* @var boolean
@@ -174,21 +170,6 @@ class BlogEntry extends Page {
return ($this->getParent()) ? $this->getParent()->Link('post') . '/' . $this->ID . '/' : false;
}
- /**
- * Check to see if trackbacks are enabled.
- */
- function TrackBacksEnabled() {
- return ($this->getParent()) ? $this->getParent()->TrackBacksEnabled : false;
- }
-
- function trackbackping() {
- if($this->TrackBacksEnabled() && $this->hasExtension('TrackBackDecorator')) {
- return $this->decoratedTrackbackping();
- } else {
- Controller::curr()->redirect($this->Link());
- }
- }
-
function IsOwner() {
if(method_exists($this->Parent(), 'IsOwner')) {
return $this->Parent()->IsOwner();
@@ -251,7 +232,6 @@ class BlogEntry_Controller extends Page_Controller {
private static $allowed_actions = array(
'index',
- 'trackbackping',
'unpublishPost',
'PageComments',
'SearchForm'
diff --git a/code/BlogHolder.php b/code/BlogHolder.php
index 64e74a3..b7ecbb4 100644
--- a/code/BlogHolder.php
+++ b/code/BlogHolder.php
@@ -14,15 +14,14 @@
class BlogHolder extends BlogTree implements PermissionProvider {
private static $icon = "blog/images/blogholder-file.png";
-
+
private static $description = "Displays listings of blog entries";
private static $singular_name = 'Blog Holder Page';
-
+
private static $plural_name = 'Blog Holder Pages';
private static $db = array(
- 'TrackBacksEnabled' => 'Boolean',
'AllowCustomAuthors' => 'Boolean',
'ShowFullEntry' => 'Boolean',
);
@@ -42,13 +41,13 @@ class BlogHolder extends BlogTree implements PermissionProvider {
$fields = parent::getCMSFields();
SiteTree::enableCMSFieldsExtensions();
- //sets the ID and Name Map for Blog Ownership
- $owners = new DropdownField('OwnerID', 'Blog owner', $blogOwners->map('ID', 'Name')->toArray());
- $owners->setEmptyString('(None)');
- $owners->setHasEmptyDefault(true);
-
- $fields->addFieldToTab('Root.Main', new CheckboxField('TrackBacksEnabled', 'Enable TrackBacks'), "Content");
- $fields->addFieldToTab('Root.Main', $owners, "Content");
+ $fields->addFieldToTab(
+ 'Root.Main',
+ DropdownField::create('OwnerID', 'Blog owner', $blogOwners->map('ID', 'Name')->toArray())
+ ->setEmptyString('(None)')
+ ->setHasEmptyDefault(true),
+ "Content"
+ );
$fields->addFieldToTab('Root.Main', new CheckboxField('AllowCustomAuthors', 'Allow non-admins to have a custom author field'), "Content");
$fields->addFieldToTab("Root.Main", new CheckboxField("ShowFullEntry", "Show Full Entry"), "Content");
diff --git a/code/TrackBackDecorator.php b/code/TrackBackDecorator.php
deleted file mode 100644
index 32936e3..0000000
--- a/code/TrackBackDecorator.php
+++ /dev/null
@@ -1,161 +0,0 @@
- array(
- // 'TrackBackURLs' => 'TrackBackURL',
- // 'TrackBacks' => 'TrackBackPing'
- // )
- // );
- // }
-
- private static $has_many = array(
- 'TrackBackURLs' => 'TrackBackURL',
- 'TrackBacks' => 'TrackBackPing'
- );
-
- // function updateCMSFields($fields) {
- // // Trackback URL field
- // if($this->owner->TrackBacksEnabled()) {
- // $trackbackURLTable = new ComplexTableField(
- // $this,
- // 'TrackBackURLs',
- // 'TrackBackURL',
- // array(
- // 'URL' => 'URL',
- // 'IsPung' => 'Pung?'
- // ),
- // 'getCMSFields_forPopup',
- // '',
- // 'ID'
- // );
- // $fields->addFieldToTab("Root.Content.Main", $trackbackURLTable);
- // }
- // else {
- // $fields->addFieldToTab("Root.Content.Main", new ReadonlyField("TrackBackURLsReadOnly", _t("BlogEntry.TrackbackURLs", "Trackback URLs"), _t("BlogEntry.TrackbackURLs_DISABLED", "To use this feature, please check 'Enable TrackBacks' check box on the blog holder.")));
- // }
- // }
-
-
- function onBeforePublish() {
- if(!$this->owner->TrackBacksEnabled() && !$this->owner->TrackBackURLs()) return;
-
- foreach($this->owner->TrackBackURLs() as $trackBackURL) {
- if(!$trackBackURL->Pung && $this->trackbackNotify($trackBackURL->URL)) {
- $trackBackURL->Pung = true;
- $trackBackURL->write();
- }
- }
- }
-
- /**
- * Trackback notify the specified trackback url
- * @param boolean | true on success, otherwise false
- */
- function trackbackNotify($url) {
- $content = new HTMLText('Content');
- $content->setValue($this->owner->Content);
- $excerpt = $content->FirstParagraph();
-
- if($this->owner->Parent() && $this->owner->ParentID > 0) {
- $blogName = $this->owner->Parent()->Title;
- }
- else {
- $blogName = "";
- }
-
- $postData = array(
- 'url' => $this->owner->AbsoluteLink(),
- 'title' => $this->owner->Title,
- 'excerpt' => $excerpt,
- 'blog_name' => $blogName
- );
-
- $controller = Object::create(self::$trackback_server_class);
- $response = $controller->request($url, $postData);
-
- if($response->getStatusCode() == '200' && stripos($response->getBody(), "0") !== false) {
- return true;
- }
-
- return false;
- }
-
- function updateMetaTags(&$tags) {
- $tags .= $this->owner->renderWith('TrackBackRdf');
- }
-
- function TrackBackPingLink() {
- return $this->owner->AbsoluteLink() . 'trackbackping';
- }
-
- function decoratedTrackbackping() {
- $error = 0;
- $message = '';
-
- if(!(isset($_POST['url']) && $_POST['url'])) {
- $error = 1;
- $message = 'Missing required POST parameter \'url\'.';
- } else {
- $trackbackping = new TrackBackPing();
- $trackbackping->Url = $_POST['url'];
- if(isset($_POST['title']) && $_POST['title']) {
- $trackbackping->Title = $_POST['title'];
- }
- if(isset($_POST['excerpt']) && $_POST['excerpt']) {
- $trackbackping->Excerpt = $_POST['excerpt'];
- }
- if(isset($_POST['blog_name']) && $_POST['blog_name']) {
- $trackbackping->BlogName = $_POST['blog_name'];
- }
- $trackbackping->PageID = $this->owner->ID;
- $trackbackping->write();
- }
-
- $returnData = new ArrayData(array(
- 'Error' => $error,
- 'Message' => $message
- ));
-
- return $returnData->renderWith('TrackBackPingReturn');
- }
-}
-
-/**
- * Example:
- * $controller = Object::create('TrackbackHTTPClient');
- * $response = $controller->request(new SS_HTTPRequest('POST', $url, null, $postData));
- */
-class TrackbackHTTPServer {
-
- function __construct() {}
-
- /**
- * @param string
- * @param array
- * @return SS_HTTPResponse
- */
- function request($url, $data) {
- $ch = curl_init($url);
-
- curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_POST, true);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
- $response = curl_exec($ch);
- $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
-
- curl_close($ch);
-
- return new SS_HTTPResponse($response, $statusCode);
- }
-}
-
-?>
diff --git a/code/TrackBackPing.php b/code/TrackBackPing.php
deleted file mode 100644
index 8a102b0..0000000
--- a/code/TrackBackPing.php
+++ /dev/null
@@ -1,24 +0,0 @@
- 'Varchar',
- 'Excerpt' => 'Text',
- // 2083 is URL-length limit for IE, AFAIK.
- // see: http://www.boutell.com/newfaq/misc/urllength.html
- 'Url' => 'Varchar(2048)',
- 'BlogName' => 'Varchar'
- );
-
- private static $has_one = array(
- 'Page' => 'Page'
- );
-
- private static $has_many = array();
-
- private static $many_many = array();
-
- private static $belongs_many_many = array();
-}
-
-?>
diff --git a/code/TrackBackURL.php b/code/TrackBackURL.php
deleted file mode 100644
index a14e059..0000000
--- a/code/TrackBackURL.php
+++ /dev/null
@@ -1,55 +0,0 @@
- 'Varchar(2048)',
- 'Pung' => 'Boolean(0)'
- );
-
- private static $has_one = array(
- 'BlogEntry' => 'BlogEntry'
- );
-
- function getCMSFields_forPopup() {
-
- return new FieldList(
- new TextField('URL'),
- new ReadonlyField('Pung', 'Pung?')
- );
- }
-
- /**
- * Return a human-reable string indicate whether the url has been pung or not
- * Also update the url if it's duplicate
- * @return string - 'Yes' or 'No'
- */
- function IsPung() {
- if($this->Pung) return _t('TrackBackULR.YES', 'Yes');
-
- if($this->isDuplicate(true)) {
- $this->Pung = true;
- $this->write();
-
- return _t('TrackBackULR.YES', 'Yes');
- }
-
- return _t('TrackBackULR.NO', 'No');
- }
-
- /**
- * Check if there is a duplication, based on the associcated blog entry and the url.
- * If onPung is set, it returns true only when the duplicated record that has Pung = true
- * @param boolean
- * @return boolean
- */
- function isDuplicate($onPung = false) {
- $where = "\"BlogEntryID\" = {$this->BlogEntryID} AND \"URL\" = '{$this->URL}' AND \"TrackBackURL\".\"ID\" <> {$this->ID}";
- if($onPung) $where .= " AND \"Pung\" = 1";
-
- if(DataObject::get_one($this->ClassName, $where)) {
- return true;
- }
-
- return false;
- }
-}
diff --git a/templates/Includes/TrackBacks.ss b/templates/Includes/TrackBacks.ss
deleted file mode 100644
index 41c04df..0000000
--- a/templates/Includes/TrackBacks.ss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
TrackBacks
-
- <% if TrackBacks %>
-
- <% else %>
-
No TrackBacks have been submitted for this page.
- <% end_if %>
-
-
Trackback URL for this page.
-
-
-
diff --git a/templates/Layout/BlogEntry.ss b/templates/Layout/BlogEntry.ss
index 938a577..1447360 100644
--- a/templates/Layout/BlogEntry.ss
+++ b/templates/Layout/BlogEntry.ss
@@ -18,8 +18,5 @@
<% if IsOwner %><% _t('EDITTHIS', 'Edit this post') %> | <% _t('UNPUBLISHTHIS', 'Unpublish this post') %>
<% end_if %>
- <% if TrackBacksEnabled %>
- <% include TrackBacks %>
- <% end_if %>
$PageComments
diff --git a/templates/TrackBackPingReturn.ss b/templates/TrackBackPingReturn.ss
deleted file mode 100644
index b31f395..0000000
--- a/templates/TrackBackPingReturn.ss
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- $Error
- <% if Message %>$Message<% end_if %>
-
diff --git a/templates/TrackBackRdf.ss b/templates/TrackBackRdf.ss
deleted file mode 100644
index 62c73b6..0000000
--- a/templates/TrackBackRdf.ss
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/tests/BlogTrackbackTest.php b/tests/BlogTrackbackTest.php
deleted file mode 100644
index 274707c..0000000
--- a/tests/BlogTrackbackTest.php
+++ /dev/null
@@ -1,127 +0,0 @@
-objFromFixture('BlogHolder', 'mainblog');
- $blog->TrackBacksEnabled = true;
- $blog->write();
-
- $entry = $this->objFromFixture('BlogEntry', 'testpost');
- $response = $entry->trackbackping();
-
- $this->assertContains("1", $response);
-
- $_POST['url'] = 'test trackback post url';
- $_POST['title'] = 'test trackback post title';
- $_POST['excerpt'] = 'test trackback post excerpt';
- $_POST['blog_name'] = 'test trackback blog name';
-
- $response = $entry->trackbackping();
- $this->assertContains("0", $response);
-
- $trackback = DataObject::get_one('TrackBackPing');
- $this->assertEquals('test trackback post url', $trackback->Url);
- $this->assertEquals('test trackback post title', $trackback->Title);
- $this->assertEquals('test trackback post excerpt', $trackback->Excerpt);
- $this->assertEquals('test trackback blog name', $trackback->BlogName);
-
- unset($_POST);
- }
-
- function testTrackbackNotify() {
- $tmpServerClass = TrackBackDecorator::$trackback_server_class;
- TrackBackDecorator::$trackback_server_class = "TestTrackbackHTTPServer";
-
- $blog = $this->objFromFixture('BlogHolder', 'mainblog');
- $blog->TrackBacksEnabled = true;
- $blog->write();
-
- $entry = $this->objFromFixture('BlogEntry', 'testpost');
- $this->assertTrue($entry->trackbackNotify('testGoodTrackbackURL'));
- $this->assertFalse($entry->trackbackNotify('testBadTrackbackURL'));
- $this->assertFalse($entry->trackbackNotify('testNonExistingTrackbackURL'));
-
- TrackBackDecorator::$trackback_server_class = $tmpServerClass;
- }
-
- function testOnBeforePublish() {
- $tmpServerClass = TrackBackDecorator::$trackback_server_class;
- TrackBackDecorator::$trackback_server_class = "TestTrackbackHTTPServer";
-
- $blog = $this->objFromFixture('BlogHolder', 'mainblog');
- $blog->TrackBacksEnabled = true;
- $blog->write();
-
- $entry1 = $this->objFromFixture('BlogEntry', 'testpost');
- $entry1->doPublish();
- $this->assertEquals(2, $entry1->TrackBackURLs()->Count());
-
- $this->assertEquals(array('testGoodTrackbackURL' => 1), $entry1->TrackBackURLs()->map('URL', 'Pung')->toArray());
-
- $entry2 = $this->objFromFixture('BlogEntry', 'testpost2');
- $entry2->doPublish();
- $this->assertEquals(4, $entry2->TrackBackURLs()->Count());
- $this->assertEquals(array('testBadTrackbackURL' => 0, 'testGoodTrackbackURL2' => 1, 'noneExistingURL' => 0, 'testGoodTrackbackURL3' => 1), $entry2->TrackBackURLs()->map('URL', 'Pung')->toArray());
-
- TrackBackDecorator::$trackback_server_class = $tmpServerClass;
- }
-
- function testDuplicateIsTrackBackURL() {
- $url1 = $this->objFromFixture('TrackBackURL', 'goodTrackBackURL1');
- $urlDup = $this->objFromFixture('TrackBackURL', 'dupTrackBackURL');
-
- $url2 = $this->objFromFixture('TrackBackURL', 'goodTrackBackURL2');
- $this->assertFalse($url2->isDuplicate());
- $this->assertFalse($url2->isDuplicate(true));
-
- $this->assertTrue($urlDup->isDuplicate());
- $this->assertFalse($urlDup->isDuplicate(true));
-
- $url1->Pung = true;
- $url1->write();
- $this->assertTrue($urlDup->isDuplicate(true));
-
-
- }
-}
-
-class TestTrackbackHTTPServer extends TrackbackHTTPServer implements TestOnly {
-
- function request($url, $data) {
- if(in_array($url, array('testGoodTrackbackURL', 'testGoodTrackbackURL2', 'testGoodTrackbackURL3'))) {
- $response = $this->goodTrackback();
- $statusCode = '200';
- }
- else if($url == 'testBadTrackbackURL') {
- $response = $this->badTrackback();
- $statusCode = '200';
- }
- else {
- $response = $this->badTrackback();
- $statusCode = '404';
- }
-
- return new SS_HTTPResponse($response, $statusCode);
- }
-
- private function goodTrackback() {
- return "
-
- 0
-
- ";
- }
-
- private function badTrackback() {
- return "
-
- 1
- Some error text
- ";
- }
-}
\ No newline at end of file
diff --git a/tests/BlogTrackbackTest.yml b/tests/BlogTrackbackTest.yml
deleted file mode 100644
index 586b7b1..0000000
--- a/tests/BlogTrackbackTest.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-TrackBackURL:
- goodTrackBackURL1:
- URL: testGoodTrackbackURL
- goodTrackBackURL2:
- URL: testGoodTrackbackURL2
- goodTrackBackURL3:
- URL: testGoodTrackbackURL3
- badTrackBackURL:
- URL: testBadTrackbackURL
- noneTrackBackURL:
- URL: noneExistingURL
- dupTrackBackURL:
- URL: testGoodTrackbackURL
-
-BlogHolder:
- mainblog:
- Title: Main Blog
-
-BlogEntry:
- testpost:
- Title: Test Post
- URLSegment: test-post
- Date: 2007-02-17 18:45:00
- Parent: =>BlogHolder.mainblog
- Tags: tag1,tag2
- TrackBackURLs: =>TrackBackURL.goodTrackBackURL1, =>TrackBackURL.dupTrackBackURL
- testpost2:
- Title: Test Post 2
- URLSegment: test-post-2
- Parent: =>BlogHolder.mainblog
- TrackBackURLs: =>TrackBackURL.badTrackBackURL,=>TrackBackURL.goodTrackBackURL2,=>TrackBackURL.noneTrackBackURL,=>TrackBackURL.goodTrackBackURL3
-
-
-
-
-
-
-