Пример #1
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']);
     }
 }
Пример #2
0
 static function getMailHTML($release_id)
 {
     if ($release = ormObjects::get($release_id)) {
         if ($release->isInheritor('subscribe_msg')) {
             $subscribe = $release->getParent();
             page::$macros = 1;
             $mail = '';
             if (file_exists(TEMPL_DIR . '/subscription/mails/' . $subscribe->template . '.tpl')) {
                 include TEMPL_DIR . '/subscription/mails/' . $subscribe->template . '.tpl';
                 page::assign('domain_name', domains::curDomain()->getName());
                 page::assign('site_name', domains::curDomain()->getSiteName());
                 page::assign('base_email', domains::curDomain()->getEmail());
                 page::assign('subscribe.id', $subscribe->id);
                 page::assign('release.id', $release->id);
                 page::assign('release.name', $release->name);
                 page::assign('release.message', $release->message);
                 $sel = new ormSelect();
                 $sel->depends($release->id, 1462);
                 $num = 0;
                 $list = '';
                 while ($obj = $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', $obj->id);
                     page::assign('obj.url', $obj->url);
                     $obj->parseAllFields();
                     $list .= page::parse($TEMPLATE['list']);
                 }
                 page::assign('list', $list);
                 if (!empty($list)) {
                     page::fParse('list', $TEMPLATE['frame_list']);
                 }
                 $mail = page::parse($TEMPLATE['frame']);
             }
             return $mail;
         }
     }
 }
Пример #3
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']);
         }
     }
 }
Пример #4
0
 /**
  * @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;
 }
Пример #5
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;
 }
Пример #6
0
 /**
  * @return HTML
  * @param string $templ_name - Шаблон оформления, по которому будет строится список RSS-лент
  * @desc МАКРОС: Выводит список RSS-лент.
  */
 public function rssList($templ_name = 'list')
 {
     $templ_file = '/structure/rss/' . $templ_name . '.tpl';
     $TEMPLATE = page::getTemplate($templ_file);
     if (!is_array($TEMPLATE)) {
         return page::errorNotFound('structure.rssList', $templ_file);
     }
     // Формируем выборку объектов
     $sel = new ormSelect('news_feed');
     $sel->findInPages();
     $sel->where('rss_export', '=', 1);
     $sel->where('active', '=', 1);
     $sel->orderBy('name', asc);
     // Узнаем какие поля объектов будут участвовать в выборке
     $fields_str = '';
     $fields = page::getFields('obj', $TEMPLATE['list']);
     if (isset($fields['obj'])) {
         while (list($key, $val) = each($fields['obj'])) {
             if ($val != 'url' && $val != 'class' && $val != 'num' && $val != 'rss_url') {
                 $fields_str .= empty($fields_str) ? $val : ', ' . $val;
             }
         }
     }
     $sel->fields($fields_str);
     // Формируем список
     $list = '';
     while ($obj = $sel->getObject()) {
         // Парсим поля страницы
         if (isset($fields['obj'])) {
             reset($fields['obj']);
             while (list($num, $name) = each($fields['obj'])) {
                 page::assign('obj.' . $name, $obj->__get($name));
             }
         }
         $class = $obj->getClass()->getSName();
         $num = $sel->getObjectNum() + 1;
         $target = $obj->in_new_window ? ' target="_blank"' : '';
         page::assign('obj.num', $num);
         page::assign('obj.target', $target);
         page::assign('obj.url', $obj->_url);
         page::assign('obj.rss_url', '/structure/rss/' . $obj->id);
         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 (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)) {
         page::assign('list', $list);
         if (isset($TEMPLATE['frame_list'])) {
             $list = page::parse($TEMPLATE['frame_list']);
         } else {
             $list = page::errorBlock('structure.rssList', $templ_file, 'frame_list');
         }
     } else {
         if (isset($TEMPLATE['empty'])) {
             $list = page::parse($TEMPLATE['empty']);
         }
     }
     return $list;
 }