XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
Inbox.class.php
1<?php
12
13if (!defined('XOOPS_ROOT_PATH')) {
14 exit();
15}
16
18{
19 public function __construct()
20 {
21 $this->initVar('inbox_id', XOBJ_DTYPE_INT, 0);
22 $this->initVar('uid', XOBJ_DTYPE_INT, 0, true);
23 $this->initVar('from_uid', XOBJ_DTYPE_INT, 0, true);
24 $this->initVar('title', XOBJ_DTYPE_STRING, '', true, 191);
25 $this->initVar('message', XOBJ_DTYPE_TEXT, '', true);
26 $this->initVar('utime', XOBJ_DTYPE_INT, time(), true);
27 $this->initVar('is_read', XOBJ_DTYPE_INT, 0);
28 $this->initVar('uname', XOBJ_DTYPE_STRING, '', true, 100);
29 }
30
31 public function setVar($key, $value)
32 {
33 $this->set($key, $value);
34 }
35
36 public function set($key, $value)
37 {
38 switch ($key) {
39 case 'subject': $key = 'title'; break;
40 case 'from_userid': $key = 'from_uid'; break;
41 case 'msg_text': $key = 'message'; break;
42 case 'to_userid': $key = 'uid'; break;
43 case 'read_msg': $key = 'is_read'; break;
44 case 'msg_time': $key = 'utime'; break;
45 }
46
47 $this->assignVar($key, $value);
48 }
49}
50
52{
53 public $mTable = 'message_inbox';
54 public $mPrimary = 'inbox_id';
55 public $mClass = 'MessageInboxObject';
56
57 public function __construct(&$db)
58 {
59 parent::__construct($db);
60 }
61
62 public function getCountUnreadByFromUid($uid)
63 {
64 $criteria = new CriteriaCompo(new Criteria('is_read', 0));
65 $criteria->add(new Criteria('uid', $uid));
66 return $this->getCount($criteria);
67 }
68
69 public function getInboxCount($uid)
70 {
71 $criteria = new CriteriaCompo(new Criteria('uid', $uid));
72 return $this->getCount($criteria);
73 }
74
75 public function getSendUserList($uid = 0, $fuid = 0)
76 {
77 $ret = [];
78 $sql = 'SELECT u.`uname`,u.`uid` FROM `' . $this->db->prefix('users') . '` u, ';
79 $sql.= '`'.$this->mTable . '` i ';
80 $sql.= 'WHERE i.`from_uid` = u.`uid` ';
81 $sql.= 'AND i.`uid` = ' . $uid . ' ';
82 $sql.= 'GROUP BY u.`uname`, u.`uid`';
83
84 $result = $this->db->query($sql);
85 while ($row = $this->db->fetchArray($result)) {
86 if ($fuid == $row['uid']) {
87 $row['select'] = true;
88 } else {
89 $row['select'] = false;
90 }
91 $ret[] = $row;
92 }
93 return $ret;
94 }
95
96 public function deleteDays($day, $type)
97 {
98 if ($day < 1) {
99 return;
100 }
101 $time = time() - ($day * 86400);
102 $sql = 'DELETE FROM `' . $this->mTable . '` ';
103 $sql.= 'WHERE `utime` < ' . $time . ' ';
104 if (0 == $type) {
105 $sql.= 'AND `is_read` = 1 ';
106 } else {
107 $sql.= 'AND `is_read` < 2 ';
108 }
109 $this->db->queryF($sql);
110 }
111
112 public function _makeCriteria4sql($criteria)
113 {
114 $this->_chane_old($criteria);
115 return parent::_makeCriteria4sql($criteria);
116 }
117
118 private function _chane_old(&$criteria)
119 {
120 if (is_a($criteria, 'CriteriaElement')) {
121 if ($criteria->hasChildElements()) {
122 for ($i = 0; $i < $criteria->getCountChildElements(); $i++) {
123 $this->_chane_old($criteria->criteriaElements[$i]);
124 }
125 } elseif ('Criteria' == get_class($criteria)) {
126 switch ($criteria->column) {
127 case 'read_msg': $criteria->column = 'is_read'; break;
128 case 'to_userid': $criteria->column = 'uid'; break;
129 case 'subject': $criteria->column = 'title'; break;
130 case 'from_userid': $criteria->column = 'from_uid'; break;
131 case 'msg_text': $criteria->column = 'message'; break;
132 case 'msg_time': $criteria->column = 'utime'; break;
133 }
134 }
135 }
136 }
137}