function qtranxf_slug_save_post(&$qfields, $post_ID, $post)
{
    global $wpdb;
    $post_parent = $post->post_parent;
    $name = $post->post_name;
    $name_old = $qfields['qtranslate-original-value'];
    if ($name != $name_old) {
        $slugs_old = qtranxf_slug_get_translations($name_old);
        if (!empty($slugs_old)) {
            $sql = 'SELECT ID FROM ' . $wpdb->posts . ' WHERE ID != %s AND post_name = %s';
            $query = $wpdb->prepare($sql, $post_ID, $name_old);
            $id = $wpdb->get_var($query);
            if (empty($id)) {
                qtranxf_slug_del_translations($name_old);
            }
        }
    }
    $default_lang = qtranxf_getLanguageDefault();
    qtranxf_slug_update_translations($name, $qfields, $default_lang);
}
function qtranxf_slug_update_translations_of($group, $group_name, $default_lang, &$wp_group)
{
    foreach ($_POST['qtranslate-slugs'][$group] as $name_old => &$qfields) {
        //$name_old = $qfields['qtranslate-original-value'];
        $name = sanitize_key($qfields[$default_lang]);
        //qtranxf_dbg_log('qtranxf_slug_update_translations_of: new: $wp_group['.$name.']: ', $wp_group[$name]);
        //qtranxf_dbg_log('qtranxf_slug_update_translations_of: old: $wp_group['.$name_old.']: ', $wp_group[$name_old]);
        if ($name != $name_old) {
            if (isset($wp_group[$name_old])) {
                qtranxf_add_warning(sprintf(__('The slug for %s "%s" for default language cannot be changed to "%s" on this page, because it is not known here which tool created it and for what purpose. Please, update this slug on the page where it is originated from. It may be required then to come back here to update the translations, unless the other plugin or theme is %sintegrated%s with %s.', 'qtranslate'), $group_name, $name_old, $name, '<a href="https://qtranslatexteam.wordpress.com/integration/" target="_blank">', '</a>', 'qTranslate&#8209;X'));
                $qfields[$default_lang] = $name = $name_old;
            } else {
                $slugs_old = qtranxf_slug_get_translations($name_old);
                //qtranxf_dbg_log('qtranxf_slug_update_translations_of: $slugs_old: ', $slugs_old);
                if (!empty($slugs_old)) {
                    qtranxf_slug_del_translations($name_old);
                }
            }
        }
        if (isset($wp_group[$name])) {
            qtranxf_slug_update_translations($name, $qfields, $default_lang);
        } else {
            qtranxf_add_error(sprintf(__('Translations cannot be updated for unknown %s "%s".', 'qtranslate'), $group_name, $name));
        }
    }
    qtranxf_slug_clean_request($group);
}
function qtranxf_slug_delete_term($term_id, $tt_id, $taxonomy, $deleted_term)
{
    //qtranxf_dbg_log('qtranxf_slug_edited_term: $deleted_term: ', $deleted_term);
    $slug = $deleted_term->slug;
    qtranxf_slug_del_translations($slug);
}
function qtranxf_slug_del_translations_permastruct($s)
{
    $info = qtranxf_slug_split_permastruct($s);
    //qtranxf_dbg_log('qtranxf_slug_del_translations_permastruct: $info: ', $info);
    foreach ($info['slugs'] as $name) {
        qtranxf_slug_del_translations($name);
    }
}