• inc/classes/class.blog.php

Initial :

<?
        function getPostByDate($y,$m,$d='',$cat='',$order='post_dt DESC',$selected=false,$lang='')
        {
        $reqPlus = 'AND DATE_FORMAT(post_dt,\'%Y\') = \''.(integer) $y.'\' ';
 
        $reqPlus .= 'AND DATE_FORMAT(post_dt,\'%c\') = \''.(integer) $m.'\' ';
?>

Modifié :

<?
        function getPostByDate($y,$m='',$d='',$cat='',$order='post_dt DESC',$selected=false,$lang='')
        {
                $reqPlus = 'AND DATE_FORMAT(post_dt,\'%Y\') = \''.(integer) $y.'\' ';
 
                if ($m != '') {
                        $reqPlus .= 'AND DATE_FORMAT(post_dt,\'%c\') = \''.(integer) $m.'\' ';
                }
?>
  • layout/lib.mod.php

Initial :

<?
        if($args != '')
        {
                if(preg_match('!^([0-9]{4}/[0-9]{2})(/|\z)!',$args,$match))
                {
 
                        $_GET['d'] = $match[1];
                        if(preg_match('!^([0-9]{4}/[0-9]{2}/[0-9]{2})(/|\z)!',$args,$match))
                        {
 
                                $_GET['d'] = $match[1];
                                if(preg_match('!^[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]+)!',$args,$match))
                                {
                                        $_GET['p'] = $match[1];
                                }
                        }
                }
                elseif(preg_match('!^([A-Z][A-Za-z0-9_-]*)([^/]*)?(/|\z)!',$args,$match))
                {
                        $_GET['cat'] = $match[1];
                        if(preg_match('!^[A-Z][A-Za-z0-9_-]*([^/]*?)/([0-9]{4}/[0-9]{2})!',$args,$match))
                        {
                                $_GET['d'] = $match[2];
                                if(preg_match('!^[A-Z][A-Za-z0-9_-]*([^/]*)?/([0-9]{4}/[0-9]{2}/[0-9]{2})!',$args,$match))
                                {
                                        $_GET['d'] = $match[2];
                                }
                        }
                }
        }
 
// ... un peu plus loin dans le code source du fichier ...
 
        if (!empty($_GET['p'])) {
                return 'post';
        } elseif (!empty($_GET['d']) && strlen($_GET['d']) == 10) {
                return 'day';
        } elseif (!empty($_GET['d']) && strlen($_GET['d']) == 7) {
                return 'month';
        } elseif (!empty($_GET['cat'])) {
                return 'cat';
        } else {
                return 'home';
        }
 
?>

Modifié :

<?
        if($args != '')
        {
                if(preg_match('!^([0-9]{4}/[0-9]{2})(/|\z)!',$args,$match))
                {
 
                        $_GET['d'] = $match[1];
                        if(preg_match('!^([0-9]{4}/[0-9]{2}/[0-9]{2})(/|\z)!',$args,$match))
                        {
 
                                $_GET['d'] = $match[1];
                                if(preg_match('!^[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]+)!',$args,$match))
                                {
                                        $_GET['p'] = $match[1];
                                }
                        }
                }
                elseif(preg_match('!^([A-Z][A-Za-z0-9_-]*)([^/]*)?(/|\z)!',$args,$match))
                {
                        $_GET['cat'] = $match[1];
                        if(preg_match('!^[A-Z][A-Za-z0-9_-]*([^/]*?)/([0-9]{4}/[0-9]{2})!',$args,$match))
                        {
                                $_GET['d'] = $match[2];
                                if(preg_match('!^[A-Z][A-Za-z0-9_-]*([^/]*)?/([0-9]{4}/[0-9]{2}/[0-9]{2})!',$args,$match))
                                {
                                        $_GET['d'] = $match[2];
                                }
                        }
                }
                elseif(preg_match('!^([0-9]{4})(/|\z)!',$args,$match))
                {
                        $_GET['d'] = $match[1];
 
                }
        }
 
// ... un peu plus loin dans le code source du fichier ...
 
        if (!empty($_GET['p'])) {
                return 'post';
        } elseif (!empty($_GET['d']) && strlen($_GET['d']) == 4) {
                return 'year';
        } elseif (!empty($_GET['d']) && strlen($_GET['d']) == 10) {
                return 'day';
        } elseif (!empty($_GET['d']) && strlen($_GET['d']) == 7) {
                return 'month';
        } elseif (!empty($_GET['cat'])) {
                return 'cat';
        } else {
                return 'home';
        }
 
?>
  • layout/prepend.php

Initial :

<?
elseif($mode == 'home' || ($mode == 'cat' && $cat_id) || $mode == 'year')
?>

Modifié :

<?
elseif($mode == 'year')
{
        $news = $blog->getPostByDate($year,'','',$cat_id,'post_dt DESC');
        if ($news->isEmpty()) {
                $err_msg = '<p>'.__('No entry.').'</p>';
        }
}
elseif($mode == 'home' || ($mode == 'cat' && $cat_id))
?>

Voilà, après modification de ses 3 fichiers, vous êtes en mesure de consulter tous les billets d'une année en appelant une URL du style http://www.placeoweb.com/dotclear/index.php/2006