Example #1
0
 public function defAction()
 {
     function getClassName($val, $obj)
     {
         if ($obj = ormPages::get($val)) {
             return $obj->getClass()->getName();
         }
     }
     $sel = new ormSelect('feedback');
     $sel->findInPages();
     $sel->where('form_id', '<>', 0);
     $sel->orderBy('create_date', desc);
     $table = new uiTable($sel);
     $table->showSearch(true);
     $table->formatValues(true);
     $table->addColumn('content', 'Текст сообщения', 300);
     $table->addColumn('name', 'Имя пользователя', 120);
     $table->addColumn('email', 'E-mail', 120);
     $table->addColumn('create_date', 'Дата публикации', 120);
     $table->addColumn('id', 'Тип', 120, 0, 1, 'getClassName');
     $table->defaultRight('message_upd');
     $table->addRight('message_act', 'active', multi);
     $table->addRight('message_upd', 'edit', single);
     $table->addRight('message_del', 'drop', multi);
     return $table->getHTML();
 }
Example #2
0
 public function defAction()
 {
     // Формируем список классов для быстрого добавления
     $types = ormClasses::get('user')->getAllInheritors();
     if (count($types) > 1) {
         $class_list = '';
         while (list($id, $name) = each($types)) {
             $bclass = ormClasses::get($id);
             $class_list .= '<li><a href="' . system::au() . '/users/user_add/0/' . $bclass->getSName() . '" >' . $bclass->getName() . '</a></li>';
         }
         $java = '<script> $("#usel").parent().css("width", "150px"); </script>';
         ui::newButton(lang::get('BTN_NEW_USER'), "/users/user_add", 'class_list', '<ul id="usel">' . $class_list . '</ul>' . $java);
     } else {
         ui::newButton(lang::get('BTN_NEW_USER'), "/users/user_add");
     }
     ui::newButton(lang::get('BTN_NEW_UGROUP'), "/users/group_add");
     $sel = new ormSelect('user_group');
     $sel->orderBy('name', asc);
     $table = new uiTable($sel);
     $table->showSearch(true);
     $table->addColumn('name', lang::get('USERS_TABLE_FIELD_5'), 0, true);
     $table->addColumn('children', lang::get('USERS_TABLE_FIELD_6'), 0, true, true, 'count');
     $table->defaultRight('userlist');
     $table->addRight('userlist', 'users', single);
     $table->addRight('group_upd', 'edit', single);
     $table->addRight('group_act', 'active', multi);
     $table->addRight('group_del', 'drop', multi);
     $table->setDelMessage(lang::get('USERS_DEL_TITLE2'), lang::get('USERS_DEL_TEXT2'));
     $table->setMultiDelMessage(lang::get('USERS_DEL_TITLE_MULTI2'), lang::get('USERS_DEL_TEXT_MULTI2'));
     return $table->getHTML();
 }
Example #3
0
 function view()
 {
     // Устанавливаем кнопки для формы
     ui::setCancelButton('/eshop/list');
     ui::newButton(lang::get('BTN_SAVE'), "javascript:sendForm('save');");
     ui::newButton(lang::get('BTN_APPLY'), "javascript:sendForm('apply');");
     if (file_exists(MODUL_DIR . '/eshop/template/order.tpl')) {
         include MODUL_DIR . '/eshop/template/order.tpl';
     }
     if (!($obj = ormObjects::get(system::url(2), 'eshop_order'))) {
         system::redirect('/eshop/list');
     }
     $order = new eShopOrder($obj);
     // Вывод информации о товарах
     function getGoodsName($val, $obj)
     {
         if ($obj = ormPages::get($val, 'goods')) {
             return '<a href="' . $obj->url . '" target="_blank">' . $obj->name . '</a>';
         }
     }
     function getPrice($val, $obj)
     {
         return '&nbsp;&nbsp;&nbsp;&nbsp;' . $obj->cost * $obj->count . ' руб.';
     }
     $sel = new ormSelect('eshop_goods');
     $sel->where('parents', '=', $obj->id);
     $table = new ormMultiForm('goods');
     $table->setData($sel);
     $table->insideForm();
     $table->addColumn('goods_id', 0, 400, 0, false, 'getGoodsName');
     $table->addColumn('cost', 0, 100, 0, false);
     $table->addColumn('count', 0, 100);
     $table->addColumn('id', 'Общая стоимость', 100, 0, false, 'getPrice');
     $table->withoutAdditions();
     page::assign('goods_list', $table->getHTML());
     page::assign('order.number', $order->getNumber());
     page::assign('order.cost', $order->getCost());
     page::assign('order.cost_all', $order->getTotalCost());
     page::assign('order.delivery_price', $order->getDeliveryPrice());
     page::assign('order.delivery', $order->_delivery);
     $obj->parseAllFields();
     page::assign('obj.id', $order->id);
     page::assign('obj.date', date('d.m.Y в H:i', strtotime($obj->date)));
     page::assign('user_link', '/mpanel/users/user_upd/' . $order->getUserId());
     ui::SelectBox('state', ormObjects::getObjectsByClass('eshop_status'), $obj->state, 200);
     ui::CheckBox('is_payment', 1, $obj->is_payment, 'Оплачено');
     // Создаем форму и выводим ее на страницу
     // $form = new ormEditForm($obj, $right);
     //return $form->getHTML();
     return page::parse($TEMPLATE['frame']);
 }
Example #4
0
 public function getCost()
 {
     if (!empty($this->obj)) {
         if (empty($this->cost)) {
             // Считаем стоимость товаров
             $sel = new ormSelect('eshop_goods');
             $sel->fields('cost, count');
             $sel->where('parents', '=', $this->obj->id);
             while ($goods = $sel->getObject()) {
                 $this->cost += $goods->count * $goods->cost;
             }
         }
         return $this->cost;
     }
 }
Example #5
0
 public function doAction()
 {
     $answers = system::POST('answers');
     $error = 2;
     $msg = '';
     if (count($answers) > 0) {
         if ($vote = ormPages::get(system::POST('vote_id'), 'vote')) {
             if (!$vote->close) {
                 $sel = new ormSelect('answer');
                 $sel->fields('name, count');
                 $sel->where('parents', '=', $vote->id);
                 while ($answ = $sel->getObject()) {
                     if (in_array($answ->id, $answers)) {
                         $answ->count = $answ->count + 1;
                         $answ->save();
                         if (!$vote->multiselect) {
                             break;
                         }
                     }
                 }
                 cache::delete('vote' . $vote->id . '1');
                 cache::delete('vote' . $vote->id . '0');
                 $_SESSION['voting_' . $vote->id] = 1;
                 $error = 0;
             } else {
                 // Голосование закрыто
                 $msg = lang::get('VOTING_MSG_CLOSE');
                 $error = 1;
             }
         } else {
             $msg = lang::get('VOTING_MSG_NOT_FOUND');
         }
     } else {
         $msg = lang::get('VOTING_MSG_CHOSE_VAR');
     }
     if (system::isAjax()) {
         if ($error < 2 && $vote instanceof ormPage) {
             $data = page::macros('voting')->objView($vote->id);
         }
         system::json(array('error' => 0, 'html' => $data, 'msg' => $msg));
     } else {
         if (!empty($_POST['back_url'])) {
             system::redirect($_POST['back_url'], true);
         } else {
             system::redirect('/');
         }
     }
 }
Example #6
0
 public function defAction()
 {
     if ($parent = ormObjects::get(system::url(2))) {
         ui::setNaviBar(lang::right('msg'));
         ui::setHeader($parent->name);
     } else {
         system::redirect('/subscription');
     }
     ui::setBackButton('/subscription');
     ui::newButton(lang::get('SUBSCRIBE_BTN_ADD2'), '/subscription/msg_add/' . system::url(2));
     function getState($date, $obj)
     {
         if ($obj->error_part_num > 0) {
             $time = time() - strtotime($obj->last_subscribe);
             if ($time > 4) {
                 return str_replace('%part%', $obj->error_part_num, lang::get('SUBSCRIBE_MSG', 1));
             } else {
                 return str_replace('%part%', $obj->error_part_num, lang::get('SUBSCRIBE_MSG', 2));
             }
         } else {
             if ($obj->part_count_awaiting > 0) {
                 page::assign('part1', $obj->part_count - $obj->part_count_awaiting);
                 page::assign('part2', $obj->part_count);
                 return page::parse(lang::get('SUBSCRIBE_MSG', 3));
             } else {
                 if ($obj->last_subscribe == '0000-00-00 00:00:00') {
                     return lang::get('SUBSCRIBE_MSG', 4);
                 } else {
                     return lang::get('SUBSCRIBE_MSG', 5) . ' ' . date('d.m.Y ' . lang::get('SUBSCRIBE_MSG', 6) . ' H:i', strtotime($obj->last_subscribe));
                 }
             }
         }
     }
     // Выводим список сообщений рассылки
     $sel = new ormSelect('subscribe_msg');
     $sel->fields('name, last_subscribe, part_count, part_count_awaiting, error_part_num');
     $sel->where('parents', '=', system::url(2));
     $sel->orderBy('create_date', desc);
     $table = new uiTable($sel);
     $table->formatValues(true);
     $table->addColumn('name', lang::get('SUBSCRIBE_MSG_TT1'), 300);
     $table->addColumn('last_subscribe', lang::get('SUBSCRIBE_MSG_TT2'), 300, 0, 1, 'getState');
     $table->defaultRight('msg_upd');
     $table->addRight('msg_upd', 'edit', single);
     $table->addRight('msg_del', 'drop', multi);
     return $table->getHTML();
 }
Example #7
0
 public function defAction()
 {
     // Определяем какие кнопки будут
     $types = ormClasses::get('user')->getAllInheritors();
     if (count($types) > 1) {
         $class_list = '';
         while (list($id, $name) = each($types)) {
             $bclass = ormClasses::get($id);
             $class_list .= '<a href="' . system::au() . '/users/user_add/' . system::url(2) . '/' . $bclass->getSName() . '" style="line-height:17px;">' . $bclass->getName() . '</a><br />';
         }
         ui::newButton(lang::get('BTN_NEW_USER'), "/users/user_add/" . system::url(2), 'class_list', $class_list);
     } else {
         ui::newButton(lang::get('BTN_NEW_USER'), "/users/user_add/" . system::url(2));
     }
     ui::setBackButton('/users');
     // Заголовок страницы
     if ($group = ormObjects::get(system::url(2))) {
         ui::setNaviBar($group->name);
         ui::setHeader(lang::right('userlist'));
     }
     // Выбираем пользователей
     $sel = new ormSelect('user');
     if (system::issetUrl(2) && system::url(2) != 0) {
         $sel->where('parents', '=', system::url(2));
     }
     $sel->orderBy('create_date', desc);
     // Строим таблицу
     $table = new uiTable($sel);
     $table->formatValues(true);
     $table->showSearch(true);
     $table->addColumn('login', lang::get('USERS_TABLE_FIELD_1'), 0, true);
     $table->addColumn('surname name', lang::get('USERS_TABLE_FIELD_2'), 0, true);
     $table->addColumn('create_date', lang::get('USERS_TABLE_FIELD_7'), 0, true, true, '', 1);
     $table->addColumn('last_visit', lang::get('USERS_TABLE_FIELD_3'), 0, true, true, '', 1);
     $table->addColumn('parents', lang::get('USERS_TABLE_FIELD_4'), 0, false, true);
     $table->defaultRight('user_upd');
     $table->addRight('user_upd', 'edit', single);
     $table->addRight('user_act', 'active', multi);
     $table->addRight('user_del', 'drop', multi);
     $table->setDelMessage(lang::get('USERS_DEL_TITLE'), lang::get('USERS_DEL_TEXT'));
     $table->setMultiDelMessage(lang::get('USERS_DEL_TITLE_MULTI'), lang::get('USERS_DEL_TEXT_MULTI'));
     return $table->getHTML();
 }
Example #8
0
 public function defAction()
 {
     ui::addLeftButton(lang::right('list'), 'list');
     ui::addLeftButton(lang::right('state'), 'state');
     ui::addLeftButton(lang::right('delivery'), 'delivery');
     ui::addLeftButton(lang::right('payment'), 'payment');
     ui::newButton(lang::get('ESHOP_ADD_STATE'), '/eshop/state_add');
     $sel = new ormSelect('eshop_status');
     //$sel->where('form_id', '<>', 0);
     $sel->orderBy('number', asc);
     $table = new uiTable($sel);
     $table->showFilters(true);
     $table->formatValues(true);
     $table->addColumn('number', '#', 10);
     $table->addColumn('name', 'Название', 200);
     $table->addColumn('notice', 'Описание', 400);
     $table->defaultRight('state_upd');
     $table->addRight('state_upd', 'edit', single);
     $table->addRight('state_del', 'drop', multi);
     return $table->getHTML();
 }
Example #9
0
 public function defAction()
 {
     function getNumber($val, $obj)
     {
         return substr('00000', 0, 5 - strlen($val)) . $val;
     }
     $sel = new ormSelect('eshop_order');
     //$sel->where('form_id', '<>', 0);
     $sel->orderBy('date', desc);
     $table = new uiTable($sel);
     $table->showFilters(true);
     $table->formatValues(true);
     $table->addColumn('name', 'Номер', 100, false, true, 'getNumber');
     $table->addColumn('state', 'Статус', 300);
     $table->addColumn('date', 'Дата', 300);
     $table->addColumn('email', 'E-mail', 300);
     $table->defaultRight('order_view');
     $table->addRight('order_view', 'edit', single);
     $table->addRight('order_del', 'drop', multi);
     return $table->getHTML();
 }
Example #10
0
 /**
  * @return stirng
  * @param string $templ_name - Шаблон оформления
  * @desc МАКРОС: Выводит форму подписки на рассылки
  */
 function form($templ_name = 'default')
 {
     $templ_file = '/subscription/' . $templ_name . '.tpl';
     $TEMPLATE = page::getTemplate($templ_file);
     if (!is_array($TEMPLATE)) {
         return page::errorNotFound('subscription.form', $templ_file);
     }
     $list = '';
     $sel = new ormSelect('subscription');
     $sel->where('lang', '=', languages::curId());
     $sel->where('domain', '=', domains::curId());
     $sel->where('active', '=', 1);
     $num = 0;
     while ($obj = $sel->getObject()) {
         page::assign('obj.id', $obj->id);
         page::assign('obj.name', $obj->name);
         $num++;
         page::assign('obj.num', $num);
         page::assign('class-first', $num == 1 ? 'first' : '');
         page::assign('class-last', $num == $sel->getObjectCount() ? 'last' : '');
         page::assign('class-odd', $num % 2 == 0 ? 'odd' : '');
         page::assign('class-even', $num % 2 != 0 ? 'even' : '');
         page::assign('class-third', $num % 3 == 0 ? 'third' : '');
         $list .= page::parse($TEMPLATE['list']);
     }
     // Парсим текст сообщения об ошибке
     page::parseError('subscription');
     if (empty($list)) {
         return page::parse($TEMPLATE['empty']);
     } else {
         page::assign('list', $list);
         return page::parse($TEMPLATE['frame']);
     }
 }
Example #11
0
 public function defAction()
 {
     ui::newButton(lang::get('FEEDBACK_BTN_ADD'), '/feedback/form_add');
     function getClassName($val, $obj)
     {
         if ($class = ormClasses::get($val)) {
             return $class->getName();
         }
     }
     function getAction($val, $obj)
     {
         $ret = '';
         if (!empty($val)) {
             $ret .= 'Отправка письма на почту';
         }
         if ($obj->any_sections || $obj->section != 0) {
             if (!empty($ret)) {
                 $ret .= ', ';
             }
             $ret .= 'Сохранение заявки в БД';
         }
         return $ret;
     }
     $sel = new ormSelect('feedback_form');
     $sel->fields('mailing_list, captcha, form_class, section');
     $table = new uiTable($sel);
     $table->formatValues(true);
     $table->addColumn('name', 'Название формы', 200);
     $table->addColumn('mailing_list', 'Выполняемое действие', 400, 0, 1, 'getAction');
     $table->addColumn('captcha', 'Защита от спама', 100);
     $table->addColumn('form_class', 'Тип', 120, 0, 1, 'getClassName');
     $table->defaultRight('form_upd');
     $table->addRight('form_upd', 'edit', single);
     $table->addRight('form_del', 'drop', multi);
     return $table->getHTML();
 }
Example #12
0
 public function proc()
 {
     if (system::isAjax() && system::issetUrl(2)) {
         if (system::url(2) == 'start') {
             searchIndex::clear();
             reg::setKey(ormPages::getPrefix('search') . '/index_date', date('d.m.Y'));
             $sel = new ormSelect();
             $sel->fields('name');
             $sel->findInPages();
             $sel->where('active', '=', 1);
             $sel->where('in_search', '=', 1);
             echo $sel->getCount();
         } else {
             if (system::url(2) == 'info') {
                 $data = reg::getKey(ormPages::getPrefix('search') . '/index_date');
                 if (empty($data)) {
                     $data = '-';
                 }
                 system::json(array('pages' => searchIndex::getCountPages(), 'words' => searchIndex::getCountWords(), 'data' => $data));
             } else {
                 $sel = new ormSelect();
                 $sel->findInPages();
                 $sel->where('active', '=', 1);
                 $sel->where('in_search', '=', 1);
                 $sel->limit(system::url(2), 1);
                 searchIndex::indexPage($sel->getObject());
                 echo 'ok';
             }
         }
         system::stop();
     }
     if (system::POST('parram') == 'clear') {
         searchIndex::clear();
     }
     system::redirect('/search/index');
 }
Example #13
0
 public function __get($name)
 {
     if ($name == 'url' && !empty($this->id)) {
         if (empty($this->url)) {
             $this->url = ormPages::getPageUrlById($this->id);
         }
         //echo $this->id.'|'.$this->url.'<br/>';
         return $this->url;
     } else {
         if ($name == '_url' && !empty($this->id)) {
             if (empty($this->_url)) {
                 if ($this->__get('other_link') != '') {
                     $link = $this->__get('other_link');
                     if ($link == '/first_subsection') {
                         $sel = new ormSelect();
                         /// $sel->fields('id');
                         $sel->findInPages();
                         $sel->where('parents', '=', $this->id);
                         $sel->orderBy('position');
                         $sel->limit(1);
                         if ($subsection = $sel->getObject()) {
                             $this->_url = $subsection->__get('_url');
                         }
                     } else {
                         $this->_url = $link;
                     }
                 } else {
                     $this->_url = ormPages::getPageUrlById($this->id);
                 }
             }
             return $this->_url;
         } else {
             if ($name == 'first_children_id' && !empty($this->id)) {
                 $sel = new ormSelect();
                 $sel->findInPages();
                 $sel->where('parents', '=', $this->id);
                 $sel->fields('id');
                 $sel->limit(1);
                 $order_by = $this->__get('order_by');
                 if (!empty($order_by)) {
                     $pos = strpos($order_by, ' ');
                     if ($pos) {
                         $parram = substr($order_by, $pos + 1);
                         $order_by = substr($order_by, 0, $pos);
                     } else {
                         $parram = '';
                     }
                     $sel->orderBy($order_by, $parram);
                 }
                 return $sel->getObject()->id;
             } else {
                 if ($name == 'count_children' && !empty($this->id)) {
                     return $this->countChildren();
                 } else {
                     if ($this->isSysField($name) && isset($this->cur_prop[$name])) {
                         return $this->cur_prop[$name];
                     } else {
                         if ($this->isSysField($name) && isset($this->new_prop[$name])) {
                             return $this->new_prop[$name];
                         } else {
                             return parent::__get($name);
                         }
                     }
                 }
             }
         }
     }
 }
Example #14
0
 public function delete()
 {
     if ($this->old_system) {
         $this->newError(24, 'Класс является системным, вам запрещено его редактирование!');
         return false;
     } else {
         if (!empty($this->id)) {
             // Удаляем все объекты созданные на основе этого класса
             $sel = new ormSelect($this->sname);
             $sel->fields('id');
             //$sel->where('parents', '=', 0);
             while ($obj = $sel->getObject()) {
                 $obj->delete();
             }
             // Удаляем SQL-таблицы всех наследников класса
             while ($class = $this->getInheritor()) {
                 $class->delete();
             }
             // Убираем связь удаляемого класса с другими классами
             db::q('UPDATE <<classes>> SET c_base_class = NULL WHERE c_base_class = "' . $this->id . '";');
             $ret = db::q('DELETE FROM <<classes>> WHERE c_id = "' . $this->id . '";');
             if ($ret !== false) {
                 db::q('DROP TABLE IF EXISTS <<__' . $this->sname . '>>;');
                 return true;
             } else {
                 $this->newError(12, 'Ошибка в SQL запросе!');
                 return false;
             }
         } else {
             return false;
         }
     }
 }
Example #15
0
 private function checkValue($field, $value)
 {
     $type = $this->fields[$field]['f_type'];
     $tmp = '';
     switch ($type) {
         // Строка
         case 10:
             $tmp = system::checkVar($value, isString);
             break;
             // E-mail
         // E-mail
         case 15:
             $tmp = system::checkVar($value, isEmail);
             break;
             // URL
         // URL
         case 20:
             $tmp = system::checkVar($value, isUrl);
             break;
             // Пароль
         // Пароль
         case 35:
             $tmp2 = system::checkVar($value, isPassword);
             if (!empty($tmp2) || $tmp2 === false) {
                 $tmp = $tmp2;
             }
             break;
             // Число
         // Число
         case 40:
             $tmp = system::checkVar($value, isInt);
             break;
             // Позиция в списке
         // Позиция в списке
         case 65:
             $tmp = system::checkVar($value, isInt);
             break;
             // Число  с точкой
         // Число  с точкой
         case 45:
             $tmp = system::checkVar($value, isNum);
             break;
             // Число  с точкой
         // Число  с точкой
         case 47:
             $tmp = system::checkVar($value, isPrice);
             break;
             // Галочка (логический)
         // Галочка (логический)
         case 50:
             $tmp = system::checkVar($value, isBool);
             break;
             // Дата
         // Дата
         case 25:
             if (!empty($value)) {
                 $tmp = system::checkVar($value, isDate);
             }
             break;
             // Время
         // Время
         case 30:
             $tmp = system::checkVar($value, isDateTime);
             break;
             // Дата и Время
         // Дата и Время
         case 32:
             if (!empty($value)) {
                 $tmp = system::checkVar($value, isDateTime);
             }
             break;
             // Большой текст
         // Большой текст
         case 55:
             $value = str_replace(array('<', '>'), array('&lt;', '&gt;'), $value);
             $tmp = system::checkVar($value, isText);
             break;
             // HTML – текст
         // HTML – текст
         case 60:
             $tmp = system::checkVar($value, isText);
             break;
             // Файл
         // Файл
         case 70:
             $tmp = $this->checkLoadFile($field, $value, '', '', $this->fields[$field]['f_max_size']);
             break;
             // Список файлов
         // Список файлов
         case 73:
             if (isset($_FILES[$value]) && count($_FILES[$value]['name']) > 0) {
                 $file_var = $_FILES[$value];
                 $tmp = $value;
                 for ($i = 0; $i < count($file_var['name']); $i++) {
                     if (isset($file_var['tmp_name'][$i]) && file_exists($file_var['tmp_name'][$i])) {
                         if (!empty($file_var['error'][$i])) {
                             $this->newError(30, 'Произошла ошибка при загрузке файлов для поля "' . $field . '"!');
                         }
                     } else {
                         $tmp = false;
                     }
                 }
             }
             break;
             // Изображение
         // Изображение
         case 75:
             $tmp = $this->checkLoadFile($field, $value, array('png', 'gif', 'jpg', 'jpeg'), 'jpg, jpeg, gif, png', $this->fields[$field]['f_max_size']);
             break;
             // Видео
         // Видео
         case 80:
             $tmp = $this->checkLoadFile($field, $value, array('avi', 'mpeg'), 'avi, mpeg', $this->fields[$field]['f_max_size']);
             break;
             // Флеш-ролик
         // Флеш-ролик
         case 85:
             $tmp = $this->checkLoadFile($field, $value, array('flv'), 'flv', $this->fields[$field]['f_max_size']);
             break;
             // Выпадающий список
         // Выпадающий список
         case 90:
             if (empty($value)) {
                 $value = 0;
             }
             $tmp = system::checkVar($value, isString);
             break;
             // Список c множественным выбором
         // Список c множественным выбором
         case 95:
             if (empty($value)) {
                 $value = array();
             }
             $tmp = is_array($value) ? $value : false;
             break;
             // Ссылка на дерево
         // Ссылка на дерево
         case 100:
             if (empty($value)) {
                 $value = array();
             }
             $tmp = is_array($value) ? $value : false;
             break;
             // Теги
         // Теги
         case 105:
             $tmp = system::checkVar($value, isString);
             break;
         default:
             $this->newError(31, 'Тип данных поля "' . $field . '" не поддерживается системой!', $field);
     }
     // Проверка уникальности значения поля
     if ($this->fields[$field]['f_uniqum']) {
         $class_name = $this->class->isInheritor('user') ? 'user' : $this->class->getSName();
         $sel = new ormSelect($class_name);
         $sel->where($field, '=', $tmp);
         if (!empty($this->id)) {
             $sel->where('id', '<>', $this->id);
         }
         if ($sel->getCount() > 0) {
             if ($field == 'name') {
                 $this->newError(29, 'В системе уже есть объект с указанным именем. Выберите другое имя.', 'name');
             } else {
                 $this->newError(32, 'Поле "' . $field . '" должно содержать уникальное не повторяющееся значение. Укажите другое значение.', $field);
             }
         }
     }
     if (!(empty($tmp) && ($type == 35 || $type == 25 || $type == 32) || $this->issetErrors())) {
         if ($tmp !== false) {
             if ($field == 'name') {
                 $this->name = $tmp;
             }
             $this->new_prop[$field] = $tmp;
         } else {
             $this->newError(33, 'Неправильно указано значение для поля "' . $type . '"!', $field);
         }
     }
 }
Example #16
0
 /**
 * @return HTML
 * @param int(string) $section - ID объекта, подразделы которой будут выводиться в списке
 					 или системное имя класса, объекты которого нужно вывести
 * @param string $templ_name - Шаблон оформления по которому будет строится список
 * @param int $max_count - Максимальное количество элементов в списке
 * @param string $order_by - Способ сортировки элементов списка. SQL-подобный синтаксис, например: "name DESC".
 * @param int $start_pos - Номер элемента по порядку с которого будет выводиться список.
 * @desc МАКРОС: Выводит список объектов.
 */
 public function objList($section, $TEMPLATE = 'default', $max_count = 0, $order_by = 0, $start_pos = 0)
 {
     $list = '';
     // Определяем источник данных: ID, имя класса, путь, объект ormPage
     $independent = $section instanceof ormObject ? false : true;
     $class_name = $class_frame = '';
     if ($independent) {
         if (!is_numeric($section)) {
             $pos = strpos($section, ' ');
             if ($pos) {
                 $class_name = substr($section, $pos + 1);
                 $section = substr($section, 0, $pos);
             } else {
                 $class_name = $section;
                 $section = -1;
             }
         }
     }
     // Если нужно, подгружаем файл шаблона
     if (!is_array($TEMPLATE)) {
         $templ_file = '/core/objects/' . $TEMPLATE . '.tpl';
         $TEMPLATE = page::getTemplate($templ_file);
         if (!is_array($TEMPLATE)) {
             return page::errorNotFound('core.objList', $templ_file);
         }
     }
     // Формируем выборку объектов
     $sel = new ormSelect($class_name);
     if ($section >= 0) {
         page::assign('parent_id', $section);
         $sel->where('parents', '=', $section);
     }
     // Сортировка списка
     if (!empty($order_by)) {
         $pos = strpos($order_by, ' ');
         if ($pos) {
             $parram = substr($order_by, $pos + 1);
             $order_by = substr($order_by, 0, $pos);
         } else {
             $parram = '';
         }
         $sel->orderBy($order_by, $parram);
     } else {
         $sel->orderBy(position, asc);
     }
     $class_list = $sel->getClassesList();
     if (!empty($class_list)) {
         // Узнаем какие поля объектов будут участвовать в выборке
         $fields_str = '';
         $fields = page::getFields('obj', $TEMPLATE, $class_list, $class_frame);
         if (isset($fields['obj'])) {
             while (list($key, $val) = each($fields['obj'])) {
                 if ($val != 'url' && $val != 'class' && $val != 'num') {
                     $fields_str .= empty($fields_str) ? $val : ', ' . $val;
                 }
             }
         }
         $sel->fields($fields_str);
         // Количество элементов и постраничная навигация
         if (!empty($max_count)) {
             if (isset($fields['funct']) && in_array('structure.navigation', $fields['funct'])) {
                 $count_page = ceil($sel->getCount() / $max_count);
                 page::assign('count_page', $count_page);
                 if (system::getCurrentNavNum() != 0) {
                     $niz = empty($start_pos) ? system::getCurrentNavNum() * $max_count - $max_count : $start_pos;
                     $sel->limit($niz, $max_count);
                 } else {
                     $sel->limit($max_count);
                 }
             } else {
                 if (!empty($start_pos)) {
                     $sel->limit($start_pos, $max_count);
                 } else {
                     $sel->limit($max_count);
                 }
             }
         }
         // Формируем список
         while ($obj = $sel->getObject()) {
             // Парсим поля страницы
             if (isset($fields['obj_all'])) {
                 reset($fields['obj_all']);
                 while (list($num, $name) = each($fields['obj_all'])) {
                     page::assign('obj.' . $name, $obj->__get($name));
                 }
             }
             $class = $obj->getClass()->getSName();
             $num = $sel->getObjectNum() + 1;
             page::assign('obj.num', $num);
             page::assign('obj.class', $class);
             page::assign('class-first', $num == 1 ? 'first' : '');
             page::assign('class-last', $num == $sel->getObjectCount() ? 'last' : '');
             page::assign('class-odd', $num % 2 == 0 ? 'odd' : '');
             page::assign('class-even', $num % 2 != 0 ? 'even' : '');
             page::assign('class-third', $num % 3 == 0 ? 'third' : '');
             if ($num === 1) {
                 page::assign('first_children_id', $obj->id);
             }
             page::assign('last_children_id', $obj->id);
             if (isset($TEMPLATE['list_' . $class])) {
                 $templ = 'list_' . $class;
             } else {
                 if (isset($TEMPLATE['list'])) {
                     $templ = 'list';
                 } else {
                     $templ = '';
                 }
             }
             if (isset($TEMPLATE[$templ])) {
                 if ($num > 1 && isset($TEMPLATE['separator'])) {
                     $list .= $TEMPLATE['separator'];
                 }
                 $list .= page::parse($TEMPLATE[$templ]);
             }
         }
     }
     if (!empty($list) && $independent) {
         page::assign('list', $list);
         if (isset($TEMPLATE['frame_list'])) {
             $list = page::parse($TEMPLATE['frame_list']);
         } else {
             $list = page::errorBlock('core.objList', $templ_file, 'frame_list');
         }
     }
     return $list;
 }
Example #17
0
    public function defAction()
    {
        $_SESSION['STRUCTURE_LIST_FLAG'] = 1;
        // Если страниц нет, предлагаем добавить новую
        if (ormPages::getCountOfSection(0) == 0) {
            ui::MessageBox(lang::get('STRUCTURE_PAGE_NOT_FOUND'), lang::get('STRUCTURE_PAGE_NOT_FOUND2'));
            system::redirect('/structure/page_add');
        }
        $obj_id = system::issetUrl(2) ? system::url(2) : 0;
        function getPageNotice($page)
        {
            $notice = '';
            if ($page->is_home_page) {
                $notice = lang::get('STRUCTURE_TREE_TEXT12');
            }
            if ($page->other_link != '') {
                $notice = lang::get('STRUCTURE_TREE_TEXT32');
            }
            if (!$page->view_in_menu) {
                if (!empty($notice)) {
                    $notice .= ', ';
                }
                $notice .= lang::get('STRUCTURE_TREE_TEXT22');
            }
            if (!empty($notice)) {
                return '(' . $notice . ')';
            } else {
                return '';
            }
        }
        // Вывод дерева объектов
        $tree = new ormTree(328, 57);
        $tree->setClass('ormPage');
        $tree->setRoot(0, reg::getKey(ormPages::getPrefix() . '/title_prefix'), 'list/0');
        $tree->setNotice('getPageNotice');
        $tree->setRightEdit('list');
        $tree->setRightActive('page_proc_act');
        $tree->setRightRemove('page_proc_moveto');
        $tree->setRightAjaxLoad('list');
        $tree->setDelMessage(lang::get('STRUCTURE_DEL_TITLE'), lang::get('STRUCTURE_DEL_TEXT'));
        $tree->addRight('page_upd', lang::right('page_upd'), 'compose_image');
        $tree->addRight('page_add', lang::right('page_add'), 'add_image');
        //, 'class_list', $class_list
        ui::setLeftPanel($tree->getHTML());
        // Заголовок страницы
        ui::setHeader(lang::right('tree'));
        if (!empty($obj_id) && ($obj = ormPages::get($obj_id))) {
            ui::setNaviBar(lang::right('list'));
            ui::setHeader($obj->name);
            ui::setBackButton('/structure/list/' . $obj->getParentId());
        } else {
            $obj_id = 0;
        }
        // Формируем список классов для быстрого добавления
        $class_name = ormPages::getPopularClass($obj_id);
        $class = ormClasses::get($class_name);
        $types = ormClasses::get('section')->getAllInheritors();
        $no_edit = reg::getList(ormPages::getPrefix() . '/no_edit');
        $elem_list = $cat_list = '';
        while (list($id, $name) = each($types)) {
            if (!in_array($id, $no_edit)) {
                $bc = ormClasses::get($id);
                $pach = '/css_mpanel/tree/images/';
                $ico = 'classes/' . $bc->getSName() . '.png';
                if (!file_exists(ROOT_DIR . $pach . $ico)) {
                    $ico = 'file1.gif';
                }
                if ($bc->isInheritor('category') || $bc->getSName() == 'section') {
                    $cat_list .= '
			    	<li><img src="' . $pach . $ico . '">
			    	<a href="' . system::au() . '/structure/page_add/' . $obj_id . '/' . $bc->getSName() . '">' . $bc->getName() . '</a></li>';
                } else {
                    $elem_list .= '
			    	<li ><img src="' . $pach . $ico . '">
			    	<a href="' . system::au() . '/structure/page_add/' . $obj_id . '/' . $bc->getSName() . '">' . $bc->getName() . '</a></li>';
                }
            }
        }
        $class_list = '<ul>' . $cat_list . '</ul><ul>' . $elem_list . '</ul>';
        ui::newButton(lang::get('PANEL_BTN_ADD_PART') . $class->getPadej(0), "/structure/page_add/" . $obj_id, 'class_list', $class_list);
        // Формируем выборку страниц для таблицы
        $sel = new ormSelect();
        $sel->findInPages();
        $sel->where('parents', '=', $obj_id);
        // Определяем способ сортировки списка
        $order_by = !empty($obj_id) ? $obj->order_by : '';
        if (!empty($order_by)) {
            $pos = strpos($order_by, ' ');
            if ($pos) {
                $parram = substr($order_by, $pos + 1);
                $order_by = substr($order_by, 0, $pos);
            } else {
                $parram = '';
            }
            $sel->orderBy($order_by, $parram);
        } else {
            $sel->orderBy(position, asc);
        }
        // Вывод таблицы
        $table = new uiTable($sel);
        $table->formatValues(true);
        $table->showSearch(true);
        $table->hideEmptyColumns(true);
        $table->addColumn('name', lang::get('STRUCTURE_TABLE_FIELD_1'), 500, true);
        $table->addColumn('image', lang::get('STRUCTURE_TABLE_FIELD_2'), 400, false, false);
        $table->addColumn('price', lang::get('STRUCTURE_TABLE_FIELD_3'), 400);
        $table->addColumn('publ_date', lang::get('STRUCTURE_TABLE_FIELD_4'), 400);
        $table->defaultRight('page_upd');
        $table->addRight('page_upd', 'edit', single);
        $table->addRight('list', 'list', single);
        $table->addRight('page_history', 'history', single);
        $table->addRight('page_proc_act', 'active', multi);
        $table->addRight('page_del', 'drop', multi);
        $table->setDelMessage(lang::get('STRUCTURE_DEL_TITLE'), lang::get('STRUCTURE_DEL_TITLE'));
        $table->setMultiDelMessage(lang::get('STRUCTURE_DEL_TITLE_MULTI'), lang::get('STRUCTURE_DEL_TEXT_MULTI'));
        return $table->getHTML();
    }
Example #18
0
 public function goodsList($order_id, $templ_name = 'goods_list')
 {
     $templ_file = '/eshop/' . $templ_name . '.tpl';
     $TEMPLATE = page::getTemplate($templ_file);
     if (!is_array($TEMPLATE)) {
         return page::errorNotFound('eshop.goodsList', $templ_file);
     }
     if ($order = ormObjects::get($order_id, 'eshop_order')) {
         $fields = page::getFields('obj', $TEMPLATE['list']);
         $sel = new ormSelect('eshop_goods');
         $sel->where('parents', '=', $order_id);
         $list = '';
         $num = $cost = 0;
         while ($goods = $sel->getObject()) {
             if ($obj = ormPages::get($goods->goods_id, 'goods')) {
                 $num++;
                 if (isset($fields['obj'])) {
                     while (list($key, $val) = each($fields['obj'])) {
                         if ($val != 'url' && $val != 'class' && $val != 'num') {
                             page::assign('obj.' . $val, $obj->__get($val));
                         }
                     }
                 }
                 page::assign('obj.num', $num);
                 page::assign('class-first', $num == 1 ? 'first' : '');
                 page::assign('class-last', $num == $sel->getObjectCount() ? 'last' : '');
                 page::assign('class-odd', $num % 2 == 0 ? 'odd' : '');
                 page::assign('class-even', $num % 2 != 0 ? 'even' : '');
                 page::assign('class-third', $num % 3 == 0 ? 'third' : '');
                 page::assign('obj.id', $obj->id);
                 page::assign('obj.name', $obj->name);
                 page::assign('obj.cost', $goods->cost);
                 page::assign('obj.count', $goods->count);
                 page::assign('obj.url', $obj->url);
                 $cost_all = $goods->cost * $goods->count;
                 page::assign('obj.cost_all', $cost_all);
                 $cost += $cost_all;
                 $list .= page::parse($TEMPLATE['list']);
             }
         }
         if (!empty($list)) {
             page::assign('cost', $cost);
             page::assign('list', $list);
             return page::parse($TEMPLATE['frame']);
         } else {
             return page::parse($TEMPLATE['empty']);
         }
     }
 }
Example #19
0
 function getSubscribersCount($id, $obj)
 {
     $sel = new ormSelect('subscribe_user');
     $sel->where('parents', '=', $id);
     return $sel->getCount();
 }
Example #20
0
 public static function getSectionByPath($path)
 {
     $section = '';
     if (is_numeric($path)) {
         if ($path == 0) {
             $section = 'root';
             $class_name = '';
         } else {
             $section = ormPages::get($path);
             $class_name = '';
         }
     } else {
         if (strpos($path, '..')) {
             // Выборка всех подразделов раздела, например "454 .. pages"
             $str = str_replace(' ', '', $path);
             // Определяем класс
             $section_id = 0;
             $pos = strpos($str, '..');
             if ($pos) {
                 $class_name = substr($str, $pos + 2);
                 $section_id = substr($str, 0, $pos);
             } else {
                 $class_name = '';
             }
             $section = self::getAllSubSections($section_id);
         } else {
             if (strpos($path, '>')) {
                 // Обычная цепочка, вида "455 > #5 > category goods"
                 $str = str_replace(array('> ', ' >'), '>', $path);
                 // Определяем класс
                 $pos = strpos($str, ' ');
                 if ($pos) {
                     $class_name = substr($str, $pos + 1);
                     $str = substr($str, 0, $pos);
                 } else {
                     $class_name = '';
                 }
                 // Получаем путь
                 $list = array();
                 $mas = explode('>', $str);
                 while (list($key, $val) = each($mas)) {
                     $val = trim($val);
                     if (!empty($val)) {
                         $list[] = $val;
                     }
                 }
                 // Определяем объект
                 $parent_id = 0;
                 reset($list);
                 while (list($key, $val) = each($list)) {
                     if (is_numeric($val)) {
                         // Указан ID
                         if (empty($key)) {
                             $parent_id = $val;
                         }
                     } else {
                         if ($val[0] == '#') {
                             // Указан порядковый номер в списке
                             $num = str_replace('#', '', $val) - 1;
                             $sel = new ormSelect();
                             $sel->findInPages();
                             $sel->fields('id');
                             $sel->where('active', '=', 1);
                             if (!empty($parent_id)) {
                                 $sel->where('parents', '=', $parent_id);
                             } else {
                                 $sel->where('parents', '=', 0);
                             }
                             $sel->limit($num, 1);
                             $sel->orderBy(position, asc);
                             if ($section = $sel->getObject()) {
                                 $parent_id = $section->id;
                             } else {
                                 $section = false;
                                 break;
                             }
                         } else {
                             // Указан класс
                             $sel = new ormSelect($val);
                             $sel->findInPages();
                             $sel->fields('id');
                             $sel->where('active', '=', 1);
                             if (!empty($parent_id)) {
                                 $sel->where('parents', '=', $parent_id);
                             } else {
                                 $sel->where('parents', '=', 0);
                             }
                             $sel->limit(1);
                             $sel->orderBy(position, asc);
                             if ($section = $sel->getObject()) {
                                 $parent_id = $section->id;
                             } else {
                                 $section = false;
                                 $section;
                             }
                         }
                     }
                 }
             } else {
                 $pos = strpos($path, ' ');
                 if ($pos) {
                     $obj_id = substr($path, 0, $pos);
                     if (is_numeric($obj_id)) {
                         $class_name = substr($path, $pos + 1);
                         if ($obj_id == 0) {
                             $section = 'root';
                         } else {
                             $section = ormPages::get($obj_id);
                         }
                     } else {
                         $class_name = $path;
                     }
                 } else {
                     $class_name = $path;
                 }
             }
         }
     }
     return array('section' => $section, 'class' => $class_name);
 }
Example #21
0
 public function activateAction()
 {
     if (!reg::getKey('/users/reg') || !reg::getKey('/users/activation')) {
         system::redirect('/');
     }
     if ($userKey = system::checkVar(system::url(2), isMD5)) {
         // Ищем нужного пользователя
         $sel = new ormSelect('user');
         $sel->where('md5_flag', '=', $userKey);
         $sel->limit(1);
         if ($user = $sel->getObject()) {
             $key = md5(date('d.m.Y') . 'activate' . $user->id);
             if ($key == $userKey) {
                 $user->active = 1;
                 $user->md5_flag = '';
                 $user->save();
                 // Авторизуем пользователя
                 user::authHim($user);
                 page::globalVar('h1', lang::get('USERS_ADD_H1'));
                 page::globalVar('title', lang::get('USERS_ADD_H1'));
                 return lang::get('USERS_ADD_MSG2');
             }
         }
     }
     return ormPages::get404();
 }
Example #22
0
    private function parseField($field, $TEMPLATE)
    {
        if (in_array($field['f_sname'], $this->read_only)) {
            $value = $this->obj->__get($field['f_sname']);
            page::assign('value', $value);
            if ($field['f_type'] == 90 || $field['f_type'] == 95 || $field['f_type'] == 105) {
                page::assign('val', $this->obj->__get('_' . $field['f_sname']));
            } else {
                page::assign('val', $value);
            }
            $value = page::parse($TEMPLATE['read_only']);
            page::assign('content', $value);
            return page::parse($TEMPLATE['field_standart']);
        }
        // Определяем значение поля
        if (isset($_SESSION['SAVING_POST']) && ($field['f_type'] < 70 || $field['f_type'] > 85) && isset($_SESSION['SAVING_POST'][$field['f_sname']])) {
            $value = $_SESSION['SAVING_POST'][$field['f_sname']];
        } else {
            if ($field['f_type'] == 105) {
                $value = $this->obj->__get('_' . $field['f_sname']);
            } else {
                $value = $this->obj->__get($field['f_sname']);
            }
        }
        page::assign('field.value', $value);
        // Для страниц, для кнопки "Показать \ скрыть доп. поля"
        if ($this->obj instanceof ormPage && in_array($field['f_sname'], $this->page_fields)) {
            $sh_page = isset($_SESSION['SH_FIELDS']) && $_SESSION['SH_FIELDS'] == 'show' ? '' : ' style="display:none;"';
            page::assign('sh_page', $sh_page);
        } else {
            page::assign('sh_page', '');
        }
        // Специальная обработка данных
        if ($field['f_type'] == 50) {
            page::assign('element', ui::CheckBox($field['f_sname'], 1, $value));
        } else {
            if ($field['f_type'] == 32) {
                if (empty($value) || $value == '0000-00-00 00:00:00') {
                    page::assign('field.date', '');
                    page::assign('field.time', '00:00');
                } else {
                    page::assign('field.date', date('d.m.Y', strtotime($value)));
                    page::assign('field.time', date('H:i', strtotime($value)));
                }
            } else {
                if ($field['f_type'] == 25) {
                    $time = empty($value) || $value == '0000-00-00' ? '' : date('d.m.Y', strtotime($value));
                    page::assign('field.date', $time);
                } else {
                    if ($field['f_type'] == 30) {
                        $time = empty($value) ? '' : date('H:i:s', strtotime($value));
                        page::assign('field.time', $time);
                    } else {
                        if ($field['f_type'] == 70 || $field['f_type'] == 75 || $field['f_type'] == 80 || $field['f_type'] == 85) {
                            if (system::$isAdmin) {
                                page::assign('element', ui::loadFile($field['f_sname'], $value));
                            } else {
                                page::fParse('element', $TEMPLATE['upload_file_field']);
                            }
                        } else {
                            if ($field['f_type'] == 73) {
                                page::assign('element', ui::listFile($field['f_sname'], $value));
                            } else {
                                if ($field['f_type'] == 90 || $field['f_type'] == 95) {
                                    // Выпадающий список или Список со множественным выбором
                                    // Получаем список объектов справочника
                                    page::assign('field.sname', $field['f_sname']);
                                    $data = ormObjects::getObjectsByClass($field['f_list_id']);
                                    $multi = $field['f_type'] == 95 ? 'selectbox_multi' : 'selectbox_template';
                                    $empty = !$field['f_required'] ? '&nbsp;' : '';
                                    if (system::$isAdmin) {
                                        page::assign('element', ui::SelectBox($field['f_sname'], $data, $value, 400, $empty, '', $multi));
                                        if ($field['f_quick_add']) {
                                            page::fParse('plus', $TEMPLATE['field_' . $field['f_type'] . '_plus']);
                                        } else {
                                            page::assign('plus', '');
                                        }
                                    } else {
                                        page::assign('element', ui::SelectBox($field['f_sname'], $data, $value, 200, $empty, '', $multi));
                                    }
                                } else {
                                    if ($field['f_type'] == 97) {
                                        // Подчиненный справочник
                                        // Получаем список объектов справочника
                                        $sel = new ormSelect($field['f_list_id']);
                                        $sel->where('parents', '=', $this->obj->id);
                                        // Выводим мультиформу для добавления и редактирования
                                        $form = new ormMultiForm('subject_list_' . $field['f_id']);
                                        $form->setData($sel);
                                        $form->insideForm();
                                        $re = $form->getHTML();
                                        //  echo $re;
                                        page::assign('element', $re);
                                    } else {
                                        if ($field['f_type'] == 100) {
                                            // Связь с объектом
                                            page::assign('element', ui::objectLinks($this->obj, $field['f_id']));
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        page::assign('field.id', $field['f_id']);
        page::assign('field.name', $field['f_name']);
        page::assign('field.hint', $field['f_hint']);
        page::assign('field.sname', $field['f_sname']);
        page::fParse('field.dotted', !empty($field['f_hint']) ? 'dotted' : '');
        if (empty($field['f_max_size'])) {
            $field['f_max_size'] = $field['f_type'] == 60 ? 200 : 100;
        }
        page::assign('field.max_size', $field['f_max_size']);
        // Генерируем яву (создаем правила проверки для элементов формы)
        if ($field['f_required'] && ($field['f_type'] == 35 && $this->obj->id == '' || $field['f_type'] != 35)) {
            $msg = str_replace('%title%', $field['f_name'], lang::get('CONSTR_BASE_FIELD_E2'));
            if ($field['f_type'] == 60) {
                // HTML - редактор
                $this->addit_function .= page::parse('
  					function checkValue%field.sname%(){
  					 	var value = CKEDITOR.instances["%field.sname%"].getData();
    					return (value != "") ? true : [[ "cke_%field.sname%", "' . $msg . '" ]];
					}
  				');
                $this->java .= page::parse('rules.push("function,checkValue%field.sname%");');
            } else {
                if ($field['f_type'] == 100) {
                    // Выбор объекта
                    $this->addit_function .= page::parse('
  					function checkObjectLinks%field.sname%(){
  						var count = $("#objectsLinkList_%field.sname% > li").length;
    					return (count > 0) ? true : [[ %field.sname%, "' . $msg . '" ]];
					}
  				');
                    $this->java .= page::parse('rules.push("function,checkObjectLinks%field.sname%");');
                } else {
                    if ($field['f_type'] == 32) {
                        // Каледарь и время
                        $this->java .= page::parse('rules.push("required,%field.sname%_date,' . $msg . '");');
                    } else {
                        $this->java .= page::parse('rules.push("required,%field.sname%,' . $msg . '");');
                    }
                }
            }
            $zvezd = 'chek';
        } else {
            $zvezd = '';
        }
        page::assign('field.zvezd', $zvezd);
        if ($field['f_type'] == 15) {
            $this->java .= page::parse('rules.push("valid_email,%field.sname%,' . lang::get('CONSTR_BASE_FIELD_E3') . '");');
        }
        if ($field['f_type'] == 20) {
            $this->java .= page::parse('rules.push("reg_exp,%field.sname%,^(((f|ht){1}tp:/)*/[-a-zA-Z0-9@:%_\\+.~#?&//=]+)*$|^\\/{1}, ' . lang::get('CONSTR_BASE_FIELD_E4') . '");');
        }
        if ($field['f_type'] == 40) {
            $this->java .= page::parse('rules.push("digits_only,%field.sname%,' . lang::get('CONSTR_BASE_FIELD_E6') . '");');
        }
        if ($field['f_type'] == 45) {
            $this->java .= page::parse('rules.push("float_only,%field.sname%,' . lang::get('CONSTR_BASE_FIELD_E7') . '");');
        }
        if ($field['f_type'] == 47) {
            $this->java .= page::parse('rules.push("price_only,%field.sname%,' . lang::get('CONSTR_BASE_FIELD_E8') . '");');
        }
        if (isset($TEMPLATE['field_' . $field['f_type']])) {
            return page::parse($TEMPLATE['field_' . $field['f_type']]);
        } else {
            return str_replace('%title%', $field['f_sname'], lang::get('CONSTR_BASE_FIELD_E5'));
        }
    }
Example #23
0
    /**
     * @return string HTML
     * @param integer $obj - Экземпляр объекта (ormObject, ormPage)
     * @param string $action - Тип действия: "upd" - изменение, "add" - добавление
     * @desc Выводит форму изменения прав доступа для объекта
     */
    public static function getListForObject($obj, $action)
    {
        if (file_exists(MODUL_DIR . '/users/template/right_list_object.tpl')) {
            include MODUL_DIR . '/users/template/right_list_object.tpl';
        }
        if (isset($_POST['query'])) {
            // Формируем список подсказок для пользователя
            $sel = new ormSelect('user');
            $sel->fields('login');
            $sel->where('id', '<>', '29');
            $sel->where('login', 'LIKE', '%' . $_POST['query'] . '%');
            $users = '';
            while ($user = $sel->getObject()) {
                $zapi = $sel->getObjectNum() != 0 ? ', ' : '';
                $users .= $zapi . "'" . $user->login . "'";
            }
            echo "{ query:'" . $_POST['query'] . "', suggestions:[" . $users . "], data:[] }";
            system::stop();
        } else {
            if (isset($_POST['user_name'])) {
                // Добавляем выбранного пользователя в список
                $sel = new ormSelect('user');
                $sel->fields('login');
                $sel->where('id', '<>', '29');
                $sel->where('login', '=', $_POST['user_name']);
                $sel->limit(1);
                $user = $sel->getObject();
                if ($user instanceof ormObject) {
                    page::assign("group.id", $user->id);
                    page::assign("group.name", $user->login);
                    page::assign("checked_edit", '');
                    page::assign("checked_view", 'checked');
                    echo page::parse($TEMPLATE['group']);
                }
                system::stop();
            }
        }
        // Выводим список групп
        $sel = new ormSelect('user_group');
        $sel->where('id', '<>', '32');
        $sel->orderBy('name', asc);
        $groups = $sel->getData();
        $rights = array();
        if ($action == 'upd') {
            $users = db::q('SELECT o_id, login o_name
							FROM <<rights>>, <<objects>>, <<__user>>
							WHERE r_obj_id = "' . $obj->id . '" and
								  r_group_id = o_id and
								  obj_id = o_id and
								  o_class_id <> 33;', records);
            $groups = array_merge($groups, $users);
            $tmp = db::q('SELECT r_state, r_group_id FROM <<rights>> WHERE r_obj_id = "' . $obj->id . '";', records);
            while (list($key, $right) = each($tmp)) {
                $rights[$right['r_group_id']] = $right['r_state'];
            }
            $select_all = count($tmp) == 1 && empty($tmp[0]['r_group_id']) ? $tmp[0]['r_state'] : false;
        } else {
            $select_all = 2;
        }
        $items = '';
        $num = $edit_num = $view_num = 0;
        while (list($key, $group) = each($groups)) {
            $state = isset($rights[$group['o_id']]) ? $rights[$group['o_id']] : 0;
            if ($state == 2) {
                $edit_num++;
            }
            $checked_edit = $state == 2 || $select_all == 2 ? 'checked' : '';
            page::assign("checked_edit", $checked_edit);
            if ($state > 0) {
                $view_num++;
            }
            $checked_view = $state > 0 || $select_all > 0 ? 'checked' : '';
            page::assign("checked_view", $checked_view);
            page::assign("group.id", $group['o_id']);
            page::assign("group.name", $group['o_name']);
            $items .= page::parse($TEMPLATE['group']);
            $num = $key + 1;
        }
        $checked_edit = $select_all == 2 || $num == $edit_num ? 'checked' : '';
        page::assign("checked_edit", $checked_edit);
        $checked_view = $select_all > 0 || $num == $view_num ? 'checked' : '';
        page::assign("checked_view", $checked_view);
        page::assign("text.all_user", lang::get('STRUCTURE_RIGHT_ALL_USER'));
        page::assign("text.title", lang::get('STRUCTURE_RIGHT_TITLE'));
        page::assign("groups", $items);
        return page::parse($TEMPLATE['frame']);
    }
Example #24
0
 public function proc_upd()
 {
     // Обработчик для еденичного изменения класса
     $mini_action = substr(system::action(), -3);
     if (system::action() == "proc_upd") {
         $obj = ormObjects::get(system::POST('obj_id'));
         $parent_id = $obj->parent_id;
     } else {
         if (system::action() == "proc_add") {
             $obj = new ormObject();
             $obj->setClass('subscribe_user');
             $parent_id = system::POST('obj_id');
         }
     }
     // Если произошли ошибки, перенаправляем на главную страницу модуля
     if ($obj->issetErrors()) {
         system::redirect('/subscription');
     }
     // Присваиваем пришедшие значения полям в объекте
     $obj->loadFromPost();
     // Сохраняем изменения
     $obj_id = $obj->save();
     if ($obj->issetErrors(29)) {
         // Если указанный e-mail уже существует, пытаемся найти его и подписать на рассылки.
         $sel = new ormSelect('subscribe_user');
         $sel->where('name', '=', system::POST('name', isString));
         $sel->limit(1);
         if ($obj = $sel->getObject()) {
             $obj->tabuList('subscribes');
             $obj->loadFromPost();
             reset($_POST['subscribes']);
             while (list($key, $val) = each($_POST['subscribes'])) {
                 $obj->setNewParent($val);
             }
             $obj_id = $obj->save();
         }
     }
     // Если объект не сохранился, выводим пользователю текст ошибки.
     if ($obj_id === false) {
         system::savePostToSession();
         ui::MessageBox(lang::get('TEXT_MESSAGE_ERROR'), $obj->getErrorListText());
         ui::selectErrorFields($obj->getErrorFields());
         $obj_id = empty($_POST['obj_id']) ? '' : $_POST['obj_id'];
         system::redirect('/subscription/user_' . $mini_action . '/' . $obj_id);
     }
     // Если данные изменились корректно перенаправляем на соответствующию страницу
     if ($_POST['parram'] == 'apply') {
         system::redirect('/subscription/user_upd/' . $obj_id);
     } else {
         system::redirect('/subscription/user/' . $parent_id);
     }
 }
Example #25
0
 /**
  * @return HTML
  * @param int $section_id - ID новостной ленты, для которой необходимо построить RSS-ленту
  * @param string $templ_name - Шаблон оформления, по которому будет строится RSS-лента
  * @desc МАКРОС: Выводит содержимое RSS-ленты.
  */
 public function rss($section_id, $templ_name = 'rss')
 {
     $templ_file = '/structure/rss/' . $templ_name . '.tpl';
     $TEMPLATE = page::getTemplate($templ_file);
     if (!is_array($TEMPLATE)) {
         return page::errorNotFound('structure.rss', $templ_file);
     }
     $cur_domain = 'http://' . domains::curDomain()->getName();
     page::assign('channel.url', $cur_domain);
     page::assign('channel.date', date('r'));
     page::assign('channel.notice', '');
     // Определяем из каких категорий выводить ленту новостей
     $sections = array();
     if ($section_id == 'all') {
         // Из нескольких
         $sel = new ormSelect('news_feed');
         $sel->findInPages();
         $sel->fields('id');
         $sel->where('rss_export', '=', 1);
         $sel->where('active', '=', 1);
         while ($obj = $sel->getObject()) {
             $sections[] = $obj->id;
         }
         page::assign('channel.title', domains::curDomain()->getSiteName());
     } else {
         // Из одной
         $section_id = system::checkVar($section_id, isInt);
         if (empty($section_id)) {
             return '';
         }
         $sections[] = $section_id;
         if ($sect = ormPages::get($section_id)) {
             page::assign('channel.title', $sect->name);
         }
     }
     // Формируем выборку объектов
     $sel = new ormSelect();
     $sel->findInPages();
     $sel->fields('name, notice, publ_date');
     $sel->where('parents', '=', $sections, 'OR');
     $sel->where('active', '=', 1);
     $sel->orderBy('publ_date', desc);
     $sel->limit(3);
     // Формируем список
     $list = '';
     while ($obj = $sel->getObject()) {
         $num = $sel->getObjectNum() + 1;
         page::assign('obj.num', $num);
         page::assign('obj.id', $obj->id);
         page::assign('obj.url', $cur_domain . $obj->_url);
         page::assign('obj.name', $obj->name);
         $notice = str_replace('&nbsp;', '', strip_tags($obj->notice));
         page::assign('obj.notice', $notice);
         $date = date('r', strtotime($obj->publ_date));
         page::assign('obj.date', $date);
         /*
         if ($obj->podkast != '') {
             page::assign('obj.media_url', $cur_domain.$obj->podkast);
             page::fParse('media', $TEMPLATE['media']);
         } else
             page::assign('media', '');
         */
         if (isset($TEMPLATE['list'])) {
             $list .= page::parse($TEMPLATE['list']);
         } else {
             return page::errorBlock('structure.rss', $templ_file, 'list');
         }
     }
     if (!empty($list)) {
         page::assign('list', $list);
         if (isset($TEMPLATE['frame_list'])) {
             $list = page::parse($TEMPLATE['frame_list']);
         } else {
             return page::errorBlock('structure.rss', $templ_file, 'frame_list');
         }
     }
     return $list;
 }
Example #26
0
 private static function checkSocialUser($user_info)
 {
     $sel = new ormSelect('user');
     $sel->where($sel->val('social_identity', '=', $user_info['identity']), $sel->val('social_type', '=', $user_info['social_type']));
     $sel->limit(1);
     if ($user = $sel->getObject()) {
         // Пользователь уже зарегистрирован
         $groups = $user->getParents();
         $sel = new ormSelect('user_group');
         $sel->where('id', '=', $groups, 'OR');
         $sel->where('active', '=', 1);
         if (!$user->active || $sel->getCount() < 1) {
             // Ошибка: Пользователь или группа выключены, авторизация не возможна
             echo lang::get('USERS_DISABLE_AUTH');
             die;
         } else {
             if (user::authHim($user)) {
                 // Пользователь авторизован, закрываем дочернее окно и возвращаемся на сайт
                 self::closeWindowAndOpen('/');
             }
         }
     } else {
         // Пользователь еще не создан, регистрируем
         if (reg::getKey('/users/confirm') || reg::getKey('/users/ask_email') && empty($user_info['email'])) {
             // Запрашивает согласие с правилами или e-mail
             $_SESSION['SOCIAL_AUTH_USER_INFO'] = $user_info;
             echo page::macros('users')->socialAuthConfirm();
         } else {
             // регистрируем
             $user = self::createUserForSocial($user_info);
             if ($user && !$user->issetErrors()) {
                 user::authHim($user);
                 self::closeWindowAndOpen('/');
             } else {
                 if ($user instanceof ormObject) {
                     echo $user->getErrorListText();
                 } else {
                     echo 'Unknown error';
                 }
             }
         }
         system::stop();
     }
 }
Example #27
0
 /**
  * @return HTML
  * @param int $obj_id - ID раздела, из которого необходимо вывести список голосований.
  *                      Если вывести список всех голосований на сайте, укажите "all".
  * @param string $templ_name - Шаблон оформления.
  * @param int $max_count - Максимальное количество элементов в списке.
  * @param string $order_by - Способ сортировки элементов списка. SQL-подобный синтаксис, например: "name DESC".
  * @desc МАКРОС: Выводит список голосований из указанного раздела. 
  */
 public function objList($obj_id = 'all', $templ_name = 'default', $max_count = 10, $order_by = 0)
 {
     $templ_file = '/voting/' . $templ_name . '.tpl';
     $TEMPLATE = page::getTemplate($templ_file);
     if (!is_array($TEMPLATE)) {
         return page::errorNotFound('voting.objList', $templ_file);
     }
     $key = 'vote-list' . $obj_id . $templ_name . $max_count;
     if (!($data = cache::get($key)) || $order_by == 'random') {
         if ($obj_id != 'all') {
             $info = ormPages::getSectionByPath($obj_id);
             if ($info['section'] === false) {
                 return '';
             }
             if ($info['section'] instanceof ormPage) {
                 $section = $info['section'];
                 $obj_id = $section->id;
             }
         }
         // Получаем список голосований
         $sel = new ormSelect('vote');
         $sel->findInPages();
         $sel->where('active', '=', 1);
         $sel->where('view_in_menu', '=', 1);
         // Сортировка списка
         if (!empty($order_by)) {
             $pos = strpos($order_by, ' ');
             if ($pos) {
                 $parram = substr($order_by, $pos + 1);
                 $order_by = substr($order_by, 0, $pos);
             } else {
                 $parram = '';
             }
             $sel->orderBy($order_by, $parram);
         } else {
             $sel->orderBy('publ_date', desc);
         }
         $sel->limit($max_count);
         if (is_numeric($obj_id)) {
             $sel->where('parents', '=', $obj_id);
         }
         // Узнаем какие поля объектов будут участвовать в выборке
         $fields_str = 'close, multiselect';
         $fields = page::getFields('obj', $TEMPLATE['vote_result'] . $TEMPLATE['vote']);
         if (isset($fields['obj'])) {
             while (list($okey, $val) = each($fields['obj'])) {
                 if ($val != 'url' && $val != 'class' && $val != 'num') {
                     $fields_str .= empty($fields_str) ? $val : ', ' . $val;
                 }
             }
         }
         $sel->fields($fields_str);
         $data = $sel->getData();
         // Записываем в кэш
         cache::set($key, $data);
     }
     // Выводим список на страницу
     $list = '';
     foreach ($data as $obj) {
         $list .= $this->objView($obj, $TEMPLATE);
     }
     page::assign('list', $list);
     return page::parse($TEMPLATE['frame']);
 }
Example #28
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;
     }
 }
Example #29
0
 static function checkObjectLinks()
 {
     if (system::url(0) == 'getObjectLinksTree') {
         if (file_exists(MODUL_DIR . '/mpanel/template/objectLinks.tpl')) {
             include MODUL_DIR . '/mpanel/template/objectLinks.tpl';
         }
         $tree = new ormTree(457, 0);
         $tree->miniStyle();
         $tree->setClass('ormPage');
         $tree->setRoot(0, reg::getKey(ormPages::getPrefix() . '/title_prefix'));
         $tree->setRightAjaxLoad('tree');
         page::assign('tree', $tree->getHTML());
         page::assign('parram', system::url(1));
         echo page::parse($TEMPLATE['tree_frame']);
         system::stop();
     } else {
         if (system::url(0) == 'getObjectLinks') {
             if (file_exists(MODUL_DIR . '/mpanel/template/objectLinks.tpl')) {
                 include MODUL_DIR . '/mpanel/template/objectLinks.tpl';
                 if (!($obj = ormPages::get(system::url(1)))) {
                     $obj = ormObjects::get(system::url(1));
                 }
                 if ($obj instanceof ormObject && !$obj->issetErrors()) {
                     page::assign('id', $obj->id);
                     page::assign('name', $obj->name);
                     page::assign('url', $obj->url);
                     page::assign('field_name', system::url(2));
                     page::assign('field_id', system::url(3));
                     if ($obj->getClass()->isPage()) {
                         echo page::parse($TEMPLATE['new_object_link']);
                     } else {
                         echo page::parse($TEMPLATE['object_link']);
                     }
                 }
             }
             system::stop();
         } else {
             if (system::url(0) == 'findObjectLinks' && isset($_POST['query'])) {
                 // Формируем список подсказок
                 $sel = new ormSelect();
                 $sel->findInPages();
                 $sel->fields('name');
                 $sel->where('name', 'LIKE', '%' . $_POST['query'] . '%');
                 $list = $list2 = '';
                 while ($obj = $sel->getObject()) {
                     $zapi = $sel->getObjectNum() != 0 ? ', ' : '';
                     $list .= $zapi . "'" . $obj->name . "'";
                     $list2 .= $zapi . " ['" . $obj->id . "', '" . system::url(1) . "' ]";
                 }
                 echo "{ query:'" . $_POST['query'] . "', suggestions:[" . $list . "], data:[" . $list2 . "] }";
                 system::stop();
             }
         }
     }
 }