mirror of https://github.com/avecms/AVE.cms.git
M@d D3n
6 years ago
6 changed files with 241 additions and 232 deletions
@ -1,224 +1,234 @@ |
|||||||
<?php |
<?php |
||||||
|
|
||||||
/** |
/** |
||||||
* AVE.cms |
* AVE.cms |
||||||
* |
* |
||||||
* @package AVE.cms |
* @package AVE.cms |
||||||
* @version 3.x |
* @version 3.x |
||||||
* @filesource |
* @filesource |
||||||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru |
||||||
* |
* |
||||||
* @license GPL v.2 |
* @license GPL v.2 |
||||||
*/ |
*/ |
||||||
|
|
||||||
// Tags |
// Tags |
||||||
function get_field_tags ($field_value, $action, $field_id = 0, $tpl = '', $tpl_empty = 0, &$maxlength = null, $document_fields = array(), $rubric_id = 0, $default = null, $_tpl = null) |
function get_field_tags ($field_value, $action, $field_id = 0, $tpl = '', $tpl_empty = 0, &$maxlength = null, $document_fields = array(), $rubric_id = 0, $default = null, $_tpl = null) |
||||||
{ |
{ |
||||||
global $AVE_DB, $AVE_Template; |
global $AVE_DB, $AVE_Template; |
||||||
|
|
||||||
$fld_dir = dirname(__FILE__) . '/'; |
$fld_dir = dirname(__FILE__) . '/'; |
||||||
$tpl_dir = $fld_dir . 'tpl/'; |
$tpl_dir = $fld_dir . 'tpl/'; |
||||||
$fld_name = basename($fld_dir); |
$fld_name = basename($fld_dir); |
||||||
|
|
||||||
$rubric_id = $rubric_id > 0 |
$rubric_id = $rubric_id > 0 |
||||||
? $rubric_id |
? $rubric_id |
||||||
: $_REQUEST['rubric_id'] |
: $_REQUEST['rubric_id'] |
||||||
? (int)$_REQUEST['rubric_id'] |
? (int)$_REQUEST['rubric_id'] |
||||||
: $AVE_DB->Query("SELECT rubric_id FROM ".PREFIX."_documents WHERE Id = '".$_REQUEST['Id']."'")->GetCell(); |
: $AVE_DB->Query("SELECT rubric_id FROM ".PREFIX."_documents WHERE Id = '".$_REQUEST['Id']."'")->GetCell(); |
||||||
|
|
||||||
$lang_file = $fld_dir . 'lang/' . (defined('ACP') |
$lang_file = $fld_dir . 'lang/' . (defined('ACP') |
||||||
? $_SESSION['admin_language'] |
? $_SESSION['admin_language'] |
||||||
: $_SESSION['user_language']) . '.txt'; |
: $_SESSION['user_language']) . '.txt'; |
||||||
|
|
||||||
$AVE_Template->config_load($lang_file, 'lang'); |
$AVE_Template->config_load($lang_file, 'lang'); |
||||||
$AVE_Template->assign('config_vars', $AVE_Template->get_config_vars()); |
$AVE_Template->assign('config_vars', $AVE_Template->get_config_vars()); |
||||||
$AVE_Template->config_load($lang_file, 'admin'); |
$AVE_Template->config_load($lang_file, 'admin'); |
||||||
|
|
||||||
switch ($action) |
switch ($action) |
||||||
{ |
{ |
||||||
case 'edit': |
case 'edit': |
||||||
$sql = " |
$sql = " |
||||||
SELECT DISTINCT |
SELECT DISTINCT |
||||||
tag |
tag |
||||||
FROM |
FROM |
||||||
".PREFIX."_document_tags |
".PREFIX."_document_tags |
||||||
WHERE |
WHERE |
||||||
rubric_id = '".$rubric_id."' |
rubric_id = '".$rubric_id."' |
||||||
ORDER BY tag ASC |
ORDER BY tag ASC |
||||||
"; |
"; |
||||||
|
|
||||||
$query = $AVE_DB->Query($sql); |
$query = $AVE_DB->Query($sql); |
||||||
|
|
||||||
$field_tags = array(); |
$field_tags = array(); |
||||||
|
|
||||||
while ($row = $query->GetCell()) |
while ($row = $query->GetCell()) |
||||||
array_push($field_tags, $row); |
array_push($field_tags, $row); |
||||||
|
|
||||||
$field_value = explode('|', $field_value); |
$field_value = explode('|', $field_value); |
||||||
$field_value = array_diff($field_value, array('')); |
$field_value = array_diff($field_value, array('')); |
||||||
|
|
||||||
$total = count($field_tags); |
$total = count($field_tags); |
||||||
|
|
||||||
$field_points = array(ceil($total/4), 2*ceil($total/4), 3*ceil($total/4)); |
$field_points = array(ceil($total/4), 2*ceil($total/4), 3*ceil($total/4)); |
||||||
|
|
||||||
$AVE_Template->assign('field_points', $field_points); |
$AVE_Template->assign('field_points', $field_points); |
||||||
$AVE_Template->assign('field_tags', $field_tags); |
$AVE_Template->assign('field_tags', $field_tags); |
||||||
$AVE_Template->assign('field_dir', $fld_name); |
$AVE_Template->assign('field_dir', $fld_name); |
||||||
$AVE_Template->assign('field_id', $field_id); |
$AVE_Template->assign('field_id', $field_id); |
||||||
$AVE_Template->assign('field_value', $field_value); |
$AVE_Template->assign('field_value', $field_value); |
||||||
|
|
||||||
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin', $_tpl); |
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'admin', $_tpl); |
||||||
|
|
||||||
return $AVE_Template->fetch($tpl_file); |
return $AVE_Template->fetch($tpl_file); |
||||||
break; |
break; |
||||||
|
|
||||||
case 'doc': |
case 'doc': |
||||||
|
|
||||||
$AVE_Template->config_load($lang_file, 'public'); |
$AVE_Template->config_load($lang_file, 'public'); |
||||||
|
|
||||||
if ($tpl_empty) |
if ($tpl_empty) |
||||||
{ |
{ |
||||||
$field_value = explode('|', $field_value); |
$field_value = explode('|', $field_value); |
||||||
$field_value = array_diff($field_value, array('')); |
$field_value = array_diff($field_value, array('')); |
||||||
$field_value = array_values($field_value); |
$field_value = array_values($field_value); |
||||||
} |
} |
||||||
else |
else |
||||||
{ |
{ |
||||||
$field_param = explode('|', $field_value); |
$field_param = explode('|', $field_value); |
||||||
$field_param = array_diff($field_param, array('')); |
$field_param = array_diff($field_param, array('')); |
||||||
$field_param = array_values($field_param); |
$field_param = array_values($field_param); |
||||||
$field_value = preg_replace_callback( |
$field_value = preg_replace_callback( |
||||||
'/\[tag:parametr:(\d+)\]/i', |
'/\[tag:parametr:(\d+)\]/i', |
||||||
function ($data) use ($field_param) |
function ($data) use ($field_param) |
||||||
{ |
{ |
||||||
return $field_param[(int)$data[1]]; |
return $field_param[(int)$data[1]]; |
||||||
}, |
}, |
||||||
$tpl |
$tpl |
||||||
); |
); |
||||||
} |
} |
||||||
|
|
||||||
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'doc', $_tpl); |
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'doc', $_tpl); |
||||||
|
|
||||||
if ($tpl_empty && $tpl_file) |
if ($tpl_empty && $tpl_file) |
||||||
{ |
{ |
||||||
$AVE_Template->assign('field_id', $field_id); |
$AVE_Template->assign('field_id', $field_id); |
||||||
$AVE_Template->assign('field_default', $default); |
$AVE_Template->assign('field_default', $default); |
||||||
$AVE_Template->assign('field_value', $field_value); |
$AVE_Template->assign('field_value', $field_value); |
||||||
|
|
||||||
return $AVE_Template->fetch($tpl_file); |
return $AVE_Template->fetch($tpl_file); |
||||||
} |
} |
||||||
|
|
||||||
return $field_value; |
return $field_value; |
||||||
break; |
break; |
||||||
|
|
||||||
case 'req': |
case 'req': |
||||||
|
|
||||||
$AVE_Template->config_load($lang_file, 'public'); |
$AVE_Template->config_load($lang_file, 'public'); |
||||||
|
|
||||||
if ($tpl_empty) |
if ($tpl_empty) |
||||||
{ |
{ |
||||||
$field_value = explode('|', $field_value); |
$field_value = explode('|', $field_value); |
||||||
$field_value = array_diff($field_value, array('')); |
$field_value = array_diff($field_value, array('')); |
||||||
$field_value = array_values($field_value); |
$field_value = array_values($field_value); |
||||||
} |
} |
||||||
else |
else |
||||||
{ |
{ |
||||||
$field_param = explode('|', $field_value); |
$field_param = explode('|', $field_value); |
||||||
$field_param = array_diff($field_param, array('')); |
$field_param = array_diff($field_param, array('')); |
||||||
$field_param = array_values($field_param); |
$field_param = array_values($field_param); |
||||||
$field_value = preg_replace_callback( |
$field_value = preg_replace_callback( |
||||||
'/\[tag:parametr:(\d+)\]/i', |
'/\[tag:parametr:(\d+)\]/i', |
||||||
function($data) use($field_param) |
function($data) use($field_param) |
||||||
{ |
{ |
||||||
return $field_param[(int)$data[1]]; |
return $field_param[(int)$data[1]]; |
||||||
}, |
}, |
||||||
$tpl |
$tpl |
||||||
); |
); |
||||||
} |
} |
||||||
|
|
||||||
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'req', $_tpl); |
$tpl_file = get_field_tpl($tpl_dir, $field_id, 'req', $_tpl); |
||||||
|
|
||||||
if ($tpl_empty && $tpl_file) |
if ($tpl_empty && $tpl_file) |
||||||
{ |
{ |
||||||
$AVE_Template->assign('field_id', $field_id); |
$AVE_Template->assign('field_id', $field_id); |
||||||
$AVE_Template->assign('field_default', $default); |
$AVE_Template->assign('field_default', $default); |
||||||
$AVE_Template->assign('field_value', $field_value); |
$AVE_Template->assign('field_value', $field_value); |
||||||
|
|
||||||
return $AVE_Template->fetch($tpl_file); |
return $AVE_Template->fetch($tpl_file); |
||||||
} |
} |
||||||
|
|
||||||
return $field_value; |
return $field_value; |
||||||
break; |
break; |
||||||
|
|
||||||
case 'save': |
case 'save': |
||||||
// Регистрируем хук |
// Регистрируем хук |
||||||
Hooks::register('DocumentAfterSave', 'afterTagsSave', 10); |
Hooks::register('DocumentAfterSave', 'afterTagsSave', 10); |
||||||
|
|
||||||
$field_value = tagsValue($field_value); |
$field_value = tagsValue($field_value); |
||||||
|
|
||||||
if (! empty($field_value)) |
if (! empty($field_value)) |
||||||
$field_value = '|' . implode('|', $field_value) . '|'; |
$field_value = '|' . implode('|', $field_value) . '|'; |
||||||
|
|
||||||
return $field_value; |
return $field_value; |
||||||
|
|
||||||
case 'name': |
case 'name': |
||||||
return $AVE_Template->get_config_vars('name'); |
return $AVE_Template->get_config_vars('name'); |
||||||
|
|
||||||
default: |
default: |
||||||
return $field_value; |
return $field_value; |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
if (! function_exists('tagsValue')) |
if (! function_exists('tagsValue')) |
||||||
{ |
{ |
||||||
function tagsValue ($field_value) |
function tagsValue ($field_value) |
||||||
{ |
{ |
||||||
// Если есть выделенные теги |
// Если есть выделенные теги |
||||||
if (! empty($field_value['tags'])) |
if (! empty($field_value['tags'])) |
||||||
$tags = $field_value['tags']; |
$tags = $field_value['tags']; |
||||||
else |
else |
||||||
$tags = array(); |
$tags = array(); |
||||||
|
|
||||||
unset ($tags['other']); |
unset ($tags['other']); |
||||||
|
|
||||||
// Если есть теги через зяпятую |
// Если есть теги через зяпятую |
||||||
if (! empty($field_value['tags']['other'])) |
if (! empty($field_value['tags']['other'])) |
||||||
{ |
{ |
||||||
$tags_new = explode(',', $field_value['tags']['other']); |
$tags_new = explode(',', $field_value['tags']['other']); |
||||||
$tags_new = array_map('trim', $tags_new); |
$tags_new = array_map('trim', $tags_new); |
||||||
} |
} |
||||||
else |
else |
||||||
$tags_new = array(); |
$tags_new = array(); |
||||||
|
|
||||||
// Совмещаем массивы |
// Совмещаем массивы |
||||||
$tags = array_merge($tags, $tags_new); |
$tags = array_merge($tags, $tags_new); |
||||||
|
|
||||||
// Делаем уникальные значения |
// Делаем уникальные значения |
||||||
$field_value = array_unique($tags); |
$field_value = array_unique($tags); |
||||||
|
|
||||||
return $field_value; |
if (empty($field_value)) |
||||||
} |
$field_value = ''; |
||||||
} |
|
||||||
|
return $field_value; |
||||||
if (! function_exists('afterTagsSave')) |
} |
||||||
{ |
} |
||||||
function afterTagsSave ($data) |
|
||||||
{ |
if (! function_exists('afterTagsSave')) |
||||||
global $AVE_Document; |
{ |
||||||
|
function afterTagsSave ($data) |
||||||
foreach ($data['data']['feld'] AS $_k => $_v) |
{ |
||||||
{ |
global $AVE_Document; |
||||||
if (array_key_exists('tags', $_v)) |
|
||||||
{ |
if (! $AVE_Document) |
||||||
$tags = tagsValue($_v); |
{ |
||||||
|
require_once BASE_DIR . '/class/class.docs.php'; |
||||||
if (! empty($tags)) |
|
||||||
{ |
$AVE_Document = new AVE_Document(); |
||||||
$tags = implode(',', $tags); |
} |
||||||
$AVE_Document->saveTags($data['document_id'], $data['rubric_id'], $tags); |
|
||||||
} |
foreach ($data['data']['feld'] AS $_k => $_v) |
||||||
} |
{ |
||||||
} |
if (array_key_exists('tags', $_v)) |
||||||
} |
{ |
||||||
} |
$tags = tagsValue($_v); |
||||||
|
|
||||||
|
if (! empty($tags)) |
||||||
|
{ |
||||||
|
$tags = implode(',', $tags); |
||||||
|
$AVE_Document->saveTags($data['document_id'], $data['rubric_id'], $tags); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
?> |
?> |
Loading…
Reference in new issue