Joostina CMS / CMF v2.* API
  • Docs
  • Package
  • Class
  • Tree
  • Todo
Overview

Packages

  • Components
    • Acls
      • Models
        • Admin
        • Site
    • BlogCategory
      • Models
        • Admin
        • Site
    • Blogs
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • Coder
      • Controllers
        • Admin
      • Models
        • Admin
    • Comments
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • CommentsCounter
      • Models
        • Admin
        • Site
    • Mainpage
      • Controllers
        • Site
    • News
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • Pages
      • Controllers
        • Admin
        • Site
      • Models
        • Site
    • Search
      • Controllers
        • Site
    • Site
      • Controllers
        • Admin
        • Site
    • Sitemap
      • Controllers
        • Admin
        • Site
      • Models
        • Admin
        • Site
    • Test
      • Controllers
        • Site
    • Torrents
      • Controllers
        • Site
    • Users
      • Controllers
        • Admin
        • Site
      • Models
        • Admin
        • Site
  • Compression
  • Core
    • Libraries
      • Arhive
      • Array
      • Attached
      • Autoadmin
      • Autoloader
      • Benchmark
      • Breadcrumbs
      • Cache
      • Config
      • Cookie
      • Csrf
      • Database
        • Drivers
          • Interfaces
      • Datetime
      • Debug
      • Editor
      • Events
      • File
      • Filter
      • Flashmessage
      • Folder
      • Hit
      • Html
      • Image
      • Inflector
      • Inputfilter
      • Libraries
      • Mail
      • Module
      • Nestedset
      • Pager
      • Pages
      • Params
      • Randomizer
      • Request
      • RobotLoader
      • Route
      • Security
      • Session
      • Static
      • String
      • Text
      • Trash
      • Validate
  • Email
  • Extra
    • Libraries
      • Basket
  • Joostina
    • Controller
    • Core
    • Document
  • JSMin
  • Libraries
    • Extra
      • Basket
        • Models
          • Site
  • None
  • Plugins
    • Autoadmin
    • Editor
    • Sitemap
  • SimpleMail
  • Vendors
    • Libraries
      • Email

Classes

  • actionsAjaxUsers
  • actionsUsers
  1: <?php
  2: 
  3: defined('_JOOS_CORE') or exit();
  4: 
  5: /**
  6:  * Компонент управления пользователями
  7:  * Контроллер сайта
  8:  *
  9:  * @version    1.0
 10:  * @package    Components\Users
 11:  * @subpackage Controllers\Site
 12:  * @author     Joostina Team <info@joostina.ru>
 13:  * @copyright  (C) 2007-2012 Joostina Team
 14:  * @license    MIT License http://www.opensource.org/licenses/mit-license.php
 15:  * Информация об авторах и лицензиях стороннего кода в составе Joostina CMS: docs/copyrights
 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:         // если данные пришли POST методом - то это сохранение профиля
 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:      * @static
 86:      * @return array
 87:      *
 88:      * @todo проверить ошибку с подстановкой левого id в сохранении
 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:      * @static
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:             //userHtml::register($user, $validator);
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:     // TODO обновить до актуального
216:     public static function send_new_pass()
217:     {
218:     }
219: 
220: }
221: 
Joostina CMS / CMF v2.* API API documentation generated by ApiGen 2.6.1 – Template adapted by @olvlv and Joostina Team