Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.weblog.getLastPostBeforeDate
on getLastPostBeforeDate (adrblog, d, adrAdrPost, catname=nil) {
<<Changes:
<<11/14/01; 9:18:46 PM by JES
<<Added optional catname parameter, used to restrict the search to a given category.
<<2/25/01; 5:10:58 PM by PBS
<<This script sometimes returned false when there was indeed a post before the date specified -- in the case where there was no post after the date specified. Now this is handled in the else block.
<<2/22/01; 9:44:16 PM by PBS
<<Created. Much like radio.weblog.getNextPostAfterDate, except that it gets the last post before a date. This code was getting duplicated often.
local (adrPost);
on findPrevPost (ixpost, adradrpost) {
local (adrpost = @adrblog^.posts[ixpost]);
if catname == nil {
adrAdrPost^ = adrpost;
return (true)}
else { //category
loop {
if radio.weblog.isPostInCategory (adrpost, catname) {
adradrpost^ = adrpost;
return (true)};
ixpost--;
if ixpost == 0 {
break};
adrpost = @adrblog^.posts[ixpost]}};
return (false)};
if radio.weblog.getNextPostAfterDate (adrblog, d, @adrPost, catname) {
local (ixPost = indexOf (adrPost^));
if ixPost > 1 {
if findPrevPost (ixpost - 1, @adrpost) {
adradrpost^ = adrpost;
return (true)}}}
else { //PBS 02/25/01: it's the last post in the posts table [which is in the category]
local (sizeTable = sizeOf (adrblog^.posts));
if sizeTable > 0 {
if findPrevPost (sizetable, @adrpost) {
adradrpost^ = adrpost;
return (true)}}};
return (false)}
<<bundle //debugging
<<local (adrpost)
<<getLastPostBeforeDate (radio.weblog.init (), clock.now (), @adrpost, "quotations")
<<dialog.notify (adrpost)
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.