From: Evan Prodromou Date: Thu, 23 Jul 2009 21:46:54 +0000 (-0700) Subject: Merge branch '0.8.x' into 0.9.x X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=8641cb4591d2b8385a661ea743833392ef45ff8b;hp=0dab5f58723cba8b5915c694a8200e242cc9ec02;p=quix0rs-gnu-social.git Merge branch '0.8.x' into 0.9.x --- diff --git a/actions/shownotice.php b/actions/shownotice.php index 8f73dc824a..3d7319489e 100644 --- a/actions/shownotice.php +++ b/actions/shownotice.php @@ -84,7 +84,13 @@ class ShownoticeAction extends OwnerDesignAction $this->notice = Notice::staticGet($id); if (empty($this->notice)) { - $this->clientError(_('No such notice.'), 404); + // Did we used to have it, and it got deleted? + $deleted = Deleted_notice::staticGet($id); + if (!empty($deleted)) { + $this->clientError(_('Notice deleted.'), 410); + } else { + $this->clientError(_('No such notice.'), 404); + } return false; } diff --git a/actions/twitapistatuses.php b/actions/twitapistatuses.php index c9943698dc..e3d366ecc8 100644 --- a/actions/twitapistatuses.php +++ b/actions/twitapistatuses.php @@ -396,8 +396,14 @@ class TwitapistatusesAction extends TwitterapiAction } else { // XXX: Twitter just sets a 404 header and doens't bother // to return an err msg - $this->clientError(_('No status with that ID found.'), - 404, $apidata['content-type']); + $deleted = Deleted_notice::staticGet($notice_id); + if (!empty($deleted)) { + $this->clientError(_('Status deleted.'), + 410, $apidata['content-type']); + } else { + $this->clientError(_('No status with that ID found.'), + 404, $apidata['content-type']); + } } } diff --git a/classes/Deleted_notice.php b/classes/Deleted_notice.php new file mode 100755 index 0000000000..474d0b6f41 --- /dev/null +++ b/classes/Deleted_notice.php @@ -0,0 +1,44 @@ +. + */ + +if (!defined('LACONICA')) { exit(1); } + +/** + * Table Definition for notice + */ +require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; + +class Deleted_notice extends Memcached_DataObject +{ + ###START_AUTOCODE + /* the code below is auto generated do not remove the above tag */ + + public $__table = 'deleted_notice'; // table name + public $id; // int(4) primary_key not_null + public $profile_id; // int(4) not_null + public $uri; // varchar(255) unique_key + public $created; // datetime() not_null + public $deleted; // datetime() not_null + + /* Static get */ + function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Deleted_notice',$k,$v); } + + /* the code above is auto generated do not remove the tag below */ + ###END_AUTOCODE +} diff --git a/classes/Notice.php b/classes/Notice.php index c2770edbe8..4e9aff4f57 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -75,7 +75,21 @@ class Notice extends Memcached_DataObject $this->blowFavesCache(true); $this->blowSubsCache(true); + // For auditing purposes, save a record that the notice + // was deleted. + + $deleted = new Deleted_notice(); + + $deleted->id = $this->id; + $deleted->profile_id = $this->profile_id; + $deleted->uri = $this->uri; + $deleted->created = $this->created; + $deleted->deleted = common_sql_now(); + $this->query('BEGIN'); + + $deleted->insert(); + //Null any notices that are replies to this notice $this->query(sprintf("UPDATE notice set reply_to = null WHERE reply_to = %d", $this->id)); $related = array('Reply', diff --git a/classes/laconica.ini b/classes/laconica.ini old mode 100644 new mode 100755 index 766bed75de..f8d4eebd3f --- a/classes/laconica.ini +++ b/classes/laconica.ini @@ -38,6 +38,17 @@ modified = 384 [consumer__keys] consumer_key = K +[deleted_notice] +id = 129 +profile_id = 129 +uri = 2 +created = 142 +deleted = 142 + +[deleted_notice__keys] +id = K +uri = U + [design] id = 129 backgroundcolor = 1 diff --git a/db/laconica.sql b/db/laconica.sql index 2c04f680a8..f011071760 100644 --- a/db/laconica.sql +++ b/db/laconica.sql @@ -534,4 +534,16 @@ create table session ( index session_modified_idx (modified) -) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; \ No newline at end of file +) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin; + +create table deleted_notice ( + + id integer primary key comment 'identity of notice', + profile_id integer not null comment 'author of the notice', + uri varchar(255) unique key comment 'universally unique identifier, usually a tag URI', + created datetime not null comment 'date the notice record was created', + deleted datetime not null comment 'date the notice record was created', + + index deleted_notice_profile_id_idx (profile_id) + +) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;