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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
/**
* Copyright © 2016 Ihor Vansach (ihor@magefan.com). All rights reserved.
* See LICENSE.txt for license details (http://opensource.org/licenses/osl-3.0.php).
*
* Glory to Ukraine! Glory to the heroes!
*/
namespace Magefan\Blog\Block\Sidebar;
/**
* Blog sidebar archive block
*/
class Archive extends \Magefan\Blog\Block\Post\PostList\AbstractList
{
use Widget;
/**
* @var string
*/
protected $_widgetKey = 'archive';
/**
* Available months
* @var array
*/
protected $_months;
/**
* Prepare posts collection
*
* @return void
*/
protected function _preparePostCollection()
{
parent::_preparePostCollection();
$this->_postCollection->getSelect()->group(
'MONTH(main_table.publish_time)',
'DESC'
);
}
/**
* Retrieve available months
* @return array
*/
public function getMonths()
{
if (is_null($this->_months)) {
$this->_months = [];
$this->_preparePostCollection();
foreach($this->_postCollection as $post) {
$time = strtotime($post->getData('publish_time'));
$this->_months[date('Y-m', $time)] = $time;
}
}
return $this->_months;
}
/**
* Retrieve year by time
* @param int $time
* @return string
*/
public function getYear($time)
{
return date('Y', $time);
}
/**
* Retrieve month by time
* @param int $time
* @return string
*/
public function getMonth($time)
{
return __(date('F', $time));
}
/**
* Retrieve archive url by time
* @param int $time
* @return string
*/
public function getTimeUrl($time)
{
return $this->_url->getUrl(
date('Y-m', $time),
\Magefan\Blog\Model\Url::CONTROLLER_ARCHIVE
);
}
/**
* Retrieve blog identities
* @return array
*/
public function getIdentities()
{
return [\Magento\Cms\Model\Block::CACHE_TAG . '_blog_archive_widget'];
}
}