Example #1
0
    define('WT_IMPORTED', $WT_TREE->imported);
    define('WT_USER_GEDCOM_ADMIN', Auth::isManager($WT_TREE));
    define('WT_USER_CAN_ACCEPT', Auth::isModerator($WT_TREE));
    define('WT_USER_CAN_EDIT', Auth::isEditor($WT_TREE));
    define('WT_USER_CAN_ACCESS', Auth::isMember($WT_TREE));
    define('WT_USER_GEDCOM_ID', $WT_TREE->userPreference(WT_USER_ID, 'gedcomid'));
    define('WT_USER_ROOT_ID', $WT_TREE->userPreference(WT_USER_ID, 'rootid') ? $WT_TREE->userPreference(WT_USER_ID, 'rootid') : WT_USER_GEDCOM_ID);
    define('WT_USER_PATH_LENGTH', $WT_TREE->userPreference(WT_USER_ID, 'RELATIONSHIP_PATH_LENGTH'));
    if (WT_USER_GEDCOM_ADMIN) {
        define('WT_USER_ACCESS_LEVEL', WT_PRIV_NONE);
    } elseif (WT_USER_CAN_ACCESS) {
        define('WT_USER_ACCESS_LEVEL', WT_PRIV_USER);
    } else {
        define('WT_USER_ACCESS_LEVEL', WT_PRIV_PUBLIC);
    }
    load_gedcom_settings(WT_GED_ID);
} else {
    define('WT_GEDCOM', '');
    define('WT_GED_ID', null);
    define('WT_GEDURL', '');
    define('WT_TREE_TITLE', WT_WEBTREES);
    define('WT_IMPORTED', false);
    define('WT_USER_GEDCOM_ADMIN', false);
    define('WT_USER_CAN_ACCEPT', false);
    define('WT_USER_CAN_EDIT', false);
    define('WT_USER_CAN_ACCESS', false);
    define('WT_USER_GEDCOM_ID', '');
    define('WT_USER_ROOT_ID', '');
    define('WT_USER_PATH_LENGTH', 0);
    define('WT_USER_ACCESS_LEVEL', WT_PRIV_PUBLIC);
}
Example #2
0
function search_repos($query, $geds, $match)
{
    global $GEDCOM;
    // No query => no results
    if (!$query) {
        return array();
    }
    // Convert the query into a SQL expression
    $querysql = array();
    // Convert the query into a regular expression
    $queryregex = array();
    foreach ($query as $q) {
        $queryregex[] = preg_quote(WT_I18N::strtoupper($q), '/');
        $querysql[] = "o_gedcom LIKE " . WT_DB::quote("%{$q}%") . " COLLATE '" . WT_I18N::$collation . "'";
    }
    $sql = "SELECT o_id AS xref, o_file AS gedcom_id, o_gedcom AS gedcom FROM `##other` WHERE (" . implode(" {$match} ", $querysql) . ") AND o_type='REPO' AND o_file IN (" . implode(',', $geds) . ')';
    // Group results by gedcom, to minimise switching between privacy files
    $sql .= ' ORDER BY gedcom_id';
    $list = array();
    $rows = WT_DB::prepare($sql)->fetchAll();
    $GED_ID = WT_GED_ID;
    foreach ($rows as $row) {
        // Switch privacy file if necessary
        if ($row->gedcom_id != $GED_ID) {
            $GEDCOM = get_gedcom_from_id($row->gedcom_id);
            load_gedcom_settings($row->gedcom_id);
            $GED_ID = $row->gedcom_id;
        }
        // SQL may have matched on private data or gedcom tags, so check again against privatized data.
        $record = WT_Individual::getInstance($row->xref, $row->gedcom_id, $row->gedcom);
        // Ignore non-genealogical data
        $gedrec = preg_replace('/\\n\\d (_UID|_WT_USER|FILE|FORM|TYPE|CHAN|REFN|RESN) .*/', '', $record->getGedcom());
        // Ignore links and tags
        $gedrec = preg_replace('/\\n\\d ' . WT_REGEX_TAG . '( @' . WT_REGEX_XREF . '@)?/', '', $gedrec);
        // Ignore tags
        $gedrec = preg_replace('/\\n\\d ' . WT_REGEX_TAG . ' ?/', '', $gedrec);
        // Re-apply the filtering
        $gedrec = WT_I18N::strtoupper($gedrec);
        foreach ($queryregex as $regex) {
            if (!preg_match('/' . $regex . '/', $gedrec)) {
                continue 2;
            }
        }
        $list[] = $record;
    }
    // Switch privacy file if necessary
    if ($GED_ID != WT_GED_ID) {
        $GEDCOM = WT_GEDCOM;
        load_gedcom_settings(WT_GED_ID);
    }
    return $list;
}
Example #3
0
    function printResults()
    {
        require_once WT_ROOT . 'includes/functions/functions_print_lists.php';
        global $GEDCOM;
        $somethingPrinted = false;
        // whether anything printed
        // ---- section to search and display results on a general keyword search
        if ($this->action == "general" || $this->action == "soundex" || $this->action == "replace") {
            if ($this->myindilist || $this->myfamlist || $this->mysourcelist || $this->mynotelist) {
                $this->addInlineJavascript('jQuery("#search-result-tabs").tabs();');
                $this->addInlineJavascript('jQuery("#search-result-tabs").css("visibility", "visible");');
                $this->addInlineJavascript('jQuery(".loading-image").css("display", "none");');
                echo '<br>';
                echo '<div class="loading-image">&nbsp;</div>';
                echo '<div id="search-result-tabs"><ul>';
                if ($this->myindilist) {
                    echo '<li><a href="#searchAccordion-indi"><span id="indisource">', WT_I18N::translate('Individuals'), '</span></a></li>';
                }
                if ($this->myfamlist) {
                    echo '<li><a href="#searchAccordion-fam"><span id="famsource">', WT_I18N::translate('Families'), '</span></a></li>';
                }
                if ($this->mysourcelist) {
                    echo '<li><a href="#searchAccordion-source"><span id="mediasource">', WT_I18N::translate('Sources'), '</span></a></li>';
                }
                if ($this->mynotelist) {
                    echo '<li><a href="#searchAccordion-note"><span id="notesource">', WT_I18N::translate('Notes'), '</span></a></li>';
                }
                echo '</ul>';
                // individual results
                echo '<div id="searchAccordion-indi">';
                // Split individuals by tree
                $trees = WT_Tree::getAll();
                foreach ($this->sgeds as $ged_id => $gedcom) {
                    $datalist = array();
                    foreach ($this->myindilist as $individual) {
                        if ($individual->getGedcomId() == $ged_id) {
                            $datalist[] = $individual;
                        }
                    }
                    if ($datalist) {
                        $somethingPrinted = true;
                        usort($datalist, array('WT_GedcomRecord', 'compare'));
                        $GEDCOM = $gedcom;
                        load_gedcom_settings($ged_id);
                        echo '<h3 class="indi-acc-header"><a href="#"><span class="search_item" dir="auto">', $this->myquery, '</span> @ <span>', $trees[$ged_id]->tree_title_html, '</span></a></h3>
							<div class="indi-acc_content">', format_indi_table($datalist);
                        echo '</div>';
                        //indi-acc_content
                    }
                }
                echo '</div>';
                //#searchAccordion-indi
                $this->addInlineJavascript('jQuery("#searchAccordion-indi").accordion({heightStyle: "content", collapsible: true});');
                // family results
                echo '<div id="searchAccordion-fam">';
                // Split families by gedcom
                foreach ($this->sgeds as $ged_id => $gedcom) {
                    $datalist = array();
                    foreach ($this->myfamlist as $family) {
                        if ($family->getGedcomId() == $ged_id) {
                            $datalist[] = $family;
                        }
                    }
                    if ($datalist) {
                        $somethingPrinted = true;
                        usort($datalist, array('WT_GedcomRecord', 'compare'));
                        $GEDCOM = $gedcom;
                        load_gedcom_settings($ged_id);
                        echo '<h3 class="fam-acc-header"><a href="#"><span class="search_item" dir="auto">', $this->myquery, '</span> @ <span>', $trees[$ged_id]->tree_title_html, '</span></a></h3>
							<div class="fam-acc_content">', format_fam_table($datalist);
                        echo '</div>';
                        //fam-acc_content
                    }
                }
                echo '</div>';
                //#searchAccordion-fam
                $this->addInlineJavascript('jQuery("#searchAccordion-fam").accordion({heightStyle: "content", collapsible: true});');
                // source results
                echo '<div id="searchAccordion-source">';
                // Split sources by gedcom
                foreach ($this->sgeds as $ged_id => $gedcom) {
                    $datalist = array();
                    foreach ($this->mysourcelist as $source) {
                        if ($source->getGedcomId() == $ged_id) {
                            $datalist[] = $source;
                        }
                    }
                    if ($datalist) {
                        $somethingPrinted = true;
                        usort($datalist, array('WT_GedcomRecord', 'compare'));
                        $GEDCOM = $gedcom;
                        load_gedcom_settings($ged_id);
                        echo '<h3 class="source-acc-header"><a href="#"><span class="search_item" dir="auto">', $this->myquery, '</span> @ <span>', $trees[$ged_id]->tree_title_html, '</span></a></h3>
							<div class="source-acc_content">', format_sour_table($datalist);
                        echo '</div>';
                        //fam-acc_content
                    }
                }
                echo '</div>';
                //#searchAccordion-source
                $this->addInlineJavascript('jQuery("#searchAccordion-source").accordion({heightStyle: "content", collapsible: true});');
                // note results
                echo '<div id="searchAccordion-note">';
                // Split notes by gedcom
                foreach ($this->sgeds as $ged_id => $gedcom) {
                    $datalist = array();
                    foreach ($this->mynotelist as $note) {
                        if ($note->getGedcomId() == $ged_id) {
                            $datalist[] = $note;
                        }
                    }
                    if ($datalist) {
                        $somethingPrinted = true;
                        usort($datalist, array('WT_GedcomRecord', 'compare'));
                        $GEDCOM = $gedcom;
                        load_gedcom_settings($ged_id);
                        echo '<h3 class="note-acc-header"><a href="#"><span class="search_item" dir="auto">', $this->myquery, '</span> @ <span>', $trees[$ged_id]->tree_title_html, '</span></a></h3>
							<div class="note-acc_content">', format_note_table($datalist);
                        echo '</div>';
                        //note-acc_content
                    }
                }
                echo '</div>';
                //#searchAccordion-note
                $this->addInlineJavascript('jQuery("#searchAccordion-note").accordion({heightStyle: "content", collapsible: true});');
                $GEDCOM = WT_GEDCOM;
                load_gedcom_settings(WT_GED_ID);
                echo '</div>';
                //#search-result-tabs
            } elseif (isset($this->query)) {
                echo '<br><div class="warning center"><em>' . WT_I18N::translate('No results found.') . '</em><br>';
                if (!isset($this->srindi) && !isset($this->srfams) && !isset($this->srsour) && !isset($this->srnote)) {
                    echo '<em>' . WT_I18N::translate('Be sure to select an option to search for.') . '</em><br>';
                }
                echo '</div>';
            }
        }
        return $somethingPrinted;
        // whether anything printed
    }