/** * @return NULL * @param int $goods_id - ID товара * @param int $count - Количество товаров * @desc Добавляет товар в корзину */ static function addGoods($goods_id, $count) { if (!isset($_SESSION['basket'])) { $_SESSION['basket'] = array(); } // Получаем экземпляр товара if (is_numeric($goods_id)) { $goods = ormPages::get($goods_id, 'goods'); } else { if ($goods_id instanceof ormPage) { $goods = $goods_id; } else { $goods = false; } } // Добавляем в корзину if ($goods instanceof ormPage && $goods->isInheritor('goods')) { if (!reg::getKey('/eshop/check_count') || reg::getKey('/eshop/min_count') < $goods->count) { if (isset($_SESSION['basket'][$goods->id])) { $_SESSION['basket'][$goods->id]['count']++; } else { $_SESSION['basket'][$goods->id] = array('goods_id' => $goods->id, 'cost' => $goods->price, 'count' => $count); } } } }
function upd() { // Устанавливаем кнопки для формы ui::setCancelButton('/comments/list'); ui::newButton(lang::get('BTN_SAVE'), "javascript:sendForm('save');"); ui::newButton(lang::get('BTN_APPLY'), "javascript:sendForm('apply');"); if (file_exists(MODUL_DIR . '/comments/template/comment.tpl')) { include MODUL_DIR . '/comments/template/comment.tpl'; } if (!($obj = comments::get(system::url(2)))) { system::redirect('/comments/list'); } if ($obj->getUserId() != 0 && user::issetRight('user_upd', 'users')) { $url = system::au() . '/users/user_upd/' . $obj->getUserId(); page::assign('user_link', $url); page::fParse('user_name', $TEMPLATE['user_link']); } else { page::fParse('user_name', $TEMPLATE['user_name']); } page::assign('obj.id', $obj->id()); page::assign('obj.username', $obj->getUserName()); page::assign('obj.email', $obj->getEmail()); page::assign('obj.text', $obj->getText()); page::assign('obj.date', date('d.m.Y H:i', strtotime($obj->getPublDate()))); page::assign('obj.parram', $obj->getParram()); ui::CheckBox('active', 1, $obj->isActive(), 'Проверен'); // Информация о странице if ($page = ormPages::get($obj->getObjId())) { page::assign('page.id', $page->id); page::assign('page.url', $page->url); page::assign('page.name', $page->name); } return page::parse($TEMPLATE['frame']); }
public function to_basketAction() { if ($goods = ormPages::get(system::url(2), 'goods')) { $count = system::issetUrl(3) ? system::url(3) : 1; basket::addGoods($goods, $count); } system::redirect('/eshop/basket'); }
public function unsubscribeAction() { if ($page = ormPages::get(system::url(3))) { comments::unsubscribe(system::url(2), system::url(3)); page::globalVar('title', lang::get('COM_TITLE')); page::globalVar('h1', lang::get('COM_TITLE')); return lang::get('COM_UNSUBSCRIBE') . '"' . $page->name . '".'; } }
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('/'); } } }
/** * @return integer - ID шаблона * @param integer $obj_id - ID раздела сайта * @desc Определяет популярный (часто используемый) шаблон в указанном разделе */ static function getPopularForSection($obj_id) { $sql = empty($obj_id) ? ' r_parent_id is NULL and ' : ' r_parent_id = "' . $obj_id . '" and '; $mas = db::q('SELECT template_id, template2_id FROM <<pages>>, <<objects>>, <<rels>> WHERE ' . $sql . ' r_field_id is NULL and r_children_id = o_id and p_obj_id = o_id and o_to_trash = 0 GROUP BY o_id;', records); if (count($mas) > 0) { return array(self::getPopTemplate($mas, 'template_id'), self::getPopTemplate($mas, 'template2_id')); } else { if (!empty($obj_id)) { return array(ormPages::get($obj_id)->__get('template_id'), ormPages::get($obj_id)->__get('template2_id')); } else { return array(0, 0); } } }
public function change_rateAction() { if ($page = ormPages::get(system::url(2))) { if (!isset($_SESSION['change_rate'][$page->id]) && $page->getClass()->issetField('rate')) { // Высчитываем новый рейтинг $rate = system::checkVar(system::url(3), isInt); if ($rate > 5) { $rate = 5; } else { if ($rate < 1) { $rate = 1; } } $new_rate = $page->rate != 0 ? ($page->rate + $rate) / 2 : $rate; // Сохраняем $page->rate = $new_rate; $page->save(); $_SESSION['change_rate'][$page->id] = 1; system::json(array('error' => 0, 'new_rate' => $new_rate)); } } system::json(array('error' => 1, 'new_rate' => 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(); } } } }
public function getObject() { if (!isset($this->cache['data'])) { $this->cache['data'] = $this->createQuery(1); } if (!isset($this->cache['num'])) { $this->reset(); } $this->cache['num']++; if ($this->cache['num'] < count($this->cache['data'])) { $obj_data = $this->cache['data'][$this->cache['num']]; if (($class = ormClasses::get($obj_data['o_class_id'])) && $class->isPage()) { return ormPages::get($obj_data); } else { return ormObjects::get($obj_data); } } }
private function sendEmails() { $last_email = ''; // Информация о новом комментарии page::assign('username', $this->getUserName()); page::assign('comment', $this->getText()); page::assign('comment_id', $this->id()); // Информация о странице if ($page = ormPages::get($this->getObjId())) { page::assign('page.id', $page->id); page::assign('page.url', $page->url); page::assign('page.name', $page->name); } // Отправляем письмо автору предыдущего коммента if ($this->getParentId() != 0) { $old_comment = new comment($this->getParentId()); if ($old_comment->getEmail() != $this->getEmail()) { $last_email = $old_comment->getEmail(); page::assign('old_comment', $old_comment->getText()); page::assign('name', $old_comment->getUserName()); system::sendMail('/comments/mails/new_answer.tpl', $last_email); } } // Отправляем письма всем подписавщимся на уведомления $sql = 'SELECT c_username, c_email FROM <<comments>> WHERE c_obj_id = "' . $this->getObjId() . '" and c_send_email = 1 and c_id <> "' . $this->id() . '" GROUP BY c_email;'; $list = db::q($sql, records); if (!empty($list)) { while (list($key, $val) = each($list)) { if ($val['c_email'] != $last_email && $val['c_email'] != $this->getEmail()) { page::assign('name', $val['c_username']); page::assign('index', str_replace(array('.', '@'), array('_', '__'), $val['c_email'])); system::sendMail('/comments/mails/new_comment.tpl', $val['c_email']); } } } }
function getClassName($val, $obj) { if ($obj = ormPages::get($val)) { return $obj->getClass()->getName(); } }
public function send_messageAction() { if ($form_obj = ormObjects::get(system::POST('form_id'))) { $issetErrors = false; $answer = array(); // Проверка капчи if ($form_obj->captcha && !system::validCapcha('random_image')) { $issetErrors = true; $answer = array('field' => 'random_image', 'msg' => lang::get('FEEDBACK_ERROR1')); } // Если указанно куда, добавляем объект в БД if (($form_obj->any_sections || $form_obj->section) && !$issetErrors) { // Определяем раздел, в который будем добавлять отзыв if ($form_obj->any_sections) { $section = system::POST('section_id', isInt); } else { $section = $form_obj->section; $section = !empty($section) ? $section[0] : 0; } // Создаем объект обратной связи $obj = new ormPage(); $obj->setParent($section); $obj->setClass($form_obj->form_class); $obj->tabuList('pseudo_url', 'h1', 'keywords', 'title', 'description', 'answer', 'active', 'is_home_page', 'view_in_menu', 'view_submenu', 'in_search', 'in_index', 'in_new_window', 'other_link', 'img_act', 'img_no_act', 'img_h1'); $obj->loadFromPost(); $obj->active = 0; $obj->view_in_menu = 1; $obj->view_submenu = 1; $obj->in_search = 1; $obj->in_index = 1; $obj->is_home_page = 0; if ($obj->name != '') { $obj->h1 = $obj->name; $obj->title = $obj->name; } $obj->pseudo_url = rand(1000, 9999); $obj->template_id = ($sect = ormPages::get($form_obj->section)) ? $sect->template_id : 1; $obj->form_id = $form_obj->id; $obj->setRightForAll(2); $obj_id = $obj->save(); if ($obj_id) { $obj->pseudo_url = $obj_id; $obj->save(); $obj = new ormPage($obj_id); } else { $issetErrors = true; $f = $obj->getErrorFields(); $answer = array('field' => $f['focus'], 'msg' => $obj->getErrorListText(' ')); } } if (!$issetErrors) { // Отправка нужных писем page::assign('site_name', domains::curDomain()->getSiteName()); page::assign('site_url', domains::curDomain()->getName()); page::assign('base_email', domains::curDomain()->getEmail()); while (list($key, $val) = each($_POST)) { page::assign($key, system::checkVar($val, isText)); } if (isset($obj)) { $fields = $obj->getClass()->loadFields(); foreach ($fields as $field) { if (in_array($field['f_type'], array(70, 75, 80, 85))) { $fsname = $field['f_sname']; $fvalue = $obj->{$fsname}; if ($fvalue != '') { page::assign($fsname, $fvalue); } } } } // Если указан список адресатов, отправляем письма if ($form_obj->mailing_list != '') { $mail = new phpmailer(); $mail->From = $this->parse($form_obj->admin_sender_address); $mail->FromName = $this->parse($form_obj->admin_sender_name); /* if (!empty($this->files)) for($i = 0; $i < count($this->files); $i++) $mail->AddAttachment($this->files[$i][0], $this->files[$i][1]); */ $mail->AddAddress($form_obj->mailing_list); $mail->WordWrap = 50; $mail->IsHTML(true); $mail->Subject = $this->parse($form_obj->admin_subject); $mail->Body = $this->parse($form_obj->admin_template); $mail->Send(); } // Если нужно, отправляем уведомление пользователю if ($form_obj->send_notice && !$issetErrors) { $mail = new phpmailer(); $mail->From = $this->parse($form_obj->notice_sender_address); $mail->FromName = $this->parse($form_obj->notice_sender_name); $mail->AddAddress(system::POST('email')); $mail->WordWrap = 50; $mail->IsHTML(true); $mail->Subject = $this->parse($form_obj->notice_subject); $mail->Body = $this->parse($form_obj->notice_template); $mail->Send(); } // Показываем результат if (system::isAjax()) { if ($form_obj->msg != '') { $text = $form_obj->msg; } else { $text = lang::get('FEEDBACK_MSG_1'); } system::json(array('field' => 0, 'msg' => strip_tags($text))); } else { system::redirect('/feedback/ok/' . $form_obj->id); } } else { // Произошли ошибки if (system::isAjax()) { system::json($answer); } else { system::savePostToSession(); system::saveErrorToSession('feedback', $answer); if (empty($_POST['back_url'])) { $_POST['back_url'] = '/structure/map'; } system::redirect($_POST['back_url'], true); } } system::stop(); } else { system::stop(); } }
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(); }
public function getParent($class_name = '') { if (empty($class_name)) { if ($this instanceof ormPage) { return ormPages::get($this->getParentId()); } else { return ormObjects::get($this->getParentId()); } } else { if ($class = ormClasses::get($class_name)) { // Ищем родителя нужного класса $this->getParents(); reset($this->parents); while (list($obj_id, $val) = each($this->parents)) { if ($val['parent_class'] == $class->id()) { if ($class->isPage()) { return ormPages::get($obj_id); } else { return ormObjects::get($obj_id); } } } } } return false; }
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); }
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']); } } }
public function del() { if (system::issetUrl(2) && is_numeric(system::url(2))) { // Одиночное удаление if ($obj = ormPages::get(system::url(2))) { $obj->toTrash(); echo 'delete'; } } else { if (isset($_POST['objects'])) { // Множественное удаление while (list($id, $val) = each($_POST['objects'])) { if ($obj = ormPages::get($id)) { $obj->toTrash(); } } echo 'delete'; } } system::stop(); }
public function tagAction() { $templ_file = '/search/gettag.tpl'; $TEMPLATE = page::getTemplate($templ_file); if (!is_array($TEMPLATE)) { return page::errorNotFound('search.getTag', $templ_file); } if (system::issetUrl(2) && ($tag = tags::infoTag(system::url(2)))) { $msg = lang::get('SEARCH_H1_TAGS') . ' "' . $tag['name'] . '"'; page::globalVar('h1', $msg); page::globalVar('title', $msg); // Получаем список классов $classes_filter = array(); if (!empty($_POST['classes'])) { $tmp = explode(",", $_POST['classes']); $classes_filter = array(); foreach ($tmp as $v) { $v = trim($v); if (!empty($v)) { $classes_filter[] = $v; } } } $max_count = reg::getKey(ormPages::getPrefix('search') . '/max_count'); $start = (system::getCurrentNavNum() - 1) * $max_count; $result = tags::find(array($tag['id']), $max_count, $start, $classes_filter); $list = ''; while (list($num, $val) = each($result['pages'])) { if ($page = ormPages::get($val['page_id'])) { page::assign('obj.id', $page->id); page::assign('obj.num', $num + $start + 1); page::assign('obj.name', $page->name); page::assign('obj.url', $page->_url); //page::assign('obj.content', $page->content); $cn = $page->getClass()->getSName(); $block_name = isset($TEMPLATE['list_' . $cn]) ? 'list_' . $cn : 'list'; $list .= page::parse($TEMPLATE[$block_name]); } } page::assign('count_page', ceil($result['count'] / $max_count)); } else { $list = ''; $msg = lang::get('SEARCH_H1_TAGS2'); page::globalVar('h1', $msg); page::globalVar('title', $msg); } if (!empty($list)) { page::assign('list', $list); page::fParse('list', $TEMPLATE['frame_list']); } else { page::fParse('list', $TEMPLATE['not_found']); } return page::parse($TEMPLATE['frame']); }
public function copy() { if (system::url(2) == 0) { system::redirect('/structure'); } if ($obj = ormPages::get(system::url(2))) { $obj->copy(); if (isset($_SESSION['STRUCTURE_LIST_FLAG']) && $_SESSION['STRUCTURE_LIST_FLAG']) { system::redirect('/structure/list/' . $obj->getParentId()); } else { system::redirect('/structure/tree'); } } }
/** * @return HTML * @param int $obj_id - ID голосования. * @param string $templ_name - Шаблон оформления. * @desc МАКРОС: Выводит указанное голосование. */ public function objView($obj_id, $templ_name = 'default') { $html = ''; $id = is_array($obj_id) ? $obj_id['o_id'] : $obj_id; $ses = empty($_SESSION['voting_' . $id]) ? '1' : '0'; $key = 'vote' . $id . $ses; $ckey = md5(serialize($templ_name)); if (($data = cache::get($key)) && isset($data[$ckey])) { $html = $data[$ckey]; } else { if (!is_array($templ_name)) { $templ_file = '/voting/' . $templ_name . '.tpl'; $TEMPLATE = page::getTemplate($templ_file); } else { $TEMPLATE = $templ_name; } if (!is_array($TEMPLATE)) { return page::errorNotFound('voting.viewVote', $templ_file); } if (is_array($obj_id)) { $obj = ormPages::get($obj_id); } else { $obj = ormPages::get($obj_id, 'vote'); } if ($obj instanceof ormPage) { $all_count = 0; $result = !empty($_SESSION['voting_' . $obj->id]) || $obj->close ? '_result' : ''; $fields = page::getFields('obj', $TEMPLATE['vote']); // Выводим список вариантов ответов if (isset($fields['mono']) && in_array('answers', $fields['mono'])) { $list = ''; $num = $max = 0; $sel = new ormSelect('answer'); $sel->fields('name, count'); $sel->where('parents', '=', $obj->id); // Находим самый популярный ответ while ($answ = $sel->getObject()) { if ($max < $answ->count) { $max = $answ->count; } $all_count += $answ->count; } $pr = $all_count / 100; if ($pr == 0) { $pr = 1; } // Выводим список вариантов ответов $sel->reset(); while ($answ = $sel->getObject()) { $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' : ''); page::assign('obj.id', $answ->id); page::assign('obj.parent_id', $obj->id); page::assign('obj.name', $answ->name); page::assign('obj.count', $answ->count); $procent = round($answ->count / $pr, 2); page::assign('obj.percent', $procent); page::assign('obj.per1', round($procent)); page::assign('obj.per2', 100 - round($procent)); $best = $answ->count == $max ? 'best' : ''; page::assign('class-best', $best); $list .= page::parse($TEMPLATE['answer' . $result]); } page::assign('answers', $list); page::assign('type', $obj->multiselect ? 'checkbox' : 'radio'); } // Парсим поля страницы if (isset($fields['obj'])) { while (list($num, $name) = each($fields['obj'])) { page::assign('obj.' . $name, $obj->__get($name)); } } page::assign('obj.count', $all_count); $html = page::parse($TEMPLATE['vote' . $result]); } // Записываем в кэш $data[$ckey] = $html; cache::set($key, $data); } return $html; }
function getGoodsName($val, $obj) { if ($obj = ormPages::get($val, 'goods')) { return '<a href="' . $obj->url . '" target="_blank">' . $obj->name . '</a>'; } }
/** * @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(' ', '', 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; }
protected function changeParents($isUpd = true) { $ret = true; if ((!empty($this->new_parents) || $this->del_parents) && is_array($this->new_parents)) { // Удаляем все старые связи if ($isUpd && $this->del_parents) { $ret = db::q('DELETE FROM <<rels>> WHERE r_children_id = "' . $this->id . '" and r_field_id is NULL;'); } $this->del_parents = false; // Добавляем новые связи reset($this->new_parents); while (list($key, $val) = each($this->new_parents)) { if (empty($val['parent_id'])) { $parent_sql = 'r_parent_id is NULL and'; $parent_sql2 = ''; } else { $parent_sql = 'r_parent_id = "' . $val['parent_id'] . '" and'; $parent_sql2 = 'r_parent_id = "' . $val['parent_id'] . '",'; } if (!$isUpd || empty($val['position'])) { // Определяем позицию при добавлении объекта $parent = ormPages::get($val['parent_id']); if (!empty($val['parent_id']) && $parent->addto) { $minmax = 'MIN'; $pos = -1; // Избавляемся от отрицательных позиций db::q('UPDATE <<rels>> r, <<pages>> p SET r.r_position = r.r_position + 1 WHERE ' . $parent_sql . ' r.r_field_id is NULL and r.r_children_id = p.p_obj_id and p.lang_id = "' . languages::curId() . '" and p.domain_id = "' . domains::curId() . '";'); } else { $minmax = 'MAX'; $pos = 1; } $sql = 'SELECT ' . $minmax . '(r_position) FROM <<rels>>, <<pages>> WHERE ' . $parent_sql . ' r_field_id is NULL and r_children_id = p_obj_id and lang_id = "' . languages::curId() . '" and domain_id = "' . domains::curId() . '";'; $val['position'] = db::q($sql, value) + $pos; if ($val['position'] < 0) { $val['position'] = 0; } } else { if ($isUpd && !empty($val['position'])) { $parent_sql = 'r.' . $parent_sql; // Изменения при обновлении объекта $old_pos = isset($this->parents[$val['parent_id']]) ? $this->parents[$val['parent_id']]['position'] : 0; if (empty($old_pos) && !empty($val['position'])) { // Если добавили нового родителя db::q('UPDATE <<rels>> r, <<pages>> p SET r.r_position = r.r_position + 1 WHERE r.r_position >= "' . $val['position'] . '" and ' . $parent_sql . ' r.r_field_id is NULL and r.r_children_id = p.p_obj_id and p.lang_id = "' . languages::curId() . '" and p.domain_id = "' . domains::curId() . '";'); } else { if ($val['position'] < $old_pos) { // Если перенесли ниже по списку db::q('UPDATE <<rels>> r, <<pages>> p SET r.r_position = r.r_position + 1 WHERE r.r_position >= "' . $val['position'] . '" and r.r_position < "' . $old_pos . '" and ' . $parent_sql . ' r.r_field_id is NULL and r.r_children_id = p.p_obj_id and p.lang_id = "' . languages::curId() . '" and p.domain_id = "' . domains::curId() . '";'); } else { if ($val['position'] > $old_pos) { // Если перенесли выше по списку db::q('UPDATE <<rels>> r, <<pages>> p SET r.r_position = r.r_position - 1 WHERE r.r_position <= "' . $val['position'] . '" and r.r_position > "' . $old_pos . '" and ' . $parent_sql . ' r.r_field_id is NULL and r.r_children_id = p.p_obj_id and p.lang_id = "' . languages::curId() . '" and p.domain_id = "' . domains::curId() . '";'); } } } } } if (empty($tmp_parent_id)) { $tmp_parent_id = $val['parent_id']; $tmp_position = $val['position']; } // Добавляем связь с родителем $sql = 'INSERT INTO <<rels>> SET ' . $parent_sql2 . ' r_position = "' . $val['position'] . '", r_children_id = "' . $this->id . '";'; $ret = db::q($sql); } } // Если все нормально, обновляем свойства объекта if ($ret === false) { $this->newError(43, 'Произошла ошибка при изменении родителя объекта!'); } else { if (is_array($this->new_parents) && !empty($this->new_parents)) { $this->parents = $this->new_parents; $this->new_parents = array(); if (!empty($tmp_parent_id)) { $this->parent_id = $tmp_parent_id; $this->position = $tmp_position; } } } }