<?php if (!defined('PmWiki')) exit(); /* -[Feral:081/07@02:11]--------------------------------------------------- * * To use: * In your config.php, place: * // (:pagelist group={$Group} list=normal fmt=bydays:) * include_once("$FarmD/cookbook/fplbydays.php"); * Usage: * (:pagelist group={$Group} list=normal fmt=bydays:) * * With page names like: * * 200703220054 * * 200703211934 * * 200703211200 * * AnExamplePage * * Page names are in the format YYYYMMDDHHMM, as produced by: * $FmtPV['$blogpagename'] = 'strftime("%Y%m%d%H%M", time() )'; * * Results: * 2007-03-22 * 2007-03-21 * A * ---- * ^ Thursday, March 22, 2007 (2007-03-22) * 12:54:AM, $Description * ^ Wednesday, March 21, 2007 (2007-03-21) * 7:34:PM, $Description * 12:00:PM, $Description * ^ A * An Example Page * * --------------------------------------------------------------------- */ //Based on: extdictindex.php, original notice below: /* Copyright 2004 Patrick R. Michaud (pmichaud@pobox.com). This file adds a "dictindex" (dictionary index) format for the (:pagelist:) and (:searchresults:) directives. To see results in dictionary format, simply add fmt=dictindex to the directive, as in (:pagelist group=Main fmt=dictindex:) By default the items are display as a simple definition list, but this can be controlled by $FPLDictIndex...Fmt variables: $FPLDictIndexStartFmt - start string $FPLDictIndexEndFmt - end string $FPLDictIndexLFmt - string to output for each new letter $FPLDictIndexIFmt - string to output for each item in list To enable this module, simply add the following to config.php: include_once('cookbook/dictindex.php'); */ $RecipeInfo['FplByDays']['Version'] = '2007-03-23'; /* -[Feral:082/07@22:24]--------------------------------------------------- * History: * 2007-03-23 -- Bug fix; If no files are present, return "No files found."; * 2007-03-22 -- Initial. * --------------------------------------------------------------------- */ $FPLFunctions['bydays'] = 'FPLByDays'; // Link format; we do not want underlines; SDV($HTMLStylesFmt['fplbydays'], " a.bydaysdate, a.bydaysnorm { text-decoration:none; } "); //a:link {} //a:visited {} //a:hover {} //a:active {} SDV($FPLByDaysStartFmt,"<a name='searchheader'></a><dl class='fplByDays'><span style='font-size:83%'>\$IndexLinks</span><hr><p class='vspace'></p>"); SDV($FPLByDaysEndFmt,'</dl>'); SDV($FPLByDaysHeaderLink,'<a href="#$IndexLetter">$IndexLetter</a>'); SDV($FPLByDaysLDateFmt,"<dt><a href='#searchheader'>▲</a> <a name='\$IndexLetter'></a><span style=color:springgreen;>\$DisplayText</span></dt>"); //SDV($FPLByDaysIDateFmt,"<dd><a class=bydaysdate href='\$PageUrl'>\$Name</a></dd>"); //SDV($FPLByDaysIDateFmt,"<dd><a class=bydaysdate href='\$PageUrl'>\$Title</a></dd>"); //SDV($FPLByDaysIDateFmt,"<dd><a class=bydaysdate href='\$PageUrl'>\$Description</a></dd>"); SDV($FPLByDaysIDateFmt,"<dd><a class=bydaysdate href='\$PageUrl'>\$TimeFromName, \$Description</a></dd>"); SDV($FPLByDaysLNormFmt,"<dt><a href='#searchheader'>▲</a> <a name='\$IndexLetter'></a><span style='color:lime; font-weight:bold;'>\$IndexLetter</span></dt>"); SDV($FPLByDaysINormFmt,"<dd><a class=bydaysnorm href='\$PageUrl'>\$Namespaced</a></dd>"); function FPLByDays($pagename,&$matches,$opt) { global $FPLByDaysStartFmt; global $FPLByDaysEndFmt; global $FPLByDaysHeaderLink; global $FPLByDaysLDateFmt; global $FPLByDaysIDateFmt; global $FPLByDaysLNormFmt; global $FPLByDaysINormFmt; global $FmtV; $matches = MakePageList($pagename, $opt); // var_dump($matches[1]); // die; $DatePages = array(); // for: 200703171520 $NormPages = array(); // for: everything not in $DatePages foreach($matches as $item) { $workname = FmtPageName('$Name',$item['pagename']); if ( preg_match("/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/", $workname, $m) ) { // // 2007 - 03 - 17 - 15 - 20 // // Array ( // // [0] => 200703171520 // // [1] => 2007 // // [2] => 03 // // [3] => 17 // // [4] => 15 // // [5] => 20 // // ) $timestamp = mktime($m[4], $m[5], 0, $m[2], $m[3], $m[1]); // $text = strftime("%A, %B %#d, %Y at %#I:%M:%p", $timestamp); // $index = "{$m[1]}-{$m[2]}-{$m[3]}" $index = $m[1].'-'.$m[2].'-'.$m[3]; $text = strftime("%A, %B %#d, %Y", $timestamp); $text .= " <span style='font-size:xx-small;'><sup>($index)</sup></span>"; $DatePages[] = array ( 'index' => $index, 'display' => $text, 'pagename' => $item['pagename'], // [Feral:082/07@23:55] name is in essence the ctime, except for back dated things... // [Feral:083/07@02:21] Or entries entered in the wrong order (I.e. back dated) // 'sortkey' => $item['ctime'], 'sortkey' => $item['name'], 'timefromname' => strftime("%#I:%M:%p", $timestamp) ); } else { $NormPages[] = array ( 'index' => substr($workname,0,1), // first letter of our display name. 'display' => $workname, 'pagename' => $item['pagename'], ); } } // [Feral:082/07@22:18] Empty guard if ( (count($DatePages) + count($NormPages) ) == 0) { return "No files found."; } $cmp = create_function('$x,$y', "return (\$x['sortkey'] < \$y['sortkey']);"); // newest first // $cmp = create_function('$x,$y', "return (\$x['ctime'] > \$y['ctime']);"); // oldest first usort($DatePages,$cmp); $cmp = create_function('$x,$y', "return strcasecmp(\$x['display'],\$y['display']);"); usort($NormPages,$cmp); // $DatePages[] = array ( // 'index' => $index, // 'display' => $text, // 'pagename' => $item['pagename'], // 'sortkey' => $item['ctime'] // ); $lletter = null; foreach($DatePages as $item) { $FmtV['$IndexLetter'] = $item['index']; $FmtV['$DisplayText'] = $item['display']; $FmtV['$TimeFromName'] = $item['timefromname']; if ($item['index'] != @$lletter) { $out[] = FmtPageName($FPLByDaysLDateFmt,$item['pagename']); $headerlinks[] = FmtPageName($FPLByDaysHeaderLink,$item['pagename']); $lletter = $item['index']; } $out[] = FmtPageName($FPLByDaysIDateFmt,$item['pagename']); } // $NormPages[] = array ( // 'index' => substr($workname,0,1), // first letter of our display name. // 'display' => $workname, // 'pagename' => $item['pagename'], // ); $lletter = null; foreach($NormPages as $item) { $FmtV['$IndexLetter'] = $item['index']; $FmtV['$DisplayText'] = $item['display']; if ($item['index'] != @$lletter) { $out[] = FmtPageName($FPLByDaysLNormFmt,$item['pagename']); $headerlinks[] = FmtPageName($FPLByDaysHeaderLink,$item['pagename']); $lletter = $item['index']; } $out[] = FmtPageName($FPLByDaysINormFmt,$item['pagename']); } $FmtV['$IndexLinks']=implode(' ● ',$headerlinks); return FmtPageName($FPLByDaysStartFmt,$pagename).implode('',$out).FmtPageName($FPLByDaysEndFmt,$pagename); }