Repellent
9 years ago
1 changed files with 310 additions and 0 deletions
@ -0,0 +1,310 @@ |
|||||||
|
<?php |
||||||
|
|
||||||
|
/** |
||||||
|
* Класс работы с модулем |
||||||
|
* |
||||||
|
* @package AVE.cms |
||||||
|
* @subpackage |
||||||
|
* @filesource |
||||||
|
*/ |
||||||
|
|
||||||
|
class FieldsManager |
||||||
|
{ |
||||||
|
|
||||||
|
public static function __get_fields_type($type = null) |
||||||
|
{ |
||||||
|
static $fields; |
||||||
|
|
||||||
|
if(is_array($fields)) |
||||||
|
return $fields; |
||||||
|
|
||||||
|
$arr = get_defined_functions(); |
||||||
|
|
||||||
|
$fields = array(); |
||||||
|
$field = array(); |
||||||
|
|
||||||
|
foreach($arr['user'] as $v) |
||||||
|
{ |
||||||
|
if(trim(substr($v, 0, strlen('get_field_'))) == 'get_field_') |
||||||
|
{ |
||||||
|
$d = ''; |
||||||
|
|
||||||
|
$name = @$v('', 'name', '', '', 0, $d); |
||||||
|
|
||||||
|
$id = substr($v, strlen('get_field_')); |
||||||
|
|
||||||
|
if ($name != false && is_string($name)) |
||||||
|
$fields[] = array('id' => $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); |
||||||
|
} |
||||||
|
} |
||||||
|
?> |
Loading…
Reference in new issue