Query($sql); if ($rows->NumRows() > 0) { $rubric_id = 0; } if ($rubric_id > 0) { $rows = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_documents LIMIT 1"); } while ($row = $rows->FetchAssocArray()) { $header = $row; } if ($rubric_id > 0) { foreach($header as $k => &$v) { $v = ''; } } $felds = array(); $feldsType = array(); if(! $rubric_id > 0) { $rows = $AVE_DB->Query(" SELECT doc.Id AS df_id, rub.*, rubric_field_default, doc.field_value FROM " . PREFIX . "_rubric_fields AS rub LEFT JOIN " . PREFIX . "_document_fields AS doc ON rubric_field_id = rub.Id WHERE document_id = '" . $document_id . "' AND rubric_id ORDER BY rubric_field_position ASC "); } else { $rows = $AVE_DB->Query(" SELECT 0 as df_id, rub.*, rubric_field_default, rubric_field_default as field_value FROM " . PREFIX . "_rubric_fields AS rub WHERE rub.rubric_id = '" . $rubric_id . "' ORDER BY rubric_field_position ASC "); } while ($row = $rows->FetchAssocArray()) { $felds[$row['Id']]=$row['df_id'] ? $row['field_value'] : $row['rubric_field_default']; $feldsType[$row['Id']]['type']=$row['rubric_field_type']; $feldsType[$row['Id']]['title']=$row['rubric_field_title']; } $result['header'] = $header; $result['body'] = $felds; $result['feld_type'] = $feldsType; // Debug::_echo($result, true); return $result; } public static function EditDocList($tpl_dir) { global $AVE_DB, $AVE_Template; $imports = array(); $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_module_editdoc"); while ($result = $sql->FetchRow()) { array_push($imports, $result); } $rubs = array(); $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_rubrics"); while ($result = $sql->FetchRow()) { array_push($rubs, $result); } $AVE_Template->assign('editdocs', $imports); $AVE_Template->assign('rubs', $rubs); $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_list.tpl')); } /** * Добавление нового * * @param int $import_id идентификатор * @param string $tpl_dir - путь к папке с шаблонами модуля * */ public static function EditDocNew($tpl_dir) { global $AVE_DB, $AVE_Template; $rubs = array(); $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_rubrics"); while ($result = $sql->FetchRow()) { array_push($rubs, $result); } $AVE_Template->assign('rubs',$rubs); $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_edit.tpl')); } /** * Редактирование * * @param int $import_id идентификатор * @param string $tpl_dir - путь к папке с шаблонами модуля * */ public static function EditDocEdit($import_id, $tpl_dir) { global $AVE_DB, $AVE_Template,$AVE_Document; if (is_numeric($import_id)) { $sql = $AVE_DB->Query(" SELECT * FROM " . PREFIX . "_module_editdoc WHERE id = '" . $import_id . "' "); $row = $sql->FetchAssocArray(); } else { $row['editdoc_name'] = ''; $row['editdoc_fill_filters'] = ''; } $template = false; $row['editdoc_fill_filters'] = unserialize(base64_decode($row['editdoc_fill_filters'])); $rubs = array(); $sql = $AVE_DB->Query("SELECT * FROM " . PREFIX . "_rubrics"); while ($result = $sql->FetchRow()) { array_push($rubs, $result); } $AVE_Template->assign('rubs',$rubs); $data = editdoc::getRubricFields($row['editdoc_rub'],$row['editdoc_fill_filters']); //$data = editdoc::documentGet(null, $import_id); if($row['editdoc_template'] == '') { $tmpl = "
\r\n\t\r\n\t\">\r\n\n"; foreach($data['header'] as $k => $v) $tmpl .= "\t
\r\n\t\t[header:$k]\r\n\t
\r\n"; $tmpl .= "\r\n"; foreach($data['body'] as $k => $v) $tmpl .= "\t
\r\n\t\t\r\n\t\t[body:$k]\r\n\t
\r\n"; $tmpl .= "\r\n"; $tmpl .= "\t\r\n
"; $row['editdoc_template'] = $tmpl; } else { $template = true; } $AVE_Template->assign('template', $template); $AVE_Template->assign('data', $data); unset($row['editdoc_fill_filters']); $AVE_Template->assign($row); $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_edit.tpl')); } /** * Удаление * * @param int $import_id идентификатор */ public static function EditDocDelete($import_id) { global $AVE_DB; if (is_numeric($import_id)) { $AVE_DB->Query(" DELETE FROM " . PREFIX . "_module_editdoc WHERE id = '" . $import_id . "' "); } header('Location:index.php?do=modules&action=modedit&mod=editdoc&moduleaction=1&cp=' . SESSION); } /** * Получение полей Документа * * @param inc $id - идентификатор рубрики * @param array $array - массив со значениями */ public static function getRubricFields($id,$array) { global $AVE_DB; $res = array(); if(! is_array($array)) $array = array(); $res['header'] = array(); $res['header']['document_parent'][0]= ($array['header']['document_parent'] ? $array['header']['document_parent'] : ""); $res['header']['document_title'][0] = ($array['header']['document_title'] ? $array['header']['document_title'] : ""); $res['header']['document_alias'][0] = ($array['header']['document_alias'] ? $array['header']['document_alias'] : ""); $res['header']['document_published'][0] = ($array['header']['document_published'] ? $array['header']['document_published'] : ""); $res['header']['document_expire'][0] = ($array['header']['document_expire'] ? $array['header']['document_expire'] : ""); $res['header']['document_meta_keywords'][0] = ($array['header']['document_meta_keywords'] ? $array['header']['document_meta_keywords'] : ""); $res['header']['document_meta_description'][0] = ($array['header']['document_meta_description'] ? $array['header']['document_meta_description'] : ""); $res['header']['document_in_search'][0] = ($array['header']['document_in_search'] ? $array['header']['document_in_search'] : ""); $res['header']['document_meta_robots'][0] = ($array['header']['document_meta_robots'] ? $array['header']['document_meta_robots'] : ""); $res['header']['document_status'][0]=($array['header']['document_status'] ? $array['header']['document_status'] : ""); $res['header']['document_deleted'][0]=($array['header']['document_deleted'] ? $array['header']['document_deleted'] : ""); $res['header']['document_count_print'][0]=($array['header']['document_count_print'] ? $array['header']['document_count_print'] : ""); $res['header']['document_count_view'][0] = ($array['header']['document_count_view'] ? $array['header']['document_count_view'] : ""); $res['header']['document_linked_navi_id'][0] = ($array['header']['document_linked_navi_id'] ? $array['header']['document_linked_navi_id'] : ""); foreach($res['header'] as $k => $v) $res['header'][$k][1]=(isset($array['template'][$k]) ? $array['template'][$k] :''); $sql = $AVE_DB->Query(" SELECT * FROM ".PREFIX."_rubric_fields WHERE rubric_id = ".$id ); while ($result = $sql->FetchAssocArray()) { $field = "\r\n"; $field .= ''; $a = array( '0' => $result['rubric_field_title'], '1' => ($array['body'][$result['Id']] ? $array['body'][$result['Id']] : "" ), '2' => (isset($array['template'][$result['Id']]) ? $array['template'][$result['Id']] : $field) ); $res['body'][$result['Id']] = $a; } return $res; } /** * Сохранение импорта * * @param int $import_id идентификатор импорта */ public static function EditDocSave($import_id = null) { global $AVE_DB; function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } $template = base64_encode(serialize(stripslashes_deep($_REQUEST['document']))); if (is_numeric($import_id)) { $sql=" UPDATE " . PREFIX . "_module_editdoc SET editdoc_name = '" . $_REQUEST['editdoc_name'] . "', editdoc_last_change = '" . time() . "', editdoc_fill_filters = '" . $template . "', editdoc_template = '" . $_REQUEST['editdoc_template'] . "', editdoc_use_revisions = '" . ($_REQUEST['editdoc_use_revisions'] ? $_REQUEST['editdoc_use_revisions'] : 0) . "', editdoc_use_rubric_code = '" . ($_REQUEST['editdoc_use_rubric_code'] ? $_REQUEST['editdoc_use_rubric_code'] : 0) . "', editdoc_use_log_save = '" . ($_REQUEST['editdoc_use_log_save'] ? $_REQUEST['editdoc_use_log_save'] : 0) . "', editdoc_before_edit = '" . $_REQUEST['editdoc_before_edit'] . "', editdoc_after_edit = '" . $_REQUEST['editdoc_after_edit'] . "' WHERE id = '" . $import_id . "' "; } else { $editdoc_before_edit = ""; $editdoc_after_edit = ""; $sql = " INSERT INTO " . PREFIX . "_module_editdoc SET id = '', editdoc_name = '" . $_REQUEST['editdoc_name'] . "', editdoc_rub = '" . $_REQUEST['editdoc_rub'] . "', editdoc_last_change = '" . time() . "', editdoc_fill_filters = '" . $template . "', editdoc_template = '" . $_REQUEST['editdoc_template'] . "', editdoc_before_edit = '" . addslashes($editdoc_before_edit) . "', editdoc_after_edit = '" . addslashes($editdoc_after_edit) . "' "; $AVE_DB->Query($sql); $editor_id = $AVE_DB->InsertId(); header('Location:index.php?do=modules&action=modedit&mod=editdoc&moduleaction=edit&id=' . $editor_id . '&cp=' . SESSION); exit; } $AVE_DB->Query($sql); header('Location:index.php?do=modules&action=modedit&mod=editdoc&moduleaction=1&cp=' . SESSION); } static function EditDocDo($import_id) { global $AVE_DB, $AVE_Document; if (is_numeric($import_id)) { $sql = $AVE_DB->Query(" SELECT * FROM " . PREFIX . "_module_editdoc WHERE id = '" . $import_id . "' "); $row = $sql->FetchAssocArray(); $row['editdoc_fill_filters'] = unserialize(base64_decode($row['editdoc_fill_filters'])); $document_id = (isset($_REQUEST['editdoc_doc_id']) ? (int)$_REQUEST['editdoc_doc_id'] : null); $data = editdoc::documentGet($document_id, (int)$row['editdoc_rub']); //Пришла форма if(isset($_REQUEST['editdoc_action']) && $_REQUEST['editdoc_action'] == $import_id) { //вот тут сохранение будет $save = true; foreach($row['editdoc_fill_filters']['header'] as $k => $v) { $exp = ' function editdoc_reth_' . $import_id . '_' . $k . '($data) { ?>'.trim($v).' $v) { $exp = ' function editdoc_retb_'.$import_id.'_'.$k.'($data) { ?>'.trim($v).'documentPermissionFetch($row['editdoc_rub']); require_once(BASE_DIR.'/admin/functions/func.admin.common.php'); if ($save) { // Код перед сохранением eval(' ?>'.$row['editdoc_before_edit'].'documentSave((int)$row['editdoc_rub'], $document_id, $d, true, $row['editdoc_use_rubric_code'], $row['editdoc_use_revisions'], $row['editdoc_use_log_save']); // Код после сохранения eval(' ?>'.$row['editdoc_after_edit'].' $v) $template = str_ireplace("[body:$k]", $row['editdoc_fill_filters']["template"][$k], $template); foreach($row['editdoc_fill_filters']["header"] as $k => $v) $template = str_ireplace("[header:$k]", $row['editdoc_fill_filters']["template"][$k], $template); foreach($data['feld_type'] as $k => $v) $template = str_ireplace("[type:$k]", $v['type'], $template); foreach($data['feld_type'] as $k => $v) $template = str_ireplace("[title:$k]", $v['title'], $template); eval(' ?>'.$template.'