Ejemplo n.º 1
0
                 $AVE_Template->assign('formaction', $formaction);
                 $AVE_Template->assign('code_text', $code_text);
                 break;
         }
         $AVE_Template->assign('content', $AVE_Template->fetch('templates/edit_css.tpl'));
     }
     break;
 case 'edit_js':
     if (check_permission_acp('template_edit')) {
         $_REQUEST['sub'] = !isset($_REQUEST['sub']) ? '' : $_REQUEST['sub'];
         switch ($_REQUEST['sub']) {
             case 'save':
                 $dir = BASE_DIR . '/templates/' . DEFAULT_THEME_FOLDER . '/js/' . $_REQUEST['name_file'];
                 //$_REQUEST['code_text'] = str_ireplace(array('<script>','</script>'), "", $_REQUEST['code_text']);
                 $check_code = stripcslashes($_REQUEST['code_text']);
                 if (is_php_code($check_code)) {
                     reportLog($_SESSION['user_name'] . ' - пытался использовать PHP в js файле (' . stripslashes($_REQUEST['name_file']) . ')', 2, 2);
                     header('Location:index.php?do=templates');
                     exit;
                 }
                 file_put_contents($dir, trim($check_code));
                 reportLog($_SESSION['user_name'] . ' - отредактировал файл (' . stripslashes($dir) . ')', 2, 2);
                 header('Location:index.php?do=templates');
                 exit;
                 break;
             default:
                 $dir = BASE_DIR . '/templates/' . DEFAULT_THEME_FOLDER . '/js/' . stripslashes($_REQUEST['name_file']);
                 $code_text = file_get_contents($dir);
                 $formaction = "index.php?do=templates&action=edit_js&sub=save&name_file=" . stripslashes($_REQUEST['name_file']);
                 $AVE_Template->assign('formaction', $formaction);
                 $AVE_Template->assign('code_text', $code_text);
Ejemplo n.º 2
0
     }
     break;
 case 'template':
     if (check_permission_acp('rubric_edit')) {
         switch ($_REQUEST['sub']) {
             case '':
                 $AVE_Rubric->rubricTemplateShow();
                 break;
             case 'save':
                 $Rtemplate = $_POST['rubric_template'];
                 $Htemplate = $_POST['rubric_header_template'];
                 $Ttemplate = $_POST['rubric_teaser_template'];
                 $Atemplate = $_POST['rubric_admin_teaser_template'];
                 $check_code = strtolower($Rtemplate . $Htemplate . $Ttemplate . $Atemplate);
                 $ok = true;
                 if (is_php_code($check_code) && !check_permission('rubric_php')) {
                     $AVE_Template->assign('php_forbidden', 1);
                     $ok = false;
                 }
                 if (!$ok) {
                     $AVE_Rubric->rubricTemplateShow(1);
                 } else {
                     $AVE_Rubric->rubricTemplateSave($Rtemplate, $Htemplate, $Ttemplate, $Atemplate);
                 }
                 break;
         }
     }
     break;
 case 'delete':
     if (check_permission_acp('rubric_del')) {
         $AVE_Rubric->rubricDelete();
Ejemplo n.º 3
0
 /**
  * Метод, предназначенный для сохранения документа в БД
  *
  * @param int $rubric_id	идентификатор Рубрики
  * @param int $document_id	идентификатор Документа
  * @param array $data			Документ в массиве структура - хитрая
  * @param bool $update_non_exists_fields	Изменять поля на пустые значения у не переданных полей или не надо
  * вохвражает номер документа если все удачно и false если все плохо
  */
 function documentSave($rubric_id, $document_id, $data, $update_non_exists_fields = false)
 {
     global $AVE_DB;
     //Проверяем входящие данные
     $rubric_id = (int) $rubric_id;
     $document_id = (int) $document_id;
     if (!isset($data)) {
         return false;
     }
     if (!isset($data['feld'])) {
         return false;
     }
     //определяем тип опреации
     $oper = 'INSERT';
     // выполняем стартовый код рубрики
     $code = $AVE_DB->Query("SELECT rubric_code_start, rubric_code_end FROM " . PREFIX . "_rubrics WHERE Id = '" . $rubric_id . "'")->FetchRow();
     eval('?>' . $code->rubric_code_start . '<?');
     if ($document_id > 0) {
         $oper = 'UPDATE';
     }
     // Если пользователь имеет права на добавление документов в указанную рубрику, тогда
     if ($oper == 'INSERT' && !(isset($_SESSION[$rubric_id . '_newnow']) && $_SESSION[$rubric_id . '_newnow'] == 1 || isset($_SESSION[$rubric_id . '_new']) && $_SESSION[$rubric_id . '_new'] == 1 || isset($_SESSION[$rubric_id . '_alles']) && $_SESSION[$rubric_id . '_alles'] == 1 || defined('UGROUP') && UGROUP == 1)) {
         return false;
     }
     if ($oper == 'UPDATE') {
         // Выполняем запрос к БД на получение автора документа и id Рубрики
         $row = $AVE_DB->Query("\n\t\t\t\t\tSELECT\n\t\t\t\t\t\trubric_id,\n\t\t\t\t\t\tdocument_author_id\n\t\t\t\t\tFROM " . PREFIX . "_documents\n\t\t\t\t\tWHERE Id = '" . $document_id . "'\n\t\t\t\t")->FetchRow();
         $rubric_id = $row->rubric_id;
         $row->cantEdit = 0;
         // Определяем права доступа к документам в данной рубрики
         $this->documentPermissionFetch($row->rubric_id);
         // разрешаем редактирование
         // если автор имеет право изменять свои документы в рубрике
         // или пользователю разрешено изменять все документы в рубрике
         if (isset($_SESSION['user_id']) && $row->document_author_id == $_SESSION['user_id'] && isset($_SESSION[$row->rubric_id . '_editown']) && $_SESSION[$row->rubric_id . '_editown'] == 1 || isset($_SESSION[$row->rubric_id . '_editall']) && @$_SESSION[$row->rubric_id . '_editall'] == 1) {
             $row->cantEdit = 1;
         }
         // запрещаем редактирование главной страницы и страницы ошибки 404 если требуется одобрение Администратора
         if (($document_id == 1 || $document_id == PAGE_NOT_FOUND_ID) && @$_SESSION[$row->rubric_id . '_newnow'] != 1) {
             $row->cantEdit = 0;
         }
         // разрешаем редактирование, если пользователь принадлежит группе Администраторов или имеет все права на рубрику
         if (defined('UGROUP') && UGROUP == 1 || isset($_SESSION[$row->rubric_id . '_alles']) && $_SESSION[$row->rubric_id . '_alles'] == 1) {
             $row->cantEdit = 1;
         }
         //выходим если нельзя редактировать
         if (!$row->cantEdit == 1) {
             return false;
         }
         // Обрабатываем все данные, пришедшие в запросе
         $suche = isset($data['document_in_search']) && $data['document_in_search'] == 1 ? '1' : '0';
         $document_status = isset($_SESSION[$row->rubric_id . '_newnow']) && $_SESSION[$row->rubric_id . '_newnow'] == 1 || isset($_SESSION[$row->rubric_id . '_alles']) && $_SESSION[$row->rubric_id . '_alles'] == 1 || defined('UGROUP') && UGROUP == 1 ? isset($data['document_status']) ? $data['document_status'] : '0' : '0';
         $document_status = $document_id == 1 || $document_id == PAGE_NOT_FOUND_ID ? '1' : $docstatus;
         // Формируем/проверяем адрес на уникальность
         if ($document_id != 1) {
             $data['document_alias'] = $_url = prepare_url(empty($data['document_alias']) ? trim($_POST['prefix'] . '/' . $data['doc_title'], '/') : $data['document_alias']);
         } else {
             $data['document_alias'] = "/";
         }
         $cnt = 1;
         while ($AVE_DB->Query("\n\t\t\t\t\t\tSELECT 1\n\t\t\t\t\t\tFROM " . PREFIX . "_documents\n\t\t\t\t\t\tWHERE Id != '" . $document_id . "'\n\t\t\t\t\t\tAND document_alias = '" . $data['document_alias'] . "'\n\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t")->NumRows() == 1) {
             $data['document_alias'] = $_url . '-' . $cnt;
             $cnt++;
         }
     } else {
         $suche = isset($data['document_in_search']) && $data['document_in_search'] == 1 ? 1 : 0;
         $document_status = !empty($data['document_status']) ? (int) $data['document_status'] : '0';
         $document_status = $document_id == 1 || $document_id == PAGE_NOT_FOUND_ID ? '1' : $document_status;
         $data['document_alias'] = $_url = prepare_url(empty($data['document_alias']) ? trim($data['prefix'] . '/' . $data['doc_title'], '/') : $data['document_alias']);
         $cnt = 1;
         while ($AVE_DB->Query("\n\t\t\t\t\t\t\tSELECT 1\n\t\t\t\t\t\t\tFROM " . PREFIX . "_documents\n\t\t\t\t\t\t\tWHERE document_alias = '" . $data['document_alias'] . "'\n\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t")->NumRows()) {
             $data['document_alias'] = $_url . '-' . $cnt;
             $cnt++;
         }
     }
     $docstart = $document_id == 1 || $document_id == PAGE_NOT_FOUND_ID ? '0' : $this->_documentStart($data['document_published']);
     $docend = $document_id == 1 || $document_id == PAGE_NOT_FOUND_ID ? '0' : $this->_documentEnd($data['document_expire']);
     //Получаем структуру документа
     $fields = array();
     if ($oper == 'INSERT') {
         $sql = $AVE_DB->Query("\n\t\t\t\t\t\t\t\tSELECT *\n\t\t\t\t\t\t\t\tFROM " . PREFIX . "_rubric_fields\n\t\t\t\t\t\t\t\tWHERE rubric_id = '" . $rubric_id . "'\n\t\t\t\t\t\t\t\tORDER BY rubric_field_position ASC\n\t\t\t\t\t\t\t");
     } else {
         $sql = $AVE_DB->Query("\n\t\t\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t\t\tdoc.Id AS df_id,\n\t\t\t\t\t\t\t\t\trub.*,\n\t\t\t\t\t\t\t\t\trubric_field_default,\n\t\t\t\t\t\t\t\t\tdoc.field_value\n\t\t\t\t\t\t\t\tFROM " . PREFIX . "_rubric_fields AS rub\n\t\t\t\t\t\t\t\tLEFT JOIN " . PREFIX . "_document_fields AS doc ON rubric_field_id = rub.Id\n\t\t\t\t\t\t\t\tWHERE document_id = '" . $document_id . "'\n\t\t\t\t\t\t\t\tORDER BY rubric_field_position ASC\n\t\t\t\t\t\t\t");
     }
     while ($row = $sql->FetchRow()) {
         $row->Feld = $this->_documentFieldGet($row->rubric_field_type, $oper == 'INSERT' ? $row->rubric_field_default : $row->field_value, $row->Id, $row->rubric_field_default);
         array_push($fields, $row);
     }
     $where = $oper == 'UPDATE' ? 'WHERE Id=' . $document_id : '';
     $author = $oper != 'UPDATE' ? 'document_author_id = ' . $_SESSION['user_id'] . ',' : '';
     $zag = $oper == 'UPDATE' ? "UPDATE " . PREFIX . "_documents" : "INSERT INTO " . PREFIX . "_documents";
     $sql = "\n\t\t\t\t\t\t\t{$zag}\n\t\t\t\t\t\t\tSET\n\t\t\t\t\t\t\t\trubric_id                 = '" . $rubric_id . "',\n\t\t\t\t\t\t\t\tdocument_parent           = '" . (int) $data['document_parent'] . "',\n\t\t\t\t\t\t\t\tdocument_title            = '" . addslashes(clean_no_print_char($data['doc_title'])) . "',\n\t\t\t\t\t\t\t\tdocument_breadcrum_title  = '" . addslashes(clean_no_print_char($data['doc_breadcrum_title'])) . "',\n\t\t\t\t\t\t\t\tdocument_alias            = '" . $data['document_alias'] . "',\n\t\t\t\t\t\t\t\tdocument_published        = '" . $docstart . "',\n\t\t\t\t\t\t\t\tdocument_expire           = '" . $docend . "',\n\t\t\t\t\t\t\t\tdocument_changed          = '" . time() . "',\n\t\t\t\t\t\t\t\t{$author}\n\t\t\t\t\t\t\t\tdocument_in_search        = '" . $suche . "',\n\t\t\t\t\t\t\t\tdocument_meta_keywords    = '" . addslashes(clean_no_print_char($data['document_meta_keywords'])) . "',\n\t\t\t\t\t\t\t\tdocument_meta_description = '" . addslashes(clean_no_print_char($data['document_meta_description'])) . "',\n\t\t\t\t\t\t\t\tdocument_meta_robots      = '" . $data['document_meta_robots'] . "',\n\t\t\t\t\t\t\t\tdocument_status           = '" . $data['document_status'] . "',\n\t\t\t\t\t\t\t\tdocument_linked_navi_id   = '" . (int) $data['document_linked_navi_id'] . "',\n\t\t\t\t\t\t\t\tdocument_tags   \t\t  = '" . addslashes(clean_no_print_char($data['document_tags'])) . "',\n\t\t\t\t\t\t\t\tdocument_lang\t\t\t  = '" . (empty($data['document_lang']) ? $_SESSION['user_language'] : $data['document_lang']) . "'\n\t\t\t\t\t\t\t{$where}";
     $AVE_DB->Query($sql);
     if ($oper == 'UPDATE') {
         $this->SaveRevission($document_id);
     }
     // Получаем id добавленной записи
     $iid = $AVE_DB->InsertId();
     $document_id = $oper == "INSERT" ? $iid : $document_id;
     // Сохраняем системное сообщение в журнал
     reportLog($_SESSION['user_name'] . ' - ' . ($oper == 'INSERT' ? 'добавил' : 'отредактировал') . ' документ (' . $document_id . ')', 2, 2);
     // Циклически обрабатываем поля документа
     foreach ($fields as $k => $v) {
         $fld_id = $v->Id;
         //если в данных нет поля и мы редактируем документ - изменять ли это поле на пустое значение
         if ($oper == 'UPDATE' && !isset($data['feld'][$fld_id]) && !$update_non_exists_fields) {
             continue;
         }
         $fld_val = isset($data['feld'][$fld_id]) ? $data['feld'][$fld_id] : $v->rubric_field_default;
         if (!$AVE_DB->Query("\n\t\t\t\t\t\t\t\tSELECT 1\n\t\t\t\t\t\t\t\tFROM " . PREFIX . "_rubric_fields\n\t\t\t\t\t\t\t\tWHERE Id = '" . $fld_id . "'\n\t\t\t\t\t\t\t\tAND rubric_id = '" . $rubric_id . "'\n\t\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t\t")->NumRows()) {
             continue;
         }
         if (is_array($fld_val)) {
             foreach ($fld_val as $k => $v) {
                 if (!check_permission('document_php')) {
                     if (is_php_code($v)) {
                         $v = '';
                     }
                 }
                 $v = clean_no_print_char($v);
                 $v = pretty_chars($v);
                 $fld_val[$k] = $v;
             }
         } else {
             // Если запрещено использование php кода, тогда обнуляем данные поля
             if (!check_permission('document_php')) {
                 if (is_php_code($fld_val)) {
                     $fld_val = '';
                 }
             }
             // Убираем из текста непчатбемые символы
             $fld_val = clean_no_print_char($fld_val);
             $fld_val = pretty_chars($fld_val);
         }
         // Выполняем запрос к БД на добавление нового поля с его содержимым
         $where = $oper == 'UPDATE' ? 'WHERE document_id=' . $document_id . ' AND rubric_field_id=' . $fld_id : '';
         $zag = $oper == 'UPDATE' ? "UPDATE " . PREFIX . "_document_fields" : "INSERT INTO " . PREFIX . "_document_fields";
         $sql = "\n\t\t\t\t\t\t\t{$zag}\n\t\t\t\t\t\t\tSET\n\t\t\t\t\t\t\t\trubric_field_id    = '" . $fld_id . "',\n\t\t\t\t\t\t\t\tdocument_id        = '" . $document_id . "',\n\t\t\t\t\t\t\t\tfield_value        = '" . (is_array($fld_val) ? serialize($fld_val) : $fld_val) . "',\n\t\t\t\t\t\t\t\tfield_number_value = '" . (int) (is_array($fld_val) ? serialize($fld_val) : $fld_val) . "',\n\t\t\t\t\t\t\t\tdocument_in_search = '" . $suche . "'\n\t\t\t\t\t\t\t{$where}\t\n\t\t\t\t\t\t";
         $AVE_DB->Query($sql);
     }
     // Очищаем кэш шаблона
     $AVE_DB->Query("\n\t\t\t\t\t\tDELETE\n\t\t\t\t\t\tFROM " . PREFIX . "_rubric_template_cache\n\t\t\t\t\t\tWHERE doc_id = '" . $document_id . "'\n\t\t\t\t\t");
     // выполняем финишный код рубрики
     eval('?>' . $code->rubric_code_end . '<?');
     //чистим кеш
     $AVE_DB->clearcache('rub_' . $rubric_id);
     $AVE_DB->clearcache('doc_' . $document_id);
     $this->generateKeywords($document_id);
     $this->generateTags($document_id);
     return $document_id;
 }