/** * @param (string) $slug - urldecoded post name or other slug. */ function qtranxf_slug_multilingual_base($slug) { global $q_config; $is_permastruct = qtranxf_slug_is_permastruct($slug); if ($is_permastruct) { $info = qtranxf_slug_split_permastruct($slug); $val = ''; foreach ($info['blocks'] as $b) { if (qtranxf_slug_is_substitution($b)) { $val .= $b; } else { $val .= qtranxf_slug_multilingual($b); } } return $val; } else { return qtranxf_slug_multilingual($slug); } }
/** * @param (string) $s - decoded string * return array - ('blocks' => [all blocks between '/'], 'slugs' => [decoded slugs]) */ function qtranxf_slug_split_permastruct($s) { $blocks = explode('/', $s); $info = array('blocks' => $blocks, 'slugs' => array()); $slugs =& $info['slugs']; if (count($blocks) == 1) { $slugs[] = $blocks[0]; } else { foreach ($blocks as $k => $v) { if (empty($v)) { continue; } if (qtranxf_slug_is_substitution($v)) { continue; } $slugs[] = $v; } } return $info; }