diff --git a/fieldsmanager/class.fieldsmanager.php b/fieldsmanager/class.fieldsmanager.php new file mode 100644 index 0000000..682e0d8 --- /dev/null +++ b/fieldsmanager/class.fieldsmanager.php @@ -0,0 +1,310 @@ + $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); + } +} +?>