@@ -954,7 +954,7 @@ discard block |
||
| 954 | 954 | } |
| 955 | 955 | } |
| 956 | 956 | $tmp = explode(':', $tag); |
| 957 | - if (in_array(end($tmp), array('NOTE', 'TEXT'))) { |
|
| 957 | + if (in_array(end($tmp), array('NOTE', 'TEXT'))) { |
|
| 958 | 958 | $value = Filter::formatText($value, $WT_TREE); // We'll strip HTML in addText() |
| 959 | 959 | } |
| 960 | 960 | $this->current_element->addText($value); |
@@ -2734,7 +2734,7 @@ discard block |
||
| 2734 | 2734 | $tags = explode(':', $tag); |
| 2735 | 2735 | $origlevel = $level; |
| 2736 | 2736 | if ($level == 0) { |
| 2737 | - $level = $gedrec{0} + 1; |
|
| 2737 | + $level = $gedrec{0} +1; |
|
| 2738 | 2738 | } |
| 2739 | 2739 | |
| 2740 | 2740 | $subrec = $gedrec; |
@@ -1,18 +1,18 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | /** |
| 3 | - * webtrees: online genealogy |
|
| 4 | - * Copyright (C) 2016 webtrees development team |
|
| 5 | - * This program is free software: you can redistribute it and/or modify |
|
| 6 | - * it under the terms of the GNU General Public License as published by |
|
| 7 | - * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | - * (at your option) any later version. |
|
| 9 | - * This program is distributed in the hope that it will be useful, |
|
| 10 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | - * GNU General Public License for more details. |
|
| 13 | - * You should have received a copy of the GNU General Public License |
|
| 14 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | - */ |
|
| 3 | + * webtrees: online genealogy |
|
| 4 | + * Copyright (C) 2016 webtrees development team |
|
| 5 | + * This program is free software: you can redistribute it and/or modify |
|
| 6 | + * it under the terms of the GNU General Public License as published by |
|
| 7 | + * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | + * (at your option) any later version. |
|
| 9 | + * This program is distributed in the hope that it will be useful, |
|
| 10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | + * GNU General Public License for more details. |
|
| 13 | + * You should have received a copy of the GNU General Public License |
|
| 14 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | + */ |
|
| 16 | 16 | namespace Fisharebest\Webtrees; |
| 17 | 17 | |
| 18 | 18 | use Fisharebest\Webtrees\Theme\AdministrationTheme; |
@@ -934,14 +934,14 @@ discard block |
||
| 934 | 934 | $tags = preg_split('/[: ]/', $tag); |
| 935 | 935 | $value = $this->getGedcomValue($tag, $level, $this->gedrec); |
| 936 | 936 | switch (end($tags)) { |
| 937 | - case 'DATE': |
|
| 938 | - $tmp = new Date($value); |
|
| 939 | - $value = $tmp->display(); |
|
| 940 | - break; |
|
| 941 | - case 'PLAC': |
|
| 942 | - $tmp = new Place($value, $WT_TREE); |
|
| 943 | - $value = $tmp->getShortName(); |
|
| 944 | - break; |
|
| 937 | + case 'DATE': |
|
| 938 | + $tmp = new Date($value); |
|
| 939 | + $value = $tmp->display(); |
|
| 940 | + break; |
|
| 941 | + case 'PLAC': |
|
| 942 | + $tmp = new Place($value, $WT_TREE); |
|
| 943 | + $value = $tmp->getShortName(); |
|
| 944 | + break; |
|
| 945 | 945 | } |
| 946 | 946 | if ($useBreak == "1") { |
| 947 | 947 | // Insert <br> when multiple dates exist. |
@@ -1325,22 +1325,22 @@ discard block |
||
| 1325 | 1325 | // Arithmetic functions |
| 1326 | 1326 | if (preg_match("/(\d+)\s*([\-\+\*\/])\s*(\d+)/", $value, $match)) { |
| 1327 | 1327 | switch ($match[2]) { |
| 1328 | - case "+": |
|
| 1329 | - $t = $match[1] + $match[3]; |
|
| 1330 | - $value = preg_replace("/" . $match[1] . "\s*([\-\+\*\/])\s*" . $match[3] . "/", $t, $value); |
|
| 1331 | - break; |
|
| 1332 | - case "-": |
|
| 1333 | - $t = $match[1] - $match[3]; |
|
| 1334 | - $value = preg_replace("/" . $match[1] . "\s*([\-\+\*\/])\s*" . $match[3] . "/", $t, $value); |
|
| 1335 | - break; |
|
| 1336 | - case "*": |
|
| 1337 | - $t = $match[1] * $match[3]; |
|
| 1338 | - $value = preg_replace("/" . $match[1] . "\s*([\-\+\*\/])\s*" . $match[3] . "/", $t, $value); |
|
| 1339 | - break; |
|
| 1340 | - case "/": |
|
| 1341 | - $t = $match[1] / $match[3]; |
|
| 1342 | - $value = preg_replace("/" . $match[1] . "\s*([\-\+\*\/])\s*" . $match[3] . "/", $t, $value); |
|
| 1343 | - break; |
|
| 1328 | + case "+": |
|
| 1329 | + $t = $match[1] + $match[3]; |
|
| 1330 | + $value = preg_replace("/" . $match[1] . "\s*([\-\+\*\/])\s*" . $match[3] . "/", $t, $value); |
|
| 1331 | + break; |
|
| 1332 | + case "-": |
|
| 1333 | + $t = $match[1] - $match[3]; |
|
| 1334 | + $value = preg_replace("/" . $match[1] . "\s*([\-\+\*\/])\s*" . $match[3] . "/", $t, $value); |
|
| 1335 | + break; |
|
| 1336 | + case "*": |
|
| 1337 | + $t = $match[1] * $match[3]; |
|
| 1338 | + $value = preg_replace("/" . $match[1] . "\s*([\-\+\*\/])\s*" . $match[3] . "/", $t, $value); |
|
| 1339 | + break; |
|
| 1340 | + case "/": |
|
| 1341 | + $t = $match[1] / $match[3]; |
|
| 1342 | + $value = preg_replace("/" . $match[1] . "\s*([\-\+\*\/])\s*" . $match[3] . "/", $t, $value); |
|
| 1343 | + break; |
|
| 1344 | 1344 | } |
| 1345 | 1345 | } |
| 1346 | 1346 | if (strpos($value, "@") !== false) { |
@@ -1849,180 +1849,180 @@ discard block |
||
| 1849 | 1849 | } |
| 1850 | 1850 | // Some filters/sorts can be applied using SQL, while others require PHP |
| 1851 | 1851 | switch ($listname) { |
| 1852 | - case "pending": |
|
| 1853 | - $rows = Database::prepare( |
|
| 1854 | - "SELECT xref, CASE new_gedcom WHEN '' THEN old_gedcom ELSE new_gedcom END AS gedcom" . |
|
| 1855 | - " FROM `##change`" . " WHERE (xref, change_id) IN (" . |
|
| 1856 | - " SELECT xref, MAX(change_id)" . |
|
| 1857 | - " FROM `##change`" . |
|
| 1858 | - " WHERE status = 'pending' AND gedcom_id = :tree_id" . |
|
| 1859 | - " GROUP BY xref" . |
|
| 1860 | - " )" |
|
| 1861 | - )->execute(array( |
|
| 1862 | - 'tree_id' => $WT_TREE->getTreeId(), |
|
| 1863 | - ))->fetchAll(); |
|
| 1864 | - $this->list = array(); |
|
| 1865 | - foreach ($rows as $row) { |
|
| 1866 | - $this->list[] = GedcomRecord::getInstance($row->xref, $WT_TREE, $row->gedcom); |
|
| 1867 | - } |
|
| 1868 | - break; |
|
| 1869 | - case 'individual': |
|
| 1870 | - $sql_select = "SELECT i_id AS xref, i_gedcom AS gedcom FROM `##individuals` "; |
|
| 1871 | - $sql_join = ""; |
|
| 1872 | - $sql_where = " WHERE i_file = :tree_id"; |
|
| 1873 | - $sql_order_by = ""; |
|
| 1874 | - $sql_params = array('tree_id' => $WT_TREE->getTreeId()); |
|
| 1875 | - foreach ($attrs as $attr => $value) { |
|
| 1876 | - if (strpos($attr, 'filter') === 0 && $value) { |
|
| 1877 | - $value = $this->substituteVars($value, false); |
|
| 1878 | - // Convert the various filters into SQL |
|
| 1879 | - if (preg_match('/^(\w+):DATE (LTE|GTE) (.+)$/', $value, $match)) { |
|
| 1880 | - $sql_join .= " JOIN `##dates` AS {$attr} ON ({$attr}.d_file=i_file AND {$attr}.d_gid=i_id)"; |
|
| 1881 | - $sql_where .= " AND {$attr}.d_fact = :{$attr}fact"; |
|
| 1882 | - $sql_params[$attr . 'fact'] = $match[1]; |
|
| 1883 | - $date = new Date($match[3]); |
|
| 1884 | - if ($match[2] == "LTE") { |
|
| 1885 | - $sql_where .= " AND {$attr}.d_julianday2 <= :{$attr}date"; |
|
| 1886 | - $sql_params[$attr . 'date'] = $date->maximumJulianDay(); |
|
| 1887 | - } else { |
|
| 1888 | - $sql_where .= " AND {$attr}.d_julianday1 >= :{$attr}date"; |
|
| 1889 | - $sql_params[$attr . 'date'] = $date->minimumJulianDay(); |
|
| 1852 | + case "pending": |
|
| 1853 | + $rows = Database::prepare( |
|
| 1854 | + "SELECT xref, CASE new_gedcom WHEN '' THEN old_gedcom ELSE new_gedcom END AS gedcom" . |
|
| 1855 | + " FROM `##change`" . " WHERE (xref, change_id) IN (" . |
|
| 1856 | + " SELECT xref, MAX(change_id)" . |
|
| 1857 | + " FROM `##change`" . |
|
| 1858 | + " WHERE status = 'pending' AND gedcom_id = :tree_id" . |
|
| 1859 | + " GROUP BY xref" . |
|
| 1860 | + " )" |
|
| 1861 | + )->execute(array( |
|
| 1862 | + 'tree_id' => $WT_TREE->getTreeId(), |
|
| 1863 | + ))->fetchAll(); |
|
| 1864 | + $this->list = array(); |
|
| 1865 | + foreach ($rows as $row) { |
|
| 1866 | + $this->list[] = GedcomRecord::getInstance($row->xref, $WT_TREE, $row->gedcom); |
|
| 1867 | + } |
|
| 1868 | + break; |
|
| 1869 | + case 'individual': |
|
| 1870 | + $sql_select = "SELECT i_id AS xref, i_gedcom AS gedcom FROM `##individuals` "; |
|
| 1871 | + $sql_join = ""; |
|
| 1872 | + $sql_where = " WHERE i_file = :tree_id"; |
|
| 1873 | + $sql_order_by = ""; |
|
| 1874 | + $sql_params = array('tree_id' => $WT_TREE->getTreeId()); |
|
| 1875 | + foreach ($attrs as $attr => $value) { |
|
| 1876 | + if (strpos($attr, 'filter') === 0 && $value) { |
|
| 1877 | + $value = $this->substituteVars($value, false); |
|
| 1878 | + // Convert the various filters into SQL |
|
| 1879 | + if (preg_match('/^(\w+):DATE (LTE|GTE) (.+)$/', $value, $match)) { |
|
| 1880 | + $sql_join .= " JOIN `##dates` AS {$attr} ON ({$attr}.d_file=i_file AND {$attr}.d_gid=i_id)"; |
|
| 1881 | + $sql_where .= " AND {$attr}.d_fact = :{$attr}fact"; |
|
| 1882 | + $sql_params[$attr . 'fact'] = $match[1]; |
|
| 1883 | + $date = new Date($match[3]); |
|
| 1884 | + if ($match[2] == "LTE") { |
|
| 1885 | + $sql_where .= " AND {$attr}.d_julianday2 <= :{$attr}date"; |
|
| 1886 | + $sql_params[$attr . 'date'] = $date->maximumJulianDay(); |
|
| 1887 | + } else { |
|
| 1888 | + $sql_where .= " AND {$attr}.d_julianday1 >= :{$attr}date"; |
|
| 1889 | + $sql_params[$attr . 'date'] = $date->minimumJulianDay(); |
|
| 1890 | + } |
|
| 1891 | + if ($sortby == $match[1]) { |
|
| 1892 | + $sortby = ""; |
|
| 1893 | + $sql_order_by .= ($sql_order_by ? ", " : " ORDER BY ") . "{$attr}.d_julianday1"; |
|
| 1894 | + } |
|
| 1895 | + unset($attrs[$attr]); // This filter has been fully processed |
|
| 1896 | + } elseif (preg_match('/^NAME CONTAINS (.*)$/', $value, $match)) { |
|
| 1897 | + // Do nothing, unless you have to |
|
| 1898 | + if ($match[1] != '' || $sortby == 'NAME') { |
|
| 1899 | + $sql_join .= " JOIN `##name` AS {$attr} ON (n_file=i_file AND n_id=i_id)"; |
|
| 1900 | + // Search the DB only if there is any name supplied |
|
| 1901 | + if ($match[1] != "") { |
|
| 1902 | + $names = explode(" ", $match[1]); |
|
| 1903 | + foreach ($names as $n => $name) { |
|
| 1904 | + $sql_where .= " AND {$attr}.n_full LIKE CONCAT('%', :{$attr}name{$n}, '%')"; |
|
| 1905 | + $sql_params[$attr . 'name' . $n] = $name; |
|
| 1906 | + } |
|
| 1890 | 1907 | } |
| 1891 | - if ($sortby == $match[1]) { |
|
| 1908 | + // Let the DB do the name sorting even when no name was entered |
|
| 1909 | + if ($sortby == "NAME") { |
|
| 1892 | 1910 | $sortby = ""; |
| 1893 | - $sql_order_by .= ($sql_order_by ? ", " : " ORDER BY ") . "{$attr}.d_julianday1"; |
|
| 1911 | + $sql_order_by .= ($sql_order_by ? ", " : " ORDER BY ") . "{$attr}.n_sort"; |
|
| 1894 | 1912 | } |
| 1895 | - unset($attrs[$attr]); // This filter has been fully processed |
|
| 1896 | - } elseif (preg_match('/^NAME CONTAINS (.*)$/', $value, $match)) { |
|
| 1897 | - // Do nothing, unless you have to |
|
| 1898 | - if ($match[1] != '' || $sortby == 'NAME') { |
|
| 1899 | - $sql_join .= " JOIN `##name` AS {$attr} ON (n_file=i_file AND n_id=i_id)"; |
|
| 1900 | - // Search the DB only if there is any name supplied |
|
| 1901 | - if ($match[1] != "") { |
|
| 1902 | - $names = explode(" ", $match[1]); |
|
| 1903 | - foreach ($names as $n => $name) { |
|
| 1904 | - $sql_where .= " AND {$attr}.n_full LIKE CONCAT('%', :{$attr}name{$n}, '%')"; |
|
| 1905 | - $sql_params[$attr . 'name' . $n] = $name; |
|
| 1906 | - } |
|
| 1907 | - } |
|
| 1908 | - // Let the DB do the name sorting even when no name was entered |
|
| 1909 | - if ($sortby == "NAME") { |
|
| 1910 | - $sortby = ""; |
|
| 1911 | - $sql_order_by .= ($sql_order_by ? ", " : " ORDER BY ") . "{$attr}.n_sort"; |
|
| 1912 | - } |
|
| 1913 | - } |
|
| 1914 | - unset($attrs[$attr]); // This filter has been fully processed |
|
| 1915 | - } elseif (preg_match('/^REGEXP \/(.+)\//', $value, $match)) { |
|
| 1916 | - $sql_where .= " AND i_gedcom REGEXP :{$attr}gedcom"; |
|
| 1917 | - // PDO helpfully escapes backslashes for us, preventing us from matching "\n1 FACT" |
|
| 1918 | - $sql_params[$attr . 'gedcom'] = str_replace('\n', "\n", $match[1]); |
|
| 1919 | - unset($attrs[$attr]); // This filter has been fully processed |
|
| 1920 | - } elseif (preg_match('/^(?:\w+):PLAC CONTAINS (.+)$/', $value, $match)) { |
|
| 1921 | - $sql_join .= " JOIN `##places` AS {$attr}a ON ({$attr}a.p_file = i_file)"; |
|
| 1922 | - $sql_join .= " JOIN `##placelinks` AS {$attr}b ON ({$attr}a.p_file = {$attr}b.pl_file AND {$attr}b.pl_p_id = {$attr}a.p_id AND {$attr}b.pl_gid = i_id)"; |
|
| 1923 | - $sql_where .= " AND {$attr}a.p_place LIKE CONCAT('%', :{$attr}place, '%')"; |
|
| 1924 | - $sql_params[$attr . 'place'] = $match[1]; |
|
| 1925 | - // Don't unset this filter. This is just initial filtering |
|
| 1926 | - } elseif (preg_match('/^(\w*):*(\w*) CONTAINS (.+)$/', $value, $match)) { |
|
| 1927 | - $sql_where .= " AND i_gedcom LIKE CONCAT('%', :{$attr}contains1, '%', :{$attr}contains2, '%', :{$attr}contains3, '%')"; |
|
| 1928 | - $sql_params[$attr . 'contains1'] = $match[1]; |
|
| 1929 | - $sql_params[$attr . 'contains2'] = $match[2]; |
|
| 1930 | - $sql_params[$attr . 'contains3'] = $match[3]; |
|
| 1931 | - // Don't unset this filter. This is just initial filtering |
|
| 1932 | 1913 | } |
| 1914 | + unset($attrs[$attr]); // This filter has been fully processed |
|
| 1915 | + } elseif (preg_match('/^REGEXP \/(.+)\//', $value, $match)) { |
|
| 1916 | + $sql_where .= " AND i_gedcom REGEXP :{$attr}gedcom"; |
|
| 1917 | + // PDO helpfully escapes backslashes for us, preventing us from matching "\n1 FACT" |
|
| 1918 | + $sql_params[$attr . 'gedcom'] = str_replace('\n', "\n", $match[1]); |
|
| 1919 | + unset($attrs[$attr]); // This filter has been fully processed |
|
| 1920 | + } elseif (preg_match('/^(?:\w+):PLAC CONTAINS (.+)$/', $value, $match)) { |
|
| 1921 | + $sql_join .= " JOIN `##places` AS {$attr}a ON ({$attr}a.p_file = i_file)"; |
|
| 1922 | + $sql_join .= " JOIN `##placelinks` AS {$attr}b ON ({$attr}a.p_file = {$attr}b.pl_file AND {$attr}b.pl_p_id = {$attr}a.p_id AND {$attr}b.pl_gid = i_id)"; |
|
| 1923 | + $sql_where .= " AND {$attr}a.p_place LIKE CONCAT('%', :{$attr}place, '%')"; |
|
| 1924 | + $sql_params[$attr . 'place'] = $match[1]; |
|
| 1925 | + // Don't unset this filter. This is just initial filtering |
|
| 1926 | + } elseif (preg_match('/^(\w*):*(\w*) CONTAINS (.+)$/', $value, $match)) { |
|
| 1927 | + $sql_where .= " AND i_gedcom LIKE CONCAT('%', :{$attr}contains1, '%', :{$attr}contains2, '%', :{$attr}contains3, '%')"; |
|
| 1928 | + $sql_params[$attr . 'contains1'] = $match[1]; |
|
| 1929 | + $sql_params[$attr . 'contains2'] = $match[2]; |
|
| 1930 | + $sql_params[$attr . 'contains3'] = $match[3]; |
|
| 1931 | + // Don't unset this filter. This is just initial filtering |
|
| 1933 | 1932 | } |
| 1934 | 1933 | } |
| 1934 | + } |
|
| 1935 | 1935 | |
| 1936 | - $this->list = array(); |
|
| 1937 | - $rows = Database::prepare( |
|
| 1938 | - $sql_select . $sql_join . $sql_where . $sql_order_by |
|
| 1939 | - )->execute($sql_params)->fetchAll(); |
|
| 1940 | - |
|
| 1941 | - foreach ($rows as $row) { |
|
| 1942 | - $this->list[$row->xref] = Individual::getInstance($row->xref, $WT_TREE, $row->gedcom); |
|
| 1943 | - } |
|
| 1944 | - break; |
|
| 1945 | - |
|
| 1946 | - case 'family': |
|
| 1947 | - $sql_select = "SELECT f_id AS xref, f_gedcom AS gedcom FROM `##families`"; |
|
| 1948 | - $sql_join = ""; |
|
| 1949 | - $sql_where = " WHERE f_file = :tree_id"; |
|
| 1950 | - $sql_order_by = ""; |
|
| 1951 | - $sql_params = array('tree_id' => $WT_TREE->getTreeId()); |
|
| 1952 | - foreach ($attrs as $attr => $value) { |
|
| 1953 | - if (strpos($attr, 'filter') === 0 && $value) { |
|
| 1954 | - $value = $this->substituteVars($value, false); |
|
| 1955 | - // Convert the various filters into SQL |
|
| 1956 | - if (preg_match('/^(\w+):DATE (LTE|GTE) (.+)$/', $value, $match)) { |
|
| 1957 | - $sql_join .= " JOIN `##dates` AS {$attr} ON ({$attr}.d_file=f_file AND {$attr}.d_gid=f_id)"; |
|
| 1958 | - $sql_where .= " AND {$attr}.d_fact = :{$attr}fact"; |
|
| 1959 | - $sql_params[$attr . 'fact'] = $match[1]; |
|
| 1960 | - $date = new Date($match[3]); |
|
| 1961 | - if ($match[2] == "LTE") { |
|
| 1962 | - $sql_where .= " AND {$attr}.d_julianday2 <= :{$attr}date"; |
|
| 1963 | - $sql_params[$attr . 'date'] = $date->maximumJulianDay(); |
|
| 1964 | - } else { |
|
| 1965 | - $sql_where .= " AND {$attr}.d_julianday1 >= :{$attr}date"; |
|
| 1966 | - $sql_params[$attr . 'date'] = $date->minimumJulianDay(); |
|
| 1936 | + $this->list = array(); |
|
| 1937 | + $rows = Database::prepare( |
|
| 1938 | + $sql_select . $sql_join . $sql_where . $sql_order_by |
|
| 1939 | + )->execute($sql_params)->fetchAll(); |
|
| 1940 | + |
|
| 1941 | + foreach ($rows as $row) { |
|
| 1942 | + $this->list[$row->xref] = Individual::getInstance($row->xref, $WT_TREE, $row->gedcom); |
|
| 1943 | + } |
|
| 1944 | + break; |
|
| 1945 | + |
|
| 1946 | + case 'family': |
|
| 1947 | + $sql_select = "SELECT f_id AS xref, f_gedcom AS gedcom FROM `##families`"; |
|
| 1948 | + $sql_join = ""; |
|
| 1949 | + $sql_where = " WHERE f_file = :tree_id"; |
|
| 1950 | + $sql_order_by = ""; |
|
| 1951 | + $sql_params = array('tree_id' => $WT_TREE->getTreeId()); |
|
| 1952 | + foreach ($attrs as $attr => $value) { |
|
| 1953 | + if (strpos($attr, 'filter') === 0 && $value) { |
|
| 1954 | + $value = $this->substituteVars($value, false); |
|
| 1955 | + // Convert the various filters into SQL |
|
| 1956 | + if (preg_match('/^(\w+):DATE (LTE|GTE) (.+)$/', $value, $match)) { |
|
| 1957 | + $sql_join .= " JOIN `##dates` AS {$attr} ON ({$attr}.d_file=f_file AND {$attr}.d_gid=f_id)"; |
|
| 1958 | + $sql_where .= " AND {$attr}.d_fact = :{$attr}fact"; |
|
| 1959 | + $sql_params[$attr . 'fact'] = $match[1]; |
|
| 1960 | + $date = new Date($match[3]); |
|
| 1961 | + if ($match[2] == "LTE") { |
|
| 1962 | + $sql_where .= " AND {$attr}.d_julianday2 <= :{$attr}date"; |
|
| 1963 | + $sql_params[$attr . 'date'] = $date->maximumJulianDay(); |
|
| 1964 | + } else { |
|
| 1965 | + $sql_where .= " AND {$attr}.d_julianday1 >= :{$attr}date"; |
|
| 1966 | + $sql_params[$attr . 'date'] = $date->minimumJulianDay(); |
|
| 1967 | + } |
|
| 1968 | + if ($sortby == $match[1]) { |
|
| 1969 | + $sortby = ""; |
|
| 1970 | + $sql_order_by .= ($sql_order_by ? ", " : " ORDER BY ") . "{$attr}.d_julianday1"; |
|
| 1971 | + } |
|
| 1972 | + unset($attrs[$attr]); // This filter has been fully processed |
|
| 1973 | + } elseif (preg_match('/^REGEXP \/(.+)\//', $value, $match)) { |
|
| 1974 | + $sql_where .= " AND f_gedcom REGEXP :{$attr}gedcom"; |
|
| 1975 | + // PDO helpfully escapes backslashes for us, preventing us from matching "\n1 FACT" |
|
| 1976 | + $sql_params[$attr . 'gedcom'] = str_replace('\n', "\n", $match[1]); |
|
| 1977 | + unset($attrs[$attr]); // This filter has been fully processed |
|
| 1978 | + } elseif (preg_match('/^NAME CONTAINS (.+)$/', $value, $match)) { |
|
| 1979 | + // Do nothing, unless you have to |
|
| 1980 | + if ($match[1] != '' || $sortby == 'NAME') { |
|
| 1981 | + $sql_join .= " JOIN `##name` AS {$attr} ON n_file = f_file AND n_id IN (f_husb, f_wife)"; |
|
| 1982 | + // Search the DB only if there is any name supplied |
|
| 1983 | + if ($match[1] != "") { |
|
| 1984 | + $names = explode(" ", $match[1]); |
|
| 1985 | + foreach ($names as $n => $name) { |
|
| 1986 | + $sql_where .= " AND {$attr}.n_full LIKE CONCAT('%', :{$attr}name{$n}, '%')"; |
|
| 1987 | + $sql_params[$attr . 'name' . $n] = $name; |
|
| 1988 | + } |
|
| 1967 | 1989 | } |
| 1968 | - if ($sortby == $match[1]) { |
|
| 1990 | + // Let the DB do the name sorting even when no name was entered |
|
| 1991 | + if ($sortby == "NAME") { |
|
| 1969 | 1992 | $sortby = ""; |
| 1970 | - $sql_order_by .= ($sql_order_by ? ", " : " ORDER BY ") . "{$attr}.d_julianday1"; |
|
| 1971 | - } |
|
| 1972 | - unset($attrs[$attr]); // This filter has been fully processed |
|
| 1973 | - } elseif (preg_match('/^REGEXP \/(.+)\//', $value, $match)) { |
|
| 1974 | - $sql_where .= " AND f_gedcom REGEXP :{$attr}gedcom"; |
|
| 1975 | - // PDO helpfully escapes backslashes for us, preventing us from matching "\n1 FACT" |
|
| 1976 | - $sql_params[$attr . 'gedcom'] = str_replace('\n', "\n", $match[1]); |
|
| 1977 | - unset($attrs[$attr]); // This filter has been fully processed |
|
| 1978 | - } elseif (preg_match('/^NAME CONTAINS (.+)$/', $value, $match)) { |
|
| 1979 | - // Do nothing, unless you have to |
|
| 1980 | - if ($match[1] != '' || $sortby == 'NAME') { |
|
| 1981 | - $sql_join .= " JOIN `##name` AS {$attr} ON n_file = f_file AND n_id IN (f_husb, f_wife)"; |
|
| 1982 | - // Search the DB only if there is any name supplied |
|
| 1983 | - if ($match[1] != "") { |
|
| 1984 | - $names = explode(" ", $match[1]); |
|
| 1985 | - foreach ($names as $n => $name) { |
|
| 1986 | - $sql_where .= " AND {$attr}.n_full LIKE CONCAT('%', :{$attr}name{$n}, '%')"; |
|
| 1987 | - $sql_params[$attr . 'name' . $n] = $name; |
|
| 1988 | - } |
|
| 1989 | - } |
|
| 1990 | - // Let the DB do the name sorting even when no name was entered |
|
| 1991 | - if ($sortby == "NAME") { |
|
| 1992 | - $sortby = ""; |
|
| 1993 | - $sql_order_by .= ($sql_order_by ? ", " : " ORDER BY ") . "{$attr}.n_sort"; |
|
| 1994 | - } |
|
| 1993 | + $sql_order_by .= ($sql_order_by ? ", " : " ORDER BY ") . "{$attr}.n_sort"; |
|
| 1995 | 1994 | } |
| 1996 | - unset($attrs[$attr]); // This filter has been fully processed |
|
| 1997 | - |
|
| 1998 | - } elseif (preg_match('/^(?:\w+):PLAC CONTAINS (.+)$/', $value, $match)) { |
|
| 1999 | - $sql_join .= " JOIN `##places` AS {$attr}a ON ({$attr}a.p_file=f_file)"; |
|
| 2000 | - $sql_join .= " JOIN `##placelinks` AS {$attr}b ON ({$attr}a.p_file={$attr}b.pl_file AND {$attr}b.pl_p_id={$attr}a.p_id AND {$attr}b.pl_gid=f_id)"; |
|
| 2001 | - $sql_where .= " AND {$attr}a.p_place LIKE CONCAT('%', :{$attr}place, '%')"; |
|
| 2002 | - $sql_params[$attr . 'place'] = $match[1]; |
|
| 2003 | - // Don't unset this filter. This is just initial filtering |
|
| 2004 | - } elseif (preg_match('/^(\w*):*(\w*) CONTAINS (.+)$/', $value, $match)) { |
|
| 2005 | - $sql_where .= " AND f_gedcom LIKE CONCAT('%', :{$attr}contains1, '%', :{$attr}contains2, '%', :{$attr}contains3, '%')"; |
|
| 2006 | - $sql_params[$attr . 'contains1'] = $match[1]; |
|
| 2007 | - $sql_params[$attr . 'contains2'] = $match[2]; |
|
| 2008 | - $sql_params[$attr . 'contains3'] = $match[3]; |
|
| 2009 | - // Don't unset this filter. This is just initial filtering |
|
| 2010 | 1995 | } |
| 1996 | + unset($attrs[$attr]); // This filter has been fully processed |
|
| 1997 | + |
|
| 1998 | + } elseif (preg_match('/^(?:\w+):PLAC CONTAINS (.+)$/', $value, $match)) { |
|
| 1999 | + $sql_join .= " JOIN `##places` AS {$attr}a ON ({$attr}a.p_file=f_file)"; |
|
| 2000 | + $sql_join .= " JOIN `##placelinks` AS {$attr}b ON ({$attr}a.p_file={$attr}b.pl_file AND {$attr}b.pl_p_id={$attr}a.p_id AND {$attr}b.pl_gid=f_id)"; |
|
| 2001 | + $sql_where .= " AND {$attr}a.p_place LIKE CONCAT('%', :{$attr}place, '%')"; |
|
| 2002 | + $sql_params[$attr . 'place'] = $match[1]; |
|
| 2003 | + // Don't unset this filter. This is just initial filtering |
|
| 2004 | + } elseif (preg_match('/^(\w*):*(\w*) CONTAINS (.+)$/', $value, $match)) { |
|
| 2005 | + $sql_where .= " AND f_gedcom LIKE CONCAT('%', :{$attr}contains1, '%', :{$attr}contains2, '%', :{$attr}contains3, '%')"; |
|
| 2006 | + $sql_params[$attr . 'contains1'] = $match[1]; |
|
| 2007 | + $sql_params[$attr . 'contains2'] = $match[2]; |
|
| 2008 | + $sql_params[$attr . 'contains3'] = $match[3]; |
|
| 2009 | + // Don't unset this filter. This is just initial filtering |
|
| 2011 | 2010 | } |
| 2012 | 2011 | } |
| 2012 | + } |
|
| 2013 | 2013 | |
| 2014 | - $this->list = array(); |
|
| 2015 | - $rows = Database::prepare( |
|
| 2016 | - $sql_select . $sql_join . $sql_where . $sql_order_by |
|
| 2017 | - )->execute($sql_params)->fetchAll(); |
|
| 2014 | + $this->list = array(); |
|
| 2015 | + $rows = Database::prepare( |
|
| 2016 | + $sql_select . $sql_join . $sql_where . $sql_order_by |
|
| 2017 | + )->execute($sql_params)->fetchAll(); |
|
| 2018 | 2018 | |
| 2019 | - foreach ($rows as $row) { |
|
| 2020 | - $this->list[$row->xref] = Family::getInstance($row->xref, $WT_TREE, $row->gedcom); |
|
| 2021 | - } |
|
| 2022 | - break; |
|
| 2019 | + foreach ($rows as $row) { |
|
| 2020 | + $this->list[$row->xref] = Family::getInstance($row->xref, $WT_TREE, $row->gedcom); |
|
| 2021 | + } |
|
| 2022 | + break; |
|
| 2023 | 2023 | |
| 2024 | - default: |
|
| 2025 | - throw new \DomainException('Invalid list name: ' . $listname); |
|
| 2024 | + default: |
|
| 2025 | + throw new \DomainException('Invalid list name: ' . $listname); |
|
| 2026 | 2026 | } |
| 2027 | 2027 | |
| 2028 | 2028 | $filters = array(); |
@@ -2083,17 +2083,17 @@ discard block |
||
| 2083 | 2083 | $searchstr = "1 " . $tag; |
| 2084 | 2084 | } |
| 2085 | 2085 | switch ($expr) { |
| 2086 | - case "CONTAINS": |
|
| 2087 | - if ($t == "PLAC") { |
|
| 2088 | - $searchstr .= "[^\n]*[, ]*" . $val; |
|
| 2089 | - } else { |
|
| 2090 | - $searchstr .= "[^\n]*" . $val; |
|
| 2091 | - } |
|
| 2092 | - $filters[] = $searchstr; |
|
| 2093 | - break; |
|
| 2094 | - default: |
|
| 2095 | - $filters2[] = array("tag" => $tag, "expr" => $expr, "val" => $val); |
|
| 2096 | - break; |
|
| 2086 | + case "CONTAINS": |
|
| 2087 | + if ($t == "PLAC") { |
|
| 2088 | + $searchstr .= "[^\n]*[, ]*" . $val; |
|
| 2089 | + } else { |
|
| 2090 | + $searchstr .= "[^\n]*" . $val; |
|
| 2091 | + } |
|
| 2092 | + $filters[] = $searchstr; |
|
| 2093 | + break; |
|
| 2094 | + default: |
|
| 2095 | + $filters2[] = array("tag" => $tag, "expr" => $expr, "val" => $val); |
|
| 2096 | + break; |
|
| 2097 | 2097 | } |
| 2098 | 2098 | } |
| 2099 | 2099 | } |
@@ -2137,31 +2137,31 @@ discard block |
||
| 2137 | 2137 | } |
| 2138 | 2138 | |
| 2139 | 2139 | switch ($expr) { |
| 2140 | - case "GTE": |
|
| 2141 | - if ($t == "DATE") { |
|
| 2142 | - $date1 = new Date($v); |
|
| 2143 | - $date2 = new Date($val); |
|
| 2144 | - $keep = (Date::compare($date1, $date2) >= 0); |
|
| 2145 | - } elseif ($val >= $v) { |
|
| 2146 | - $keep = true; |
|
| 2147 | - } |
|
| 2148 | - break; |
|
| 2149 | - case "LTE": |
|
| 2150 | - if ($t == "DATE") { |
|
| 2151 | - $date1 = new Date($v); |
|
| 2152 | - $date2 = new Date($val); |
|
| 2153 | - $keep = (Date::compare($date1, $date2) <= 0); |
|
| 2154 | - } elseif ($val >= $v) { |
|
| 2155 | - $keep = true; |
|
| 2156 | - } |
|
| 2157 | - break; |
|
| 2158 | - default: |
|
| 2159 | - if ($v == $val) { |
|
| 2160 | - $keep = true; |
|
| 2161 | - } else { |
|
| 2162 | - $keep = false; |
|
| 2163 | - } |
|
| 2164 | - break; |
|
| 2140 | + case "GTE": |
|
| 2141 | + if ($t == "DATE") { |
|
| 2142 | + $date1 = new Date($v); |
|
| 2143 | + $date2 = new Date($val); |
|
| 2144 | + $keep = (Date::compare($date1, $date2) >= 0); |
|
| 2145 | + } elseif ($val >= $v) { |
|
| 2146 | + $keep = true; |
|
| 2147 | + } |
|
| 2148 | + break; |
|
| 2149 | + case "LTE": |
|
| 2150 | + if ($t == "DATE") { |
|
| 2151 | + $date1 = new Date($v); |
|
| 2152 | + $date2 = new Date($val); |
|
| 2153 | + $keep = (Date::compare($date1, $date2) <= 0); |
|
| 2154 | + } elseif ($val >= $v) { |
|
| 2155 | + $keep = true; |
|
| 2156 | + } |
|
| 2157 | + break; |
|
| 2158 | + default: |
|
| 2159 | + if ($v == $val) { |
|
| 2160 | + $keep = true; |
|
| 2161 | + } else { |
|
| 2162 | + $keep = false; |
|
| 2163 | + } |
|
| 2164 | + break; |
|
| 2165 | 2165 | } |
| 2166 | 2166 | } |
| 2167 | 2167 | } |
@@ -2173,26 +2173,26 @@ discard block |
||
| 2173 | 2173 | } |
| 2174 | 2174 | |
| 2175 | 2175 | switch ($sortby) { |
| 2176 | - case 'NAME': |
|
| 2177 | - uasort($this->list, '\Fisharebest\Webtrees\GedcomRecord::compare'); |
|
| 2178 | - break; |
|
| 2179 | - case 'CHAN': |
|
| 2180 | - uasort($this->list, function (GedcomRecord $x, GedcomRecord $y) { |
|
| 2181 | - return $y->lastChangeTimestamp(true) - $x->lastChangeTimestamp(true); |
|
| 2182 | - }); |
|
| 2183 | - break; |
|
| 2184 | - case 'BIRT:DATE': |
|
| 2185 | - uasort($this->list, '\Fisharebest\Webtrees\Individual::compareBirthDate'); |
|
| 2186 | - break; |
|
| 2187 | - case 'DEAT:DATE': |
|
| 2188 | - uasort($this->list, '\Fisharebest\Webtrees\Individual::compareDeathDate'); |
|
| 2189 | - break; |
|
| 2190 | - case 'MARR:DATE': |
|
| 2191 | - uasort($this->list, '\Fisharebest\Webtrees\Family::compareMarrDate'); |
|
| 2192 | - break; |
|
| 2193 | - default: |
|
| 2194 | - // unsorted or already sorted by SQL |
|
| 2195 | - break; |
|
| 2176 | + case 'NAME': |
|
| 2177 | + uasort($this->list, '\Fisharebest\Webtrees\GedcomRecord::compare'); |
|
| 2178 | + break; |
|
| 2179 | + case 'CHAN': |
|
| 2180 | + uasort($this->list, function (GedcomRecord $x, GedcomRecord $y) { |
|
| 2181 | + return $y->lastChangeTimestamp(true) - $x->lastChangeTimestamp(true); |
|
| 2182 | + }); |
|
| 2183 | + break; |
|
| 2184 | + case 'BIRT:DATE': |
|
| 2185 | + uasort($this->list, '\Fisharebest\Webtrees\Individual::compareBirthDate'); |
|
| 2186 | + break; |
|
| 2187 | + case 'DEAT:DATE': |
|
| 2188 | + uasort($this->list, '\Fisharebest\Webtrees\Individual::compareDeathDate'); |
|
| 2189 | + break; |
|
| 2190 | + case 'MARR:DATE': |
|
| 2191 | + uasort($this->list, '\Fisharebest\Webtrees\Family::compareMarrDate'); |
|
| 2192 | + break; |
|
| 2193 | + default: |
|
| 2194 | + // unsorted or already sorted by SQL |
|
| 2195 | + break; |
|
| 2196 | 2196 | } |
| 2197 | 2197 | |
| 2198 | 2198 | array_push($this->repeats_stack, array($this->repeats, $this->repeat_bytes)); |
@@ -2343,88 +2343,88 @@ discard block |
||
| 2343 | 2343 | if (!empty($person)) { |
| 2344 | 2344 | $this->list[$id] = $person; |
| 2345 | 2345 | switch ($group) { |
| 2346 | - case "child-family": |
|
| 2347 | - foreach ($person->getChildFamilies() as $family) { |
|
| 2348 | - $husband = $family->getHusband(); |
|
| 2349 | - $wife = $family->getWife(); |
|
| 2350 | - if (!empty($husband)) { |
|
| 2351 | - $this->list[$husband->getXref()] = $husband; |
|
| 2352 | - } |
|
| 2353 | - if (!empty($wife)) { |
|
| 2354 | - $this->list[$wife->getXref()] = $wife; |
|
| 2355 | - } |
|
| 2356 | - $children = $family->getChildren(); |
|
| 2357 | - foreach ($children as $child) { |
|
| 2358 | - if (!empty($child)) { |
|
| 2359 | - $this->list[$child->getXref()] = $child; |
|
| 2360 | - } |
|
| 2361 | - } |
|
| 2346 | + case "child-family": |
|
| 2347 | + foreach ($person->getChildFamilies() as $family) { |
|
| 2348 | + $husband = $family->getHusband(); |
|
| 2349 | + $wife = $family->getWife(); |
|
| 2350 | + if (!empty($husband)) { |
|
| 2351 | + $this->list[$husband->getXref()] = $husband; |
|
| 2362 | 2352 | } |
| 2363 | - break; |
|
| 2364 | - case "spouse-family": |
|
| 2365 | - foreach ($person->getSpouseFamilies() as $family) { |
|
| 2366 | - $husband = $family->getHusband(); |
|
| 2367 | - $wife = $family->getWife(); |
|
| 2368 | - if (!empty($husband)) { |
|
| 2369 | - $this->list[$husband->getXref()] = $husband; |
|
| 2370 | - } |
|
| 2371 | - if (!empty($wife)) { |
|
| 2372 | - $this->list[$wife->getXref()] = $wife; |
|
| 2353 | + if (!empty($wife)) { |
|
| 2354 | + $this->list[$wife->getXref()] = $wife; |
|
| 2355 | + } |
|
| 2356 | + $children = $family->getChildren(); |
|
| 2357 | + foreach ($children as $child) { |
|
| 2358 | + if (!empty($child)) { |
|
| 2359 | + $this->list[$child->getXref()] = $child; |
|
| 2373 | 2360 | } |
| 2374 | - $children = $family->getChildren(); |
|
| 2375 | - foreach ($children as $child) { |
|
| 2376 | - if (!empty($child)) { |
|
| 2377 | - $this->list[$child->getXref()] = $child; |
|
| 2378 | - } |
|
| 2361 | + } |
|
| 2362 | + } |
|
| 2363 | + break; |
|
| 2364 | + case "spouse-family": |
|
| 2365 | + foreach ($person->getSpouseFamilies() as $family) { |
|
| 2366 | + $husband = $family->getHusband(); |
|
| 2367 | + $wife = $family->getWife(); |
|
| 2368 | + if (!empty($husband)) { |
|
| 2369 | + $this->list[$husband->getXref()] = $husband; |
|
| 2370 | + } |
|
| 2371 | + if (!empty($wife)) { |
|
| 2372 | + $this->list[$wife->getXref()] = $wife; |
|
| 2373 | + } |
|
| 2374 | + $children = $family->getChildren(); |
|
| 2375 | + foreach ($children as $child) { |
|
| 2376 | + if (!empty($child)) { |
|
| 2377 | + $this->list[$child->getXref()] = $child; |
|
| 2379 | 2378 | } |
| 2380 | 2379 | } |
| 2381 | - break; |
|
| 2382 | - case "direct-ancestors": |
|
| 2383 | - $this->addAncestors($this->list, $id, false, $maxgen); |
|
| 2384 | - break; |
|
| 2385 | - case "ancestors": |
|
| 2386 | - $this->addAncestors($this->list, $id, true, $maxgen); |
|
| 2387 | - break; |
|
| 2388 | - case "descendants": |
|
| 2389 | - $this->list[$id]->generation = 1; |
|
| 2390 | - $this->addDescendancy($this->list, $id, false, $maxgen); |
|
| 2391 | - break; |
|
| 2392 | - case "all": |
|
| 2393 | - $this->addAncestors($this->list, $id, true, $maxgen); |
|
| 2394 | - $this->addDescendancy($this->list, $id, true, $maxgen); |
|
| 2395 | - break; |
|
| 2380 | + } |
|
| 2381 | + break; |
|
| 2382 | + case "direct-ancestors": |
|
| 2383 | + $this->addAncestors($this->list, $id, false, $maxgen); |
|
| 2384 | + break; |
|
| 2385 | + case "ancestors": |
|
| 2386 | + $this->addAncestors($this->list, $id, true, $maxgen); |
|
| 2387 | + break; |
|
| 2388 | + case "descendants": |
|
| 2389 | + $this->list[$id]->generation = 1; |
|
| 2390 | + $this->addDescendancy($this->list, $id, false, $maxgen); |
|
| 2391 | + break; |
|
| 2392 | + case "all": |
|
| 2393 | + $this->addAncestors($this->list, $id, true, $maxgen); |
|
| 2394 | + $this->addDescendancy($this->list, $id, true, $maxgen); |
|
| 2395 | + break; |
|
| 2396 | 2396 | } |
| 2397 | 2397 | } |
| 2398 | 2398 | |
| 2399 | 2399 | switch ($sortby) { |
| 2400 | - case 'NAME': |
|
| 2401 | - uasort($this->list, '\Fisharebest\Webtrees\GedcomRecord::compare'); |
|
| 2402 | - break; |
|
| 2403 | - case 'BIRT:DATE': |
|
| 2404 | - uasort($this->list, '\Fisharebest\Webtrees\Individual::compareBirthDate'); |
|
| 2405 | - break; |
|
| 2406 | - case 'DEAT:DATE': |
|
| 2407 | - uasort($this->list, '\Fisharebest\Webtrees\Individual::compareDeathDate'); |
|
| 2408 | - break; |
|
| 2409 | - case 'generation': |
|
| 2410 | - $newarray = array(); |
|
| 2411 | - reset($this->list); |
|
| 2412 | - $genCounter = 1; |
|
| 2413 | - while (count($newarray) < count($this->list)) { |
|
| 2414 | - foreach ($this->list as $key => $value) { |
|
| 2415 | - $this->generation = $value->generation; |
|
| 2416 | - if ($this->generation == $genCounter) { |
|
| 2417 | - $newarray[$key] = new \stdClass; |
|
| 2418 | - $newarray[$key]->generation = $this->generation; |
|
| 2419 | - } |
|
| 2400 | + case 'NAME': |
|
| 2401 | + uasort($this->list, '\Fisharebest\Webtrees\GedcomRecord::compare'); |
|
| 2402 | + break; |
|
| 2403 | + case 'BIRT:DATE': |
|
| 2404 | + uasort($this->list, '\Fisharebest\Webtrees\Individual::compareBirthDate'); |
|
| 2405 | + break; |
|
| 2406 | + case 'DEAT:DATE': |
|
| 2407 | + uasort($this->list, '\Fisharebest\Webtrees\Individual::compareDeathDate'); |
|
| 2408 | + break; |
|
| 2409 | + case 'generation': |
|
| 2410 | + $newarray = array(); |
|
| 2411 | + reset($this->list); |
|
| 2412 | + $genCounter = 1; |
|
| 2413 | + while (count($newarray) < count($this->list)) { |
|
| 2414 | + foreach ($this->list as $key => $value) { |
|
| 2415 | + $this->generation = $value->generation; |
|
| 2416 | + if ($this->generation == $genCounter) { |
|
| 2417 | + $newarray[$key] = new \stdClass; |
|
| 2418 | + $newarray[$key]->generation = $this->generation; |
|
| 2420 | 2419 | } |
| 2421 | - $genCounter++; |
|
| 2422 | 2420 | } |
| 2423 | - $this->list = $newarray; |
|
| 2424 | - break; |
|
| 2425 | - default: |
|
| 2426 | - // unsorted |
|
| 2427 | - break; |
|
| 2421 | + $genCounter++; |
|
| 2422 | + } |
|
| 2423 | + $this->list = $newarray; |
|
| 2424 | + break; |
|
| 2425 | + default: |
|
| 2426 | + // unsorted |
|
| 2427 | + break; |
|
| 2428 | 2428 | } |
| 2429 | 2429 | array_push($this->repeats_stack, array($this->repeats, $this->repeat_bytes)); |
| 2430 | 2430 | $this->repeat_bytes = xml_get_current_line_number($this->parser) + 1; |
@@ -42,7 +42,7 @@ |
||
| 42 | 42 | */ |
| 43 | 43 | public function newChildNames($father_name, $mother_name, $child_sex) { |
| 44 | 44 | if (preg_match(self::REGEX_GIVN, $father_name, $father_match)) { |
| 45 | - switch($child_sex) { |
|
| 45 | + switch ($child_sex) { |
|
| 46 | 46 | case 'M': |
| 47 | 47 | return array( |
| 48 | 48 | 'NAME' => $father_match['GIVN'] . 'sson', |
@@ -1,18 +1,18 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | /** |
| 3 | - * webtrees: online genealogy |
|
| 4 | - * Copyright (C) 2016 webtrees development team |
|
| 5 | - * This program is free software: you can redistribute it and/or modify |
|
| 6 | - * it under the terms of the GNU General Public License as published by |
|
| 7 | - * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | - * (at your option) any later version. |
|
| 9 | - * This program is distributed in the hope that it will be useful, |
|
| 10 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | - * GNU General Public License for more details. |
|
| 13 | - * You should have received a copy of the GNU General Public License |
|
| 14 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | - */ |
|
| 3 | + * webtrees: online genealogy |
|
| 4 | + * Copyright (C) 2016 webtrees development team |
|
| 5 | + * This program is free software: you can redistribute it and/or modify |
|
| 6 | + * it under the terms of the GNU General Public License as published by |
|
| 7 | + * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | + * (at your option) any later version. |
|
| 9 | + * This program is distributed in the hope that it will be useful, |
|
| 10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | + * GNU General Public License for more details. |
|
| 13 | + * You should have received a copy of the GNU General Public License |
|
| 14 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | + */ |
|
| 16 | 16 | namespace Fisharebest\Webtrees; |
| 17 | 17 | |
| 18 | 18 | use Fisharebest\Webtrees\Theme\AdministrationTheme; |
@@ -61,7 +61,7 @@ |
||
| 61 | 61 | */ |
| 62 | 62 | public function newParentNames($child_name, $parent_sex) { |
| 63 | 63 | if (preg_match(self::REGEX_SURNS, $child_name, $match)) { |
| 64 | - switch($parent_sex) { |
|
| 64 | + switch ($parent_sex) { |
|
| 65 | 65 | case 'M': |
| 66 | 66 | return array( |
| 67 | 67 | 'NAME' => '/' . $match['SURN1'] . '/ //', |
@@ -1,18 +1,18 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | /** |
| 3 | - * webtrees: online genealogy |
|
| 4 | - * Copyright (C) 2016 webtrees development team |
|
| 5 | - * This program is free software: you can redistribute it and/or modify |
|
| 6 | - * it under the terms of the GNU General Public License as published by |
|
| 7 | - * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | - * (at your option) any later version. |
|
| 9 | - * This program is distributed in the hope that it will be useful, |
|
| 10 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | - * GNU General Public License for more details. |
|
| 13 | - * You should have received a copy of the GNU General Public License |
|
| 14 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | - */ |
|
| 3 | + * webtrees: online genealogy |
|
| 4 | + * Copyright (C) 2016 webtrees development team |
|
| 5 | + * This program is free software: you can redistribute it and/or modify |
|
| 6 | + * it under the terms of the GNU General Public License as published by |
|
| 7 | + * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | + * (at your option) any later version. |
|
| 9 | + * This program is distributed in the hope that it will be useful, |
|
| 10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | + * GNU General Public License for more details. |
|
| 13 | + * You should have received a copy of the GNU General Public License |
|
| 14 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | + */ |
|
| 16 | 16 | namespace Fisharebest\Webtrees; |
| 17 | 17 | |
| 18 | 18 | use Fisharebest\Webtrees\Theme\AdministrationTheme; |
@@ -67,14 +67,14 @@ |
||
| 67 | 67 | if (strlen($match[1]) > strlen($match[2])) { |
| 68 | 68 | $match[2] = substr($match[1], 0, strlen($match[1]) - strlen($match[2])) . $match[2]; |
| 69 | 69 | } |
| 70 | - $ged_date = new Date("FROM {$cal} {$match[1]} TO {$cal} {$match[2]}"); |
|
| 70 | + $ged_date = new Date("from {$cal} {$match[1]} TO {$cal} {$match[2]}"); |
|
| 71 | 71 | $view = 'year'; |
| 72 | 72 | } else { |
| 73 | 73 | // advanced-year "decade/century wildcard" |
| 74 | 74 | if (preg_match('/^(\d+)(\?+)$/', $year, $match)) { |
| 75 | 75 | $y1 = $match[1] . str_replace('?', '0', $match[2]); |
| 76 | 76 | $y2 = $match[1] . str_replace('?', '9', $match[2]); |
| 77 | - $ged_date = new Date("FROM {$cal} {$y1} TO {$cal} {$y2}"); |
|
| 77 | + $ged_date = new Date("from {$cal} {$y1} TO {$cal} {$y2}"); |
|
| 78 | 78 | $view = 'year'; |
| 79 | 79 | } else { |
| 80 | 80 | if ($year < 0) { |
@@ -1,18 +1,18 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | /** |
| 3 | - * webtrees: online genealogy |
|
| 4 | - * Copyright (C) 2016 webtrees development team |
|
| 5 | - * This program is free software: you can redistribute it and/or modify |
|
| 6 | - * it under the terms of the GNU General Public License as published by |
|
| 7 | - * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | - * (at your option) any later version. |
|
| 9 | - * This program is distributed in the hope that it will be useful, |
|
| 10 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | - * GNU General Public License for more details. |
|
| 13 | - * You should have received a copy of the GNU General Public License |
|
| 14 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | - */ |
|
| 3 | + * webtrees: online genealogy |
|
| 4 | + * Copyright (C) 2016 webtrees development team |
|
| 5 | + * This program is free software: you can redistribute it and/or modify |
|
| 6 | + * it under the terms of the GNU General Public License as published by |
|
| 7 | + * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | + * (at your option) any later version. |
|
| 9 | + * This program is distributed in the hope that it will be useful, |
|
| 10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | + * GNU General Public License for more details. |
|
| 13 | + * You should have received a copy of the GNU General Public License |
|
| 14 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | + */ |
|
| 16 | 16 | namespace Fisharebest\Webtrees; |
| 17 | 17 | |
| 18 | 18 | /** |
@@ -2066,7 +2066,7 @@ |
||
| 2066 | 2066 | } |
| 2067 | 2067 | |
| 2068 | 2068 | $CHIL = array(); |
| 2069 | - for ($i = 0;; ++$i) { |
|
| 2069 | + for ($i = 0; ; ++$i) { |
|
| 2070 | 2070 | if (isset($_POST['CHIL' . $i])) { |
| 2071 | 2071 | $CHIL[] = Filter::post('CHIL' . $i, WT_REGEX_XREF); |
| 2072 | 2072 | } else { |
@@ -183,8 +183,11 @@ |
||
| 183 | 183 | <div class="value"> |
| 184 | 184 | <?php if ($my_individual_record): ?> |
| 185 | 185 | <?php echo $my_individual_record->formatList('span'); ?> |
| 186 | - <?php else: ?> |
|
| 187 | - <?php echo I18N::translateContext('unknown people', 'Unknown'); ?> |
|
| 186 | + <?php else { |
|
| 187 | + : ?> |
|
| 188 | + <?php echo I18N::translateContext('unknown people', 'Unknown'); |
|
| 189 | +} |
|
| 190 | +?> |
|
| 188 | 191 | <?php endif; ?> |
| 189 | 192 | <p class="small text-muted"> |
| 190 | 193 | <?php echo I18N::translate('This is a link to your own record in the family tree. If this is the wrong individual, contact an administrator.'); ?> |
@@ -1,18 +1,18 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | /** |
| 3 | - * webtrees: online genealogy |
|
| 4 | - * Copyright (C) 2016 webtrees development team |
|
| 5 | - * This program is free software: you can redistribute it and/or modify |
|
| 6 | - * it under the terms of the GNU General Public License as published by |
|
| 7 | - * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | - * (at your option) any later version. |
|
| 9 | - * This program is distributed in the hope that it will be useful, |
|
| 10 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | - * GNU General Public License for more details. |
|
| 13 | - * You should have received a copy of the GNU General Public License |
|
| 14 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | - */ |
|
| 3 | + * webtrees: online genealogy |
|
| 4 | + * Copyright (C) 2016 webtrees development team |
|
| 5 | + * This program is free software: you can redistribute it and/or modify |
|
| 6 | + * it under the terms of the GNU General Public License as published by |
|
| 7 | + * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | + * (at your option) any later version. |
|
| 9 | + * This program is distributed in the hope that it will be useful, |
|
| 10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | + * GNU General Public License for more details. |
|
| 13 | + * You should have received a copy of the GNU General Public License |
|
| 14 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | + */ |
|
| 16 | 16 | namespace Fisharebest\Webtrees; |
| 17 | 17 | |
| 18 | 18 | use Fisharebest\Webtrees\Controller\SimpleController; |
@@ -52,10 +52,18 @@ |
||
| 52 | 52 | $password = Filter::post('password'); |
| 53 | 53 | |
| 54 | 54 | // These parameters may come from the URL which is emailed to users. |
| 55 | -if (!$action) $action = Filter::get('action'); |
|
| 56 | -if (!$user_name) $user_name = Filter::get('user_name'); |
|
| 57 | -if (!$user_hashcode) $user_hashcode = Filter::get('user_hashcode'); |
|
| 58 | -if (!$url) $url = Filter::get('url'); |
|
| 55 | +if (!$action) { |
|
| 56 | + $action = Filter::get('action'); |
|
| 57 | +} |
|
| 58 | +if (!$user_name) { |
|
| 59 | + $user_name = Filter::get('user_name'); |
|
| 60 | +} |
|
| 61 | +if (!$user_hashcode) { |
|
| 62 | + $user_hashcode = Filter::get('user_hashcode'); |
|
| 63 | +} |
|
| 64 | +if (!$url) { |
|
| 65 | + $url = Filter::get('url'); |
|
| 66 | +} |
|
| 59 | 67 | |
| 60 | 68 | $message = ''; |
| 61 | 69 | |
@@ -1,18 +1,18 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | /** |
| 3 | - * webtrees: online genealogy |
|
| 4 | - * Copyright (C) 2016 webtrees development team |
|
| 5 | - * This program is free software: you can redistribute it and/or modify |
|
| 6 | - * it under the terms of the GNU General Public License as published by |
|
| 7 | - * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | - * (at your option) any later version. |
|
| 9 | - * This program is distributed in the hope that it will be useful, |
|
| 10 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | - * GNU General Public License for more details. |
|
| 13 | - * You should have received a copy of the GNU General Public License |
|
| 14 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | - */ |
|
| 3 | + * webtrees: online genealogy |
|
| 4 | + * Copyright (C) 2016 webtrees development team |
|
| 5 | + * This program is free software: you can redistribute it and/or modify |
|
| 6 | + * it under the terms of the GNU General Public License as published by |
|
| 7 | + * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | + * (at your option) any later version. |
|
| 9 | + * This program is distributed in the hope that it will be useful, |
|
| 10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | + * GNU General Public License for more details. |
|
| 13 | + * You should have received a copy of the GNU General Public License |
|
| 14 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | + */ |
|
| 16 | 16 | namespace Fisharebest\Webtrees; |
| 17 | 17 | |
| 18 | 18 | use Fisharebest\Webtrees\Theme\AdministrationTheme; |
@@ -239,13 +239,13 @@ |
||
| 239 | 239 | echo '<', $tsection, '><tr><td colspan="2">'; |
| 240 | 240 | echo '<table class="list_table_controls"><tr><td>'; |
| 241 | 241 | if ($page > 1) { |
| 242 | - echo '<a href="', $url, '&page=1" class="icon-', $icons['first'] ,'"></a>'; |
|
| 243 | - echo '<a href="', $url, '&page=', $page - 1 ,'" class="icon-', $icons['previous'] , '"></a>'; |
|
| 242 | + echo '<a href="', $url, '&page=1" class="icon-', $icons['first'], '"></a>'; |
|
| 243 | + echo '<a href="', $url, '&page=', $page - 1, '" class="icon-', $icons['previous'], '"></a>'; |
|
| 244 | 244 | } |
| 245 | 245 | echo '</td><td>', I18N::translate('Page %s of %s', $page, $pages), '</td><td>'; |
| 246 | 246 | if ($page < $pages) { |
| 247 | - echo '<a href="', $url, '&page=', $page + 1 ,'" class="icon-', $icons['next'] , '"></a>'; |
|
| 248 | - echo '<a href="', $url, '&page=', $pages ,'" class="icon-', $icons['last'] ,'"></a>'; |
|
| 247 | + echo '<a href="', $url, '&page=', $page + 1, '" class="icon-', $icons['next'], '"></a>'; |
|
| 248 | + echo '<a href="', $url, '&page=', $pages, '" class="icon-', $icons['last'], '"></a>'; |
|
| 249 | 249 | } |
| 250 | 250 | echo '</td></tr></table>'; |
| 251 | 251 | echo '</td></tr></', $tsection, '>'; |
@@ -110,10 +110,13 @@ |
||
| 110 | 110 | </option> |
| 111 | 111 | </select> |
| 112 | 112 | </td> |
| 113 | - <?php else: ?> |
|
| 113 | + <?php else { |
|
| 114 | + : ?> |
|
| 114 | 115 | <td class="descriptionbox wrap"></td> |
| 115 | 116 | <td class="optionbox wrap"></td> |
| 116 | - <?php endif; ?> |
|
| 117 | + <?php endif; |
|
| 118 | +} |
|
| 119 | +?> |
|
| 117 | 120 | </tr> |
| 118 | 121 | <tr> |
| 119 | 122 | <td class="descriptionbox wrap"> |
@@ -1,18 +1,18 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | /** |
| 3 | - * webtrees: online genealogy |
|
| 4 | - * Copyright (C) 2016 webtrees development team |
|
| 5 | - * This program is free software: you can redistribute it and/or modify |
|
| 6 | - * it under the terms of the GNU General Public License as published by |
|
| 7 | - * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | - * (at your option) any later version. |
|
| 9 | - * This program is distributed in the hope that it will be useful, |
|
| 10 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | - * GNU General Public License for more details. |
|
| 13 | - * You should have received a copy of the GNU General Public License |
|
| 14 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | - */ |
|
| 3 | + * webtrees: online genealogy |
|
| 4 | + * Copyright (C) 2016 webtrees development team |
|
| 5 | + * This program is free software: you can redistribute it and/or modify |
|
| 6 | + * it under the terms of the GNU General Public License as published by |
|
| 7 | + * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | + * (at your option) any later version. |
|
| 9 | + * This program is distributed in the hope that it will be useful, |
|
| 10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | + * GNU General Public License for more details. |
|
| 13 | + * You should have received a copy of the GNU General Public License |
|
| 14 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | + */ |
|
| 16 | 16 | namespace Fisharebest\Webtrees; |
| 17 | 17 | |
| 18 | 18 | use Fisharebest\Webtrees\Theme\AdministrationTheme; |
@@ -154,10 +154,22 @@ discard block |
||
| 154 | 154 | <input type="text" id="value<?php echo $i; ?>" name="values[<?php echo $i; ?>]" value="<?php echo Filter::escapeHtml($controller->getValue($i)); ?>"<?php echo substr($controller->getField($i), -4) == 'PLAC' ? 'data-autocomplete-type="PLAC"' : ''; ?>> |
| 155 | 155 | <?php if (preg_match("/^NAME:/", $currentFieldSearch) > 0) { ?> |
| 156 | 156 | <select name="fields[<?php echo $i; ?>]"> |
| 157 | - <option value="<?php echo $currentField; ?>:EXACT" <?php if (preg_match("/:EXACT$/", $currentFieldSearch) > 0) echo 'selected'; ?>><?php echo I18N::translate('Exact'); ?></option> |
|
| 158 | - <option value="<?php echo $currentField; ?>:BEGINS" <?php if (preg_match("/:BEGINS$/", $currentFieldSearch) > 0) echo 'selected'; ?>><?php echo I18N::translate('Begins with'); ?></option> |
|
| 159 | - <option value="<?php echo $currentField; ?>:CONTAINS" <?php if (preg_match("/:CONTAINS$/", $currentFieldSearch) > 0) echo 'selected'; ?>><?php echo I18N::translate('Contains'); ?></option> |
|
| 160 | - <option value="<?php echo $currentField; ?>:SDX" <?php if (preg_match("/:SDX$/", $currentFieldSearch) > 0) echo 'selected'; ?>><?php echo I18N::translate('Sounds like'); ?></option> |
|
| 157 | + <option value="<?php echo $currentField; ?>:EXACT" <?php if (preg_match("/:EXACT$/", $currentFieldSearch) > 0) { |
|
| 158 | + echo 'selected'; |
|
| 159 | +} |
|
| 160 | +?>><?php echo I18N::translate('Exact'); ?></option> |
|
| 161 | + <option value="<?php echo $currentField; ?>:BEGINS" <?php if (preg_match("/:BEGINS$/", $currentFieldSearch) > 0) { |
|
| 162 | + echo 'selected'; |
|
| 163 | +} |
|
| 164 | +?>><?php echo I18N::translate('Begins with'); ?></option> |
|
| 165 | + <option value="<?php echo $currentField; ?>:CONTAINS" <?php if (preg_match("/:CONTAINS$/", $currentFieldSearch) > 0) { |
|
| 166 | + echo 'selected'; |
|
| 167 | +} |
|
| 168 | +?>><?php echo I18N::translate('Contains'); ?></option> |
|
| 169 | + <option value="<?php echo $currentField; ?>:SDX" <?php if (preg_match("/:SDX$/", $currentFieldSearch) > 0) { |
|
| 170 | + echo 'selected'; |
|
| 171 | +} |
|
| 172 | +?>><?php echo I18N::translate('Sounds like'); ?></option> |
|
| 161 | 173 | </select> |
| 162 | 174 | <?php } else { ?> |
| 163 | 175 | <input type="hidden" name="fields[<?php echo $i; ?>]" value="<?php echo $controller->getField($i); ?>"> |
@@ -166,9 +178,18 @@ discard block |
||
| 166 | 178 | ?> |
| 167 | 179 | <select name="plusminus[<?php echo $i; ?>]"> |
| 168 | 180 | <option value=""><?php echo I18N::translate('Exact date'); ?></option> |
| 169 | - <option value="2" <?php if (!empty($controller->plusminus[$i]) && $controller->plusminus[$i] == 2) echo 'selected'; ?>><?php echo I18N::plural('±%s year', '±%s years', 2, I18N::number(2)); ?></option> |
|
| 170 | - <option value="5" <?php if (!empty($controller->plusminus[$i]) && $controller->plusminus[$i] == 5) echo 'selected'; ?>><?php echo I18N::plural('±%s year', '±%s years', 5, I18N::number(5)); ?></option> |
|
| 171 | - <option value="10" <?php if (!empty($controller->plusminus[$i]) && $controller->plusminus[$i] == 10) echo 'selected'; ?>><?php echo I18N::plural('±%s year', '±%s years', 10, I18N::number(10)); ?></option> |
|
| 181 | + <option value="2" <?php if (!empty($controller->plusminus[$i]) && $controller->plusminus[$i] == 2) { |
|
| 182 | + echo 'selected'; |
|
| 183 | +} |
|
| 184 | +?>><?php echo I18N::plural('±%s year', '±%s years', 2, I18N::number(2)); ?></option> |
|
| 185 | + <option value="5" <?php if (!empty($controller->plusminus[$i]) && $controller->plusminus[$i] == 5) { |
|
| 186 | + echo 'selected'; |
|
| 187 | +} |
|
| 188 | +?>><?php echo I18N::plural('±%s year', '±%s years', 5, I18N::number(5)); ?></option> |
|
| 189 | + <option value="10" <?php if (!empty($controller->plusminus[$i]) && $controller->plusminus[$i] == 10) { |
|
| 190 | + echo 'selected'; |
|
| 191 | +} |
|
| 192 | +?>><?php echo I18N::plural('±%s year', '±%s years', 10, I18N::number(10)); ?></option> |
|
| 172 | 193 | </select> |
| 173 | 194 | <?php } ?> |
| 174 | 195 | </td> |
@@ -216,10 +237,22 @@ discard block |
||
| 216 | 237 | <td class="list_value"> |
| 217 | 238 | <input type="text" name="values[<?php echo $j; ?>]" value="<?php echo $controller->getValue($controller->getIndex('FAMC:HUSB:NAME:GIVN:' . $fatherGivnOption)); ?>"> |
| 218 | 239 | <select name="fields[<?php echo $j; ?>]"> |
| 219 | - <option value="FAMC:HUSB:NAME:GIVN:EXACT" <?php if ($fatherGivnOption == 'EXACT') echo 'selected'; ?>><?php echo I18N::translate('Exact'); ?></option> |
|
| 220 | - <option value="FAMC:HUSB:NAME:GIVN:BEGINS" <?php if ($fatherGivnOption == 'BEGINS') echo 'selected'; ?>><?php echo I18N::translate('Begins with'); ?></option> |
|
| 221 | - <option value="FAMC:HUSB:NAME:GIVN:CONTAINS" <?php if ($fatherGivnOption == 'CONTAINS') echo 'selected'; ?>><?php echo I18N::translate('Contains'); ?></option> |
|
| 222 | - <option value="FAMC:HUSB:NAME:GIVN:SDX" <?php if ($fatherGivnOption == 'SDX') echo 'selected'; ?>><?php echo I18N::translate('Sounds like'); ?></option> |
|
| 240 | + <option value="FAMC:HUSB:NAME:GIVN:EXACT" <?php if ($fatherGivnOption == 'EXACT') { |
|
| 241 | + echo 'selected'; |
|
| 242 | +} |
|
| 243 | +?>><?php echo I18N::translate('Exact'); ?></option> |
|
| 244 | + <option value="FAMC:HUSB:NAME:GIVN:BEGINS" <?php if ($fatherGivnOption == 'BEGINS') { |
|
| 245 | + echo 'selected'; |
|
| 246 | +} |
|
| 247 | +?>><?php echo I18N::translate('Begins with'); ?></option> |
|
| 248 | + <option value="FAMC:HUSB:NAME:GIVN:CONTAINS" <?php if ($fatherGivnOption == 'CONTAINS') { |
|
| 249 | + echo 'selected'; |
|
| 250 | +} |
|
| 251 | +?>><?php echo I18N::translate('Contains'); ?></option> |
|
| 252 | + <option value="FAMC:HUSB:NAME:GIVN:SDX" <?php if ($fatherGivnOption == 'SDX') { |
|
| 253 | + echo 'selected'; |
|
| 254 | +} |
|
| 255 | +?>><?php echo I18N::translate('Sounds like'); ?></option> |
|
| 223 | 256 | </select> |
| 224 | 257 | </td> |
| 225 | 258 | </tr> |
@@ -231,10 +264,22 @@ discard block |
||
| 231 | 264 | <td class="list_value"> |
| 232 | 265 | <input type="text" name="values[<?php echo $j; ?>]" value="<?php echo $controller->getValue($controller->getIndex('FAMC:HUSB:NAME:SURN:' . $fatherSurnOption)); ?>"> |
| 233 | 266 | <select name="fields[<?php echo $j; ?>]"> |
| 234 | - <option value="FAMC:HUSB:NAME:SURN:EXACT" <?php if ($fatherSurnOption == 'EXACT') echo 'selected'; ?>><?php echo I18N::translate('Exact'); ?></option> |
|
| 235 | - <option value="FAMC:HUSB:NAME:SURN:BEGINS" <?php if ($fatherSurnOption == 'BEGINS') echo 'selected'; ?>><?php echo I18N::translate('Begins with'); ?></option> |
|
| 236 | - <option value="FAMC:HUSB:NAME:SURN:CONTAINS" <?php if ($fatherSurnOption == 'CONTAINS') echo 'selected'; ?>><?php echo I18N::translate('Contains'); ?></option> |
|
| 237 | - <option value="FAMC:HUSB:NAME:SURN:SDX" <?php if ($fatherSurnOption == 'SDX') echo 'selected'; ?>><?php echo I18N::translate('Sounds like'); ?></option> |
|
| 267 | + <option value="FAMC:HUSB:NAME:SURN:EXACT" <?php if ($fatherSurnOption == 'EXACT') { |
|
| 268 | + echo 'selected'; |
|
| 269 | +} |
|
| 270 | +?>><?php echo I18N::translate('Exact'); ?></option> |
|
| 271 | + <option value="FAMC:HUSB:NAME:SURN:BEGINS" <?php if ($fatherSurnOption == 'BEGINS') { |
|
| 272 | + echo 'selected'; |
|
| 273 | +} |
|
| 274 | +?>><?php echo I18N::translate('Begins with'); ?></option> |
|
| 275 | + <option value="FAMC:HUSB:NAME:SURN:CONTAINS" <?php if ($fatherSurnOption == 'CONTAINS') { |
|
| 276 | + echo 'selected'; |
|
| 277 | +} |
|
| 278 | +?>><?php echo I18N::translate('Contains'); ?></option> |
|
| 279 | + <option value="FAMC:HUSB:NAME:SURN:SDX" <?php if ($fatherSurnOption == 'SDX') { |
|
| 280 | + echo 'selected'; |
|
| 281 | +} |
|
| 282 | +?>><?php echo I18N::translate('Sounds like'); ?></option> |
|
| 238 | 283 | </select> |
| 239 | 284 | </td> |
| 240 | 285 | </tr> |
@@ -252,10 +297,22 @@ discard block |
||
| 252 | 297 | <td class="list_value"> |
| 253 | 298 | <input type="text" name="values[<?php echo $j; ?>]" value="<?php echo $controller->getValue($controller->getIndex('FAMC:WIFE:NAME:GIVN:' . $motherGivnOption)); ?>"> |
| 254 | 299 | <select name="fields[<?php echo $j; ?>]"> |
| 255 | - <option value="FAMC:WIFE:NAME:GIVN:EXACT" <?php if ($motherGivnOption == 'EXACT') echo 'selected'; ?>><?php echo I18N::translate('Exact'); ?></option> |
|
| 256 | - <option value="FAMC:WIFE:NAME:GIVN:BEGINS" <?php if ($motherGivnOption == 'BEGINS') echo 'selected'; ?>><?php echo I18N::translate('Begins with'); ?></option> |
|
| 257 | - <option value="FAMC:WIFE:NAME:GIVN:CONTAINS" <?php if ($motherGivnOption == 'CONTAINS') echo 'selected'; ?>><?php echo I18N::translate('Contains'); ?></option> |
|
| 258 | - <option value="FAMC:WIFE:NAME:GIVN:SDX" <?php if ($motherGivnOption == 'SDX') echo 'selected'; ?>><?php echo I18N::translate('Sounds like'); ?></option> |
|
| 300 | + <option value="FAMC:WIFE:NAME:GIVN:EXACT" <?php if ($motherGivnOption == 'EXACT') { |
|
| 301 | + echo 'selected'; |
|
| 302 | +} |
|
| 303 | +?>><?php echo I18N::translate('Exact'); ?></option> |
|
| 304 | + <option value="FAMC:WIFE:NAME:GIVN:BEGINS" <?php if ($motherGivnOption == 'BEGINS') { |
|
| 305 | + echo 'selected'; |
|
| 306 | +} |
|
| 307 | +?>><?php echo I18N::translate('Begins with'); ?></option> |
|
| 308 | + <option value="FAMC:WIFE:NAME:GIVN:CONTAINS" <?php if ($motherGivnOption == 'CONTAINS') { |
|
| 309 | + echo 'selected'; |
|
| 310 | +} |
|
| 311 | +?>><?php echo I18N::translate('Contains'); ?></option> |
|
| 312 | + <option value="FAMC:WIFE:NAME:GIVN:SDX" <?php if ($motherGivnOption == 'SDX') { |
|
| 313 | + echo 'selected'; |
|
| 314 | +} |
|
| 315 | +?>><?php echo I18N::translate('Sounds like'); ?></option> |
|
| 259 | 316 | </select> |
| 260 | 317 | </td> |
| 261 | 318 | <?php $j++; ?> |
@@ -267,10 +324,22 @@ discard block |
||
| 267 | 324 | <td class="list_value"> |
| 268 | 325 | <input type="text" name="values[<?php echo $j; ?>]" value="<?php echo $controller->getValue($controller->getIndex('FAMC:WIFE:NAME:SURN:' . $motherSurnOption)); ?>"> |
| 269 | 326 | <select name="fields[<?php echo $j; ?>]"> |
| 270 | - <option value="FAMC:WIFE:NAME:SURN:EXACT" <?php if ($motherSurnOption == 'EXACT') echo 'selected'; ?>><?php echo I18N::translate('Exact'); ?></option> |
|
| 271 | - <option value="FAMC:WIFE:NAME:SURN:BEGINS" <?php if ($motherSurnOption == 'BEGINS') echo 'selected'; ?>><?php echo I18N::translate('Begins with'); ?></option> |
|
| 272 | - <option value="FAMC:WIFE:NAME:SURN:CONTAINS" <?php if ($motherSurnOption == 'CONTAINS') 'selected'; ?>><?php echo I18N::translate('Contains'); ?></option> |
|
| 273 | - <option value="FAMC:WIFE:NAME:SURN:SDX" <?php if ($motherSurnOption == 'SDX') echo 'selected'; ?>><?php echo I18N::translate('Sounds like'); ?></option> |
|
| 327 | + <option value="FAMC:WIFE:NAME:SURN:EXACT" <?php if ($motherSurnOption == 'EXACT') { |
|
| 328 | + echo 'selected'; |
|
| 329 | +} |
|
| 330 | +?>><?php echo I18N::translate('Exact'); ?></option> |
|
| 331 | + <option value="FAMC:WIFE:NAME:SURN:BEGINS" <?php if ($motherSurnOption == 'BEGINS') { |
|
| 332 | + echo 'selected'; |
|
| 333 | +} |
|
| 334 | +?>><?php echo I18N::translate('Begins with'); ?></option> |
|
| 335 | + <option value="FAMC:WIFE:NAME:SURN:CONTAINS" <?php if ($motherSurnOption == 'CONTAINS') { |
|
| 336 | + 'selected'; |
|
| 337 | +} |
|
| 338 | +?>><?php echo I18N::translate('Contains'); ?></option> |
|
| 339 | + <option value="FAMC:WIFE:NAME:SURN:SDX" <?php if ($motherSurnOption == 'SDX') { |
|
| 340 | + echo 'selected'; |
|
| 341 | +} |
|
| 342 | +?>><?php echo I18N::translate('Sounds like'); ?></option> |
|
| 274 | 343 | </select> |
| 275 | 344 | </td> |
| 276 | 345 | <?php $j++; ?> |
@@ -1,18 +1,18 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | /** |
| 3 | - * webtrees: online genealogy |
|
| 4 | - * Copyright (C) 2016 webtrees development team |
|
| 5 | - * This program is free software: you can redistribute it and/or modify |
|
| 6 | - * it under the terms of the GNU General Public License as published by |
|
| 7 | - * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | - * (at your option) any later version. |
|
| 9 | - * This program is distributed in the hope that it will be useful, |
|
| 10 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | - * GNU General Public License for more details. |
|
| 13 | - * You should have received a copy of the GNU General Public License |
|
| 14 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | - */ |
|
| 3 | + * webtrees: online genealogy |
|
| 4 | + * Copyright (C) 2016 webtrees development team |
|
| 5 | + * This program is free software: you can redistribute it and/or modify |
|
| 6 | + * it under the terms of the GNU General Public License as published by |
|
| 7 | + * the Free Software Foundation, either version 3 of the License, or |
|
| 8 | + * (at your option) any later version. |
|
| 9 | + * This program is distributed in the hope that it will be useful, |
|
| 10 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 11 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 12 | + * GNU General Public License for more details. |
|
| 13 | + * You should have received a copy of the GNU General Public License |
|
| 14 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 15 | + */ |
|
| 16 | 16 | namespace Fisharebest\Webtrees; |
| 17 | 17 | |
| 18 | 18 | use Fisharebest\Webtrees\Theme\AdministrationTheme; |