XCL Web Application Platform 2.5.0
The XoopsCube Legacy Project
Loading...
Searching...
No Matches
AvatarSelectAction.class.php
1<?php
7
8if (!defined('XOOPS_ROOT_PATH')) {
9 exit();
10}
11
12require_once XOOPS_MODULE_PATH . '/user/class/AbstractEditAction.class.php';
13require_once XOOPS_MODULE_PATH . '/user/forms/AvatarSelectForm.class.php';
14
15/***
16 * @internal
17 * When the request is POST, this class fetches avatar_id and set it to user
18 * object. This class always kicks out GET request.
19 *
20 * @see User_AvatarSelectForm
21 */
23{
24 public $mOldAvatar = null;
25
26 public function prepare(&$controller, &$xoopsUser, $moduleConfig)
27 {
28 parent::prepare($controller, $xoopsUser, $moduleConfig);
29
30 $handler =& xoops_getmodulehandler('avatar', 'user');
31 $criteria =new Criteria('avatar_file', $xoopsUser->get('user_avatar'));
32 $avatarArr =& $handler->getObjects($criteria);
33 if ((is_countable($avatarArr) ? count($avatarArr) : 0) > 0) {
34 $this->mOldAvatar =& $avatarArr[0];
35 }
36 }
37
38 public function _getId()
39 {
40 return isset($_REQUEST['uid']) ? (int)xoops_getrequest('uid') : 0;
41 }
42
43 public function &_getHandler()
44 {
45 $handler =& xoops_getmodulehandler('users', 'user');
46 return $handler;
47 }
48
49 public function _setupActionForm()
50 {
51 $this->mActionForm =new User_AvatarSelectForm();
52 $this->mActionForm->prepare();
53 }
54
55 /***
56 * Return false.
57 * If a user requests dummy uid, kick out him!
58 */
59 public function isEnableCreate()
60 {
61 return false;
62 }
63
64 /***
65 * Return true.
66 * This action should not be used by a guest user.
67 */
68 public function isSecure()
69 {
70 return true;
71 }
72
73 /***
74 * Check whether a current user can access this action.
75 * 1) A specified user has to exist.
76 * 2) A current user has to equal the specified user, or a current user has
77 * to be a administrator.
78 * @param $controller
79 * @param $xoopsUser
80 * @param $moduleConfig
81 * @return bool
82 */
83 public function hasPermission(&$controller, &$xoopsUser, $moduleConfig)
84 {
85 if (!is_object($this->mObject)) {
86 return false;
87 }
88
89 if ($controller->mRoot->mContext->mUser->isInRole('Module.user.Admin')) {
90 return true;
91 } elseif ($this->mObject->get('uid') == $xoopsUser->get('uid')) {
92 return ($this->mObject->get('posts') >= $this->_mMinPost);
93 }
94
95 return false;
96 }
97
98 public function _doExecute()
99 {
100 if ($this->mObjectHandler->insert($this->mObject)) {
101 $avatarHandler =& xoops_getmodulehandler('avatar', 'user');
102
103 //
104 // If old avatar is a cutom avatar, delete it.
105 //
106 if (null != $this->mOldAvatar && 'C' == $this->mOldAvatar->get('avatar_type')) {
107 $avatarHandler->delete($this->mOldAvatar);
108 }
109
110 //
111 // Delete all of links about this user from avatar_user_link.
112 //
113 $linkHandler =& xoops_getmodulehandler('avatar_user_link', 'user');
114 $linkHandler->deleteAllByUser($this->mObject);
115
116 //
117 // Insert new link.
118 //
119 $criteria =new Criteria('avatar_file', $this->mObject->get('user_avatar'));
120 $avatarArr =& $avatarHandler->getObjects($criteria);
121 if (is_array($avatarArr) && is_object($avatarArr[0])) {
122 $link =& $linkHandler->create();
123 $link->set('avatar_id', $avatarArr[0]->get('avatar_id'));
124 $link->set('user_id', $this->mObject->get('uid'));
125 $linkHandler->insert($link);
126 }
127
128 return true;
129 }
130 }
131
132 /***
133 * This action always kicks out GET request.
134 * @param $controller
135 * @param $xoopsUser
136 */
137 public function getDefaultView(&$controller, &$xoopsUser)
138 {
139 $controller->executeForward(XOOPS_URL . '/edituser.php?op=avatarform&uid=' . $this->mObject->get('uid'));
140 }
141
142 public function executeViewSuccess(&$controller, &$xoopsUser, &$renderSystem)
143 {
144 $controller->executeForward(XOOPS_URL . '/userinfo.php?op=avatarform&uid=' . $this->mActionForm->get('uid'));
145 }
146
147 public function executeViewError(&$controller, &$xoopsUser, &$renderSystem)
148 {
149 $controller->executeRedirect(XOOPS_URL . '/userinfo.php?op=avatarform&uid=' . $this->mActionForm->get('uid'), 1, _MD_USER_ERROR_DBUPDATE_FAILED);
150 }
151}