/** * @since 3.4 */ function qtranxf_standardize_config_fields($fields) { foreach ($fields as $k => $f) { if (!is_array($f)) { continue; } if (isset($f['id'])) { $id = $f['id']; unset($f['id']); $fields[$id] = $f; if ($id !== $k) { unset($fields[$k]); } } else { if (qtranxf_set_field_jquery($f)) { $fields[$k] = $f; } } } return $fields; }
/** * filters i18n configurations for the current page */ function qtranxf_parse_page_config($config, $url_path, $url_query) { global $q_config; //$q_config['i18n-log-dir'] = WP_CONTENT_DIR.'/i18n-config'; //qtranxf_dbg if (isset($q_config['i18n-log-dir'])) { if (!file_exists($q_config['i18n-log-dir'])) { if (!mkdir($q_config['i18n-log-dir'])) { unset($q_config['i18n-log-dir']); } } if (isset($q_config['i18n-log-dir'])) { qtranxf_write_config_log($config, 'all-pages'); } } //qtranxf_dbg_log('qtranxf_parse_page_config: $url_path: "'.$url_path.'"; $url_query: "'.$url_query.'"'); //qtranxf_dbg_log('qtranxf_parse_page_config: $config: ', $config); $page_configs = array(); foreach ($config as $pgkey => $pgcfg) { $d = isset($pgcfg['preg_delimiter']) ? $pgcfg['preg_delimiter'] : '!'; $matched = qtranxf_match_page($pgcfg, $url_path, $url_query, $d); //qtranxf_dbg_log('qtranxf_parse_page_config: $pgcfg: ', $pgcfg); //qtranxf_dbg_log('qtranxf_parse_page_config: $matched: ', $matched); if ($matched === false) { continue; } $post_type_key = ''; if (isset($pgcfg['post_type'])) { if (is_string($pgcfg['post_type'])) { $post_type_key = $d . $pgcfg['post_type'] . $d; unset($pgcfg['post_type']); } else { $post_type_key = serialize($pgcfg['post_type']); foreach ($pgcfg['post_type'] as $k => $item) { $pgcfg['post_type'][$k] = $d . $item . $d; } } } if (!isset($page_configs[$post_type_key])) { $page_configs[$post_type_key] = array(); } $page_config =& $page_configs[$post_type_key]; foreach ($pgcfg as $key => $cfg) { if (empty($cfg)) { continue; } if ($key === 'anchors') { //Anchor elements are defined by id only. //Merge unique id values only: foreach ($cfg as $k => $anchor) { $id = qtranxf_standardize_config_anchor($anchor); if (is_null($id)) { continue; } if (!is_string($id)) { $id = $k; } if (!isset($page_config['anchors'])) { $page_config['anchors'] = array(); } $page_config['anchors'][$id] = $anchor; } } else { if ($key === 'forms') { if (!isset($page_config['forms'])) { $page_config['forms'] = array(); } foreach ($cfg as $form_id => $pgcfg_form) { if (!isset($pgcfg_form['fields'])) { continue; } // convert obsolete format for 'fields' foreach ($pgcfg_form['fields'] as $k => $f) { if (!isset($f['id'])) { continue; } $id = $f['id']; unset($f['id']); $pgcfg_form['fields'][$id] = $f; if ($id !== $k) { unset($pgcfg_form['fields'][$k]); } } //figure out obsolete id of form/collection if (is_string($form_id)) { $id = $form_id; } else { if (isset($pgcfg_form['form']['id'])) { $id = $pgcfg_form['form']['id']; unset($pgcfg_form['form']['id']); if (empty($pgcfg_form['form'])) { unset($pgcfg_form['form']); } } else { $id = ''; } } if (!isset($page_config['forms'][$id])) { $page_config['forms'][$id] = $pgcfg_form; } else { $page_config['forms'][$id] = qtranxf_merge_config($page_config['forms'][$id], $pgcfg_form); } } } else { if (!isset($page_config[$key])) { $page_config[$key] = $cfg; } else { $page_config[$key] = qtranxf_merge_config($page_config[$key], $cfg); } } } } } //qtranxf_dbg_log('qtranxf_parse_page_config: $page_configs: ', $page_configs); foreach ($page_configs as $post_type_key => &$page_config) { if (!empty($post_type_key)) { //qtranxf_dbg_log('qtranxf_parse_page_config: $post_type_key="'.$post_type_key.'"; page_config: ', $page_config); if (!empty($page_config)) { //clean up 'fields' if (!empty($page_config['forms'])) { foreach ($page_config['forms'] as $form_id => $frm) { if (!isset($frm['fields'])) { continue; } foreach ($frm['fields'] as $k => $f) { if (qtranxf_set_field_jquery($f)) { $page_config['forms'][$form_id]['fields'][$k] = $f; } } } } foreach ($page_config as $k => $cfg) { if (empty($cfg)) { unset($page_config[$k]); } } } } if (empty($page_config)) { unset($page_configs[$post_type_key]); } } if (isset($q_config['i18n-log-dir'])) { qtranxf_write_config_log($page_configs, 'by-post-type', $url_path, $url_query); } return $page_configs; }