1: <?php
2:
3: defined('_JOOS_CORE') or exit();
4:
5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
18: class actionsUsers extends joosController
19: {
20: public static function action_before()
21: {
22: joosBreadcrumbs::instance()->add('Пользователи');
23: }
24:
25:
26: public static function index()
27: {
28: $page = isset(self::$param['page']) ? self::$param['page'] : 0;
29:
30: $users = new modelUsers;
31: $users_count = $users->count('WHERE state=1');
32:
33: joosDocument::instance()->set_page_title('Список пользователей')->add_meta_tag('description', 'Список пользователей сайта');
34:
35: return array('users_count' => $users_count, 'page' => $page);
36: }
37:
38:
39: public static function profile_view()
40: {
41: $user_name = self::$param['user_name'];
42:
43: $user = new modelUsers;
44: $user->load_by_field('user_name', $user_name);
45:
46: $user->id ? null : joosRoute::redirect(JPATH_SITE, 'Пользователь не найден');
47:
48: joosDocument::instance()->set_page_title($user->user_name);
49:
50: joosBreadcrumbs::instance()->add($user->user_name);
51:
52: return array('user' => $user);
53: }
54:
55:
56: public static function profile_edit()
57: {
58: if (modelUsers::is_loged() == false) {
59: joosRoute::redirect(JPATH_SITE, 'Вы не авторизованы');
60: }
61:
62: $user = modelUsers::current();
63:
64: if (joosCore::user()->id != $user->id) {
65: joosRoute::redirect(JPATH_SITE, 'Ай, ай!');
66: }
67:
68:
69: if (joosRequest::is_post()) {
70:
71: return self::profile_edit_save();
72: } else {
73:
74: joosDocument::instance()->set_page_title($user->user_name);
75:
76: joosBreadcrumbs::instance()->add($user->user_name);
77:
78: joosFilter::make_safe($user);
79:
80: return array('user' => $user);
81: }
82: }
83:
84: 85: 86: 87: 88: 89:
90: private static function profile_edit_save()
91: {
92: joosCSRF::check_code(1);
93:
94: $user = modelUsers::current();
95:
96:
97: $old_password = joosRequest::post('password_old');
98: $new_password = joosRequest::post('password_new');
99:
100: if ($old_password && $new_password) {
101: if (modelUsers::check_password($old_password, $user->password)) {
102:
103: $_POST['password'] = modelUsers::prepare_password($new_password);
104: } else {
105:
106: joosRoute::redirect(joosRoute::href('user_view', array('id' => $user->id, 'user_name' => $user->user_name)), 'Неправильно введён пароль');
107: }
108: }
109:
110: $user->save($_POST);
111:
112: joosRoute::redirect(joosRoute::href('user_view', array('id' => $user->id, 'user_name' => $user->user_name)), 'Данные успешно сохранены');
113:
114: return array('user' => $user);
115: }
116:
117: 118: 119: 120: 121: 122:
123: public static function login()
124: {
125: joosCSRF::check_code(1);
126:
127: $user_name = joosRequest::post('user_name');
128: $password = joosRequest::post('password');
129:
130: modelUsers::login($user_name, $password);
131: }
132:
133: 134: 135:
136: public static function logout()
137: {
138: joosCSRF::check_code(1);
139:
140: modelUsers::logout();
141:
142: $return = joosRequest::param('return');
143: if ($return && !(strpos($return, 'registration') || strpos($return, 'login'))) {
144: joosRoute::redirect($return);
145: } elseif (isset($_SERVER['HTTP_REFERER'])) {
146: joosRoute::redirect($_SERVER['HTTP_REFERER']);
147: } else {
148: joosRoute::redirect(JPATH_SITE);
149: }
150: }
151:
152: public static function register()
153: {
154: joosDocument::instance()->set_page_title('Регистрация');
155:
156: joosDocument::$config['seotag'] = false;
157:
158: $validator = UserValidations::registration();
159:
160: if ($_POST) {
161: self::save_register($validator);
162: } else {
163: return array('user' => new modelUsers, 'validator' => $validator);
164: }
165: }
166:
167: public static function check()
168: {
169: $param = explode('?', $_SERVER['REQUEST_URI']);
170: parse_str($param[1], $datas);
171:
172: if (isset($datas['user_name']) && joosString::trim($datas['user_name']) != '') {
173: $user = new modelUsers;
174: $user->user_name = $datas['user_name'];
175: $ret = $user->find() ? 0 : 1;
176:
177: $ret = preg_match(JUSER_NAME_REGEX, $datas['user_name']) ? $ret : false;
178:
179: echo $ret ? 'true' : 'false';
180: exit();
181: }
182:
183: if (isset($datas['email']) && joosString::trim($datas['email']) != '') {
184: $user = new modelUsers;
185: $user->email = $datas['email'];
186: echo $user->find() ? 'false' : 'true';
187: exit();
188: }
189: }
190:
191: private static function save_register($validator)
192: {
193: $user = new modelUsers;
194: $user->bind($_POST);
195:
196: if ($user->check($validator) && $user->save($_POST)) {
197: modelUsers::login($user->user_name, $_POST['password']);
198: } else {
199: joosRoute::redirect(JPATH_SITE);
200:
201: }
202: }
203:
204: 205: 206:
207: public static function lost_password()
208: {
209: $_POST ? self::send_new_pass() : self::lost_password();
210: }
211:
212: 213: 214:
215:
216: public static function send_new_pass()
217: {
218: }
219:
220: }
221: