Beispiel #1
0
 public function addAction()
 {
     if (user::isGuest() && reg::getKey('/comments/only_reg')) {
         system::stop();
     }
     if (user::isGuest() && !system::validCapcha('random_image')) {
         system::json(array('error' => 1, 'data' => lang::get('FEEDBACK_ERROR1')));
     }
     // Добавляем новый комментарий
     $comment = new comment();
     $comment->setParentId(system::POST('parent_id'));
     $comment->setObjId(system::POST('obj_id'));
     $comment->setUserName(system::POST('username'));
     $comment->setEmail(system::POST('email'));
     $comment->setText(system::POST('text'));
     $comment->setSendEmail(system::POST('send_email'));
     $obj_id = $comment->save();
     if ($obj_id) {
         page::assign('current_url', system::POST('back_url'));
         $html = page::macros('comments')->view($comment->id());
         system::json(array('error' => 0, 'data' => $html));
     } else {
         system::json(array('error' => 2, 'data' => $comment->getErrorListText(' ')));
     }
     if (!empty($_POST['back_url']) && !system::isAjax()) {
         system::redirect($_POST['back_url'] . '#comment' . $obj_id, true);
     } else {
         system::stop();
     }
 }
Beispiel #2
0
 /**
  * @return HTML
  * @param string $templ_name - Шаблон оформления
  * @desc МАКРОС: Выводит форму обратной связи (добавления отзыва, вопрос-ответа и пр.)
  */
 public function form($templ_name = 'default')
 {
     $templ_file = '/feedback/' . $templ_name . '.tpl';
     $TEMPLATE = page::getTemplate($templ_file);
     if (!is_array($TEMPLATE)) {
         return page::errorNotFound('feedback.form', $templ_file);
     }
     if (!user::isGuest()) {
         page::assign('feedback.name', user::get('surname') . ' ' . user::get('name'));
         page::assign('feedback.email', user::get('email'));
     }
     page::assignSavingPost('feedback');
     // Парсим текст сообщения об ошибке
     page::parseError('feedback');
     return page::parse($TEMPLATE['frame'], 1);
 }
Beispiel #3
0
 public function order_procAction()
 {
     if (!user::isGuest() && isset($_SESSION['order_step'])) {
         switch ($_SESSION['order_step']) {
             case 1:
                 // Доставка
                 $_SESSION['order']['name'] = system::POST('delivery_name', isString);
                 $_SESSION['order']['surname'] = system::POST('delivery_surname', isString);
                 $_SESSION['order']['phone'] = system::POST('delivery_phone', isString);
                 $_SESSION['order']['address'] = system::POST('delivery_address', isString);
                 $_SESSION['order']['notice'] = system::POST('delivery_notice', isText);
                 $_SESSION['order']['delivery'] = system::POST('delivery', isInt);
                 if (empty($_SESSION['order']['delivery']) || empty($_SESSION['order']['name']) || empty($_SESSION['order']['surname']) || empty($_SESSION['order']['phone']) || empty($_SESSION['order']['address'])) {
                     // Ошибка: не все поля заполнены
                 } else {
                     // Все отлично, переходим к следующему шагу
                     $_SESSION['order_step'] = 2;
                 }
                 break;
             case 2:
                 // Подтвеждение заказа, сохраняем данные в БД
                 $order = new eShopOrder();
                 // Информация о доставке
                 $order->setDelivery($_SESSION['order']['delivery']);
                 $order->delivery_name = $_SESSION['order']['name'];
                 $order->delivery_surname = $_SESSION['order']['surname'];
                 $order->delivery_phone = $_SESSION['order']['phone'];
                 $order->delivery_address = $_SESSION['order']['address'];
                 $order->delivery_notice = $_SESSION['order']['notice'];
                 $order_id = $order->save();
                 if ($order_id) {
                     // Заказ сохранен
                     unset($_SESSION['order_step']);
                     unset($_SESSION['order']);
                     system::redirect('/eshop/ok/' . $order_id);
                 } else {
                     // Произошла ошибка
                 }
                 system::redirect('/eshop/order');
                 break;
         }
     }
     system::redirect('/eshop/order');
 }
Beispiel #4
0
 /**
  * @return HTML - Форма добавления комментария
  * @param int $page_id - ID страницы для которой нужно создать форму
  * @param string $templ_name - Шаблон оформления формы
  * @desc МАКРОС: Строит форму отправки комментария
  */
 public function form($page_id, $templ_name = 'addform')
 {
     $templ_file = '/comments/' . $templ_name . '.tpl';
     $TEMPLATE = page::getTemplate($templ_file);
     if (!is_array($TEMPLATE)) {
         return page::errorNotFound('comments.form', $templ_file);
     }
     page::assign('obj_id', $page_id);
     // Если запрещенно комментировать гостям, выводим соответствующее сообщение
     if (user::isGuest() && reg::getKey('/comments/only_reg')) {
         return page::parse($TEMPLATE['no_auth']);
     }
     // Выводим форму
     if (user::isGuest()) {
         page::fParse('capcha', $TEMPLATE['capcha']);
         page::assign('username', '');
         page::assign('email', '');
     } else {
         page::assign('capcha', '');
         page::assign('username', user::get('name'));
         page::assign('email', user::get('email'));
     }
     return page::parse($TEMPLATE['frame']);
 }
Beispiel #5
0
 private function showAuthForm($error = 0)
 {
     if (file_exists(MODUL_DIR . '/mpanel/template/auth.tpl')) {
         include MODUL_DIR . '/mpanel/template/auth.tpl';
         page::assign('title', lang::get('CMF'));
         if (user::isGuest()) {
             // Пользователь не авторизован
             page::assign('url', system::getCurrentUrl());
             page::assign('login', lang::get('AUTHFORM_LOGIN'));
             page::assign('passw', lang::get('AUTHFORM_PASSW'));
             page::assign('enter', lang::get('AUTHFORM_ENTER'));
             page::assign('error', $error);
             echo page::parse($TEMPLATE['frame']);
         } else {
             // Пользователь авторизован, но не является админом
             page::assign('exit_url', '/users/logout');
             page::assign('user', user::get('name'));
             page::assign('hello', lang::get('AUTHFORM_HELLO'));
             page::assign('big_text', lang::get('AUTHFORM_BIG_TEXT'));
             page::assign('exit_text', lang::get('AUTHFORM_EXIT_TEXT'));
             echo page::parse($TEMPLATE['frame_no_admin']);
         }
         system::stop();
     }
 }
Beispiel #6
0
 private function createObject()
 {
     if (empty($this->newprop['c_obj_id'])) {
         $this->newError(100, 'Необходимо указать ID объекта к которому будет привязан комментарий!');
         return false;
     }
     if (empty($this->newprop['c_username'])) {
         $this->newError(100, 'Необходимо указать имя пользователя оставившего комментарий!');
         return false;
     }
     if (empty($this->newprop['c_email'])) {
         $this->newError(100, 'Необходимо указать E-mail пользователя оставившего комментарий!');
         return false;
     }
     if (empty($this->newprop['c_text'])) {
         $this->newError(100, 'Необходимо указать текст комментария!');
         return false;
     }
     $sql = '';
     if (!empty($this->newprop)) {
         reset($this->newprop);
         while (list($fname, $value) = each($this->newprop)) {
             $sql .= ', ' . $fname . ' = "' . $value . '"';
         }
     }
     if (!user::isGuest()) {
         $sql .= ', c_user_id = "' . user::get('id') . '"';
     }
     $id = db::q('INSERT INTO <<comments>> SET c_publ_date = "' . date('Y-m-d H:i:s') . '" ' . $sql . ';');
     if ($id) {
         $this->id = $id;
         $this->curprop = $this->newprop;
         // Отправка уведомлений о новом комментарии
         $this->sendEmails();
         $this->clearCache();
         return $this->id;
     }
     return false;
 }
Beispiel #7
0
 /**
  * @return string
  * @param string $templ_name - Шаблон оформления
  * @desc МАКРОС: Выводит форму второго шага авторизации через соц сети, если требуется указать e-mail или согласиться с правилами.
  */
 function socialAuthConfirm($templ_name = 'social_auth_confirm')
 {
     $templ_file = '/users/' . $templ_name . '.tpl';
     $TEMPLATE = page::getTemplate($templ_file);
     if (!is_array($TEMPLATE)) {
         return page::errorNotFound('users.socialAuthConfirm', $templ_file);
     }
     if (user::isGuest() && !empty($_SESSION['SOCIAL_AUTH_USER_INFO'])) {
         page::assign('obj.email', '');
         foreach ($_SESSION['SOCIAL_AUTH_USER_INFO'] as $key => $val) {
             page::assign('obj.' . $key, $val);
         }
         page::assign('email_block', reg::getKey('/users/ask_email') && empty($_SESSION['SOCIAL_AUTH_USER_INFO']['email']) ? page::parse($TEMPLATE['email']) : '');
         page::assign('confirm_block', reg::getKey('/users/confirm') ? page::parse($TEMPLATE['confirm']) : '');
         // Вывод сообщения об ошибках
         page::parseError('social_auth_confirm');
         return page::parse($TEMPLATE['frame']);
     }
 }
Beispiel #8
0
 public function order($templ_name = 'order_steps')
 {
     $templ_file = '/eshop/' . $templ_name . '.tpl';
     $TEMPLATE = page::getTemplate($templ_file);
     if (!is_array($TEMPLATE)) {
         return page::errorNotFound('eshop.basket', $templ_file);
     }
     if (user::isGuest()) {
         page::assign('order.cost', basket::getTotalCost());
         return page::parse($TEMPLATE['no_auth']);
     }
     if (!isset($_SESSION['order_step'])) {
         $_SESSION['order_step'] = 1;
     }
     if (system::url(2) == 'back') {
         $_SESSION['order_step']--;
     }
     switch ($_SESSION['order_step']) {
         case 1:
             // Доставка
             $sel = new ormSelect('eshop_delivery_method');
             $sel->fields('name, price, notice');
             $list = '';
             while ($obj = $sel->getObject()) {
                 page::assign('obj.id', $obj->id);
                 page::assign('obj.name', $obj->name);
                 page::assign('obj.price', $obj->price);
                 page::assign('obj.notice', $obj->notice);
                 $act = isset($_SESSION['order']['delivery']) && $obj->id == $_SESSION['order']['delivery'] ? '_active' : '';
                 $list .= page::parse($TEMPLATE['delivery_list' . $act]);
             }
             page::assign('delivery_list', $list);
             page::assign('order.name', isset($_SESSION['order']['name']) ? $_SESSION['order']['name'] : user::get('name'));
             page::assign('order.surname', isset($_SESSION['order']['surname']) ? $_SESSION['order']['surname'] : user::get('surname'));
             page::assign('order.phone', isset($_SESSION['order']['phone']) ? $_SESSION['order']['phone'] : user::get('phone'));
             page::assign('order.address', isset($_SESSION['order']['address']) ? $_SESSION['order']['address'] : user::get('address'));
             page::assign('order.notice', isset($_SESSION['order']['notice']) ? $_SESSION['order']['notice'] : '');
             page::assign('order.cost', basket::getTotalCost());
             return page::parse($TEMPLATE['delivery']);
             break;
         case 2:
             // Подтверждение
             // Расчитываем общую стоимость с учетом доставки
             if ($delivery = ormObjects::get($_SESSION['order']['delivery'])) {
                 page::assign('order.delivery', $delivery->name);
                 page::assign('order.delivery_price', $delivery->price);
                 $cost = $delivery->price + basket::getTotalCost();
                 page::assign('order.cost', $cost);
             }
             page::assign('order.name', isset($_SESSION['order']['name']) ? $_SESSION['order']['name'] : user::get('name'));
             page::assign('order.surname', isset($_SESSION['order']['surname']) ? $_SESSION['order']['surname'] : user::get('surname'));
             page::assign('order.phone', isset($_SESSION['order']['phone']) ? $_SESSION['order']['phone'] : user::get('phone'));
             page::assign('order.address', isset($_SESSION['order']['address']) ? $_SESSION['order']['address'] : user::get('address'));
             return page::parse($TEMPLATE['aception']);
             break;
         default:
             unset($_SESSION['order_step']);
             system::redirect('/eshop/basket');
     }
 }
Beispiel #9
0
 static function socialAuthConfirm()
 {
     if (user::isGuest() && isset($_SESSION['SOCIAL_AUTH_USER_INFO'])) {
         $confirm = system::POST('confirm', isBool);
         $email = system::POST('email', isEmail);
         $validate = true;
         if (empty($_SESSION['SOCIAL_AUTH_USER_INFO']['email'])) {
             if (reg::getKey('/users/ask_email') && empty($email)) {
                 $validate = false;
             } else {
                 if (!empty($email)) {
                     $_SESSION['SOCIAL_AUTH_USER_INFO']['email'] = $email;
                 }
             }
         }
         if (reg::getKey('/users/confirm') && !$confirm) {
             $validate = false;
         }
         if ($validate) {
             $user = self::createUserForSocial($_SESSION['SOCIAL_AUTH_USER_INFO']);
             if ($user && !$user->issetErrors()) {
                 user::authHim($user);
                 self::closeWindowAndOpen('/');
             } else {
                 echo $user->getErrorListText();
             }
             system::stop();
         }
     }
 }
Beispiel #10
0
 static function addEmail($email, $subscriptions, $copyUserData = false)
 {
     $email = system::checkVar($email, isEmail);
     if (!empty($email) && !empty($subscriptions)) {
         $obj = new ormObject();
         $obj->setClass('subscribe_user');
         $obj->name = $email;
         if (!user::isGuest() && $copyUserData) {
             $obj->second_name = user::get('surname');
             $obj->first_name = user::get('name');
             $obj->user_id = user::get('id');
         }
         // Указываем на какие подписки подписать
         while (list($key, $val) = each($subscriptions)) {
             $obj->setNewParent($val);
         }
         // Сохраняем изменения
         $sid = $obj->save();
         if ($obj->issetErrors(29)) {
             // Если указанный e-mail уже существует, пытаемся найти его и подписать на рассылки.
             $sel = new ormSelect('subscribe_user');
             $sel->where('name', '=', $email);
             $sel->limit(1);
             if ($obj = $sel->getObject()) {
                 if (!user::isGuest() && $copyUserData) {
                     $obj->second_name = user::get('surname');
                     $obj->first_name = user::get('name');
                     $obj->user_id = user::get('id');
                 }
                 reset($subscriptions);
                 while (list($key, $val) = each($subscriptions)) {
                     $obj->setNewParent($val);
                 }
                 $sid = $obj->save();
             }
         }
         return $sid;
     }
 }
Beispiel #11
0
 public function change_password_procAction()
 {
     if (user::isGuest()) {
         system::redirect('/users/add');
     }
     $cur_password = system::POST('current_password', isPassword);
     $new_passw = system::POST('password', isPassword);
     $new_passw2 = system::POST('password2', isPassword);
     if ($cur_password == user::get('password')) {
         if ($new_passw && $new_passw == $new_passw2) {
             if ($user = user::getObject()) {
                 $user->password = system::POST('password');
                 if ($user->save()) {
                     if (system::isAjax()) {
                         system::json(array('ok' => 1));
                     } else {
                         system::redirect('/users/change_password/ok');
                     }
                 }
             }
         }
     } else {
         $answer = array('msg' => lang::get('USERS_CHANGE_PSW_MSG'), 'field' => 'current_password');
         if (!system::isAjax()) {
             system::saveErrorToSession('change_password', $answer);
             system::redirect('/users/change_password');
         } else {
             system::json($answer);
         }
     }
     system::redirect('/users/change_password');
 }