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 "
"; //var_dump($result); //echo ""; 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="'; $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=''; $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(""))) . "' 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 . '/admin/editor/fckeditor.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.' '); } } } ?>