Exemple #1
0
 public function defAction()
 {
     function getSubscribersCount($id, $obj)
     {
         $sel = new ormSelect('subscribe_user');
         $sel->where('parents', '=', $id);
         return $sel->getCount();
     }
     ui::newButton(lang::get('SUBSCRIBE_BTN_ADD'), '/subscription/subscribe_add');
     $sel = new ormSelect('subscription');
     $sel->where('lang', '=', languages::curId());
     $sel->where('domain', '=', domains::curId());
     $table = new uiTable($sel);
     $table->formatValues(true);
     $table->addColumn('name', lang::get('SUBSCRIBE_TT1'), 200);
     $table->addColumn('last_subscribe', lang::get('SUBSCRIBE_TT2'), 200);
     $table->addColumn('id', lang::get('SUBSCRIBE_TT3'), 200, 0, 1, 'getSubscribersCount');
     $table->defaultRight('msg');
     $table->addRight('msg', 'list', single);
     $table->addRight('user', 'users', single);
     $table->addRight('subscribe_upd', 'edit', single);
     $table->addRight('subscribe_history', 'history', single);
     $table->addRight('subscribe_del', 'drop', multi);
     $table->addRight('subscribe_act', 'active', multi);
     $table->setDelMessage(lang::get('SUBSCRIBE_DEL_TITLE2'), lang::get('SUBSCRIBE_DEL_TEXT2'));
     $table->setMultiDelMessage(lang::get('SUBSCRIBE_DEL_TITLE_MULTI2'), lang::get('SUBSCRIBE_DEL_TEXT_MULTI2'));
     return $table->getHTML();
 }
Exemple #2
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']);
     }
 }
 /**
 * @return array
 * @param boolean $type - Назначение шаблонов:
 		0	-	шаблон для страниц
 		1	-	шаблон для объектов
 * @desc Вернет все шаблоны для текущей языковой версии и текущего домена. Метод без кеширования результатов.
 */
 static function getByDestination($type = 0, $spec_name = false)
 {
     $type = $type ? 1 : 0;
     $select = $spec_name ? 't_id id, concat(t_name, " (", t_file, ")") name' : '*, t_id id';
     return db::q('SELECT ' . $select . ' FROM <<template>>
     			  WHERE t_type = "' . $type . '" and
     			  		t_lang_id = "' . languages::curId() . '" and
     					t_domain_id = "' . domains::curId() . '"
     			  ORDER BY t_name;', records);
 }
Exemple #4
0
 private function getLangsAndDomains($TEMPLATE)
 {
     $sub_menu = '';
     $langs = languages::getAll();
     $domains = domains::getAll();
     page::assign('ldObjectLinks', '');
     if (count($langs) > 1 || count($domains) > 1) {
         $isMultiDom = count($domains) > 1 ? true : false;
         $sub_items = $curLD = '';
         $mas = array();
         $num = 0;
         while (list($num2, $domain) = each($domains)) {
             reset($langs);
             while (list($num1, $lang) = each($langs)) {
                 if (user::issetRight($lang['l_id'] . ' ' . $domain['d_id'], 'structure')) {
                     if ($isMultiDom) {
                         $lanver = $domain['d_name'];
                         if ($lang['l_id'] != $domain['d_def_lang']) {
                             $lanver .= '/' . $lang['l_prefix'];
                         }
                     } else {
                         $lanver = $lang['l_name'];
                     }
                     $link = ADMIN_URL;
                     if ($domain['d_id'] != domains::curSiteDomain()->id()) {
                         $link .= '/' . str_replace('.', '_', $domain['d_name']);
                     }
                     if ($lang['l_id'] != $domain['d_def_lang']) {
                         $link = '/' . $lang['l_prefix'] . $link;
                     }
                     if (domains::curId() == $domain['d_id'] && languages::curId() == $lang['l_id']) {
                         $curLD = $link;
                     }
                     page::assign('name', $lanver);
                     page::assign('url', $link);
                     $sub_items .= page::parse($TEMPLATE['langver']);
                     $mas[] = array('id' => $link, 'name' => $lanver);
                     $num++;
                 }
             }
         }
         if (!empty($sub_items) && $num > 1) {
             if ($isMultiDom) {
                 $lanver = domains::curDomain()->getName() . languages::pre();
             } else {
                 $lanver = languages::curLang()->getName();
             }
             page::assign('eshe', $lanver);
             page::assign('sub_items', $sub_items);
             $sub_menu = page::parse($TEMPLATE['sub_menu']);
             ui::SelectBox('ldObjectLinks', $mas, $curLD, 474, '', 'onSelectldObjectLinks()');
         }
     }
     return $sub_menu;
 }
Exemple #5
0
 /**
  * @return NULL
  * @param integer $lang_id - ID языковой версии, если не указан используется текущая.
  * @param integer $domain_id - ID домена, если не указан используется текущий.
  * @desc Указывает что выборка будет производиться только по страницам.
  */
 public function findInPages($lang_id = 0, $domain_id = 0)
 {
     if (empty($lang_id)) {
         $this->cur_lang_id = languages::curId();
     }
     if (empty($domain_id)) {
         $this->cur_domain_id = domains::curId();
     }
     $this->find_page = 1;
 }
Exemple #6
0
    /**
     * @return int ID шаблона
     * @param int $type - Тип шаблона. 0 - шаблон страницы, 1 - шаблон содержимого
     * @desc Возвращает id стандартного шаблона для класса с учетом текущего домена и языка, 0 - шаблон не выбран
     */
    public function getDefTemplate($type = 0)
    {
        $id = db::q('SELECT t_id
			   FROM <<template>>, <<template_def>> 
			   WHERE t_id = td_template_id AND td_class_id = ' . $this->id . ' AND t_type = ' . $type . ' AND t_lang_id = ' . languages::curId() . ' AND t_domain_id = ' . domains::curId() . ' 
			   LIMIT 1', value);
        return $id != '' ? $id : 0;
    }
Exemple #7
0
    static function indexPage($page)
    {
        if ($page instanceof ormPage) {
            if ($page->in_search) {
                /*
                	Пробегаем по всем полям, данные которых участвуют в поиске. Разбиваем их содержимое
                	на отдельные словоформы и ранжируем в соотвествии с настройками.
                */
                self::parseContent($page->name, 'name');
                $fields = $page->getClass()->loadFields();
                while (list($fname, $field) = each($fields)) {
                    if ($field['f_search']) {
                        self::parseContent($page->__get($fname), $fname);
                    }
                }
                // Сохраняем все найденные слова в БД
                while (list($word, $rank) = each(self::$words)) {
                    $word_id = self::getWordId(self::morphGetRoot($word));
                    db::q('INSERT INTO <<search_rankings>>
			        		SET sr_word_id = "' . $word_id . '",
			        			sr_rank = "' . $rank . '",
			        			sr_obj_id = "' . $page->id . '",
			        			sr_lang_id = "' . languages::curId() . '",
			        			sr_domain_id = "' . domains::curId() . '";');
                }
            }
        }
    }
Exemple #8
0
 /**
  * @return boolean
  * @param string $right - Имя права в панели администрирования
  * @param string $module - Системное имя модуля. Если не указанно, имя определяется исходя из текущего URL`a
  * @desc Проверяет существование указанного права для текущего модуля
  */
 static function issetRight($right, $module = 0)
 {
     if (!self::$isGuest) {
         if (empty($module)) {
             $module = system::url(0);
         }
         self::getRights();
         $right = str_replace('_proc_', '_', $right);
         if ($module == 'structure' && !strpos($right, ' ')) {
             $sitever = languages::curId() . ' ' . domains::curId();
             return isset(self::$right[$module]['rights'][$sitever][$right]) ? true : false;
         } else {
             return isset(self::$right[$module]['rights'][$right]) ? true : false;
         }
     } else {
         return false;
     }
 }
 static function getPrefix($modul = 'structure')
 {
     return '/' . $modul . '/' . domains::curId() . '/' . languages::curId();
 }
Exemple #10
0
 public function proc_upd()
 {
     // Обработчик для еденичного изменения класса
     $mini_action = substr(system::action(), -3);
     if (system::action() == "proc_upd") {
         // Говорим какой объект нужно изменить
         $obj = ormObjects::get(system::POST('obj_id'));
     } else {
         if (system::action() == "proc_add") {
             // Говорим какой объект нужно создать
             $obj = new ormObject();
             $obj->setClass('subscription');
         }
     }
     // Если произошли ошибки, перенаправляем на главную страницу модуля
     if ($obj->issetErrors()) {
         system::redirect('/subscription');
     }
     // Присваиваем пришедшие значения полям в объекте
     $obj->loadFromPost($mini_action);
     $obj->lang = languages::curId();
     $obj->domain = domains::curId();
     // Сохраняем изменения
     $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/subscribe_' . $mini_action . '/' . $obj_id);
     }
     // Если данные изменились корректно перенаправляем на соответствующию страницу
     if ($_POST['parram'] == 'apply') {
         system::redirect('/subscription/subscribe_upd/' . $obj_id);
     } else {
         system::redirect('/subscription');
     }
 }
 private static function init()
 {
     if (!self::$isAdmin && system::$isAdmin) {
         // Определяем домен для панели управления
         // Определяем домен по УРЛу
         if (system::issetUrl(0)) {
             $tmp_domain = self::get(str_replace('_', '.', system::url(0)));
             if ($tmp_domain instanceof domain) {
                 self::$cur_domain = $tmp_domain;
                 system::clipUrl();
                 languages::setCurLang(self::$cur_domain->getDefLang());
             }
         }
         // Проверяем, имеет ли пользователь доступ к данному домену
         if (!user::issetRight(languages::curId() . ' ' . self::$cur_domain->id(), 'structure')) {
             //echo languages::curId().' '.self::$cur_domain->id();
             $langs = languages::getAll();
             $domains = domains::getAll();
             if (count($langs) > 1 || count($domains) > 1) {
                 while (list($num2, $domain) = each($domains)) {
                     reset($langs);
                     while (list($num1, $lang) = each($langs)) {
                         if (user::issetRight($lang['l_id'] . ' ' . $domain['d_id'], 'structure')) {
                             $link = ADMIN_URL;
                             if ($domain['d_id'] != 1) {
                                 $link .= '/' . str_replace('.', '_', $domain['d_name']);
                             }
                             if ($lang['l_id'] != 1) {
                                 $link = '/' . $lang['l_prefix'] . $link;
                             }
                             system::redirect($link, true);
                         }
                     }
                 }
             }
         }
         self::$isAdmin = true;
     } else {
         if (empty(self::$cur_domain)) {
             // Опеделяем домен для сайта
             $domain_id = reg::getKey('/core/cur_domain/id');
             if (!empty($domain_id)) {
                 // Если домен в системе один, загружаем его данные из реестра
                 $domain_name = reg::getKey('/core/cur_domain/name');
                 self::$domains[$domain_id] = array('d_id' => $domain_id, 'd_name' => $domain_name, 'd_domain_id' => '', 'd_def_lang' => reg::getKey('/core/cur_domain/def_lang'), 'd_sitename' => reg::getKey('/core/cur_domain/sitename'), 'd_email' => reg::getKey('/core/cur_domain/email'), 'd_online' => reg::getKey('/core/cur_domain/online'), 'd_offline_msg' => reg::getKey('/core/cur_domain/offline_msg'), 'd_error_msg' => reg::getKey('/core/cur_domain/error_msg'), 'id' => $domain_id);
                 self::$domains_rel[$domain_name] = $domain_id;
             } else {
                 $serv_name = $_SERVER['HTTP_HOST'];
                 if (substr($serv_name, 0, 4) == 'www.') {
                     $serv_name = substr($serv_name, 4, strlen($serv_name) - 4);
                 }
                 self::$cur_domain = self::get($serv_name);
             }
             if (!self::$cur_domain instanceof domain) {
                 self::$cur_domain = self::get(1);
             }
             if (!self::$cur_domain instanceof domain) {
                 die('не могу определить домен');
             }
             self::$cur_site_domain = self::$cur_domain;
         }
     }
 }
Exemple #12
0
 /**
  * @return stirng - Контент
  * @param string $templ_name - имя шаблона
  * @desc МАКРОС: Возвращает пропарсенный шаблон из папки /template/structure
  */
 function include_templ($templ_name)
 {
     $site_prefix = domains::curId() == 1 && languages::curId() == 1 ? '' : '/__' . str_replace('.', '_', domains::curDomain()->getName()) . '_' . languages::curPrefix();
     $file = TEMPL_DIR . $site_prefix . '/structure/' . $templ_name . '.tpl';
     if (!file_exists($file)) {
         return str_replace('%name%', $templ_name, 'Указанный шаблон (%name%.tpl) не найден!');
     } else {
         $file_tpl = implode('', file($file));
         return page::parse($file_tpl);
     }
 }
Exemple #13
0
 /**
  * @return null
  * @param string $filename - Путь к файлу шаблона
  * @param boolean $absolut - Если true - путь считается абсолютным и вычисляется от корневой папки, в которой находится движок
  * @desc Обрабатывает указанный файл шаблона и выводит его на страницу
  */
 static function parseIt($filename, $absolut = false, $withoutCache = false)
 {
     if (!system::$isAdmin && !$absolut) {
         $site_prefix = domains::curId() == 1 && languages::curId() == 1 ? '' : '/__' . str_replace('.', '_', domains::curDomain()->getName()) . '_' . languages::curPrefix();
         if (file_exists(TEMPL_DIR . $site_prefix . $filename)) {
             $filename = TEMPL_DIR . $site_prefix . $filename;
         } else {
             if (file_exists(TEMPL_DIR . $site_prefix . '/structure/default.tpl')) {
                 $filename = TEMPL_DIR . $site_prefix . '/structure/default.tpl';
             } else {
                 echo lang::get('ERROR_TEMPL2');
                 system::stop();
             }
         }
     }
     while (list($key, $val) = each(self::$page_mas)) {
         self::assign($key, $val);
     }
     self::$arr = self::parse(file($filename));
     // Сохраняем страницу в кэш
     if (!$withoutCache && self::isCashePage()) {
         $page = array('html' => self::$arr, 'page_id' => ormPages::getCurPageId(), 'page_url' => system::getCurrentUrlPN(), 'active_pages' => ormPages::getActiveId(), 'host' => $_SERVER['HTTP_HOST']);
         cache::set(system::getCurrentUrlPN(), $page);
     }
     // Вторично обрабатывает шаблон
     self::$arr = self::parse(self::parse(self::$arr, 2), 2);
     // Выводит обработанный шаблон на печать
     //echo str_replace('`%`', '%', self::$arr);
     echo self::$arr;
     self::freshAll();
 }
Exemple #14
0
    public function restore()
    {
        $restore = parent::restore();
        if ($restore) {
            $parent_id = $this->getParentId();
            $s = empty($this->id) ? '' : 'p_obj_id <> "' . $this->id . '" and ';
            $s .= empty($parent_id) ? 'r_parent_id is NULL' : 'r_parent_id = "' . $parent_id . '"';
            $sql = 'SELECT count(p_obj_id) FROM <<pages>>, <<objects>>, <<rels>>
							WHERE pseudo_url = "' . $this->__get('pseudo_url') . '" and
								  lang_id = "' . languages::curId() . '" and
								  domain_id = "' . domains::curId() . '" and
								  r_children_id = p_obj_id and ' . $s . ' and
								  o_id = p_obj_id and
								  o_to_trash = 0;';
            $count = db::q($sql, value);
            if ($count > 0) {
                $pseudo_url = $this->__get('pseudo_url') . rand(100, 999);
                db::q('UPDATE <<pages>>
                      SET pseudo_url="' . $pseudo_url . '"
                      WHERE p_obj_id = "' . $this->id . '";');
                return true;
            }
        }
        return false;
    }
Exemple #15
0
 private function createTemplate($field_name)
 {
     $id = 0;
     $type = $field_name == 'template_id' ? 0 : 1;
     if (!empty($_POST[$field_name . '_new_val']) && !empty($_POST[$field_name . '_new_val2'])) {
         $templ = new template($id);
         $templ->setName($_POST[$field_name . '_new_val']);
         $templ->setFile($_POST[$field_name . '_new_val2']);
         $templ->setDestination($type);
         $templ->setLangId(languages::curId());
         $templ->setDomainId(domains::curId());
         $id = $templ->save();
     }
     if (!empty($id)) {
         $_POST[$field_name] = $id;
     }
 }
Exemple #16
0
 function changeTempl($id, $obj, $form_name)
 {
     $type = $form_name == 'page_tpl' ? 0 : 1;
     $templ = new template($id);
     $templ->setName($obj['t_name']);
     $templ->setFile($obj['t_file']);
     $templ->setDestination($type);
     $templ->setLangId(languages::curId());
     $templ->setDomainId(domains::curId());
     $templ->save();
     return true;
 }