public function run($ctype_name = false) { if (!$ctype_name) { cmsCore::error404(); } $feed = $this->model->getFeedByCtypeName($ctype_name); if (!$feed || !$feed['is_enabled']) { cmsCore::error404(); } $category_id = $this->request->get('category', false); $user_id = $this->request->get('user', false); $content_model = cmsCore::getModel('content'); if ($category_id) { $category = $content_model->getCategory($ctype_name, $category_id); } if ($user_id) { $author = cmsCore::getModel('users')->getUser($user_id); } if (!empty($category)) { $content_model->filterCategory($ctype_name, $category, true); } if (!empty($author)) { $content_model->filterEqual('user_id', $user_id); } $content_model->orderBy('id', 'desc')->limit($feed['limit']); $feed['items'] = $content_model->getContentItems($ctype_name); $feed = cmsEventsManager::hook('before_render_' . $ctype_name . '_feed_list', $feed); header('Content-type: application/rss+xml; charset=utf-8'); return cmsTemplate::getInstance()->renderPlain('feed', array('feed' => $feed, 'category' => isset($category) ? $category : false, 'author' => isset($author) ? $author : false)); }
public function run($ctype_id) { if (!$ctype_id) { cmsCore::error404(); } $content_model = cmsCore::getModel('content'); $ctype = $content_model->getContentType($ctype_id); if (!$ctype) { cmsCore::error404(); } $form = $this->getForm('ctypes_dataset', array('add', $ctype['id'])); $is_submitted = $this->request->has('submit'); $fields = $content_model->getContentFields($ctype['name']); $dataset = array('sorting' => array(array('by' => 'date_pub', 'to' => 'desc'))); if ($is_submitted) { $dataset = $form->parse($this->request, $is_submitted); $dataset['filters'] = $this->request->get('filters'); $dataset['sorting'] = $this->request->get('sorting'); $errors = $form->validate($this, $dataset); if (!$errors) { $dataset_id = $content_model->addContentDataset($dataset, $ctype); if ($dataset_id) { cmsUser::addSessionMessage(sprintf(LANG_CP_DATASET_CREATED, $dataset['title']), 'success'); } $this->redirectToAction('ctypes', array('datasets', $ctype['id'])); } if ($errors) { cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error'); } } return cmsTemplate::getInstance()->render('ctypes_dataset', array('do' => 'add', 'ctype' => $ctype, 'dataset' => $dataset, 'fields' => $fields, 'form' => $form, 'errors' => isset($errors) ? $errors : false)); }
public function run($tag_id) { if (!$tag_id) { cmsCore::error404(); } $tags_model = cmsCore::getModel('tags'); $form = $this->getForm('tag'); $is_submitted = $this->request->has('submit'); $tag = $tags_model->getTag($tag_id); $original_tag = $tag['tag']; if ($is_submitted) { $tag = $form->parse($this->request, $is_submitted); $errors = $form->validate($this, $tag); if ($original_tag == $tag['tag']) { $this->redirectToAction(); } if (!$errors) { $duplicate_id = $tags_model->getTagId($tag['tag']); if (!$duplicate_id) { $tags_model->updateTag($tag_id, $tag); } if ($duplicate_id) { $tags_model->mergeTags($tag_id, $duplicate_id); cmsUser::addSessionMessage(sprintf(LANG_TAGS_MERGED, $original_tag, $tag['tag']), 'success'); } $this->redirectToAction(); } if ($errors) { cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error'); } } return cmsTemplate::getInstance()->render('backend/tag', array('do' => 'edit', 'tag' => $tag, 'form' => $form, 'errors' => isset($errors) ? $errors : false)); }
public function run($id = false) { if (!$id) { cmsCore::error404(); } $widgets_model = cmsCore::getModel('widgets'); cmsCore::loadAllControllersLanguages(); $page = $widgets_model->getPage($id); if (!$page) { cmsCore::error404(); } $form = $this->getForm('widgets_page'); if (!$page['is_custom']) { $form->removeField('title', 'title'); } $is_submitted = $this->request->has('submit'); if ($is_submitted) { $page = $form->parse($this->request, $is_submitted); $errors = $form->validate($this, $page); if (!$errors) { $widgets_model->updatePage($id, $page); $this->redirectToAction('widgets'); } if ($errors) { cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error'); } } return cmsTemplate::getInstance()->render('widgets_page', array('do' => 'edit', 'page' => $page, 'form' => $form, 'errors' => isset($errors) ? $errors : false)); }
public function run() { $camera = urldecode($this->request->get('name', '')); if (!$camera) { cmsCore::error404(); } if (cmsUser::isAllowed('albums', 'view_all')) { $this->model->disablePrivacyFilter(); } $this->model->filterEqual('camera', $camera); $page = $this->request->get('photo_page', 1); $perpage = empty($this->options['limit']) ? 16 : $this->options['limit']; $this->model->limitPagePlus($page, $perpage); $this->model->orderBy($this->options['ordering'], 'desc'); $photos = $this->getPhotosList(); if (!$photos) { cmsCore::error404(); } if ($photos && count($photos) > $perpage) { $has_next = true; array_pop($photos); } else { $has_next = false; } $ctype = cmsCore::getModel('content')->getContentTypeByName('albums'); $this->cms_template->render('camera', array('page_title' => sprintf(LANG_PHOTOS_CAMERA_TITLE, $camera), 'ctype' => $ctype, 'page' => $page, 'row_height' => $this->getRowHeight(), 'user' => $this->cms_user, 'item' => array('id' => 0, 'user_id' => 0, 'url_params' => array('camera' => $camera), 'base_url' => href_to('photos', 'camera-' . urlencode($camera))), 'item_type' => 'camera', 'photos' => $photos, 'is_owner' => cmsUser::isAllowed('albums', 'delete', 'all'), 'has_next' => $has_next, 'hooks_html' => cmsEventsManager::hookAll('photo_camera_html', $camera), 'preset_small' => $this->options['preset_small'])); }
public function store($value, $is_submitted, $old_value = null) { $config = cmsConfig::getInstance(); $files_model = cmsCore::getModel('files'); if ($value) { $file = cmsModel::yamlToArray($old_value); $path = $config->upload_path . $file['path']; @unlink($path); $files_model->deleteFile($file['id']); $old_value = null; } $uploader = new cmsUploader(); if (!$uploader->isUploaded($this->name)) { return $old_value; } $allowed_extensions = $this->getOption('extensions'); $max_size_mb = $this->getOption('max_size_mb'); if (!trim($allowed_extensions)) { $allowed_extensions = false; } if (!$max_size_mb) { $max_size_mb = 0; } $result = $uploader->upload($this->name, $allowed_extensions, $max_size_mb * 1048576); if (!$result['success']) { if (!empty($result['path'])) { $uploader->remove($result['path']); } cmsUser::addSessionMessage($result['error'], 'error'); return null; } $file = $files_model->registerFile($result['url'], $result['name']); return array('id' => $file['id'], 'url_key' => $file['url_key'], 'name' => $result['name'], 'size' => $result['size'], 'path' => $result['url']); }
public function run($data) { if (empty($this->options['is_hash_tag'])) { return $data; } list($ctype, $items) = $data; if (empty($items)) { return $data; } $fields = cmsCore::getModel('content')->filterIn('type', array('text', 'html'))->getContentFields($ctype['name']); if (!$fields) { return $data; } foreach ($items as $item) { foreach ($fields as $field) { if (!$field['is_in_list'] || empty($field['options']['in_fulltext_search'])) { continue; } if (!empty($item[$field['name']])) { $items[$item['id']][$field['name']] = $this->parseHashTag($item[$field['name']]); } } } return array($ctype, $items); }
public function init() { return array(array('type' => 'fieldset', 'title' => LANG_ACTIVITY_OPT_TYPES, 'childs' => array(new fieldList('types', array('is_multiple' => true, 'generator' => function () { $types = cmsCore::getModel('activity')->getTypes(); return array_collection_to_list($types, 'id', 'title'); })))), array('type' => 'fieldset', 'title' => LANG_LIST_LIMIT, 'childs' => array(new fieldNumber('limit', array('default' => 15, 'rules' => array(array('required'))))))); }
public function run() { $taxonomy_model = cmsCore::getModel('taxonomy'); $vocabularies = $taxonomy_model->getVocabularies(); $grid = $this->loadDataGrid('terms'); return cmsTemplate::getInstance()->render('backend/vocabularies', array('vocabularies' => $vocabularies, 'grid' => $grid)); }
public function run($ctype_id, $parent_id) { if (!$this->request->isAjax()) { cmsCore::error404(); } $content_model = cmsCore::getModel('content'); $ctype = $content_model->getContentType($ctype_id); $category = $content_model->getCategory($ctype['name'], $parent_id); $grid = $this->loadDataGrid('content_items', $ctype['name']); $content_model->setPerPage(admin::perpage); $filter = array(); $filter_str = $this->request->get('filter'); if ($filter_str) { parse_str($filter_str, $filter); $content_model->applyGridFilter($grid, $filter); if (!empty($filter['advanced_filter'])) { parse_str($filter['advanced_filter'], $dataset_filters); if (!empty($dataset_filters['dataset'])) { $dataset_id = $dataset_filters['dataset']; $dataset = $content_model->getContentDataset($dataset_id); $content_model->applyDatasetFilters($dataset, true); } $content_model->applyDatasetFilters($dataset_filters); } } $content_model->filterCategory($ctype['name'], $category, $ctype['is_cats_recursive']); $content_model->disableApprovedFilter(); $content_model->disablePubFilter(); $total = $content_model->getContentItemsCount($ctype['name']); $perpage = isset($filter['perpage']) ? $filter['perpage'] : admin::perpage; $pages = ceil($total / $perpage); $items = $content_model->getContentItems($ctype['name']); cmsTemplate::getInstance()->renderGridRowsJSON($grid, $items, $total, $pages); $this->halt(); }
public function init($options, $template_name) { return array(array('type' => 'fieldset', 'title' => LANG_OPTIONS, 'childs' => array(new fieldList('options:menu', array('title' => LANG_MENU, 'generator' => function ($item) { $menu_model = cmsCore::getModel('menu'); $tree = $menu_model->getMenus(); $items = array(); if ($tree) { foreach ($tree as $item) { $items[$item['name']] = $item['title']; } } return $items; })), new fieldList('options:template', array('title' => LANG_WD_MENU_TEMPLATE, 'hint' => LANG_WD_MENU_TEMPLATE_HINT, 'generator' => function ($item) use($template_name) { $default_tpls = cmsCore::getFilesList('templates/default/assets/ui/', 'menu*.tpl.php'); $current_tpls = cmsCore::getFilesList('templates/' . $template_name . '/assets/ui/', 'menu*.tpl.php'); $tpls = array_unique(array_merge($current_tpls, $default_tpls)); $items = array(); if ($tpls) { foreach ($tpls as $tpl) { $items[str_replace('.tpl.php', '', $tpl)] = str_replace('.tpl.php', '', $tpl); } } return $items; })), new fieldCheckbox('options:is_detect', array('title' => LANG_WD_MENU_DETECT_ACTIVE, 'default' => 1)), new fieldNumber('options:max_items', array('title' => LANG_WD_MENU_MAX_ITEMS, 'hint' => LANG_WD_MENU_MAX_ITEMS_HINT, 'default' => 0))))); }
public function run($controller_name) { if (!$controller_name) { cmsCore::error404(); } $controller_info = $this->model->getControllerInfo($controller_name); if (!$controller_info || !$controller_info['is_external']) { cmsCore::error404(); } if ($controller_info['is_backend']) { $backend_context = $this->request->isAjax() ? cmsRequest::CTX_AJAX : cmsRequest::CTX_INTERNAL; $backend_request = new cmsRequest($this->request->getData(), $backend_context); $backend_controller = $this->loadControllerBackend($controller_info['name'], $backend_request); // смотрим специальный экшен if ($backend_controller->isActionExists('delete_component')) { $backend_controller->redirectToAction('delete_component'); } } // нет бэкэенда или экшена, удаляем через метод модели контроллера // если в модели контроллера нет метода deleteController // будет использоваться из основной модели // который просто удалит запись в cms_controllers if (cmsCore::isModelExists($controller_info['name'])) { cmsCore::getModel($controller_info['name'])->deleteController($controller_info['id']); } else { $model = new cmsModel(); $model->deleteController($controller_info['id']); } cmsUser::addSessionMessage(sprintf(LANG_CP_COMPONENT_IS_DELETED, $controller_info['title']), 'success'); $this->redirectToAction('controllers'); }
public function run() { if (!$this->request->isAjax()) { cmsCore::error404(); } if (preg_match('/^\\/[0-9a-zA-Zа-яёА-ЯЁ\\-\\_\\.\\/\\*?&=]+$/u', $this->request->get('link_from'))) { if (preg_match('/[\\/\\*]+$/u', $this->request->get('link_from'))) { $type = '2'; } elseif (preg_match('/^\\/[0-9a-zA-Zа-яёА-ЯЁ\\-\\_\\.\\/?&=]+$/u', $this->request->get('link_from'))) { $type = '1'; } else { $res['error']['incorrect_link_from'] = 1; } } else { $res['error']['incorrect_link_from'] = 1; } if (!preg_match('/^\\/[0-9a-zA-Zа-яёА-ЯЁ\\-\\_\\.\\/?&=]+$/u', $this->request->get('link_to')) and $this->request->get('header') != '410') { $res['error']['incorrect_link_to'] = 1; } $link_to = $this->request->get('link_to'); if ($this->request->get('header') === '410') { $link_to = '--//--'; } if (!isset($res['error'])) { $model = cmsCore::getModel('shredirect'); $data = array('link_from' => $this->request->get('link_from'), 'type' => $type, 'link_to' => $link_to, 'header' => $this->request->get('header')); if ($model->addShredirect($data)) { $res['reply'] = LANG_SHREDIRECT_SUCCESS_ADD; } else { $res['error']['bd'] = LANG_SHREDIRECT_ERROR_BD; } } echo json_encode($res); die; }
public function run() { if (cmsUser::isLogged()) { $this->redirectToHome(); } $users_model = cmsCore::getModel('users'); $form = $this->getForm('restore'); $data = array(); $is_submitted = $this->request->has('submit'); if ($is_submitted) { $data = $form->parse($this->request, $is_submitted); $errors = $form->validate($this, $data); if ($errors) { cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error'); } if (!$errors) { $user = $users_model->getUserByEmail($data['email']); if (!$user) { cmsUser::addSessionMessage(LANG_EMAIL_NOT_FOUND, 'error'); } else { $pass_token = string_random(32, $user['email']); $users_model->updateUserPassToken($user['id'], $pass_token); $messenger = cmsCore::getController('messages'); $to = array('email' => $user['email'], 'name' => $user['nickname']); $letter = array('name' => 'reg_restore'); $messenger->sendEmail($to, $letter, array('nickname' => $user['nickname'], 'page_url' => href_to_abs('auth', 'reset', $pass_token), 'valid_until' => html_date(date('d.m.Y H:i', time() + 24 * 3600), true))); cmsUser::addSessionMessage(LANG_TOKEN_SENDED, 'success'); } } } return cmsTemplate::getInstance()->render('restore', array('data' => $data, 'form' => $form, 'errors' => isset($errors) ? $errors : false)); }
public function run($id) { if (!$id) { cmsCore::error404(); } $images_model = cmsCore::getModel('images'); $form = $this->getForm('preset', array('edit')); $is_submitted = $this->request->has('submit'); $preset = $images_model->getPreset($id); if ($preset['is_internal']) { $form->removeFieldset('basic'); } if ($is_submitted) { $preset = $form->parse($this->request, $is_submitted); $errors = $form->validate($this, $preset); if (!$errors) { $images_model->updatePreset($id, $preset); $this->redirectToAction('presets'); } if ($errors) { cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error'); } } return cmsTemplate::getInstance()->render('backend/preset', array('do' => 'edit', 'preset' => $preset, 'form' => $form, 'errors' => isset($errors) ? $errors : false)); }
public function run($group_id = false) { $users_model = cmsCore::getModel('users'); $form = $this->getForm('user', array('add')); $is_submitted = $this->request->has('submit'); $user = $form->parse($this->request, $is_submitted); if (!$is_submitted) { $user['groups'] = array($group_id); } if ($is_submitted) { $errors = $form->validate($this, $user); if (mb_strlen($user['password1']) < 6) { $errors['password1'] = sprintf(ERR_VALIDATE_MIN_LENGTH, 6); } if (!$errors) { $result = $users_model->addUser($user); if ($result['success']) { cmsUser::addSessionMessage(sprintf(LANG_CP_USER_CREATED, $user['nickname']), 'success'); $this->redirectToAction('users'); } else { $errors = $result['errors']; } } if ($errors) { cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error'); } } return cmsTemplate::getInstance()->render('user', array('do' => 'add', 'user' => $user, 'form' => $form, 'errors' => isset($errors) ? $errors : false)); }
public function run($ctype_name) { $values = $this->request->get('value'); if (!$values || !$ctype_name) { cmsCore::error404(); } $content_model = cmsCore::getModel('content'); $ctype = $content_model->getContentTypeByName($ctype_name); if (!$ctype) { cmsCore::error404(); } $rules = cmsPermissions::getRulesList('content'); list($ctype, $rules, $values) = cmsEventsManager::hook('content_perms', array($ctype, $rules, $values)); list($ctype, $rules, $values) = cmsEventsManager::hook("content_{$ctype['name']}_perms", array($ctype, $rules, $values)); $users_model = cmsCore::getModel('users'); $groups = $users_model->getGroups(false); // перебираем правила foreach ($rules as $rule) { // если для этого правила вообще ничего нет, // то присваиваем null if (empty($values[$rule['id']])) { $values[$rule['id']] = null; continue; } // перебираем группы, заменяем на нуллы // значения отсутствующих правил foreach ($groups as $group) { if (empty($values[$rule['id']][$group['id']])) { $values[$rule['id']][$group['id']] = null; } } } cmsPermissions::savePermissions($ctype_name, $values); $this->redirectBack(); }
public function run() { $cat_id = $this->getOption('category_id'); $ctype_id = $this->getOption('ctype_id'); $dataset_id = $this->getOption('dataset'); $image_field = $this->getOption('image_field'); $big_image_field = $this->getOption('big_image_field'); $big_image_preset = $this->getOption('big_image_preset'); $teaser_fields = $this->getOption('teaser_field'); $limit = $this->getOption('limit', 10); $delay = $this->getOption('delay', 5); $teaser_len = $this->getOption('teaser_len', 100); $model = cmsCore::getModel('content'); $ctype = $model->getContentType($ctype_id); if (!$ctype) { return false; } if ($cat_id) { $category = $model->getCategory($ctype['name'], $cat_id); } else { $category = false; } if ($dataset_id) { $dataset = $model->getContentDataset($dataset_id); if ($dataset) { $model->applyDatasetFilters($dataset); } else { $dataset_id = false; } } if ($category) { $model->filterCategory($ctype['name'], $category, true); } // Приватность // флаг показа только названий $hide_except_title = !empty($ctype['options']['privacy_type']) && $ctype['options']['privacy_type'] == 'show_title'; // Сначала проверяем настройки типа контента if (!empty($ctype['options']['privacy_type']) && in_array($ctype['options']['privacy_type'], array('show_title', 'show_all'), true)) { $model->disablePrivacyFilter(); if ($ctype['options']['privacy_type'] != 'show_title') { $hide_except_title = false; } } // А потом, если разрешено правами доступа, отключаем фильтр приватности if (cmsUser::isAllowed($ctype['name'], 'view_all')) { $model->disablePrivacyFilter(); $hide_except_title = false; } // Скрываем записи из скрытых родителей (приватных групп и т.п.) $model->filterHiddenParents(); list($ctype, $model) = cmsEventsManager::hook('content_list_filter', array($ctype, $model)); list($ctype, $model) = cmsEventsManager::hook("content_{$ctype['name']}_list_filter", array($ctype, $model)); $items = $model->limit($limit)->getContentItems($ctype['name']); if (!$items) { return false; } list($ctype, $items) = cmsEventsManager::hook("content_before_list", array($ctype, $items)); list($ctype, $items) = cmsEventsManager::hook("content_{$ctype['name']}_before_list", array($ctype, $items)); return array('ctype' => $ctype, 'teaser_len' => $teaser_len, 'hide_except_title' => $hide_except_title, 'delay' => $delay, 'image_field' => $image_field, 'big_image_field' => $big_image_field, 'big_image_preset' => $big_image_preset, 'teaser_field' => $teaser_fields, 'items' => $items); }
public function run($photo_id = null) { if (!$this->request->isAjax()) { cmsCore::error404(); } if (!$photo_id) { $photo_id = $this->request->get('id'); if (!$photo_id) { cmsCore::error404(); } } $photo = $this->model->getPhoto($photo_id); $success = true; // проверяем наличие доступа $user = cmsUser::getInstance(); if (!cmsUser::isAllowed('albums', 'edit')) { $success = false; } if (!cmsUser::isAllowed('albums', 'edit', 'all') && $photo['user_id'] != $user->id) { $success = false; } if (!$success) { cmsTemplate::getInstance()->renderJSON(array('success' => false)); } $album = cmsCore::getModel('content')->getContentItem('albums', $photo['album_id']); $this->model->deletePhoto($photo_id); $this->model->setRandomAlbumCoverImage($photo['album_id']); cmsTemplate::getInstance()->renderJSON(array('success' => true, 'album_url' => href_to('albums', $album['slug'] . '.html'))); }
public function run($ctype_id, $dataset_id) { if (!$ctype_id || !$dataset_id) { cmsCore::error404(); } $content_model = cmsCore::getModel('content'); $ctype = $content_model->getContentType($ctype_id); if (!$ctype) { cmsCore::error404(); } $form = $this->getForm('ctypes_dataset', array('edit', $ctype['id'])); $dataset = $old_dataset = $content_model->getContentDataset($dataset_id); $fields = $content_model->getContentFields($ctype['name']); if ($this->request->has('submit')) { $dataset = $form->parse($this->request, true); $dataset['filters'] = $this->request->get('filters'); $dataset['sorting'] = $this->request->get('sorting'); $errors = $form->validate($this, $dataset); if (!$errors) { $content_model->updateContentDataset($dataset_id, $dataset, $ctype, $old_dataset); $this->redirectToAction('ctypes', array('datasets', $ctype['id'])); } if ($errors) { cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error'); } } return $this->cms_template->render('ctypes_dataset', array('do' => 'edit', 'ctype' => $ctype, 'dataset' => $dataset, 'fields' => $fields, 'form' => $form, 'errors' => isset($errors) ? $errors : false)); }
public function processUpload($album_id) { $config = cmsConfig::getInstance(); $uploader = new cmsUploader(); $result = $uploader->upload('qqfile'); if (!$result['success']) { cmsTemplate::getInstance()->renderJSON($result); $this->halt(); } $preset = array('width' => 600, 'height' => 460, 'is_square' => false, 'is_watermark' => false); if (!empty($this->options['preset'])) { $preset = cmsCore::getModel('images')->getPresetByName($this->options['preset']); } $result['paths'] = array('big' => $uploader->resizeImage($result['path'], array('width' => $preset['width'], 'height' => $preset['height'], 'square' => $preset['is_square'])), 'normal' => $uploader->resizeImage($result['path'], array('width' => 160, 'height' => 160, 'square' => true)), 'small' => $uploader->resizeImage($result['path'], array('width' => 64, 'height' => 64, 'square' => true)), 'original' => $result['url']); if ($preset['is_watermark'] && !empty($preset['wm_image'])) { $images_controller = cmsCore::getController('images'); $images_controller->addWatermark($result['paths']['big'], $preset['wm_image']['original'], $preset['wm_origin'], $preset['wm_margin']); } $result['filename'] = basename($result['path']); if (empty($this->options['is_origs'])) { @unlink($result['path']); unset($result['paths']['original']); } unset($result['path']); $result['url'] = $config->upload_host . '/' . $result['paths']['small']; $result['id'] = $this->model->addPhoto($album_id, $result['paths']); cmsTemplate::getInstance()->renderJSON($result); $this->halt(); }
public function run($pass_token) { if (!$pass_token) { cmsCore::error404(); } if (cmsUser::isLogged()) { $this->redirectToHome(); } $users_model = cmsCore::getModel('users'); $user = $users_model->getUserByPassToken($pass_token); if (!$user) { cmsCore::error404(); } $users_model->unlockUser($user['id']); $users_model->clearUserPassToken($user['id']); cmsEventsManager::hook('user_registered', $user); cmsUser::addSessionMessage($this->options['reg_auto_auth'] ? LANG_REG_SUCCESS_VERIFIED_AND_AUTH : LANG_REG_SUCCESS_VERIFIED, 'success'); // авторизуем пользователя автоматически if ($this->options['reg_auto_auth']) { $user = cmsEventsManager::hook('user_login', $user); cmsUser::sessionSet('user', array('id' => $user['id'], 'groups' => $user['groups'], 'time_zone' => $user['time_zone'], 'perms' => cmsUser::getPermissions($user['groups']), 'is_admin' => $user['is_admin'])); $update_data = array('ip' => cmsUser::getIp()); $this->model->update('{users}', $user['id'], $update_data, true); cmsEventsManager::hook('auth_login', $user['id']); } $this->redirect($this->getAuthRedirectUrl($this->options['first_auth_redirect'])); }
public function run($id) { if (!$id) { cmsCore::error404(); } $users_model = cmsCore::getModel('users'); $group = $users_model->getGroup($id); if (!$group) { cmsCore::error404(); } $controllers = cmsPermissions::getControllersWithRules(); $owners = array(); foreach ($controllers as $controller_name) { $controller = cmsCore::getController($controller_name); $subjects = $controller->getPermissionsSubjects(); $rules = cmsPermissions::getRulesList($controller_name); $values = array(); foreach ($subjects as $subject) { $values[$subject['name']] = cmsPermissions::getPermissions($subject['name']); } $owners[$controller_name] = array('subjects' => $subjects, 'rules' => $rules, 'values' => $values); } $template = cmsTemplate::getInstance(); $template->setMenuItems('users_group', array(array('title' => LANG_CONFIG, 'url' => href_to($this->name, 'users', array('group_edit', $id))), array('title' => LANG_PERMISSIONS, 'url' => href_to($this->name, 'users', array('group_perms', $id))))); return $template->render('users_group_perms', array('group' => $group, 'owners' => $owners)); }
public function actionPermsSave($subject = '') { if (empty($this->useDefaultPermissionsAction)) { cmsCore::error404(); } $values = $this->request->get('value'); if (!$values) { cmsCore::error404(); } $rules = cmsPermissions::getRulesList($this->name); $users_model = cmsCore::getModel('users'); $groups = $users_model->getGroups(false); // перебираем правила foreach ($rules as $rule) { // если для этого правила вообще ничего нет, // то присваиваем null if (!isset($values[$rule['id']])) { $values[$rule['id']] = null; continue; } // перебираем группы, заменяем на нуллы // значения отсутствующих правил foreach ($groups as $group) { if (!isset($values[$rule['id']][$group['id']])) { $values[$rule['id']][$group['id']] = null; } } } cmsPermissions::savePermissions($subject, $values); $this->redirectBack(); }
private function sendInvites($profile, $emails_list) { $results = array('success' => array(), 'failed' => array()); $emails = string_explode_list($emails_list); $auth_controller = cmsCore::getController('auth'); $auth_model = cmsCore::getModel('auth'); $messenger = cmsCore::getController('messages'); foreach ($emails as $email) { if ($this->validate_email($email) !== true) { $results['failed'][$email] = ERR_VALIDATE_EMAIL; continue; } if ($this->model->getUserByEmail($email)) { $results['failed'][$email] = LANG_REG_EMAIL_EXISTS; continue; } if (!$auth_controller->isEmailAllowed($email)) { $results['failed'][$email] = LANG_AUTH_RESTRICTED_EMAILS; continue; } $invite = $auth_model->getNextInvite($this->cms_user->id); $to = array('email' => $email, 'name' => $email); $letter = array('name' => 'users_invite'); $messenger->sendEmail($to, $letter, array('nickname' => $this->cms_user->nickname, 'code' => $invite['code'], 'page_url' => href_to_abs('auth', 'register') . "?inv={$invite['code']}")); $results['success'][$email] = true; $auth_model->markInviteSended($invite['id'], $this->cms_user->id, $email); if (sizeof($results['success']) + sizeof($results['failed']) >= $profile['invites_count']) { break; } } return $results; }
public function run($feed_id) { if (!$feed_id) { cmsCore::error404(); } $rss_model = cmsCore::getModel('rss'); $feed = $rss_model->getFeed($feed_id); $ctype_id = $feed['ctype_id']; $content_model = cmsCore::getModel('content'); $fields = $content_model->getContentFields($feed['ctype_name']); $fields = array('' => '') + array_collection_to_list($fields, 'name', 'title'); $form = $this->getForm('feed', array($fields)); $is_submitted = $this->request->has('submit'); if ($is_submitted) { $feed = $form->parse($this->request, $is_submitted); $errors = $form->validate($this, $feed); if (!$errors) { $rss_model->updateFeed($feed_id, $feed); $ctype = $content_model->getContentType($ctype_id); $ctype['options']['is_rss'] = $feed['is_enabled']; $content_model->updateContentType($ctype_id, array('options' => $ctype['options'])); $this->redirectToAction(); } if ($errors) { cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error'); } } return cmsTemplate::getInstance()->render('backend/edit', array('feed' => $feed, 'form' => $form, 'errors' => isset($errors) ? $errors : false)); }
public function run() { if (!$this->options['is_reg_invites']) { return false; } if (!$this->options['is_invites']) { return false; } $period = $this->options['invites_period']; $qty = $this->options['invites_qty']; $min_karma = $this->options['invites_min_karma']; $min_rating = $this->options['invites_min_rating']; $min_days = $this->options['invites_min_days']; $users_model = cmsCore::getModel('users'); $users_model->filterIsNull('is_locked'); $users_model->filterStart()->filterDateOlder('date_invites', $period)->filterOr()->filterIsNull('date_invites')->filterEnd(); $users_model->filterGtEqual('karma', $min_karma); $users_model->filterGtEqual('rating', $min_rating); $users_model->filterDateOlder('date_reg', $min_days); $users = $users_model->getUsers(); if (!$users) { return false; } foreach ($users as $user) { $this->model->addInvites($user['id'], $qty); } }
public function run($pass_token) { if (!$pass_token) { cmsCore::error404(); } $users_model = cmsCore::getModel('users'); $profile = $users_model->getUserByPassToken($pass_token); if (!$profile) { cmsCore::error404(); } $form = $this->getForm('reset'); $is_submitted = $this->request->has('submit'); if ($is_submitted) { $profile = array_merge($profile, $form->parse($this->request, $is_submitted)); $errors = $form->validate($this, $profile); if (!$errors) { $result = $users_model->updateUser($profile['id'], $profile); if ($result['success']) { cmsUser::addSessionMessage(LANG_PASS_CHANGED, 'success'); $users_model->clearUserPassToken($profile['id']); $this->redirectTo('users', $profile['id']); } else { $errors = $result['errors']; } } if ($errors) { cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error'); } } return cmsTemplate::getInstance()->render('reset', array('profile' => $profile, 'form' => $form, 'errors' => isset($errors) ? $errors : false)); }
public function run($group_id = false) { if (!$this->request->isAjax()) { cmsCore::error404(); } $grid = $this->loadDataGrid('users'); $users_model = cmsCore::getModel('users'); $users_model->setPerPage(admin::perpage); $filter = array(); $filter_str = $this->request->get('filter'); $filter_str = cmsUser::getUPSActual('admin.grid_filter.users', $filter_str); if ($filter_str) { $content_model = cmsCore::getModel('content')->setTablePrefix(''); parse_str($filter_str, $filter); $users_model->applyGridFilter($grid, $filter); if (!empty($filter['advanced_filter'])) { parse_str($filter['advanced_filter'], $dataset_filters); $users_model->applyDatasetFilters($dataset_filters); } } if ($group_id) { $users_model->filterGroup($group_id); } $total = $users_model->getUsersCount(); $perpage = isset($filter['perpage']) ? $filter['perpage'] : admin::perpage; $pages = ceil($total / $perpage); $users = $users_model->getUsers(); cmsTemplate::getInstance()->renderGridRowsJSON($grid, $users, $total, $pages); $this->halt(); }
public function run($template_name = null) { if ($template_name) { cmsCore::getModel('widgets')->unbindAllWidgets($template_name); } $this->redirectBack(); }