ModuleBuilder::Archives PHP Method

Archives() public static method

导出文章归档模块数据
public static Archives ( ) : string
return string 模块内容
    public static function Archives()
    {
        global $zbp;
        $template = $zbp->template;
        $tags = array();
        $urls = array();
        //array(url,name,count);
        $maxli = $zbp->modulesbyfilename['archives']->MaxLi;
        if ($maxli < 0) {
            return '';
        }
        $sql = $zbp->db->sql->Select($zbp->table['Post'], array('log_PostTime'), null, array('log_PostTime' => 'DESC'), array(1), null);
        $array = $zbp->db->Query($sql);
        if (count($array) == 0) {
            return '';
        }
        $ldate = array(date('Y', $array[0]['log_PostTime']), date('m', $array[0]['log_PostTime']));
        $sql = $zbp->db->sql->Select($zbp->table['Post'], array('log_PostTime'), null, array('log_PostTime' => 'ASC'), array(1), null);
        $array = $zbp->db->Query($sql);
        if (count($array) == 0) {
            return '';
        }
        $fdate = array(date('Y', $array[0]['log_PostTime']), date('m', $array[0]['log_PostTime']));
        $arraydate = array();
        for ($i = $fdate[0]; $i < $ldate[0] + 1; $i++) {
            for ($j = 1; $j < 13; $j++) {
                $arraydate[] = strtotime($i . '-' . $j);
            }
        }
        foreach ($arraydate as $key => $value) {
            if ($value - strtotime($ldate[0] . '-' . $ldate[1]) > 0) {
                unset($arraydate[$key]);
            }
            if ($value - strtotime($fdate[0] . '-' . $fdate[1]) < 0) {
                unset($arraydate[$key]);
            }
        }
        $arraydate = array_reverse($arraydate);
        $s = '';
        $i = 0;
        foreach ($arraydate as $key => $value) {
            if ($i >= $maxli && $maxli > 0) {
                break;
            }
            $url = new UrlRule($zbp->option['ZC_DATE_REGEX']);
            $url->Rules['{%date%}'] = date('Y-n', $value);
            $url->Rules['{%year%}'] = date('Y', $value);
            $url->Rules['{%month%}'] = date('n', $value);
            $url->Rules['{%day%}'] = 1;
            $fdate = $value;
            $ldate = strtotime(date('Y-m-t', $value)) + 60 * 60 * 24;
            $sql = $zbp->db->sql->Count($zbp->table['Post'], array(array('COUNT', '*', 'num')), array(array('=', 'log_Type', '0'), array('=', 'log_Status', '0'), array('BETWEEN', 'log_PostTime', $fdate, $ldate)));
            $n = GetValueInArrayByCurrent($zbp->db->Query($sql), 'num');
            if ($n > 0) {
                //$urls[]=array($url->Make(),str_replace(array('%y%', '%m%'), array(date('Y', $fdate), date('n', $fdate)), $zbp->lang['msg']['year_month']),$n);
                $meta = new Metas();
                $meta->Url = $url->Make();
                $meta->Name = str_replace(array('%y%', '%m%'), array(date('Y', $fdate), date('n', $fdate)), $zbp->lang['msg']['year_month']);
                $meta->Count = $n;
                $urls[] = $meta;
                $i++;
            }
        }
        $tags['urls'] = $urls;
        $template->SetTagsAll($tags);
        $ret = $template->Output('module-archives');
        return $ret;
    }

Usage Example

Beispiel #1
0
function BuildModule_archives()
{
    return ModuleBuilder::Archives();
}