$id,'name' => (isset($fields_vars[$name]) ? $fields_vars[$name] : $name)); if (! empty($type) && $id == $type) $field = array('id' => $id,'name' => (isset($fields_vars[$name]) ? $fields_vars[$name] : $name)); } } $fields = msort($fields, array('name')); return (! empty($type)) ? $field : $fields; } /** * Вывод списка полей * */ public static function ShowFields() { global $AVE_DB, $AVE_Template, $_fm_dir; $sql = $AVE_DB->Query(" SELECT (rubric_field_type) FROM " . PREFIX . "_rubric_fields GROUP BY rubric_field_type "); $enable = array(); while ($row = $sql->FetchArray()) { $enable[] = $row['rubric_field_type']; } $fields = self::__get_fields_type(); foreach ($fields as $field) { $exists[$field['id']]['adm'] = file_exists(BASE_DIR . '/fields/' . $field['id'] . '/tpl/field.tpl'); $exists[$field['id']]['doc'] = file_exists(BASE_DIR . '/fields/' . $field['id'] . '/tpl/field-doc.tpl'); $exists[$field['id']]['req'] = file_exists(BASE_DIR . '/fields/' . $field['id'] . '/tpl/field-req.tpl'); } $AVE_Template->assign("enable", $enable); $AVE_Template->assign("exists", $exists); $AVE_Template->assign("fields", $fields); $AVE_Template->assign("content", $AVE_Template->fetch($_fm_dir . "admin/fields-list.tpl")); } /** * Вывод поля по рубрикам * */ public static function ShowField($fld) { global $AVE_DB, $AVE_Template, $_fm_dir; $sql = $AVE_DB->Query(" SELECT a.Id, a.rubric_id, a.rubric_field_type, a.rubric_field_title, b.rubric_title FROM " . PREFIX . "_rubric_fields AS a LEFT JOIN " . PREFIX . "_rubrics AS b ON a.rubric_id = b.Id WHERE a.rubric_field_type = '" . $fld ."' ORDER BY a.rubric_id "); $rubrics = array(); while ($row = $sql->FetchRow()) { $rubrics[$row->rubric_id]['rubric_id'] = $row->rubric_id; $rubrics[$row->rubric_id]['rubric_title'] = $row->rubric_title; $rubrics[$row->rubric_id]['fields'][$row->Id]['id'] = $row->Id; $rubrics[$row->rubric_id]['fields'][$row->Id]['title'] = $row->rubric_field_title; $rubrics[$row->rubric_id]['fields'][$row->Id]['adm_tpl'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $row->Id . '.tpl'); $rubrics[$row->rubric_id]['fields'][$row->Id]['doc_tpl'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $row->Id . '.tpl'); $rubrics[$row->rubric_id]['fields'][$row->Id]['req_tpl'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $row->Id . '.tpl'); $rubrics[$row->rubric_id]['fields'][$row->Id]['adm_main'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field.tpl'); $rubrics[$row->rubric_id]['fields'][$row->Id]['doc_main'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-doc.tpl'); $rubrics[$row->rubric_id]['fields'][$row->Id]['req_main'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-req.tpl'); } $AVE_Template->assign('main', self::__get_fields_type($fld)); $AVE_Template->assign("rubrics", $rubrics); $AVE_Template->assign("content", $AVE_Template->fetch($_fm_dir . "admin/field-list.tpl")); } /** * Создание шаблона * */ public static function EditTpl($id = '', $fld, $type) { global $AVE_DB, $AVE_Template, $_fm_dir; switch ($type) { case 'adm': $file = BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $id . '.tpl'; $source = BASE_DIR . '/fields/' . $fld . '/tpl/field.tpl'; break; case 'doc': $file = BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $id . '.tpl'; $source = BASE_DIR . '/fields/' . $fld . '/tpl/field-doc.tpl'; break; case 'req': $file = BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $id . '.tpl'; $source = BASE_DIR . '/fields/' . $fld . '/tpl/field-req.tpl'; break; } if (empty($id)) $file = $source; if (file_exists($file)) { $code_text = file_get_contents($file); } else { $code_text = file_get_contents($source); } $sql = $AVE_DB->Query(" SELECT a.rubric_field_title, b.rubric_title FROM " . PREFIX . "_rubric_fields AS a LEFT JOIN " . PREFIX . "_rubrics AS b ON a.rubric_id = b.Id WHERE a.rubric_field_type = '" . $fld ."' AND a.Id = '" . $id ."' ")->FetchAssocArray(); $params = array( 'id' => $id, 'fld' => $fld, 'type' => $type, 'func' => (file_exists($file) ? 'edit' : 'new'), 'field' => $sql, ); $AVE_Template->assign('main', self::__get_fields_type($fld)); $AVE_Template->assign('params', $params); $AVE_Template->assign('code_text', $code_text); $AVE_Template->assign("content", $AVE_Template->fetch($_fm_dir . "admin/field-code.tpl")); } /** * Сохранение шаблона * */ public static function SaveTpl($id = '', $fld, $type, $func) { switch ($type) { case 'adm': $file = (! empty($id)) ? BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $id . '.tpl' : BASE_DIR . '/fields/' . $fld . '/tpl/field.tpl'; break; case 'doc': $file = (! empty($id)) ? BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $id . '.tpl' : BASE_DIR . '/fields/' . $fld . '/tpl/field-doc.tpl'; break; case 'req': $file = (! empty($id)) ? BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $id . '.tpl' : BASE_DIR . '/fields/' . $fld . '/tpl/field-req.tpl'; break; } $data = stripcslashes($_REQUEST['code_text']); @file_put_contents($file, $data); chmod($file, 0644); $message = 'Шаблон успешнно сохранен'; $header = 'Выполнено'; $theme = 'accept'; echo json_encode( array( 'message' => $message, 'header' => $header, 'theme' => $theme) ); exit; } /** * Удаление шаблона поля * */ public static function DeleteTpl($id, $fld, $type, $func) { switch ($type) { case 'adm': $file = BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $id . '.tpl'; break; case 'doc': $file = BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $id . '.tpl'; break; case 'req': $file = BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $id . '.tpl'; break; } @unlink($file); header('Location:' . get_referer_link()); exit; } /** * Удаление поля из системы * */ public static function UnlinkField($dir) { /* $dirPath = (! empty($type)) ? BASE_DIR . '/fields/' . $dir : $dir; */ $dirPath = BASE_DIR . '/fields/' . $dir; if (substr($dirPath, strlen($dirPath) - 1, 1) != '/') { $dirPath .= '/'; } $files = glob($dirPath . '*', GLOB_MARK); foreach($files as $file) { if(substr($file, -1) == '/') self::UnlinkField($file); else @unlink($file); } @rrmdir($dirPath); } } ?>