-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathPhoto.php
153 lines (132 loc) · 2.62 KB
/
Photo.php
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<?php
namespace FOQ\AlbumBundle\Document;
use FOQ\AlbumBundle\Model\PhotoInterface;
use FOQ\AlbumBundle\Model\PhotoCollection;
use DateTime;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\MappedSuperclass
*/
abstract class Photo implements PhotoInterface
{
/**
* Document id
*
* @var string
* @MongoDB\Id()
*/
protected $id = null;
/**
* Album where the photo is
*
* @var AlbumInterface
* You must overwrite this mapping to set the target document to your user class
* // mongodb:ReferenceOne(targetDocument="Album")
*/
protected $album = null;
/**
* Photo number in an album
*
* @var int
* @MongoDB\Field(type="int")
*/
protected $number = '';
/**
* Photo title
*
* @var string
* @MongoDB\Field(type="string")
*/
protected $title = null;
/**
* Number of times the album has been displayed
*
* @var int
* @MongoDB\Field(type="int")
*/
protected $impressions = 0;
/**
* @MongoDB\Field(type="date")
*/
protected $createdAt;
/**
* @MongoDB\Field(type="date")
*/
protected $updatedAt;
public function __construct()
{
$this->createdAt = new DateTime();
}
/**
* @return string
*/
public function getId()
{
return $this->id;
}
/**
* @return AlbumInterface
*/
public function getAlbum()
{
return $this->album;
}
/**
* @param AlbumInterface
* @return null
*/
public function setAlbum($album)
{
$this->album = $album;
$album->getPhotos()->add($this);
}
/**
* @return string
*/
public function getTitle()
{
return $this->title;
}
/**
* @param string
* @return null
*/
public function setTitle($title)
{
$this->title = $title;
}
public function getNumber()
{
return $this->number;
}
public function setNumber($number)
{
$this->number = $number;
}
public function getCreatedAt()
{
return $this->createdAt;
}
public function getUpdatedAt()
{
return $this->updatedAt;
}
public function setUpdatedNow()
{
$this->updatedAt = new DateTime();
}
/**
* @return int number of impressions
*/
public function getImpressions()
{
return $this->impressions;
}
/**
* Increment the number of page impressions
*/
public function incrementImpressions()
{
$this->impressions++;
}
}