getName().'/'.$mod_action.'.php'; break; case 'media_3_find': self::media_3_find(); break; case 'media_query_3a': self::media_query_3a(); break; default: echo $mod_action; header('HTTP/1.0 404 Not Found'); } } private static function media_3_find() { global $MEDIA_DIRECTORY, $MEDIA_DIRECTORY_LEVELS, $TEXT_DIRECTION, $ABBREVIATE_CHART_LABELS; $controller=new WT_Controller_Simple(); $type =safe_GET('type', WT_REGEX_ALPHA, 'indi'); $filter =safe_GET('filter'); $action =safe_GET('action'); $callback =safe_GET('callback', WT_REGEX_NOSCRIPT, 'paste_id'); $create =safe_GET('create'); $media =safe_GET('media'); $external_links =safe_GET('external_links'); $directory =safe_GET('directory', WT_REGEX_NOSCRIPT, $MEDIA_DIRECTORY); $multiple =safe_GET_bool('multiple'); $showthumb =safe_GET_bool('showthumb'); $all =safe_GET_bool('all'); $subclick =safe_GET('subclick'); $choose =safe_GET('choose', WT_REGEX_NOSCRIPT, '0all'); $level =safe_GET('level', WT_REGEX_INTEGER, 0); if ($showthumb) { $thumbget='&showthumb=true'; } else { $thumbget=''; } if ($subclick=='all') { $all=true; } $embed = substr($choose, 0, 1)=="1"; $chooseType = substr($choose, 1); if ($chooseType!="media" && $chooseType!="0file") { $chooseType = "all"; } //-- force the thumbnail directory to have the same layout as the media directory //-- Dots and slashes should be escaped for the preg_replace $srch = "/".addcslashes($MEDIA_DIRECTORY, '/.')."/"; $repl = addcslashes($MEDIA_DIRECTORY."thumbs/", '/.'); $thumbdir = stripcslashes(preg_replace($srch, $repl, $directory)); //-- prevent script from accessing an area outside of the media directory //-- and keep level consistency if (($level < 0) || ($level > $MEDIA_DIRECTORY_LEVELS)) { $directory = $MEDIA_DIRECTORY; $level = 0; } elseif (preg_match("'^$MEDIA_DIRECTORY'", $directory)==0) { $directory = $MEDIA_DIRECTORY; $level = 0; } // End variables for find media require WT_ROOT.'includes/specialchars.php'; // End variables for Find Special Character switch ($type) { case "indi": $controller->setPageTitle(WT_I18N::translate('Find individual ID')); break; case "fam": $controller->setPageTitle(WT_I18N::translate('Find Family List')); break; case "media": $controller->setPageTitle(WT_I18N::translate('Find media')); $action="filter"; break; case "place": $controller->setPageTitle(WT_I18N::translate('Find Place')); $action="filter"; break; case "repo": $controller->setPageTitle(WT_I18N::translate('Repositories')); $action="filter"; break; case "note": $controller->setPageTitle(WT_I18N::translate('Find Shared Note')); $action="filter"; break; case "source": $controller->setPageTitle(WT_I18N::translate('Find Source')); $action="filter"; break; case "specialchar": $controller->setPageTitle(WT_I18N::translate('Find Special Characters')); $action="filter"; break; } $controller->pageHeader(); echo WT_JS_START; ?> function pasterow(id, name, gend, yob, age, bpl) { window.opener.opener.insertRowToTable(id, name, '', gend, '', yob, age, 'Y', '', bpl); } function pasteid(id, name, thumb) { if (thumb) { window.opener.(id, name, thumb); } else { // GEDFact_assistant ======================== if (window.opener.document.getElementById('addlinkQueue')) { window.opener.insertRowToTable(id, name); // Check if Indi, Fam or source =================== /* if (id.match("I")=="I") { var win01 = window.opener.window.open('edit_interface.php?action=addmedia_links¬eid=newnote&pid='+id, 'win01', 'top=50, left=600, width=420, height=650, resizable=1, scrollbars=1'); if (window.focus) {win01.focus();} } else if (id.match("F")=="F") { // TODO --- alert('Opening Navigator with family id entered will come later'); } */ } window.opener.(id); if (window.opener.pastename) window.opener.pastename(name); } } function checknames(frm) { if (document.forms[0].subclick) button = document.forms[0].subclick.value; else button = ""; if (frm.filter.value.length<2&button!="all") { alert(""); frm.filter.focus(); return false; } if (button=="all") { frm.filter.value = ""; } return true; } "; echo ""; echo ""; // close column for find text header // start column for find options echo ""; echo "
"; // start column for find text header switch ($type) { case "indi": echo WT_I18N::translate('Find individual ID'); break; case "fam": echo WT_I18N::translate('Find Family List'); break; case "media": echo WT_I18N::translate('Find media'); break; case "place": echo WT_I18N::translate('Find Place'); break; case "repo": echo WT_I18N::translate('Repositories'); break; case "note": echo WT_I18N::translate('Find Shared Note'); break; case "source": echo WT_I18N::translate('Find Source'); break; case "specialchar": echo WT_I18N::translate('Find Special Characters'); break; } echo "
"; // Show indi and hide the rest if ($type == "indi") { echo "
"; echo "
"; echo ""; echo ""; echo ""; echo ""; /* echo ""; echo ""; echo "
"; echo WT_I18N::translate('Name contains:'), " "; echo "
"; echo "
"; echo "
"; */ echo "
"; } // Show fam and hide the rest if ($type == "fam") { echo "
"; echo "
"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
"; echo WT_I18N::translate('Name contains:'), " "; echo "
"; echo "
"; echo "
"; echo "
"; } // Show media and hide the rest if ($type == 'media') { echo "
"; echo "
"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; // This is for passing the name of which submit button was clicked echo ""; echo ""; echo ""; echo "
"; echo WT_I18N::translate('Media contains:'), " "; echo help_link('simple_filter'); echo "
"; echo "", WT_I18N::translate('Show thumbnails'); echo "
"; echo " "; echo ""; echo "
"; echo "
"; } // Show place and hide the rest if ($type == "place") { echo "
"; echo "
"; echo ""; echo ""; echo ""; echo ""; // This is for passing the name of which submit button was clicked echo ""; echo ""; echo "
"; echo WT_I18N::translate('Place contains:'), " "; echo "
"; echo " "; echo ""; echo "
"; echo "
"; } // Show repo and hide the rest if ($type == "repo") { echo "
"; echo "
"; echo ""; echo ""; echo ""; echo ""; // This is for passing the name of which submit button was clicked echo ""; echo ""; echo "
"; echo WT_I18N::translate('Repository contains:'), " "; echo "
"; echo " "; echo ""; echo "
"; echo "
"; } // Show Shared Notes and hide the rest if ($type == "note") { echo "
"; echo "
"; echo ""; echo ""; echo ""; echo ""; // This is for passing the name of which submit button was clicked echo ""; echo ""; echo "
"; echo WT_I18N::translate('Shared Note contains:'), " "; echo "
"; echo " "; echo ""; echo "
"; echo "
"; } // Show source and hide the rest if ($type == "source") { echo "
"; echo "
"; echo ""; echo ""; echo ""; echo ""; // This is for passing the name of which submit button was clicked echo ""; echo ""; echo "
"; echo WT_I18N::translate('Source contains:'), " "; echo "
"; echo " "; echo ""; echo "
"; echo "
"; } // Show specialchar and hide the rest if ($type == "specialchar") { echo "
"; echo "
"; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
"; echo "
", WT_I18N::translate('Magnify'), ""; echo "
"; echo "
"; } // end column for find options echo "
"; // Close table with find options echo "
"; echo "", WT_I18N::translate('Close Window'), "
"; echo "
"; if ($action=="filter") { $filter = trim($filter); $filter_array=explode(' ', preg_replace('/ {2,}/', ' ', $filter)); // Output Individual if ($type == "indi") { echo ""; $myindilist=search_indis_names($filter_array, array(WT_GED_ID), 'AND'); if ($myindilist) { echo "'; } else { echo ""; } echo "
', WT_I18N::translate('Total individuals: %s', count($myindilist)), '
"; echo WT_I18N::translate('No results found.'); echo "
"; } // Output Family if ($type == "fam") { echo ""; // Get the famrecs with hits on names from the family table // Get the famrecs with hits in the gedcom record from the family table $myfamlist = array_unique(array_merge( search_fams_names($filter_array, array(WT_GED_ID), 'AND'), search_fams($filter_array, array(WT_GED_ID), 'AND', true) )); if ($myfamlist) { $curged = $GEDCOM; echo "'; } else { echo ""; } echo "
    "; usort($myfamlist, array('WT_GedcomRecord', 'Compare')); foreach ($myfamlist as $family) { echo $family->format_list('li', true); } echo '
', WT_I18N::translate('Total families: %s', count($myfamlist)), '
"; echo WT_I18N::translate('No results found.'); echo "
"; } // Output Media if ($type == "media") { global $dirs; $medialist = get_medialist(true, $directory); echo ""; // Show link to previous folder if ($level>0) { $levels = explode("/", $directory); $pdir = ""; for ($i=0; $i   <-- ".$pdir."   
"; } // Start of media directory table echo "
"; // Tell the user where he is echo ""; echo ""; echo ""; // display the directory list if (count($dirs) || $level) { sort($dirs); if ($level) { echo ""; } echo ""; foreach ($dirs as $indexval => $dir) { echo ""; } } echo ""; /** * This action generates a thumbnail for the file * * @name $create->thumbnail */ if ($create=="thumbnail") { $filename = $_REQUEST["file"]; generate_thumbnail($directory.$filename, $thumbdir.$filename); } echo "
"; // display the images TODO x across if lots of files?? if (count($medialist) > 0) { foreach ($medialist as $indexval => $media) { // Check if the media belongs to the current folder preg_match_all("/\//", $media["FILE"], $hits); $ct = count($hits[0]); if (($ct <= $level+1 && $external_links != "http" && !isFileExternal($media["FILE"])) || (isFileExternal($media["FILE"]) && $external_links == "http")) { // simple filter to reduce the number of items to view $isvalid = filterMedia($media, $filter, 'http'); if ($isvalid && $chooseType!="all") { if ($chooseType=="0file" && !empty($media["XREF"])) $isvalid = false; // skip linked media files if ($chooseType=="media" && empty($media["XREF"])) $isvalid = false; // skip unlinked media files } if ($isvalid) { if ($media["EXISTS"] && media_filesize($media["FILE"]) != 0) { $imgsize = findImageSize($media["FILE"]); $imgwidth = $imgsize[0]+40; $imgheight = $imgsize[1]+150; } else { $imgwidth = 0; $imgheight = 0; } echo ""; //-- thumbnail field if ($showthumb) { echo ""; } } } } else { echo ""; } echo "
"; echo WT_I18N::translate('Current directory'); echo "
"; echo substr($directory, 0, -1); echo "
"; echo $uplink, "
"; echo "", WT_I18N::translate('External objects'), ""; echo "
"; echo "", $dir, ""; echo "
"; if (isset($media["THUMB"])) echo "\"\""; else echo " "; } //-- name and size field echo ""; if ($media["TITL"] != "") { echo "", PrintReady($media["TITL"]), "  "; if ($TEXT_DIRECTION=="rtl") echo getRLM(); echo "(", $media["XREF"], ")"; if ($TEXT_DIRECTION=="rtl") echo getRLM(); echo "
"; } if (!$embed) { echo "", $media["FILE"], " -- "; } else echo "", $media["FILE"], " -- "; echo "", WT_I18N::translate('View'), "
"; if (!$media["EXISTS"] && !isFileExternal($media["FILE"])) echo $media["FILE"], "
", WT_I18N::translate('The filename entered does not exist.'), "
"; else if (!isFileExternal($media["FILE"]) && !empty($imgsize[0])) { echo WT_Gedcom_Tag::getLabelValue('__IMAGE_SIZE__', $imgsize[0].' × '.$imgsize[1]); } if ($media["LINKED"]) { echo WT_I18N::translate('This media object is linked to the following:'), "
"; foreach ($media["LINKS"] as $indi => $type_record) { if ($type_record!='INDI' && $type_record!='FAM' && $type_record!='SOUR' && $type_record!='OBJE') continue; $record=WT_GedcomRecord::getInstance($indi); echo '
'; switch($type_record) { case 'INDI': echo WT_I18N::translate('View Person'), ' - '; break; case 'FAM': echo WT_I18N::translate('View Family'), ' - '; break; case 'SOUR': echo WT_I18N::translate('View Source'), ' - '; break; case 'OBJE': echo WT_I18N::translate('View Object'), ' - '; break; } echo $record->getFullName(), ''; } } else { echo WT_I18N::translate('This media object is not linked to any GEDCOM record.'); } echo "
"; echo WT_I18N::translate('No results found.'); echo "
"; } // Output Places if ($type == "place") { echo ""; $placelist = array(); if ($all || $filter) { $placelist=find_place_list($filter); $ctplace = count($placelist); if ($ctplace>0) { $revplacelist = array(); foreach ($placelist as $indexval => $place) { $levels = explode(',', $place); // -- split the place into comma seperated values $levels = array_reverse($levels); // -- reverse the array so that we get the top level first $placetext = ""; $j=0; foreach ($levels as $indexval => $level) { if ($j>0) $placetext .= ", "; $placetext .= trim($level); $j++; } $revplacelist[] = $placetext; } uasort($revplacelist, "utf8_strcasecmp"); echo ""; echo ""; } else { echo ""; } } echo "
", WT_I18N::translate('Places found'), " ", $ctplace; echo "
    "; echo WT_I18N::translate('No results found.'); echo "
"; } // Output Repositories if ($type == "repo") { echo ""; $repo_list = get_repo_list(WT_GED_ID); if ($repo_list) { echo ""; echo ""; } else { echo ""; } echo "
", WT_I18N::translate('Repositories found'), " ", count($repo_list); echo "
"; echo WT_I18N::translate('No results found.'); echo "
"; } // Output Shared Notes if ($type=="note") { echo ''; if ($filter) { $mynotelist = search_notes($filter_array, array(WT_GED_ID), 'AND', true); } else { $mynotelist = get_note_list(WT_GED_ID); } if ($mynotelist) { usort($mynotelist, array('WT_GedcomRecord', 'Compare')); echo ''; } else { echo ''; } echo '
', WT_I18N::translate('Shared Notes found'), ' ', count($mynotelist), '
', WT_I18N::translate('No results found.'), '
'; } // Output Sources if ($type=="source") { echo ''; if ($filter) { $mysourcelist = search_sources($filter_array, array(WT_GED_ID), 'AND', true); } else { $mysourcelist = get_source_list(WT_GED_ID); } if ($mysourcelist) { usort($mysourcelist, array('WT_GedcomRecord', 'Compare')); echo ''; } else { echo ''; } echo '
', WT_I18N::translate('Total sources: %s', count($mysourcelist)), '
', WT_I18N::translate('No results found.'), '
'; } // Output Special Characters if ($type == "specialchar") { echo "

"; // lower case special characters foreach ($lcspecialchars as $key=>$value) { echo '', $key, ' '; } echo '

'; //upper case special characters foreach ($ucspecialchars as $key=>$value) { echo '', $key, ' '; } echo '

'; // other special characters (not letters) foreach ($otherspecialchars as $key=>$value) { echo '', $key, ' '; } echo '

'; } } echo ""; // Close div that centers table // Set focus to the input field echo WT_JS_START, 'document.filter', $type, '.filter.focus();', WT_JS_END; } private static function media_query_3a() { $iid2 = safe_GET('iid'); $controller=new WT_Controller_Simple(); $controller->setPageTitle(WT_I18N::translate('Link media')); $controller->pageHeader(); $record=WT_GedcomRecord::getInstance($iid2); if ($record) { $headjs=''; if ($record->getType()=='FAM') { if ($record->getHusband()) { $headjs=$record->getHusband()->getXref(); } elseif ($record->getWife()) { $headjs=$record->getWife()->getXref(); } } ?>