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); }
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; }
/** * Обработка нажатия кнопки "Ответить" * @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'); }
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; }
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; }
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; }
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(); }