summaryrefslogtreecommitdiff
path: root/demos/blog/protected/Portlets/ArchivePortlet.php
blob: 858b6b3fee6673ab938bb9b33528c39f90c51c07 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
/**
 * ArchivePortlet class file
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @link http://www.pradosoft.com/
 * @copyright Copyright &copy; 2006 PradoSoft
 * @license http://www.pradosoft.com/license/
 */

Prado::using('Application.Portlets.Portlet');

/**
 * ArchivePortlet class
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @link http://www.pradosoft.com/
 * @copyright Copyright &copy; 2006 PradoSoft
 * @license http://www.pradosoft.com/license/
 */
class ArchivePortlet extends Portlet
{
	private function makeMonthTime($timestamp)
	{
		$date=getdate($timestamp);
		return mktime(0,0,0,$date['mon'],1,$date['year']);
	}

	public function onLoad($param)
	{
		$currentTime=time();
		$startTime=$this->Application->getModule('data')->queryEarliestPostTime();
		if(empty($startTime))	// if no posts
			$startTime=$currentTime;

		// obtain the timestamp for the initial month
		$date=getdate($startTime);
		$startTime=mktime(0,0,0,$date['mon'],1,$date['year']);

		$date=getdate($currentTime);
		$month=$date['mon'];
		$year=$date['year'];

		$timestamps=array();
		while(true)
		{
			if(($timestamp=mktime(0,0,0,$month,1,$year))<$startTime)
				break;
			$timestamps[]=$timestamp;
			if(--$month===0)
			{
				$month=12;
				$year--;
			}
		}
		$this->MonthList->DataSource=$timestamps;
		$this->MonthList->dataBind();
	}
}