예제 #1
0
파일: strings.php 프로젝트: romlg/cms36
 function Show()
 {
     if (!empty($_POST)) {
         $action = get('actions', '', 'p');
         if ($action) {
             if ($this->Allow($action)) {
                 return $this->{$action}();
             } else {
                 return $this->alert_method_not_allowed();
             }
         }
     }
     require_once core('list_table');
     $data['table'] = list_table(array('columns' => array(array('select' => 'IFNULL(t2.id,t1.id)', 'as' => 'id', 'display' => 'id', 'type' => 'checkbox'), array('select' => "CONCAT(IF(t1.module='site', '', CONCAT(t1.module, '_')), t1.name)", 'as' => 'name', 'display' => 'name', 'flags' => FLAG_SEARCH | FLAG_SORT), array('select' => 't1.module', 'display' => 'module', 'type' => 'module_name', 'flags' => FLAG_SEARCH | FLAG_SORT | FLAG_FILTER, 'filter_type' => 'array', 'filter_value' => array('' => $this->str('all')) + $this->getSiteModules(), 'filter_str' => false), array('select' => 'IFNULL(t2.value,t1.value)', 'as' => 'value', 'display' => 'value', 'flags' => FLAG_SEARCH), array('select' => 'IF(t2.value IS NULL,1,0)', 'as' => 'is_default', 'display' => 'is_default', 'type' => 'visible', 'flags' => FLAG_SORT), array('select' => 'IFNULL(t2.def,t1.def)', 'display' => 'def', 'flags' => FLAG_SEARCH), array('select' => 'IFNULL(t2.description,t1.description)', 'display' => 'description', 'flags' => FLAG_SEARCH)), 'from' => $this->table . ' AS t1 LEFT JOIN ' . $this->table . ' AS t2 ON (t1.module=t2.module AND t1.name=t2.name AND t2.root_id=' . domainRootID() . ')', 'where' => domainRootId() > 0 ? 't1.root_id=' . getMainRootID() : '', 'orderby' => 't1.module,t1.name', 'params' => array('page' => $this->name, 'do' => 'show'), 'dblclick' => 'editItem(id)', 'click' => 'ID=cb.value'), $this);
     $this->AddStrings($data);
     return $this->Parse($data, LIST_TEMPLATE);
 }
예제 #2
0
파일: elem_main.php 프로젝트: romlg/cms36
 function ElemEdit($id, $row)
 {
     $id = get('id', 0, 'p');
     $this->table = $this->elem_table;
     # получаем значение для записи с индексом  id
     $exist_row = sql_getRow('SELECT * FROM ' . $this->elem_table . ' WHERE id=' . $id);
     if (!$row['lang'] && $row['root_id']) {
         // заполнение поля lang
         $row['lang'] = $this->getLang($row['root_id']);
         if (!$row['lang']) {
             $row['lang'] = LANG_DEFAULT;
         }
     }
     $req_fields = array();
     if (defined('LANG_SELECT') && LANG_SELECT) {
         foreach ($this->elem_req_fields as $key => $val) {
             // Проверяем, это многоязыковое поле или нет
             if (isset($this->elem_fields['columns'][$val]['lang_select']) && $this->elem_fields['columns'][$val]['lang_select']) {
                 $req_fields[] = $val . "_" . $row['lang'];
             } else {
                 $req_fields[] = $val;
             }
         }
     } else {
         $req_fields = $this->elem_req_fields;
     }
     # запись такая есть?
     if (!isset($exist_row['id'])) {
         // если создается новая запись на не основном языке, нужно еще создать такую же на основном (если не создана ранее)
         $main_root_id = getMainRootID();
         if ($row['root_id'] != $main_root_id || $row['lang'] != LANG_DEFAULT) {
             $exist_row_default_lang = sql_getRow('SELECT * FROM ' . $this->elem_table . ' WHERE name="' . $row['name'] . '" AND module="' . $row['module'] . '" AND lang="' . LANG_DEFAULT . '" AND root_id="' . $main_root_id . '"');
             if (!$exist_row_default_lang) {
                 $def_row = array('module' => $row['module'], 'name' => $row['name'], 'value' => $row['value'], 'description' => $row['description'], 'def' => $row['value'], 'root_id' => $main_root_id, 'lang' => LANG_DEFAULT);
                 $this->EditorCommit($req_fields, true, $def_row, $this->elem_fields['id_field'], 0);
             }
         }
     } else {
         # запись для текущего языка или для текущего домена ?
         if ($exist_row['lang'] != $row['lang'] || $exist_row['root_id'] != $row['root_id']) {
             # значит запись для нового языка
             $row['id'] = '';
             # для новой записи значение устанавливается по умолчанию
             $row['def'] = $row['value'];
             $row['lang'] = $this->getLang($row['root_id']);
         }
     }
     if (!is_devel()) {
         # поля были disabled... следовательно их нет в $_POST
         $row['module'] = $exist_row['module'];
         $row['name'] = $exist_row['name'];
     } else {
         # разработчик изменяет также и значение по умолчанию
         $row['def'] = $row['value'];
     }
     $ret = $this->EditorCommit($req_fields, true, $row, $this->elem_fields['id_field'], $row['id']);
     return $ret;
 }
예제 #3
0
 /**
  * Обработка нажатия кнопки "Ответить"
  * @return array
  */
 function surveydo()
 {
     $id = (int) get('id', 0, 'p');
     if (!$id) {
         return false;
     }
     $item = get('item', array(), 'p');
     $from = get('from', '', 'p');
     $free = get('free', array(), 'p');
     $catalog = get('catalog', array(), 'p');
     // Сохраним ответы в сессии, чтобы показать их в случае, если не все данные заполнены
     $_SESSION['survey']['data'] = $item;
     $_SESSION['survey']['free'] = $free;
     $_SESSION['survey']['catalog'] = $catalog;
     // Проверим, не голосовал ли еще этот пользователь в этом опросе
     $value = array();
     if ($_COOKIE['site_survey']) {
         $value = unserialize($_COOKIE['site_survey']);
         if ($value[$id]) {
             // Товарищ уже проголосовал
             return array('error' => $this->page_obj->tpl->get_config_vars('msg_alredy_answered'));
         }
     }
     // Проверим, чтобы были ответы на вопросы
     $cols = sql_getRows("SHOW COLUMNS FROM " . $this->table_quests, true);
     if (!isset($cols['req'])) {
         // нет колонки req, значит проверяем, чтобы были ответы на все вопросы
         $this->check_all_answers = true;
     }
     $rows = sql_getRows("SELECT * FROM " . $this->table_quests . " WHERE id_survey=" . $id);
     foreach ($rows as $v) {
         if ($v['req'] || $this->check_all_answers) {
             $empty = false;
             if (in_array($v['type'], array('text', 'textarea'))) {
                 if (empty($free[$item[$v['id']][0]])) {
                     $empty = true;
                 }
             } elseif ($v['type'] == 'catalog') {
                 if (empty($catalog[$v['id']])) {
                     $empty = true;
                 }
             } else {
                 if (!in_array($v['id'], array_keys($item))) {
                     $empty = true;
                 }
             }
             if ($empty) {
                 $msg = $this->check_all_answers ? 'survey_msg_not_all_answers' : 'survey_msg_no_req_answer';
                 if (!$this->check_all_answers) {
                     $message = sql_getValue("SELECT value FROM strings WHERE name='msg_no_req_answer' AND module='survey' AND root_id=" . getMainRootID());
                     if (!$message) {
                         sql_query("INSERT INTO strings (`name`, `lang`, `value`, `def`, `module`, `root_id`) VALUES ('msg_no_req_answer', 'ru', 'Ответьте на обязательные вопросы, помеченные звездочкой.', 'Ответьте на обязательные вопросы, помеченные звездочкой.', 'survey', '" . getMainRootID() . "')");
                     }
                 }
                 return redirect($from . "?id=" . $id . "&message=" . $msg);
             }
         }
     }
     if ($this->saveVote($id, $item, $free) === false) {
         return redirect($from . "?id=" . $id . "&message=msg_fail");
     }
     // Ставим печеньку на год
     // TODO: поставить на все домены потом
     $value[$id] = true;
     setcookie('site_survey', serialize($value), time() + 3600 * 24 * 365, '/');
     setcookie('site_survey_js', implode(',', array_keys($value)), time() + 3600 * 24 * 365, '/');
     redirect($from . '?id=' . $id . '&message=survey_accepted');
 }
예제 #4
0
 function getTabs()
 {
     $page = get('page', '', 'gp');
     if (!$page) {
         return $this->tabs;
     }
     $elem_main = "elem_main";
     if ($page == "tree") {
         $id = get('id', 0, 'gp');
         if ((int) $id) {
             $bt = debug_backtrace();
             $file = isset($bt[1]['file']) ? $bt[1]['file'] : '';
             $line = isset($bt[1]['line']) ? $bt[1]['line'] : '';
             $sql = "SELECT * FROM " . $this->object->table . " WHERE id=" . (int) $id;
             $row = sql_getRow($sql, $file, $line);
         } else {
             $row['type'] = get('type', 'text', 'gp');
             $row['root_id'] = isset($_GET['pid']) && $_GET['pid'] > 0 ? sql_getValue("SELECT root_id FROM " . $this->object->table . " WHERE id=" . (int) $_GET['pid']) : getMainRootID();
         }
         $elems = $this->getDifTabs($row);
         array_unshift($elems, $elem_main);
     } else {
         $elems = !empty($this->object->elements) ? $this->object->elements : array();
         array_unshift($elems, $elem_main);
     }
     foreach ($elems as $k => $v) {
         list(, $tmp) = explode('_', $v);
         include_once elem($this->submodule . '/' . $v);
         $class_elem_name = 'T' . ucfirst($tmp) . 'Element';
         $elem_object =& Registry::get($class_elem_name);
         $this->tabs['tab' . $k] = array('display' => array('ru' => $v == $elem_main ? 'Основное' : $GLOBALS['cfg']['elements'][$v][0], 'en' => $v == $elem_main ? 'Main' : $GLOBALS['cfg']['elements'][$v][1]), 'conf' => array('elem' => $v, 'elem_type' => $elem_object->elem_type, 'target' => 'cnt'));
     }
     return $this->tabs;
 }
예제 #5
0
파일: main.class.php 프로젝트: romlg/cms36
 function getMessagesForTemplate()
 {
     $single = true;
     if ($single) {
         $status = sql_getRows('SHOW TABLE STATUS LIKE "sites"');
         if (!empty($status)) {
             if ((int) sql_getValue('SELECT COUNT(*) FROM sites') > 1) {
                 $single = false;
             }
         }
     }
     if ($single) {
         $status = sql_getRows('SHOW TABLE STATUS LIKE "sites_langs"');
         if (!empty($status)) {
             if ((int) sql_getValue('SELECT COUNT(*) FROM sites_langs') > 1) {
                 $single = false;
             }
         }
     }
     if (!$single) {
         $row = sql_getRows("\n            SELECT\n                IF(t2.value IS NULL, IF(t1.module='site', t1.name, CONCAT(t1.module,'_',t1.name)), IF(t2.module='site', t2.name, CONCAT(t2.module,'_',t2.name))) AS name,\n                IFNULL(t2.value,t1.value) AS value\n            FROM strings AS t1\n            LEFT JOIN strings AS t2 ON (t1.module=t2.module AND t1.name=t2.name AND t2.lang='" . lang() . "' AND t2.root_id='" . ROOT_ID . "')\n            WHERE t1.lang='" . getLangByRootID(getMainRootID()) . "' AND t1.root_id='" . getMainRootID() . "'\n            ORDER BY IFNULL(t2.module,t1.module) ASC", true);
         return $row;
     }
     $row = sql_getRows("SELECT IF(module='site',name, CONCAT(module,'_',name)) AS name, value FROM strings WHERE lang='" . lang() . "' AND root_id='" . ROOT_ID . "' ORDER BY module ASC", true);
     return $row;
 }
예제 #6
0
 function getSiteModules()
 {
     global $cfg, $intlang;
     $function_modules = $cfg['function_modules'][getMainRootID()];
     $filter_modules = array('site' => 'Ядро сайта');
     foreach ($function_modules as $key => $val) {
         $filter_modules[$key] = $val['name'][$intlang];
     }
     return $filter_modules;
 }
예제 #7
0
파일: auth.class.php 프로젝트: romlg/cms36
 public function TAuth()
 {
     $this->_messages = sql_getRows("\n            SELECT\n                IF(t2.value IS NULL, t1.name, t2.name) AS name,\n                IFNULL(t2.value,t1.value) AS value\n            FROM strings AS t1\n            LEFT JOIN strings AS t2 ON (t1.module=t2.module AND t1.name=t2.name AND t2.lang='" . lang() . "' AND t2.root_id='" . ROOT_ID . "')\n            WHERE t1.lang='" . LANG_DEFAULT . "' AND t1.root_id='" . getMainRootID() . "' AND t1.module='auth'\n        ", true);
     // Подключение библиотеки HybridAuth для авторизации через соц. сети
     $this->init_hybridauth();
 }