@@ -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 | use Fisharebest\Webtrees\Functions\FunctionsEdit; |
@@ -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 { |
@@ -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 | define('WT_SCRIPT_NAME', 'site-offline.php'); |
@@ -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\Theme\AdministrationTheme; |
@@ -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"> |
@@ -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; |