XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
avatar.php
1<?php
12
13if (!defined('XOOPS_ROOT_PATH')) {
14 exit();
15}
16
18{
19 public $_userCount;
20
21 public function __construct()
22 {
23 parent::__construct();
24 $this->initVar('avatar_id', XOBJ_DTYPE_INT, null, false);
25 $this->initVar('avatar_file', XOBJ_DTYPE_OTHER, null, false, 30);
26 $this->initVar('avatar_name', XOBJ_DTYPE_TXTBOX, null, true, 100);
27 $this->initVar('avatar_mimetype', XOBJ_DTYPE_OTHER, null, false);
28 $this->initVar('avatar_created', XOBJ_DTYPE_INT, null, false);
29 $this->initVar('avatar_display', XOBJ_DTYPE_INT, 1, false);
30 $this->initVar('avatar_weight', XOBJ_DTYPE_INT, 0, false);
31 $this->initVar('avatar_type', XOBJ_DTYPE_OTHER, 0, false);
32 }
33
34 public function setUserCount($value)
35 {
36 $this->_userCount = (int)$value;
37 }
38
39 public function getUserCount()
40 {
41 return $this->_userCount;
42 }
43}
44
45
54
56{
57
58 public function &create($isNew = true)
59 {
60 $avatar =new XoopsAvatar();
61 if ($isNew) {
62 $avatar->setNew();
63 }
64 return $avatar;
65 }
66
67 public function &get($id)
68 {
69 $ret = false;
70 $id = (int)$id;
71 if ($id > 0) {
72 $sql = 'SELECT * FROM '.$this->db->prefix('avatar').' WHERE avatar_id='.$id;
73 if ($result = $this->db->query($sql)) {
74 $numrows = $this->db->getRowsNum($result);
75 if (1 == $numrows) {
76 $avatar =new XoopsAvatar();
77 $avatar->assignVars($this->db->fetchArray($result));
78 $ret =& $avatar;
79 }
80 }
81 }
82 return $ret;
83 }
84
85 public function insert(&$avatar)
86 {
87 $avatar_file = null;
88 $avatar_name = null;
89 $avatar_mimetype = null;
90 $avatar_display = null;
91 $avatar_weight = null;
92 $avatar_type = null;
93 $avatar_created = null;
94 $avatar_id = null;
95 if ('xoopsavatar' != strtolower(get_class($avatar))) {
96 return false;
97 }
98 if (!$avatar->isDirty()) {
99 return true;
100 }
101 if (!$avatar->cleanVars()) {
102 return false;
103 }
104 foreach ($avatar->cleanVars as $k => $v) {
105 ${$k} = $v;
106 }
107 if ($avatar->isNew()) {
108 $avatar_id = $this->db->genId('avatar_avatar_id_seq');
109 $sql = sprintf('INSERT INTO %s (avatar_id, avatar_file, avatar_name, avatar_created, avatar_mimetype, avatar_display, avatar_weight, avatar_type) VALUES (%u, %s, %s, %u, %s, %u, %u, %s)', $this->db->prefix('avatar'), $avatar_id, $this->db->quoteString($avatar_file), $this->db->quoteString($avatar_name), time(), $this->db->quoteString($avatar_mimetype), $avatar_display, $avatar_weight, $this->db->quoteString($avatar_type));
110 } else {
111 $sql = sprintf('UPDATE %s SET avatar_file = %s, avatar_name = %s, avatar_created = %u, avatar_mimetype= %s, avatar_display = %u, avatar_weight = %u, avatar_type = %s WHERE avatar_id = %u', $this->db->prefix('avatar'), $this->db->quoteString($avatar_file), $this->db->quoteString($avatar_name), $avatar_created, $this->db->quoteString($avatar_mimetype), $avatar_display, $avatar_weight, $this->db->quoteString($avatar_type), $avatar_id);
112 }
113 if (!$result = $this->db->query($sql)) {
114 return false;
115 }
116 if (empty($avatar_id)) {
117 $avatar_id = $this->db->getInsertId();
118 }
119 $avatar->assignVar('avatar_id', $avatar_id);
120 return true;
121 }
122
123 public function delete(&$avatar)
124 {
125 if ('xoopsavatar' != strtolower(get_class($avatar))) {
126 return false;
127 }
128 $id = $avatar->getVar('avatar_id');
129 $sql = sprintf('DELETE FROM %s WHERE avatar_id = %u', $this->db->prefix('avatar'), $id);
130 if (!$result = $this->db->query($sql)) {
131 return false;
132 }
133 $sql = sprintf('DELETE FROM %s WHERE avatar_id = %u', $this->db->prefix('avatar_user_link'), $id);
134 $result = $this->db->query($sql);
135 return true;
136 }
137
138 public function &getObjects($criteria = null, $id_as_key = false)
139 {
140 $ret = [];
141 $limit = $start = 0;
142 $sql = 'SELECT a.*, COUNT(u.user_id) AS count FROM '.$this->db->prefix('avatar').' a LEFT JOIN '.$this->db->prefix('avatar_user_link').' u ON u.avatar_id=a.avatar_id';
143 if (isset($criteria) && $criteria instanceof \criteriaelement) {
144 $sql .= ' '.$criteria->renderWhere();
145 $sql .= ' GROUP BY a.avatar_id ORDER BY avatar_weight, avatar_id';
146 $limit = $criteria->getLimit();
147 $start = $criteria->getStart();
148 }
149 $result = $this->db->query($sql, $limit, $start);
150 if (!$result) {
151 return $ret;
152 }
153 while ($myrow = $this->db->fetchArray($result)) {
154 $avatar =new XoopsAvatar();
155 $avatar->assignVars($myrow);
156 $avatar->setUserCount($myrow['count']);
157 if (!$id_as_key) {
158 $ret[] =& $avatar;
159 } else {
160 $ret[$myrow['avatar_id']] =& $avatar;
161 }
162 unset($avatar);
163 }
164 return $ret;
165 }
166
167 public function getCount($criteria = null)
168 {
169 $sql = 'SELECT COUNT(*) FROM '.$this->db->prefix('avatar');
170 if (isset($criteria) && $criteria instanceof \criteriaelement) {
171 $sql .= ' '.$criteria->renderWhere();
172 }
173 if (!$result =& $this->db->query($sql)) {
174 return 0;
175 }
176 [$count] = $this->db->fetchRow($result);
177 return $count;
178 }
179
180 public function addUser($avatar_id, $user_id)
181 {
182 $avatar_id = (int)$avatar_id;
183 $user_id = (int)$user_id;
184 if ($avatar_id < 1 || $user_id < 1) {
185 return false;
186 }
187 $sql = sprintf('DELETE FROM %s WHERE user_id = %u', $this->db->prefix('avatar_user_link'), $user_id);
188 $this->db->query($sql);
189 $sql = sprintf('INSERT INTO %s (avatar_id, user_id) VALUES (%u, %u)', $this->db->prefix('avatar_user_link'), $avatar_id, $user_id);
190 if (!$result =& $this->db->query($sql)) {
191 $avatar_id = XOOPS_UPLOAD_URL . "/modules/user/images/no_avatar.gif";
192 return $avatar_id ;
193 }
194 return true;
195 }
196
197 public function &getUser(&$avatar)
198 {
199 $ret = [];
200 if ('xoopsavatar' != strtolower(get_class($avatar))) {
201 return $ret;
202 }
203 $sql = 'SELECT user_id FROM '.$this->db->prefix('avatar_user_link').' WHERE avatar_id='.$avatar->getVar('avatar_id');
204 if (!$result = $this->db->query($sql)) {
205 return $ret;
206 }
207 while ($myrow = $this->db->fetchArray($result)) {
208 $ret[] =& $myrow['user_id'];
209 }
210 return $ret;
211 }
212
213 public function &getList($avatar_type = null, $avatar_display = null)
214 {
215 $criteria = new CriteriaCompo();
216 if (isset($avatar_type)) {
217 $avatar_type = ('C' == $avatar_type) ? 'C' : 'S';
218 $criteria->add(new Criteria('avatar_type', $avatar_type));
219 }
220 if (isset($avatar_display)) {
221 $criteria->add(new Criteria('avatar_display', (int)$avatar_display));
222 }
223 $avatars =& $this->getObjects($criteria, true);
224 $ret = ['blank.gif' => _NONE];
225 foreach (array_keys($avatars) as $i) {
226 $ret[$avatars[$i]->getVar('avatar_file')] = $avatars[$i]->getVar('avatar_name');
227 }
228 return $ret;
229 }
230}
insert(&$avatar)
Definition avatar.php:85
__construct()
Definition avatar.php:21
initVar($key, $data_type, $value=null, $required=false, $maxlength=null, $options='')
Definition object.php:206