111 lines
2.6 KiB
PHP
111 lines
2.6 KiB
PHP
<?php
|
|
/*
|
|
Plugin Name: Archives
|
|
Version: 1.0
|
|
Plugin URI: http://flatpress.sf.net
|
|
Description: Adds an Archive widget element
|
|
Author: NoWhereMan
|
|
Author URI: http://flatpress.sf.net
|
|
*/
|
|
|
|
class plugin_archives_monthlist extends fs_filelister {
|
|
|
|
var $_directory = CONTENT_DIR;
|
|
var $_list = array();
|
|
var $_htmllist = array();
|
|
var $_months = array();
|
|
var $_year = '';
|
|
|
|
function _checkFile($directory, $file) {
|
|
$f = "$directory/$file";
|
|
|
|
if (ctype_digit($file)) {
|
|
if ($this->_directory === $directory) {
|
|
// add year to the list (do not closes li, because
|
|
// we may have nested elements)
|
|
$this->_year = $file;
|
|
$lnk = get_year_link($file);
|
|
$this->_htmllist[$this->_year] = "<li class=\"archive-year archive-y20$file\"> <a href=\"$lnk\">20$file</a>";
|
|
return 1;
|
|
} elseif (is_dir($f)) {
|
|
$this->_months[] = $file;
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
function _exitingDir($directory = null, $file=null) {
|
|
|
|
$y = $this->_year;
|
|
|
|
if ($mos =& $this->_months) {
|
|
sort($mos);
|
|
$list = '';
|
|
$linearlist = array();
|
|
foreach($mos as $mth) {
|
|
$lnk = get_month_link($y, $mth);
|
|
$the_month = theme_date_format( mktime(0, 0, 0, $mth, 1, 0 ), '%B');
|
|
$list = "<li class=\"archive-month archive-m$mth\"><a href=\"$lnk\">".
|
|
$the_month
|
|
.' </a></li>' . $list;
|
|
$linearlist["$the_month 20{$this->_year}"] = $lnk;
|
|
}
|
|
$list = '<ul>' . $list . '</ul>';
|
|
}
|
|
|
|
$mos = array();
|
|
|
|
// we close year's li
|
|
$this->_list[$y] = $linearlist;
|
|
$this->_htmllist[$y] .= $list . '</li>';
|
|
}
|
|
|
|
function getList() {
|
|
krsort($this->_list);
|
|
return $this->_list;
|
|
}
|
|
|
|
function getHtmlList() {
|
|
krsort($this->_htmllist);
|
|
return implode($this->_htmllist);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
function plugin_archives_head() {
|
|
|
|
global $PLUGIN_ARCHIVES_MONTHLIST;
|
|
$PLUGIN_ARCHIVES_MONTHLIST = new plugin_archives_monthlist;
|
|
|
|
echo "\n<!-- archives -->\n";
|
|
foreach($PLUGIN_ARCHIVES_MONTHLIST->getList() as $y => $months) {
|
|
foreach ($months as $ttl => $link)
|
|
echo "<link rel=\"archives\" title=\"{$ttl}\" href=\"{$link}\" />\n";
|
|
}
|
|
|
|
echo "\n<!-- end of archives -->\n";
|
|
}
|
|
add_filter('wp_head', 'plugin_archives_head');
|
|
|
|
function plugin_archives_widget() {
|
|
|
|
lang_load('plugin:archives');
|
|
global $lang, $PLUGIN_ARCHIVES_MONTHLIST;
|
|
|
|
|
|
return array(
|
|
'subject' => $lang['plugin']['archives']['subject'],
|
|
|
|
'content' => ($list = $PLUGIN_ARCHIVES_MONTHLIST->getHtmlList()) ?
|
|
'<ul>' . $list . '</ul>'
|
|
:
|
|
"<p>{$lang['plugin']['archives']['no_posts']}</p>"
|
|
);
|
|
}
|
|
|
|
register_widget('archives', 'Archives', 'plugin_archives_widget');
|
|
|
|
?>
|