|
|
|
<?php
|
|
|
|
class editdoc
|
|
|
|
{
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Метод, предназначенный для получения структуры документа из БД
|
|
|
|
*
|
|
|
|
* @param int $document_id идентификатор Документа
|
|
|
|
* return - возвращает документ положенный в структуру ....
|
|
|
|
**/
|
|
|
|
public static function documentGet($document_id,$rubric_id=0){
|
|
|
|
global $AVE_DB;
|
|
|
|
//var_dump($document_id);
|
|
|
|
$document_id=(int)$document_id;
|
|
|
|
$rubric_id=(int)$rubric_id;
|
|
|
|
if($document_id==0&&$rubric_id==0)return false;
|
|
|
|
$sql="SELECT * FROM " . PREFIX . "_documents WHERE Id='$document_id' and document_author_id=".$_SESSION['user_id']." LIMIT 1";
|
|
|
|
$rows=$AVE_DB->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;
|
|
|
|
//echo "<pre>";
|
|
|
|
//var_dump($result);
|
|
|
|
//echo "</pre>";
|
|
|
|
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']='';
|
|
|
|
}
|
|
|
|
|
|
|
|
$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="<form method=\"post\">\r\n
|
|
|
|
<input type=\"hidden\" name=\"editdoc_action\" value=\"$import_id\">\r\n
|
|
|
|
<input type=\"hidden\" name=\"editdoc_doc_id\" value=\"<?php echo @\$_REQUEST['editdoc_doc_id']?>\">\r\n
|
|
|
|
";
|
|
|
|
|
|
|
|
foreach($data['header'] as $k => $v)
|
|
|
|
$tmpl.=" <div id=\"edit_doc_header_$k\">[header:$k]</div>\r\n";
|
|
|
|
|
|
|
|
foreach($data['body'] as $k => $v)
|
|
|
|
$tmpl.=" <div id=\"edit_doc_body_$k\"><label>".$v[0]."</label>[body:$k]</div>\r\n";
|
|
|
|
|
|
|
|
$tmpl.='<input type="submit" value="Сохранить"></form>';
|
|
|
|
$row['editdoc_template']=$tmpl;
|
|
|
|
}
|
|
|
|
|
|
|
|
$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=Array();
|
|
|
|
$res['header']=array();
|
|
|
|
$res['header']['document_parent'][0]=($array['header']['document_parent'] ? $array['header']['document_parent'] : "<?\r\n return '0';\r\n?>");
|
|
|
|
$res['header']['document_title'][0]=($array['header']['document_title'] ? $array['header']['document_title'] : "<?\r\n return \$_REQUEST['document_title'] ? \$_REQUEST['document_title'] : \$data['header']['document_title'] ;\r\n?>");
|
|
|
|
$res['header']['document_alias'][0]=($array['header']['document_alias'] ? $array['header']['document_alias'] : "<?\r\n return '';\r\n?>");
|
|
|
|
$res['header']['document_published'][0]=($array['header']['document_published'] ? $array['header']['document_published'] : "<?\r\n \$res= \$_REQUEST['document_published'] ? \$_REQUEST['document_published'] : \$data['header']['document_published'];\r\n return (\$res ? \$res : date('d.m.Y H:i'));\r\n?>");
|
|
|
|
$res['header']['document_expire'][0]=($array['header']['document_expire'] ? $array['header']['document_expire'] : "<?\r\n \$res= \$_REQUEST['document_expire'] ? \$_REQUEST['document_expire'] : \$data['header']['document_expire'];\r\n return (\$res ? \$res : date('d.m.Y H:i',strtotime('+20 years')));\r\n?>");
|
|
|
|
$res['header']['document_meta_keywords'][0]=($array['header']['document_meta_keywords'] ? $array['header']['document_meta_keywords'] : "<?\r\n return '';\r\n?>");
|
|
|
|
$res['header']['document_meta_description'][0]=($array['header']['document_meta_description'] ? $array['header']['document_meta_description'] : "<?\r\n return '';\r\n?>");
|
|
|
|
$res['header']['document_in_search'][0]=($array['header']['document_in_search'] ? $array['header']['document_in_search'] : "<?\r\n return '0';\r\n?>");
|
|
|
|
$res['header']['document_meta_robots'][0]=($array['header']['document_meta_robots'] ? $array['header']['document_meta_robots'] : "<?\r\n return 'index,follow';\r\n?>");
|
|
|
|
$res['header']['document_status'][0]=($array['header']['document_status'] ? $array['header']['document_status'] : "<?\r\n return '0';\r\n?>");
|
|
|
|
$res['header']['document_deleted'][0]=($array['header']['document_deleted'] ? $array['header']['document_deleted']: "<?\r\n return '0';\r\n?>");
|
|
|
|
$res['header']['document_count_print'][0]=($array['header']['document_count_print'] ? $array['header']['document_count_print'] : "<?\r\n return '0';\r\n?>");
|
|
|
|
$res['header']['document_count_view'][0]=($array['header']['document_count_view'] ? $array['header']['document_count_view'] : "<?\r\n return '0';\r\n?>");
|
|
|
|
$res['header']['document_linked_navi_id'][0]=($array['header']['document_linked_navi_id'] ? $array['header']['document_linked_navi_id'] : "<?\r\n return '0';\r \n?>");
|
|
|
|
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())
|
|
|
|
{
|
|
|
|
$func='get_field_'.$result['rubric_field_type'];
|
|
|
|
if(!is_callable($func)) $func='get_field_default';
|
|
|
|
$val='<?php echo htmlspecialchars(stripslashes($_REQUEST["feld"]['.$result['Id'].'] ? ($_REQUEST["feld"]['.$result['Id'].']) : $data["body"]['.$result['Id'].']));?>';
|
|
|
|
$field=$func("{{ХХХХ}}",'edit',$result['Id'],'',0,$x,0,0,$result['rubric_field_default']);
|
|
|
|
$field=str_ireplace('{{ХХХХ}}',$val,$field);
|
|
|
|
$a=array(
|
|
|
|
'0'=>$result['rubric_field_title'],
|
|
|
|
'1'=>(
|
|
|
|
$array['body'][$result['Id']] ?
|
|
|
|
$array['body'][$result['Id']]:
|
|
|
|
"<?\r\n return (isset(\$_REQUEST['feld'][".$result['Id']."]) ? \$_REQUEST['feld'][".$result['Id']."] : \$data['body'][".$result['Id']."]);\r\n?>"
|
|
|
|
),
|
|
|
|
'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;
|
|
|
|
}
|
|
|
|
|
|
|
|
$v=base64_encode(serialize(stripslashes_deep($_REQUEST['document'])));
|
|
|
|
|
|
|
|
if (is_numeric($import_id))
|
|
|
|
{
|
|
|
|
$sql="
|
|
|
|
UPDATE " . PREFIX . "_module_editdoc
|
|
|
|
SET
|
|
|
|
`editdoc_name` = '" . ($_REQUEST['editdoc_name']) . "',
|
|
|
|
".($_REQUEST['editdoc_rub']> '' ? "`editdoc_rub` = '" . ($_REQUEST['editdoc_rub']) . "'," : "")."
|
|
|
|
`editdoc_lastchange` = '" . ($_REQUEST['editdoc_lastchange']) . "',
|
|
|
|
`editdoc_fill_filters` = '" . $v . "',
|
|
|
|
`editdoc_template` = '" . $_REQUEST['editdoc_template'] . "',
|
|
|
|
`editdoc_afteredit` = '" . (($_REQUEST['editdoc_afteredit'] ? $_REQUEST['editdoc_afteredit'] : addslashes("<?php
|
|
|
|
//header('Location: /'.rewrite_link('index.php?id='.\$GLOBALS['mod_editdoc'][".$import_id."]));
|
|
|
|
//exit();
|
|
|
|
?>"))) . "'
|
|
|
|
WHERE
|
|
|
|
id = '" . $import_id . "'
|
|
|
|
";
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
$sql="
|
|
|
|
INSERT
|
|
|
|
INTO " . PREFIX . "_module_editdoc
|
|
|
|
SET
|
|
|
|
id = '',
|
|
|
|
`editdoc_name` = '" . ($_REQUEST['editdoc_name']) . "',
|
|
|
|
".($_REQUEST['editdoc_rub']> '' ? "`editdoc_rub` = '" . ($_REQUEST['editdoc_rub']) . "'," : "")."
|
|
|
|
`editdoc_lastchange` = '" . ($_REQUEST['editdoc_lastchange']) . "',
|
|
|
|
`editdoc_fill_filters` = '" . $v . "',
|
|
|
|
`editdoc_template` = '" . ($_REQUEST['editdoc_template']) . "',
|
|
|
|
`editdoc_afteredit` = '" . ($_REQUEST['editdoc_afteredit']) . "'
|
|
|
|
";
|
|
|
|
}
|
|
|
|
$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).'<?
|
|
|
|
};';
|
|
|
|
eval($exp);
|
|
|
|
$ret='editdoc_reth_'.$import_id.'_'.$k;
|
|
|
|
$data['header'][$k]=$ret($data);
|
|
|
|
if($data['header'][$k]===NULL){
|
|
|
|
$save=false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$data['header']['rubric_id']=$row['editdoc_rub'];
|
|
|
|
|
|
|
|
foreach($row['editdoc_fill_filters']['body'] as $k=>$v)
|
|
|
|
{
|
|
|
|
$exp='
|
|
|
|
function editdoc_retb_'.$import_id.'_'.$k.'($data){
|
|
|
|
?>'.trim($v).'<?
|
|
|
|
};';
|
|
|
|
eval($exp);
|
|
|
|
$ret='editdoc_retb_'.$import_id.'_'.$k;
|
|
|
|
$data['body'][$k]=$ret($data);
|
|
|
|
if($data['body'][$k]===NULL){
|
|
|
|
$save=false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$d=$data['header'];
|
|
|
|
$d['doc_title']=$d['document_title'];
|
|
|
|
$d['feld']=$data['body'];
|
|
|
|
require(BASE_DIR . '/lib/redactor/ckeditor/ckeditor.php');
|
|
|
|
require_once(BASE_DIR.'/class/class.docs.php');
|
|
|
|
$AVE_Document=new AVE_Document();
|
|
|
|
@$AVE_Document->documentPermissionFetch($row['editdoc_rub']);
|
|
|
|
require_once(BASE_DIR.'/admin/functions/func.admin.common.php');
|
|
|
|
if($save){
|
|
|
|
//надо перед сохранением уточнить являюсь ли я хозяином документа .....не забыть!!!!!!!!!! а то админы тут делов наделают
|
|
|
|
$GLOBALS['mod_editdoc'][$import_id]=@$AVE_Document->documentSave((int)$row['editdoc_rub'],$document_id,$d,true);
|
|
|
|
eval(' ?>'.$row['editdoc_afteredit'].'<? ');
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
$template=$row['editdoc_template'];
|
|
|
|
foreach($row['editdoc_fill_filters']["body"] as $k=>$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);
|
|
|
|
eval(' ?>'.$template.'<? ');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
?>
|