diff --git a/admin/include/functions.php b/admin/include/functions.php index fff158d27..d5c8986ad 100644 --- a/admin/include/functions.php +++ b/admin/include/functions.php @@ -1553,23 +1553,29 @@ SELECT id ;'; if (count($existing_tags = query2array($query, null, 'id')) == 0) { - // search existing by case insensitive name + $url_name = trigger_change('render_tag_url', $tag_name); + // search existing by url name $query = ' -SELECT id - FROM '.TAGS_TABLE.' - WHERE CONVERT(name, CHAR) = \''.$tag_name.'\' -;'; - if (count($existing_tags = query2array($query, null, 'id')) == 0) - { - $url_name = trigger_change('render_tag_url', $tag_name); - // search existing by url name - $query = ' SELECT id FROM '.TAGS_TABLE.' WHERE url_name = \''.$url_name.'\' ;'; - if (count($existing_tags = query2array($query, null, 'id')) == 0) + if (count($existing_tags = query2array($query, null, 'id')) == 0) + { + // search by extended description (plugin sub name) + $sub_name_where = trigger_change('get_tag_name_like_where', array(), $tag_name); + if (count($sub_name_where)) { + $query = ' +SELECT id + FROM '.TAGS_TABLE.' + WHERE '.implode(' OR ', $sub_name_where).' +;'; + $existing_tags = query2array($query, null, 'id'); + } + + if (count($existing_tags) == 0) + {// finally create the tag mass_inserts( TAGS_TABLE, array('name', 'url_name'), diff --git a/tools/triggers_list.php b/tools/triggers_list.php index 406f5e697..b94ca18ab 100644 --- a/tools/triggers_list.php +++ b/tools/triggers_list.php @@ -227,10 +227,17 @@ array( array( 'name' => 'get_tag_alt_names', 'type' => 'trigger_change', - 'vars' => array('array', null, 'array', 'raw_name'), + 'vars' => array('array', null, 'string', 'raw_name'), 'files' => array('admin\tags.php', 'admin\include\functions.php (get_taglist)'), 'infos' => 'New in 2.4', ), +array( + 'name' => 'get_tag_name_like_where', + 'type' => 'trigger_change', + 'vars' => array('array', null, 'string', 'tag_name'), + 'files' => array('admin\include\functions.php (tag_id_from_tag_name)'), + 'infos' => 'New in 2.7', +), array( 'name' => 'get_webmaster_mail_address', 'type' => 'trigger_change',