i18n::translate('Top 10 Surnames'), 'type'=>'both', 'descr'=>i18n::translate('This block shows a table of the 10 most frequently occurring surnames in the database. The actual number of surnames shown in this block is configurable. You can configure the GEDCOM to remove names from this list.'), 'canconfig'=>true, 'config'=>array( 'cache'=>7, 'num'=>10, ) ); function top_surname_sort($a, $b) { $counta=0; foreach ($a as $x) { $counta+=count($x); } $countb=0; foreach ($b as $x) { $countb+=count($x); } return $countb - $counta; } function print_block_name_top10($block=true, $config="", $side, $index) { global $COMMON_NAMES_ADD, $COMMON_NAMES_REMOVE, $COMMON_NAMES_THRESHOLD, $WT_BLOCKS, $ctype, $WT_IMAGES, $WT_IMAGE_DIR, $SURNAME_LIST_STYLE; if (empty($config)) { $config=$WT_BLOCKS["print_block_name_top10"]["config"]; } // This next function is a bit out of date, and doesn't cope well with surname variants $top_surnames=get_top_surnames(WT_GED_ID, 1, $config["num"]); $all_surnames=array(); foreach (array_keys($top_surnames) as $top_surname) { $all_surnames=array_merge($all_surnames, get_indilist_surns($top_surname, '', false, false, WT_GED_ID)); } // Insert from the "Add Names" list if not already in there if ($COMMON_NAMES_ADD) { foreach (preg_split('/[,; ]+/', $COMMON_NAMES_ADD) as $addname) { $ADDNAME=utf8_strtoupper($addname); if (isset($all_surnames[$ADDNAME])) { $SURNAME=$ADDNAME; foreach (array_keys($all_surnames[$ADDNAME]) as $surname) { if ($SURNAME!=$surname && $SURNAME==utf8_strtoupper($surname)) { $all_surnames[$ADDNAME][$SURNAME]=$all_surnames[$ADDNAME][$surname]; unset ($all_surnames[$ADDNAME][$surname]); } } if (isset($all_surnames[$ADDNAME][$SURNAME])) { $n=count($all_surnames[$ADDNAME][$SURNAME]); $all_surnames[$ADDNAME][$SURNAME]=array_fill(0, max($n, $COMMON_NAMES_THRESHOLD), true); } else { $all_surnames[$ADDNAME][$SURNAME]=array_fill(0, $COMMON_NAMES_THRESHOLD, true); } } else { $all_surnames[$ADDNAME][$ADDNAME]=array_fill(0, $COMMON_NAMES_THRESHOLD, true); } } } // Remove names found in the "Remove Names" list if ($COMMON_NAMES_REMOVE) { foreach (preg_split("/[,; ]+/", $COMMON_NAMES_REMOVE) as $delname) { unset($all_surnames[utf8_strtoupper($delname)]); } } $id="top10surnames"; $title=''; if ($WT_BLOCKS["print_block_name_top10"]["canconfig"]) { if ($ctype=="gedcom" && WT_USER_GEDCOM_ADMIN || $ctype=="user" && WT_USER_ID) { if ($ctype=="gedcom") { $name = WT_GEDCOM; } else { $name = WT_USER_NAME; } $title .= ""; $title .= "\"".i18n::translate('Configure')."\""; } } // I18N: There are separate lists of male/female names, containing %d names each $title .= i18n::plural('Top surname', 'Top %d surnames', $config['num'], $config['num']); $title .= help_link('index_common_names'); switch ($SURNAME_LIST_STYLE) { case 'style3': uksort($all_surnames,'utf8_strcasecmp'); $content=format_surname_tagcloud($all_surnames, 'indilist', true); break; case 'style2': default: uasort($all_surnames, "top_surname_sort"); $content=format_surname_table($all_surnames, 'indilist'); break; } global $THEME_DIR; if ($block) { require $THEME_DIR.'templates/block_small_temp.php'; } else { require $THEME_DIR.'templates/block_main_temp.php'; } } function print_block_name_top10_config($config) { global $ctype, $WT_BLOCKS; if (empty($config)) $config = $WT_BLOCKS["print_block_name_top10"]["config"]; if (!isset($config["cache"])) $config["cache"] = $WT_BLOCKS["print_block_name_top10"]["config"]["cache"]; ?> " /> "; print i18n::translate('Cache file life'); print help_link('cache_life'); print ""; print ""; print ""; } } ?>