Passed
Push — 1.7 ( 23cbb7...8df8a8 )
by Greg
08:15
created
notelist.php 1 patch
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -34,6 +34,6 @@
 block discarded – undo
34 34
 $controller->pageHeader();
35 35
 
36 36
 echo '<div id="notelist-page">',
37
-	'<h2>', I18N::translate('Shared notes'), '</h2>',
38
-	FunctionsPrintLists::noteTable(FunctionsDb::getNoteList($WT_TREE));
37
+    '<h2>', I18N::translate('Shared notes'), '</h2>',
38
+    FunctionsPrintLists::noteTable(FunctionsDb::getNoteList($WT_TREE));
39 39
 echo '</div>';
Please login to merge, or discard this patch.
statistics.php 1 patch
Indentation   +42 added lines, -42 removed lines patch added patch discarded remove patch
@@ -34,12 +34,12 @@  discard block
 block discarded – undo
34 34
 $ajax = Filter::getBool('ajax');
35 35
 
36 36
 if (!$ajax) {
37
-	$controller = new PageController;
38
-	$controller
39
-		->restrictAccess(Module::isActiveChart($WT_TREE, 'statistics_chart'))
40
-		->setPageTitle(I18N::translate('Statistics'))
41
-		->addExternalJavascript(WT_AUTOCOMPLETE_JS_URL)
42
-		->addInlineJavascript('
37
+    $controller = new PageController;
38
+    $controller
39
+        ->restrictAccess(Module::isActiveChart($WT_TREE, 'statistics_chart'))
40
+        ->setPageTitle(I18N::translate('Statistics'))
41
+        ->addExternalJavascript(WT_AUTOCOMPLETE_JS_URL)
42
+        ->addInlineJavascript('
43 43
 			jQuery("#statistics_chart").css("visibility", "visible");
44 44
 			jQuery("#statistics_chart").tabs({
45 45
 				load: function() {
@@ -60,33 +60,33 @@  discard block
 block discarded – undo
60 60
 				}
61 61
 			});
62 62
 		')
63
-		->pageHeader();
63
+        ->pageHeader();
64 64
 
65
-	echo '<div id="statistics-page"><h2>', I18N::translate('Statistics'), '</h2>',
66
-	'<div id="statistics_chart">',
67
-	'<ul>',
68
-	'<li><a href="statistics.php?ged=', $WT_TREE->getNameUrl(), '&amp;ajax=1&amp;tab=0">',
69
-	'<span id="stats-indi">', I18N::translate('Individuals'), '</span></a></li>',
70
-	'<li><a href="statistics.php?ged=', $WT_TREE->getNameUrl(), '&amp;ajax=1&amp;tab=1">',
71
-	'<span id="stats-fam">', I18N::translate('Families'), '</span></a></li>',
72
-	'<li><a href="statistics.php?ged=', $WT_TREE->getNameUrl(), '&amp;ajax=1&amp;tab=2">',
73
-	'<span id="stats-other">', I18N::translate('Others'), '</span></a></li>',
74
-	'<li><a href="statistics.php?ged=', $WT_TREE->getNameUrl(), '&amp;ajax=1&amp;tab=3">',
75
-	'<span id="stats-own">', I18N::translate('Own charts'), '</span></a></li>',
76
-	'</ul>',
77
-	'<div id="loading-indicator" style="margin:auto;width:100%;"></div>',
78
-	'</div>', // statistics_chart
79
-	'</div>', // statistics-page
80
-	'<br><br>';
65
+    echo '<div id="statistics-page"><h2>', I18N::translate('Statistics'), '</h2>',
66
+    '<div id="statistics_chart">',
67
+    '<ul>',
68
+    '<li><a href="statistics.php?ged=', $WT_TREE->getNameUrl(), '&amp;ajax=1&amp;tab=0">',
69
+    '<span id="stats-indi">', I18N::translate('Individuals'), '</span></a></li>',
70
+    '<li><a href="statistics.php?ged=', $WT_TREE->getNameUrl(), '&amp;ajax=1&amp;tab=1">',
71
+    '<span id="stats-fam">', I18N::translate('Families'), '</span></a></li>',
72
+    '<li><a href="statistics.php?ged=', $WT_TREE->getNameUrl(), '&amp;ajax=1&amp;tab=2">',
73
+    '<span id="stats-other">', I18N::translate('Others'), '</span></a></li>',
74
+    '<li><a href="statistics.php?ged=', $WT_TREE->getNameUrl(), '&amp;ajax=1&amp;tab=3">',
75
+    '<span id="stats-own">', I18N::translate('Own charts'), '</span></a></li>',
76
+    '</ul>',
77
+    '<div id="loading-indicator" style="margin:auto;width:100%;"></div>',
78
+    '</div>', // statistics_chart
79
+    '</div>', // statistics-page
80
+    '<br><br>';
81 81
 } else {
82
-	$controller = new AjaxController;
83
-	$controller
84
-		->pageHeader()
85
-		->addInlineJavascript('autocomplete();')
86
-		->addInlineJavascript('jQuery("#loading-indicator").removeClass("loading-image");');
87
-	$stats = new Stats($WT_TREE);
88
-	if ($tab == 0) {
89
-		echo '<fieldset>
82
+    $controller = new AjaxController;
83
+    $controller
84
+        ->pageHeader()
85
+        ->addInlineJavascript('autocomplete();')
86
+        ->addInlineJavascript('jQuery("#loading-indicator").removeClass("loading-image");');
87
+    $stats = new Stats($WT_TREE);
88
+    if ($tab == 0) {
89
+        echo '<fieldset>
90 90
 		<legend>', I18N::translate('Total individuals: %s', $stats->totalIndividuals()), '</legend>
91 91
 		<table class="facts_table">
92 92
 			<tr>
@@ -172,8 +172,8 @@  discard block
 block discarded – undo
172 172
 			</tr>
173 173
 		</table>
174 174
 		<br>';
175
-		if (Auth::check()) {
176
-			echo '<b>', I18N::translate('Oldest living individuals'), '</b>
175
+        if (Auth::check()) {
176
+            echo '<b>', I18N::translate('Oldest living individuals'), '</b>
177 177
 			<table class="facts_table">
178 178
 				<tr>
179 179
 					<td class="facts_label">', I18N::translate('Males'), '</td>
@@ -185,8 +185,8 @@  discard block
 block discarded – undo
185 185
 				</tr>
186 186
 			</table>
187 187
 			<br>';
188
-		}
189
-		echo '<b>', I18N::translate('Names'), '</b>
188
+        }
189
+        echo '<b>', I18N::translate('Names'), '</b>
190 190
 		<table class="facts_table">
191 191
 			<tr>
192 192
 				<td class="facts_label">', I18N::translate('Total surnames'), '</td>
@@ -206,8 +206,8 @@  discard block
 block discarded – undo
206 206
 			</tr>
207 207
 		</table>
208 208
 		</fieldset>';
209
-	} elseif ($tab == 1) {
210
-		echo '<fieldset>
209
+    } elseif ($tab == 1) {
210
+        echo '<fieldset>
211 211
 		<legend>', I18N::translate('Total families: %s', $stats->totalFamilies()), '</legend>
212 212
 		<b>', I18N::translate('Events'), '</b>
213 213
 		<table class="facts_table">
@@ -344,8 +344,8 @@  discard block
 block discarded – undo
344 344
 			</tr>
345 345
 		</table>
346 346
 		</fieldset>';
347
-	} elseif ($tab == 2) {
348
-		echo '
347
+    } elseif ($tab == 2) {
348
+        echo '
349 349
 		<fieldset>
350 350
 			<legend>', I18N::translate('Records'), ': ', $stats->totalRecords(), '</legend>
351 351
 			<table class="facts_table">
@@ -428,8 +428,8 @@  discard block
 block discarded – undo
428 428
 				</tr>
429 429
 			</table>
430 430
 		</fieldset>';
431
-	} elseif ($tab == 3) {
432
-		?>
431
+    } elseif ($tab == 3) {
432
+        ?>
433 433
 		<script>
434 434
 			function statusHide(sel) {
435 435
 				var box = document.getElementById(sel);
@@ -769,5 +769,5 @@  discard block
 block discarded – undo
769 769
 			</div>
770 770
 		</fieldset>
771 771
 	<?php
772
-	}
772
+    }
773 773
 }
Please login to merge, or discard this patch.
action.php 2 patches
Indentation   +190 added lines, -190 removed lines patch added patch discarded remove patch
@@ -32,222 +32,222 @@
 block discarded – undo
32 32
 header('Content-type: text/html; charset=UTF-8');
33 33
 
34 34
 if (!Filter::checkCsrf()) {
35
-	http_response_code(406);
35
+    http_response_code(406);
36 36
 
37
-	return;
37
+    return;
38 38
 }
39 39
 
40 40
 switch (Filter::post('action')) {
41 41
 case 'accept-changes':
42
-	// Accept all the pending changes for a record
43
-	$record = GedcomRecord::getInstance(Filter::post('xref', WT_REGEX_XREF), $WT_TREE);
44
-	if ($record && Auth::isModerator($record->getTree()) && $record->canShow() && $record->canEdit()) {
45
-		if ($record->isPendingDeletion()) {
46
-			FlashMessages::addMessage(/* I18N: %s is the name of a genealogy record */
47
-				I18N::translate('“%s” has been deleted.', $record->getFullName()));
48
-		} else {
49
-			FlashMessages::addMessage(/* I18N: %s is the name of a genealogy record */
50
-				I18N::translate('The changes to “%s” have been accepted.', $record->getFullName()));
51
-		}
52
-		FunctionsImport::acceptAllChanges($record->getXref(), $record->getTree()->getTreeId());
53
-	} else {
54
-		http_response_code(406);
55
-	}
56
-	break;
42
+    // Accept all the pending changes for a record
43
+    $record = GedcomRecord::getInstance(Filter::post('xref', WT_REGEX_XREF), $WT_TREE);
44
+    if ($record && Auth::isModerator($record->getTree()) && $record->canShow() && $record->canEdit()) {
45
+        if ($record->isPendingDeletion()) {
46
+            FlashMessages::addMessage(/* I18N: %s is the name of a genealogy record */
47
+                I18N::translate('“%s” has been deleted.', $record->getFullName()));
48
+        } else {
49
+            FlashMessages::addMessage(/* I18N: %s is the name of a genealogy record */
50
+                I18N::translate('The changes to “%s” have been accepted.', $record->getFullName()));
51
+        }
52
+        FunctionsImport::acceptAllChanges($record->getXref(), $record->getTree()->getTreeId());
53
+    } else {
54
+        http_response_code(406);
55
+    }
56
+    break;
57 57
 
58 58
 case 'copy-fact':
59
-	// Copy a fact to the clipboard
60
-	$xref    = Filter::post('xref', WT_REGEX_XREF);
61
-	$fact_id = Filter::post('fact_id');
62
-
63
-	$record = GedcomRecord::getInstance($xref, $WT_TREE);
64
-
65
-	if ($record && $record->canEdit()) {
66
-		foreach ($record->getFacts() as $fact) {
67
-			if ($fact->getFactId() == $fact_id) {
68
-				switch ($fact->getTag()) {
69
-				case 'NOTE':
70
-				case 'SOUR':
71
-				case 'OBJE':
72
-					$type = 'all'; // paste this anywhere
73
-					break;
74
-				default:
75
-					$type = $record::RECORD_TYPE; // paste only to the same record type
76
-					break;
77
-				}
78
-				$clipboard = Session::get('clipboard');
79
-				if (!is_array($clipboard)) {
80
-					$clipboard = array();
81
-				}
82
-				$clipboard[$fact_id] = array(
83
-					'type'    => $type,
84
-					'factrec' => $fact->getGedcom(),
85
-					'fact'    => $fact->getTag(),
86
-					);
87
-				// The clipboard only holds 10 facts
88
-				while (count($clipboard) > 10) {
89
-					array_shift($clipboard);
90
-				}
91
-				Session::put('clipboard', $clipboard);
92
-				FlashMessages::addMessage(I18N::translate('The record has been copied to the clipboard.'));
93
-				break 2;
94
-			}
95
-		}
96
-	}
97
-	break;
59
+    // Copy a fact to the clipboard
60
+    $xref    = Filter::post('xref', WT_REGEX_XREF);
61
+    $fact_id = Filter::post('fact_id');
62
+
63
+    $record = GedcomRecord::getInstance($xref, $WT_TREE);
64
+
65
+    if ($record && $record->canEdit()) {
66
+        foreach ($record->getFacts() as $fact) {
67
+            if ($fact->getFactId() == $fact_id) {
68
+                switch ($fact->getTag()) {
69
+                case 'NOTE':
70
+                case 'SOUR':
71
+                case 'OBJE':
72
+                    $type = 'all'; // paste this anywhere
73
+                    break;
74
+                default:
75
+                    $type = $record::RECORD_TYPE; // paste only to the same record type
76
+                    break;
77
+                }
78
+                $clipboard = Session::get('clipboard');
79
+                if (!is_array($clipboard)) {
80
+                    $clipboard = array();
81
+                }
82
+                $clipboard[$fact_id] = array(
83
+                    'type'    => $type,
84
+                    'factrec' => $fact->getGedcom(),
85
+                    'fact'    => $fact->getTag(),
86
+                    );
87
+                // The clipboard only holds 10 facts
88
+                while (count($clipboard) > 10) {
89
+                    array_shift($clipboard);
90
+                }
91
+                Session::put('clipboard', $clipboard);
92
+                FlashMessages::addMessage(I18N::translate('The record has been copied to the clipboard.'));
93
+                break 2;
94
+            }
95
+        }
96
+    }
97
+    break;
98 98
 
99 99
 case 'paste-fact':
100
-	// Paste a fact from the clipboard
101
-	$xref      = Filter::post('xref', WT_REGEX_XREF);
102
-	$fact_id   = Filter::post('fact_id');
103
-	$record    = GedcomRecord::getInstance($xref, $WT_TREE);
104
-	$clipboard = Session::get('clipboard');
100
+    // Paste a fact from the clipboard
101
+    $xref      = Filter::post('xref', WT_REGEX_XREF);
102
+    $fact_id   = Filter::post('fact_id');
103
+    $record    = GedcomRecord::getInstance($xref, $WT_TREE);
104
+    $clipboard = Session::get('clipboard');
105 105
 
106
-	if ($record && $record->canEdit() && isset($clipboard[$fact_id])) {
107
-		$record->createFact($clipboard[$fact_id]['factrec'], true);
108
-	}
109
-	break;
106
+    if ($record && $record->canEdit() && isset($clipboard[$fact_id])) {
107
+        $record->createFact($clipboard[$fact_id]['factrec'], true);
108
+    }
109
+    break;
110 110
 
111 111
 case 'delete-fact':
112
-	$xref    = Filter::post('xref', WT_REGEX_XREF);
113
-	$fact_id = Filter::post('fact_id');
114
-
115
-	$record = GedcomRecord::getInstance($xref, $WT_TREE);
116
-	if ($record && $record->canShow() && $record->canEdit()) {
117
-		foreach ($record->getFacts() as $fact) {
118
-			if ($fact->getFactId() == $fact_id && $fact->canShow() && $fact->canEdit()) {
119
-				$record->deleteFact($fact_id, true);
120
-				break 2;
121
-			}
122
-		}
123
-	}
124
-
125
-	// Can’t find the record/fact, or don’t have permission to delete it.
126
-	http_response_code(406);
127
-	break;
112
+    $xref    = Filter::post('xref', WT_REGEX_XREF);
113
+    $fact_id = Filter::post('fact_id');
114
+
115
+    $record = GedcomRecord::getInstance($xref, $WT_TREE);
116
+    if ($record && $record->canShow() && $record->canEdit()) {
117
+        foreach ($record->getFacts() as $fact) {
118
+            if ($fact->getFactId() == $fact_id && $fact->canShow() && $fact->canEdit()) {
119
+                $record->deleteFact($fact_id, true);
120
+                break 2;
121
+            }
122
+        }
123
+    }
124
+
125
+    // Can’t find the record/fact, or don’t have permission to delete it.
126
+    http_response_code(406);
127
+    break;
128 128
 
129 129
 case 'delete-record':
130
-	$record = GedcomRecord::getInstance(Filter::post('xref', WT_REGEX_XREF), $WT_TREE);
131
-	if ($record && Auth::isEditor($record->getTree()) && $record->canShow() && $record->canEdit()) {
132
-		// Delete links to this record
133
-		foreach (FunctionsDb::fetchAllLinks($record->getXref(), $record->getTree()->getTreeId()) as $xref) {
134
-			$linker     = GedcomRecord::getInstance($xref, $WT_TREE);
135
-			$old_gedcom = $linker->getGedcom();
136
-			$new_gedcom = FunctionsEdit::removeLinks($old_gedcom, $record->getXref());
137
-			// FunctionsDb::fetch_all_links() does not take account of pending changes. The links (or even the
138
-			// record itself) may have already been deleted.
139
-			if ($old_gedcom !== $new_gedcom) {
140
-				// If we have removed a link from a family to an individual, and it has only one member
141
-				if (preg_match('/^0 @' . WT_REGEX_XREF . '@ FAM/', $new_gedcom) && preg_match_all('/\n1 (HUSB|WIFE|CHIL) @(' . WT_REGEX_XREF . ')@/', $new_gedcom, $match) == 1) {
142
-					// Delete the family
143
-					$family = GedcomRecord::getInstance($xref, $WT_TREE);
144
-					FlashMessages::addMessage(/* I18N: %s is the name of a family group, e.g. “Husband name + Wife name” */ I18N::translate('The family “%s” has been deleted because it only has one member.', $family->getFullName()));
145
-					$family->deleteRecord();
146
-					// Delete any remaining link to this family
147
-					if ($match) {
148
-						$relict     = GedcomRecord::getInstance($match[2][0], $WT_TREE);
149
-						$new_gedcom = $relict->getGedcom();
150
-						$new_gedcom = FunctionsEdit::removeLinks($new_gedcom, $linker->getXref());
151
-						$relict->updateRecord($new_gedcom, false);
152
-						FlashMessages::addMessage(/* I18N: %s are names of records, such as sources, repositories or individuals */ I18N::translate('The link from “%1$s” to “%2$s” has been deleted.', $relict->getFullName(), $family->getFullName()));
153
-					}
154
-				} else {
155
-					// Remove links from $linker to $record
156
-					FlashMessages::addMessage(/* I18N: %s are names of records, such as sources, repositories or individuals */ I18N::translate('The link from “%1$s” to “%2$s” has been deleted.', $linker->getFullName(), $record->getFullName()));
157
-					$linker->updateRecord($new_gedcom, false);
158
-				}
159
-			}
160
-		}
161
-		// Delete the record itself
162
-		$record->deleteRecord();
163
-	} else {
164
-		http_response_code(406);
165
-	}
166
-	break;
130
+    $record = GedcomRecord::getInstance(Filter::post('xref', WT_REGEX_XREF), $WT_TREE);
131
+    if ($record && Auth::isEditor($record->getTree()) && $record->canShow() && $record->canEdit()) {
132
+        // Delete links to this record
133
+        foreach (FunctionsDb::fetchAllLinks($record->getXref(), $record->getTree()->getTreeId()) as $xref) {
134
+            $linker     = GedcomRecord::getInstance($xref, $WT_TREE);
135
+            $old_gedcom = $linker->getGedcom();
136
+            $new_gedcom = FunctionsEdit::removeLinks($old_gedcom, $record->getXref());
137
+            // FunctionsDb::fetch_all_links() does not take account of pending changes. The links (or even the
138
+            // record itself) may have already been deleted.
139
+            if ($old_gedcom !== $new_gedcom) {
140
+                // If we have removed a link from a family to an individual, and it has only one member
141
+                if (preg_match('/^0 @' . WT_REGEX_XREF . '@ FAM/', $new_gedcom) && preg_match_all('/\n1 (HUSB|WIFE|CHIL) @(' . WT_REGEX_XREF . ')@/', $new_gedcom, $match) == 1) {
142
+                    // Delete the family
143
+                    $family = GedcomRecord::getInstance($xref, $WT_TREE);
144
+                    FlashMessages::addMessage(/* I18N: %s is the name of a family group, e.g. “Husband name + Wife name” */ I18N::translate('The family “%s” has been deleted because it only has one member.', $family->getFullName()));
145
+                    $family->deleteRecord();
146
+                    // Delete any remaining link to this family
147
+                    if ($match) {
148
+                        $relict     = GedcomRecord::getInstance($match[2][0], $WT_TREE);
149
+                        $new_gedcom = $relict->getGedcom();
150
+                        $new_gedcom = FunctionsEdit::removeLinks($new_gedcom, $linker->getXref());
151
+                        $relict->updateRecord($new_gedcom, false);
152
+                        FlashMessages::addMessage(/* I18N: %s are names of records, such as sources, repositories or individuals */ I18N::translate('The link from “%1$s” to “%2$s” has been deleted.', $relict->getFullName(), $family->getFullName()));
153
+                    }
154
+                } else {
155
+                    // Remove links from $linker to $record
156
+                    FlashMessages::addMessage(/* I18N: %s are names of records, such as sources, repositories or individuals */ I18N::translate('The link from “%1$s” to “%2$s” has been deleted.', $linker->getFullName(), $record->getFullName()));
157
+                    $linker->updateRecord($new_gedcom, false);
158
+                }
159
+            }
160
+        }
161
+        // Delete the record itself
162
+        $record->deleteRecord();
163
+    } else {
164
+        http_response_code(406);
165
+    }
166
+    break;
167 167
 
168 168
 case 'delete-user':
169
-	$user = User::find(Filter::postInteger('user_id'));
169
+    $user = User::find(Filter::postInteger('user_id'));
170 170
 
171
-	if ($user && Auth::isAdmin() && Auth::user() !== $user) {
172
-		Log::addAuthenticationLog('Deleted user: ' . $user->getUserName());
173
-		$user->delete();
174
-	}
175
-	break;
171
+    if ($user && Auth::isAdmin() && Auth::user() !== $user) {
172
+        Log::addAuthenticationLog('Deleted user: ' . $user->getUserName());
173
+        $user->delete();
174
+    }
175
+    break;
176 176
 
177 177
 case 'language':
178
-	// Change the current language
179
-	$language = Filter::post('language');
180
-	try {
181
-		I18N::init($language);
182
-		Session::put('locale', $language);
183
-		// Remember our selection
184
-		Auth::user()->setPreference('language', $language);
185
-	} catch (\Exception $ex) {
186
-		// Request for a non-existant language.
187
-		http_response_code(406);
188
-	}
189
-	break;
178
+    // Change the current language
179
+    $language = Filter::post('language');
180
+    try {
181
+        I18N::init($language);
182
+        Session::put('locale', $language);
183
+        // Remember our selection
184
+        Auth::user()->setPreference('language', $language);
185
+    } catch (\Exception $ex) {
186
+        // Request for a non-existant language.
187
+        http_response_code(406);
188
+    }
189
+    break;
190 190
 
191 191
 case 'masquerade':
192
-	$user = User::find(Filter::postInteger('user_id'));
192
+    $user = User::find(Filter::postInteger('user_id'));
193 193
 
194
-	if ($user && Auth::isAdmin() && Auth::user() !== $user) {
195
-		Log::addAuthenticationLog('Masquerade as user: ' . $user->getUserName());
196
-		Auth::login($user);
197
-		Session::put('masquerade', '1');
198
-	} else {
199
-		http_response_code(406);
200
-	}
201
-	break;
194
+    if ($user && Auth::isAdmin() && Auth::user() !== $user) {
195
+        Log::addAuthenticationLog('Masquerade as user: ' . $user->getUserName());
196
+        Auth::login($user);
197
+        Session::put('masquerade', '1');
198
+    } else {
199
+        http_response_code(406);
200
+    }
201
+    break;
202 202
 
203 203
 case 'unlink-media':
204
-	// Remove links from an individual and their spouse-family records to a media object.
205
-	// Used by the "unlink" option on the album (lightbox) tab.
206
-	$source = Individual::getInstance(Filter::post('source', WT_REGEX_XREF), $WT_TREE);
207
-	$target = Filter::post('target', WT_REGEX_XREF);
208
-	if ($source && $source->canShow() && $source->canEdit() && $target) {
209
-		// Consider the individual and their spouse-family records
210
-		$sources   = $source->getSpouseFamilies();
211
-		$sources[] = $source;
212
-		foreach ($sources as $source) {
213
-			foreach ($source->getFacts() as $fact) {
214
-				if (!$fact->isPendingDeletion()) {
215
-					if ($fact->getValue() == '@' . $target . '@') {
216
-						// Level 1 links
217
-						$source->deleteFact($fact->getFactId(), true);
218
-					} elseif (strpos($fact->getGedcom(), ' @' . $target . '@')) {
219
-						// Level 2-3 links
220
-						$source->updateFact($fact->getFactId(), preg_replace(array('/\n2 OBJE @' . $target . '@(\n[3-9].*)*/', '/\n3 OBJE @' . $target . '@(\n[4-9].*)*/'), '', $fact->getGedcom()), true);
221
-					}
222
-				}
223
-			}
224
-		}
225
-	} else {
226
-		http_response_code(406);
227
-	}
228
-	break;
204
+    // Remove links from an individual and their spouse-family records to a media object.
205
+    // Used by the "unlink" option on the album (lightbox) tab.
206
+    $source = Individual::getInstance(Filter::post('source', WT_REGEX_XREF), $WT_TREE);
207
+    $target = Filter::post('target', WT_REGEX_XREF);
208
+    if ($source && $source->canShow() && $source->canEdit() && $target) {
209
+        // Consider the individual and their spouse-family records
210
+        $sources   = $source->getSpouseFamilies();
211
+        $sources[] = $source;
212
+        foreach ($sources as $source) {
213
+            foreach ($source->getFacts() as $fact) {
214
+                if (!$fact->isPendingDeletion()) {
215
+                    if ($fact->getValue() == '@' . $target . '@') {
216
+                        // Level 1 links
217
+                        $source->deleteFact($fact->getFactId(), true);
218
+                    } elseif (strpos($fact->getGedcom(), ' @' . $target . '@')) {
219
+                        // Level 2-3 links
220
+                        $source->updateFact($fact->getFactId(), preg_replace(array('/\n2 OBJE @' . $target . '@(\n[3-9].*)*/', '/\n3 OBJE @' . $target . '@(\n[4-9].*)*/'), '', $fact->getGedcom()), true);
221
+                    }
222
+                }
223
+            }
224
+        }
225
+    } else {
226
+        http_response_code(406);
227
+    }
228
+    break;
229 229
 
230 230
 case 'reject-changes':
231
-	// Reject all the pending changes for a record
232
-	$record = GedcomRecord::getInstance(Filter::post('xref', WT_REGEX_XREF), $WT_TREE);
233
-	if ($record && $record->canEdit() && Auth::isModerator($record->getTree())) {
234
-		FlashMessages::addMessage(/* I18N: %s is the name of an individual, source or other record */ I18N::translate('The changes to “%s” have been rejected.', $record->getFullName()));
235
-		FunctionsImport::rejectAllChanges($record);
236
-	} else {
237
-		http_response_code(406);
238
-	}
239
-	break;
231
+    // Reject all the pending changes for a record
232
+    $record = GedcomRecord::getInstance(Filter::post('xref', WT_REGEX_XREF), $WT_TREE);
233
+    if ($record && $record->canEdit() && Auth::isModerator($record->getTree())) {
234
+        FlashMessages::addMessage(/* I18N: %s is the name of an individual, source or other record */ I18N::translate('The changes to “%s” have been rejected.', $record->getFullName()));
235
+        FunctionsImport::rejectAllChanges($record);
236
+    } else {
237
+        http_response_code(406);
238
+    }
239
+    break;
240 240
 
241 241
 case 'theme':
242
-	// Change the current theme
243
-	$theme = Filter::post('theme');
244
-	if (Site::getPreference('ALLOW_USER_THEMES') && array_key_exists($theme, Theme::themeNames())) {
245
-		Session::put('theme_id', $theme);
246
-		// Remember our selection
247
-		Auth::user()->setPreference('theme', $theme);
248
-	} else {
249
-		// Request for a non-existant theme.
250
-		http_response_code(406);
251
-	}
252
-	break;
242
+    // Change the current theme
243
+    $theme = Filter::post('theme');
244
+    if (Site::getPreference('ALLOW_USER_THEMES') && array_key_exists($theme, Theme::themeNames())) {
245
+        Session::put('theme_id', $theme);
246
+        // Remember our selection
247
+        Auth::user()->setPreference('theme', $theme);
248
+    } else {
249
+        // Request for a non-existant theme.
250
+        http_response_code(406);
251
+    }
252
+    break;
253 253
 }
Please login to merge, or discard this patch.
Switch Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -66,14 +66,14 @@
 block discarded – undo
66 66
 		foreach ($record->getFacts() as $fact) {
67 67
 			if ($fact->getFactId() == $fact_id) {
68 68
 				switch ($fact->getTag()) {
69
-				case 'NOTE':
70
-				case 'SOUR':
71
-				case 'OBJE':
72
-					$type = 'all'; // paste this anywhere
73
-					break;
74
-				default:
75
-					$type = $record::RECORD_TYPE; // paste only to the same record type
76
-					break;
69
+				    case 'NOTE':
70
+				    case 'SOUR':
71
+				    case 'OBJE':
72
+					    $type = 'all'; // paste this anywhere
73
+					    break;
74
+				    default:
75
+					    $type = $record::RECORD_TYPE; // paste only to the same record type
76
+					    break;
77 77
 				}
78 78
 				$clipboard = Session::get('clipboard');
79 79
 				if (!is_array($clipboard)) {
Please login to merge, or discard this patch.
statisticsplot.php 3 patches
Indentation   +1123 added lines, -1123 removed lines patch added patch discarded remove patch
@@ -37,50 +37,50 @@  discard block
 block discarded – undo
37 37
  * @return int
38 38
  */
39 39
 function month_of_birth($z_axis, array $z_boundaries, Stats $stats) {
40
-	$total = 0;
40
+    $total = 0;
41 41
 
42
-	if ($z_axis === 300) {
43
-		$num = $stats->statsBirthQuery(false);
44
-		foreach ($num as $values) {
45
-			foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
46
-				if ($month === $values['d_month']) {
47
-					fill_y_data(0, $key, $values['total']);
48
-					$total += $values['total'];
49
-				}
50
-			}
51
-		}
52
-	} elseif ($z_axis === 301) {
53
-		$num = $stats->statsBirthQuery(false, true);
54
-		foreach ($num as $values) {
55
-			foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
56
-				if ($month === $values['d_month']) {
57
-					if ($values['i_sex'] === 'M') {
58
-						fill_y_data(0, $key, $values['total']);
59
-						$total += $values['total'];
60
-					} elseif ($values['i_sex'] === 'F') {
61
-						fill_y_data(1, $key, $values['total']);
62
-						$total += $values['total'];
63
-					}
64
-				}
65
-			}
66
-		}
67
-	} else {
68
-		$zstart = 0;
69
-		foreach ($z_boundaries as $boundary) {
70
-			$num = $stats->statsBirthQuery(false, false, $zstart, $boundary);
71
-			foreach ($num as $values) {
72
-				foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
73
-					if ($month === $values['d_month']) {
74
-						fill_y_data($boundary, $key, $values['total']);
75
-						$total += $values['total'];
76
-					}
77
-				}
78
-			}
79
-			$zstart = $boundary + 1;
80
-		}
81
-	}
42
+    if ($z_axis === 300) {
43
+        $num = $stats->statsBirthQuery(false);
44
+        foreach ($num as $values) {
45
+            foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
46
+                if ($month === $values['d_month']) {
47
+                    fill_y_data(0, $key, $values['total']);
48
+                    $total += $values['total'];
49
+                }
50
+            }
51
+        }
52
+    } elseif ($z_axis === 301) {
53
+        $num = $stats->statsBirthQuery(false, true);
54
+        foreach ($num as $values) {
55
+            foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
56
+                if ($month === $values['d_month']) {
57
+                    if ($values['i_sex'] === 'M') {
58
+                        fill_y_data(0, $key, $values['total']);
59
+                        $total += $values['total'];
60
+                    } elseif ($values['i_sex'] === 'F') {
61
+                        fill_y_data(1, $key, $values['total']);
62
+                        $total += $values['total'];
63
+                    }
64
+                }
65
+            }
66
+        }
67
+    } else {
68
+        $zstart = 0;
69
+        foreach ($z_boundaries as $boundary) {
70
+            $num = $stats->statsBirthQuery(false, false, $zstart, $boundary);
71
+            foreach ($num as $values) {
72
+                foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
73
+                    if ($month === $values['d_month']) {
74
+                        fill_y_data($boundary, $key, $values['total']);
75
+                        $total += $values['total'];
76
+                    }
77
+                }
78
+            }
79
+            $zstart = $boundary + 1;
80
+        }
81
+    }
82 82
 
83
-	return $total;
83
+    return $total;
84 84
 }
85 85
 
86 86
 /**
@@ -93,50 +93,50 @@  discard block
 block discarded – undo
93 93
  * @return int
94 94
  */
95 95
 function month_of_birth_of_first_child($z_axis, array $z_boundaries, Stats $stats) {
96
-	$total = 0;
96
+    $total = 0;
97 97
 
98
-	if ($z_axis === 300) {
99
-		$num = $stats->monthFirstChildQuery(false);
100
-		foreach ($num as $values) {
101
-			foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
102
-				if ($month === $values['d_month']) {
103
-					fill_y_data(0, $key, $values['total']);
104
-					$total += $values['total'];
105
-				}
106
-			}
107
-		}
108
-	} elseif ($z_axis === 301) {
109
-		$num = $stats->monthFirstChildQuery(false, true);
110
-		foreach ($num as $values) {
111
-			foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
112
-				if ($month === $values['d_month']) {
113
-					if ($values['i_sex'] === 'M') {
114
-						fill_y_data(0, $key, $values['total']);
115
-						$total += $values['total'];
116
-					} elseif ($values['i_sex'] === 'F') {
117
-						fill_y_data(1, $key, $values['total']);
118
-						$total += $values['total'];
119
-					}
120
-				}
121
-			}
122
-		}
123
-	} else {
124
-		$zstart = 0;
125
-		foreach ($z_boundaries as $boundary) {
126
-			$num = $stats->monthFirstChildQuery(false, false, $zstart, $boundary);
127
-			foreach ($num as $values) {
128
-				foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
129
-					if ($month === $values['d_month']) {
130
-						fill_y_data($boundary, $key, $values['total']);
131
-						$total += $values['total'];
132
-					}
133
-				}
134
-			}
135
-			$zstart = $boundary + 1;
136
-		}
137
-	}
98
+    if ($z_axis === 300) {
99
+        $num = $stats->monthFirstChildQuery(false);
100
+        foreach ($num as $values) {
101
+            foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
102
+                if ($month === $values['d_month']) {
103
+                    fill_y_data(0, $key, $values['total']);
104
+                    $total += $values['total'];
105
+                }
106
+            }
107
+        }
108
+    } elseif ($z_axis === 301) {
109
+        $num = $stats->monthFirstChildQuery(false, true);
110
+        foreach ($num as $values) {
111
+            foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
112
+                if ($month === $values['d_month']) {
113
+                    if ($values['i_sex'] === 'M') {
114
+                        fill_y_data(0, $key, $values['total']);
115
+                        $total += $values['total'];
116
+                    } elseif ($values['i_sex'] === 'F') {
117
+                        fill_y_data(1, $key, $values['total']);
118
+                        $total += $values['total'];
119
+                    }
120
+                }
121
+            }
122
+        }
123
+    } else {
124
+        $zstart = 0;
125
+        foreach ($z_boundaries as $boundary) {
126
+            $num = $stats->monthFirstChildQuery(false, false, $zstart, $boundary);
127
+            foreach ($num as $values) {
128
+                foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
129
+                    if ($month === $values['d_month']) {
130
+                        fill_y_data($boundary, $key, $values['total']);
131
+                        $total += $values['total'];
132
+                    }
133
+                }
134
+            }
135
+            $zstart = $boundary + 1;
136
+        }
137
+    }
138 138
 
139
-	return $total;
139
+    return $total;
140 140
 }
141 141
 
142 142
 /**
@@ -149,50 +149,50 @@  discard block
 block discarded – undo
149 149
  * @return int
150 150
  */
151 151
 function month_of_death($z_axis, array $z_boundaries, Stats $stats) {
152
-	$total = 0;
152
+    $total = 0;
153 153
 
154
-	if ($z_axis === 300) {
155
-		$num = $stats->statsDeathQuery(false);
156
-		foreach ($num as $values) {
157
-			foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
158
-				if ($month === $values['d_month']) {
159
-					fill_y_data(0, $key, $values['total']);
160
-					$total += $values['total'];
161
-				}
162
-			}
163
-		}
164
-	} elseif ($z_axis === 301) {
165
-		$num = $stats->statsDeathQuery(false, true);
166
-		foreach ($num as $values) {
167
-			foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
168
-				if ($month === $values['d_month']) {
169
-					if ($values['i_sex'] === 'M') {
170
-						fill_y_data(0, $key, $values['total']);
171
-						$total += $values['total'];
172
-					} elseif ($values['i_sex'] === 'F') {
173
-						fill_y_data(1, $key, $values['total']);
174
-						$total += $values['total'];
175
-					}
176
-				}
177
-			}
178
-		}
179
-	} else {
180
-		$zstart = 0;
181
-		foreach ($z_boundaries as $boundary) {
182
-			$num = $stats->statsDeathQuery(false, false, $zstart, $boundary);
183
-			foreach ($num as $values) {
184
-				foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
185
-					if ($month === $values['d_month']) {
186
-						fill_y_data($boundary, $key, $values['total']);
187
-						$total += $values['total'];
188
-					}
189
-				}
190
-			}
191
-			$zstart = $boundary + 1;
192
-		}
193
-	}
154
+    if ($z_axis === 300) {
155
+        $num = $stats->statsDeathQuery(false);
156
+        foreach ($num as $values) {
157
+            foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
158
+                if ($month === $values['d_month']) {
159
+                    fill_y_data(0, $key, $values['total']);
160
+                    $total += $values['total'];
161
+                }
162
+            }
163
+        }
164
+    } elseif ($z_axis === 301) {
165
+        $num = $stats->statsDeathQuery(false, true);
166
+        foreach ($num as $values) {
167
+            foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
168
+                if ($month === $values['d_month']) {
169
+                    if ($values['i_sex'] === 'M') {
170
+                        fill_y_data(0, $key, $values['total']);
171
+                        $total += $values['total'];
172
+                    } elseif ($values['i_sex'] === 'F') {
173
+                        fill_y_data(1, $key, $values['total']);
174
+                        $total += $values['total'];
175
+                    }
176
+                }
177
+            }
178
+        }
179
+    } else {
180
+        $zstart = 0;
181
+        foreach ($z_boundaries as $boundary) {
182
+            $num = $stats->statsDeathQuery(false, false, $zstart, $boundary);
183
+            foreach ($num as $values) {
184
+                foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
185
+                    if ($month === $values['d_month']) {
186
+                        fill_y_data($boundary, $key, $values['total']);
187
+                        $total += $values['total'];
188
+                    }
189
+                }
190
+            }
191
+            $zstart = $boundary + 1;
192
+        }
193
+    }
194 194
 
195
-	return $total;
195
+    return $total;
196 196
 }
197 197
 
198 198
 /**
@@ -205,35 +205,35 @@  discard block
 block discarded – undo
205 205
  * @return int
206 206
  */
207 207
 function month_of_marriage($z_axis, array $z_boundaries, Stats $stats) {
208
-	$total = 0;
208
+    $total = 0;
209 209
 
210
-	if ($z_axis === 300) {
211
-		$num = $stats->statsMarrQuery(false, false);
212
-		foreach ($num as $values) {
213
-			foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
214
-				if ($month === $values['d_month']) {
215
-					fill_y_data(0, $key, $values['total']);
216
-					$total += $values['total'];
217
-				}
218
-			}
219
-		}
220
-	} else {
221
-		$zstart = 0;
222
-		foreach ($z_boundaries as $boundary) {
223
-			$num = $stats->statsMarrQuery(false, false, $zstart, $boundary);
224
-			foreach ($num as $values) {
225
-				foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
226
-					if ($month === $values['d_month']) {
227
-						fill_y_data($boundary, $key, $values['total']);
228
-						$total += $values['total'];
229
-					}
230
-				}
231
-			}
232
-			$zstart = $boundary + 1;
233
-		}
234
-	}
210
+    if ($z_axis === 300) {
211
+        $num = $stats->statsMarrQuery(false, false);
212
+        foreach ($num as $values) {
213
+            foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
214
+                if ($month === $values['d_month']) {
215
+                    fill_y_data(0, $key, $values['total']);
216
+                    $total += $values['total'];
217
+                }
218
+            }
219
+        }
220
+    } else {
221
+        $zstart = 0;
222
+        foreach ($z_boundaries as $boundary) {
223
+            $num = $stats->statsMarrQuery(false, false, $zstart, $boundary);
224
+            foreach ($num as $values) {
225
+                foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
226
+                    if ($month === $values['d_month']) {
227
+                        fill_y_data($boundary, $key, $values['total']);
228
+                        $total += $values['total'];
229
+                    }
230
+                }
231
+            }
232
+            $zstart = $boundary + 1;
233
+        }
234
+    }
235 235
 
236
-	return $total;
236
+    return $total;
237 237
 }
238 238
 
239 239
 /**
@@ -246,47 +246,47 @@  discard block
 block discarded – undo
246 246
  * @return int
247 247
  */
248 248
 function month_of_first_marriage($z_axis, array $z_boundaries, Stats $stats) {
249
-	$total = 0;
249
+    $total = 0;
250 250
 
251
-	if ($z_axis === 300) {
252
-		$num  = $stats->statsMarrQuery(false, true);
253
-		$indi = array();
254
-		$fam  = array();
255
-		foreach ($num as $values) {
256
-			if (!in_array($values['indi'], $indi) && !in_array($values['fams'], $fam)) {
257
-				foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
258
-					if ($month === $values['month']) {
259
-						fill_y_data(0, $key, 1);
260
-						$total++;
261
-					}
262
-				}
263
-				$indi[] = $values['indi'];
264
-				$fam[]  = $values['fams'];
265
-			}
266
-		}
267
-	} else {
268
-		$zstart = 0;
269
-		$indi   = array();
270
-		$fam    = array();
271
-		foreach ($z_boundaries as $boundary) {
272
-			$num = $stats->statsMarrQuery(false, true, $zstart, $boundary);
273
-			foreach ($num as $values) {
274
-				if (!in_array($values['indi'], $indi) && !in_array($values['fams'], $fam)) {
275
-					foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
276
-						if ($month === $values['month']) {
277
-							fill_y_data($boundary, $key, 1);
278
-							$total++;
279
-						}
280
-					}
281
-					$indi[] = $values['indi'];
282
-					$fam[]  = $values['fams'];
283
-				}
284
-			}
285
-			$zstart = $boundary + 1;
286
-		}
287
-	}
251
+    if ($z_axis === 300) {
252
+        $num  = $stats->statsMarrQuery(false, true);
253
+        $indi = array();
254
+        $fam  = array();
255
+        foreach ($num as $values) {
256
+            if (!in_array($values['indi'], $indi) && !in_array($values['fams'], $fam)) {
257
+                foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
258
+                    if ($month === $values['month']) {
259
+                        fill_y_data(0, $key, 1);
260
+                        $total++;
261
+                    }
262
+                }
263
+                $indi[] = $values['indi'];
264
+                $fam[]  = $values['fams'];
265
+            }
266
+        }
267
+    } else {
268
+        $zstart = 0;
269
+        $indi   = array();
270
+        $fam    = array();
271
+        foreach ($z_boundaries as $boundary) {
272
+            $num = $stats->statsMarrQuery(false, true, $zstart, $boundary);
273
+            foreach ($num as $values) {
274
+                if (!in_array($values['indi'], $indi) && !in_array($values['fams'], $fam)) {
275
+                    foreach (array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC') as $key => $month) {
276
+                        if ($month === $values['month']) {
277
+                            fill_y_data($boundary, $key, 1);
278
+                            $total++;
279
+                        }
280
+                    }
281
+                    $indi[] = $values['indi'];
282
+                    $fam[]  = $values['fams'];
283
+                }
284
+            }
285
+            $zstart = $boundary + 1;
286
+        }
287
+    }
288 288
 
289
-	return $total;
289
+    return $total;
290 290
 }
291 291
 
292 292
 /**
@@ -299,46 +299,46 @@  discard block
 block discarded – undo
299 299
  * @return int
300 300
  */
301 301
 function lifespan_by_birth_year($z_axis, array $z_boundaries, Stats $stats) {
302
-	$total = 0;
302
+    $total = 0;
303 303
 
304
-	if ($z_axis === 300) {
305
-		$num = $stats->statsAgeQuery(false, 'BIRT');
306
-		foreach ($num as $values) {
307
-			foreach ($values as $age_value) {
308
-				fill_y_data(0, (int) ($age_value / 365.25), 1);
309
-				$total++;
310
-			}
311
-		}
312
-	} elseif ($z_axis === 301) {
313
-		$num = $stats->statsAgeQuery(false, 'BIRT', 'M');
314
-		foreach ($num as $values) {
315
-			foreach ($values as $age_value) {
316
-				fill_y_data(0, (int) ($age_value / 365.25), 1);
317
-				$total++;
318
-			}
319
-		}
320
-		$num = $stats->statsAgeQuery(false, 'BIRT', 'F');
321
-		foreach ($num as $values) {
322
-			foreach ($values as $age_value) {
323
-				fill_y_data(1, (int) ($age_value / 365.25), 1);
324
-				$total++;
325
-			}
326
-		}
327
-	} else {
328
-		$zstart = 0;
329
-		foreach ($z_boundaries as $boundary) {
330
-			$num = $stats->statsAgeQuery(false, 'BIRT', 'BOTH', $zstart, $boundary);
331
-			foreach ($num as $values) {
332
-				foreach ($values as $age_value) {
333
-					fill_y_data($boundary, (int) ($age_value / 365.25), 1);
334
-					$total++;
335
-				}
336
-			}
337
-			$zstart = $boundary + 1;
338
-		}
339
-	}
304
+    if ($z_axis === 300) {
305
+        $num = $stats->statsAgeQuery(false, 'BIRT');
306
+        foreach ($num as $values) {
307
+            foreach ($values as $age_value) {
308
+                fill_y_data(0, (int) ($age_value / 365.25), 1);
309
+                $total++;
310
+            }
311
+        }
312
+    } elseif ($z_axis === 301) {
313
+        $num = $stats->statsAgeQuery(false, 'BIRT', 'M');
314
+        foreach ($num as $values) {
315
+            foreach ($values as $age_value) {
316
+                fill_y_data(0, (int) ($age_value / 365.25), 1);
317
+                $total++;
318
+            }
319
+        }
320
+        $num = $stats->statsAgeQuery(false, 'BIRT', 'F');
321
+        foreach ($num as $values) {
322
+            foreach ($values as $age_value) {
323
+                fill_y_data(1, (int) ($age_value / 365.25), 1);
324
+                $total++;
325
+            }
326
+        }
327
+    } else {
328
+        $zstart = 0;
329
+        foreach ($z_boundaries as $boundary) {
330
+            $num = $stats->statsAgeQuery(false, 'BIRT', 'BOTH', $zstart, $boundary);
331
+            foreach ($num as $values) {
332
+                foreach ($values as $age_value) {
333
+                    fill_y_data($boundary, (int) ($age_value / 365.25), 1);
334
+                    $total++;
335
+                }
336
+            }
337
+            $zstart = $boundary + 1;
338
+        }
339
+    }
340 340
 
341
-	return $total;
341
+    return $total;
342 342
 }
343 343
 
344 344
 /**
@@ -351,46 +351,46 @@  discard block
 block discarded – undo
351 351
  * @return int
352 352
  */
353 353
 function lifespan_by_death_year($z_axis, array $z_boundaries, Stats $stats) {
354
-	$total = 0;
354
+    $total = 0;
355 355
 
356
-	if ($z_axis === 300) {
357
-		$num = $stats->statsAgeQuery(false, 'DEAT');
358
-		foreach ($num as $values) {
359
-			foreach ($values as $age_value) {
360
-				fill_y_data(0, (int) ($age_value / 365.25), 1);
361
-				$total++;
362
-			}
363
-		}
364
-	} elseif ($z_axis === 301) {
365
-		$num = $stats->statsAgeQuery(false, 'DEAT', 'M');
366
-		foreach ($num as $values) {
367
-			foreach ($values as $age_value) {
368
-				fill_y_data(0, (int) ($age_value / 365.25), 1);
369
-				$total++;
370
-			}
371
-		}
372
-		$num = $stats->statsAgeQuery(false, 'DEAT', 'F');
373
-		foreach ($num as $values) {
374
-			foreach ($values as $age_value) {
375
-				fill_y_data(1, (int) ($age_value / 365.25), 1);
376
-				$total++;
377
-			}
378
-		}
379
-	} else {
380
-		$zstart = 0;
381
-		foreach ($z_boundaries as $boundary) {
382
-			$num = $stats->statsAgeQuery(false, 'DEAT', 'BOTH', $zstart, $boundary);
383
-			foreach ($num as $values) {
384
-				foreach ($values as $age_value) {
385
-					fill_y_data($boundary, (int) ($age_value / 365.25), 1);
386
-					$total++;
387
-				}
388
-			}
389
-			$zstart = $boundary + 1;
390
-		}
391
-	}
356
+    if ($z_axis === 300) {
357
+        $num = $stats->statsAgeQuery(false, 'DEAT');
358
+        foreach ($num as $values) {
359
+            foreach ($values as $age_value) {
360
+                fill_y_data(0, (int) ($age_value / 365.25), 1);
361
+                $total++;
362
+            }
363
+        }
364
+    } elseif ($z_axis === 301) {
365
+        $num = $stats->statsAgeQuery(false, 'DEAT', 'M');
366
+        foreach ($num as $values) {
367
+            foreach ($values as $age_value) {
368
+                fill_y_data(0, (int) ($age_value / 365.25), 1);
369
+                $total++;
370
+            }
371
+        }
372
+        $num = $stats->statsAgeQuery(false, 'DEAT', 'F');
373
+        foreach ($num as $values) {
374
+            foreach ($values as $age_value) {
375
+                fill_y_data(1, (int) ($age_value / 365.25), 1);
376
+                $total++;
377
+            }
378
+        }
379
+    } else {
380
+        $zstart = 0;
381
+        foreach ($z_boundaries as $boundary) {
382
+            $num = $stats->statsAgeQuery(false, 'DEAT', 'BOTH', $zstart, $boundary);
383
+            foreach ($num as $values) {
384
+                foreach ($values as $age_value) {
385
+                    fill_y_data($boundary, (int) ($age_value / 365.25), 1);
386
+                    $total++;
387
+                }
388
+            }
389
+            $zstart = $boundary + 1;
390
+        }
391
+    }
392 392
 
393
-	return $total;
393
+    return $total;
394 394
 }
395 395
 
396 396
 /**
@@ -403,48 +403,48 @@  discard block
 block discarded – undo
403 403
  * @return int
404 404
  */
405 405
 function age_at_marriage($z_axis, array $z_boundaries, Stats $stats) {
406
-	$total = 0;
406
+    $total = 0;
407 407
 
408
-	if ($z_axis === 300) {
409
-		$num = $stats->statsMarrAgeQuery(false, 'M');
410
-		foreach ($num as $values) {
411
-			fill_y_data(0, (int) ($values['age'] / 365.25), 1);
412
-			$total++;
413
-		}
414
-		$num = $stats->statsMarrAgeQuery(false, 'F');
415
-		foreach ($num as $values) {
416
-			fill_y_data(0, (int) ($values['age'] / 365.25), 1);
417
-			$total++;
418
-		}
419
-	} elseif ($z_axis === 301) {
420
-		$num = $stats->statsMarrAgeQuery(false, 'M');
421
-		foreach ($num as $values) {
422
-			fill_y_data(0, (int) ($values['age'] / 365.25), 1);
423
-			$total++;
424
-		}
425
-		$num = $stats->statsMarrAgeQuery(false, 'F');
426
-		foreach ($num as $values) {
427
-			fill_y_data(1, (int) ($values['age'] / 365.25), 1);
428
-			$total++;
429
-		}
430
-	} else {
431
-		$zstart = 0;
432
-		foreach ($z_boundaries as $boundary) {
433
-			$num = $stats->statsMarrAgeQuery(false, 'M', $zstart, $boundary);
434
-			foreach ($num as $values) {
435
-				fill_y_data($boundary, (int) ($values['age'] / 365.25), 1);
436
-				$total++;
437
-			}
438
-			$num = $stats->statsMarrAgeQuery(false, 'F', $zstart, $boundary);
439
-			foreach ($num as $values) {
440
-				fill_y_data($boundary, (int) ($values['age'] / 365.25), 1);
441
-				$total++;
442
-			}
443
-			$zstart = $boundary + 1;
444
-		}
445
-	}
408
+    if ($z_axis === 300) {
409
+        $num = $stats->statsMarrAgeQuery(false, 'M');
410
+        foreach ($num as $values) {
411
+            fill_y_data(0, (int) ($values['age'] / 365.25), 1);
412
+            $total++;
413
+        }
414
+        $num = $stats->statsMarrAgeQuery(false, 'F');
415
+        foreach ($num as $values) {
416
+            fill_y_data(0, (int) ($values['age'] / 365.25), 1);
417
+            $total++;
418
+        }
419
+    } elseif ($z_axis === 301) {
420
+        $num = $stats->statsMarrAgeQuery(false, 'M');
421
+        foreach ($num as $values) {
422
+            fill_y_data(0, (int) ($values['age'] / 365.25), 1);
423
+            $total++;
424
+        }
425
+        $num = $stats->statsMarrAgeQuery(false, 'F');
426
+        foreach ($num as $values) {
427
+            fill_y_data(1, (int) ($values['age'] / 365.25), 1);
428
+            $total++;
429
+        }
430
+    } else {
431
+        $zstart = 0;
432
+        foreach ($z_boundaries as $boundary) {
433
+            $num = $stats->statsMarrAgeQuery(false, 'M', $zstart, $boundary);
434
+            foreach ($num as $values) {
435
+                fill_y_data($boundary, (int) ($values['age'] / 365.25), 1);
436
+                $total++;
437
+            }
438
+            $num = $stats->statsMarrAgeQuery(false, 'F', $zstart, $boundary);
439
+            foreach ($num as $values) {
440
+                fill_y_data($boundary, (int) ($values['age'] / 365.25), 1);
441
+                $total++;
442
+            }
443
+            $zstart = $boundary + 1;
444
+        }
445
+    }
446 446
 
447
-	return $total;
447
+    return $total;
448 448
 }
449 449
 
450 450
 /**
@@ -457,71 +457,71 @@  discard block
 block discarded – undo
457 457
  * @return int
458 458
  */
459 459
 function age_at_first_marriage($z_axis, array $z_boundaries, Stats $stats) {
460
-	$total = 0;
460
+    $total = 0;
461 461
 
462
-	if ($z_axis === 300) {
463
-		$num  = $stats->statsMarrAgeQuery(false, 'M');
464
-		$indi = array();
465
-		foreach ($num as $values) {
466
-			if (!in_array($values['d_gid'], $indi)) {
467
-				fill_y_data(0, (int) ($values['age'] / 365.25), 1);
468
-				$total++;
469
-				$indi[] = $values['d_gid'];
470
-			}
471
-		}
472
-		$num  = $stats->statsMarrAgeQuery(false, 'F');
473
-		$indi = array();
474
-		foreach ($num as $values) {
475
-			if (!in_array($values['d_gid'], $indi)) {
476
-				fill_y_data(0, (int) ($values['age'] / 365.25), 1);
477
-				$total++;
478
-				$indi[] = $values['d_gid'];
479
-			}
480
-		}
481
-	} elseif ($z_axis === 301) {
482
-		$num  = $stats->statsMarrAgeQuery(false, 'M');
483
-		$indi = array();
484
-		foreach ($num as $values) {
485
-			if (!in_array($values['d_gid'], $indi)) {
486
-				fill_y_data(0, (int) ($values['age'] / 365.25), 1);
487
-				$total++;
488
-				$indi[] = $values['d_gid'];
489
-			}
490
-		}
491
-		$num  = $stats->statsMarrAgeQuery(false, 'F');
492
-		$indi = array();
493
-		foreach ($num as $values) {
494
-			if (!in_array($values['d_gid'], $indi)) {
495
-				fill_y_data(1, (int) ($values['age'] / 365.25), 1);
496
-				$total++;
497
-				$indi[] = $values['d_gid'];
498
-			}
499
-		}
500
-	} else {
501
-		$zstart = 0;
502
-		$indi   = array();
503
-		foreach ($z_boundaries as $boundary) {
504
-			$num = $stats->statsMarrAgeQuery(false, 'M', $zstart, $boundary);
505
-			foreach ($num as $values) {
506
-				if (!in_array($values['d_gid'], $indi)) {
507
-					fill_y_data($boundary, (int) ($values['age'] / 365.25), 1);
508
-					$total++;
509
-					$indi[] = $values['d_gid'];
510
-				}
511
-			}
512
-			$num = $stats->statsMarrAgeQuery(false, 'F', $zstart, $boundary);
513
-			foreach ($num as $values) {
514
-				if (!in_array($values['d_gid'], $indi)) {
515
-					fill_y_data($boundary, (int) ($values['age'] / 365.25), 1);
516
-					$total++;
517
-					$indi[] = $values['d_gid'];
518
-				}
519
-			}
520
-			$zstart = $boundary + 1;
521
-		}
522
-	}
462
+    if ($z_axis === 300) {
463
+        $num  = $stats->statsMarrAgeQuery(false, 'M');
464
+        $indi = array();
465
+        foreach ($num as $values) {
466
+            if (!in_array($values['d_gid'], $indi)) {
467
+                fill_y_data(0, (int) ($values['age'] / 365.25), 1);
468
+                $total++;
469
+                $indi[] = $values['d_gid'];
470
+            }
471
+        }
472
+        $num  = $stats->statsMarrAgeQuery(false, 'F');
473
+        $indi = array();
474
+        foreach ($num as $values) {
475
+            if (!in_array($values['d_gid'], $indi)) {
476
+                fill_y_data(0, (int) ($values['age'] / 365.25), 1);
477
+                $total++;
478
+                $indi[] = $values['d_gid'];
479
+            }
480
+        }
481
+    } elseif ($z_axis === 301) {
482
+        $num  = $stats->statsMarrAgeQuery(false, 'M');
483
+        $indi = array();
484
+        foreach ($num as $values) {
485
+            if (!in_array($values['d_gid'], $indi)) {
486
+                fill_y_data(0, (int) ($values['age'] / 365.25), 1);
487
+                $total++;
488
+                $indi[] = $values['d_gid'];
489
+            }
490
+        }
491
+        $num  = $stats->statsMarrAgeQuery(false, 'F');
492
+        $indi = array();
493
+        foreach ($num as $values) {
494
+            if (!in_array($values['d_gid'], $indi)) {
495
+                fill_y_data(1, (int) ($values['age'] / 365.25), 1);
496
+                $total++;
497
+                $indi[] = $values['d_gid'];
498
+            }
499
+        }
500
+    } else {
501
+        $zstart = 0;
502
+        $indi   = array();
503
+        foreach ($z_boundaries as $boundary) {
504
+            $num = $stats->statsMarrAgeQuery(false, 'M', $zstart, $boundary);
505
+            foreach ($num as $values) {
506
+                if (!in_array($values['d_gid'], $indi)) {
507
+                    fill_y_data($boundary, (int) ($values['age'] / 365.25), 1);
508
+                    $total++;
509
+                    $indi[] = $values['d_gid'];
510
+                }
511
+            }
512
+            $num = $stats->statsMarrAgeQuery(false, 'F', $zstart, $boundary);
513
+            foreach ($num as $values) {
514
+                if (!in_array($values['d_gid'], $indi)) {
515
+                    fill_y_data($boundary, (int) ($values['age'] / 365.25), 1);
516
+                    $total++;
517
+                    $indi[] = $values['d_gid'];
518
+                }
519
+            }
520
+            $zstart = $boundary + 1;
521
+        }
522
+    }
523 523
 
524
-	return $total;
524
+    return $total;
525 525
 }
526 526
 
527 527
 /**
@@ -534,38 +534,38 @@  discard block
 block discarded – undo
534 534
  * @return int
535 535
  */
536 536
 function number_of_children($z_axis, array $z_boundaries, Stats $stats) {
537
-	$total = 0;
537
+    $total = 0;
538 538
 
539
-	if ($z_axis === 300) {
540
-		$num = $stats->statsChildrenQuery(false);
541
-		foreach ($num as $values) {
542
-			fill_y_data(0, $values['f_numchil'], $values['total']);
543
-			$total += $values['f_numchil'] * $values['total'];
544
-		}
545
-	} elseif ($z_axis === 301) {
546
-		$num = $stats->statsChildrenQuery(false, 'M');
547
-		foreach ($num as $values) {
548
-			fill_y_data(0, $values['num'], $values['total']);
549
-			$total += $values['num'] * $values['total'];
550
-		}
551
-		$num = $stats->statsChildrenQuery(false, 'F');
552
-		foreach ($num as $values) {
553
-			fill_y_data(1, $values['num'], $values['total']);
554
-			$total += $values['num'] * $values['total'];
555
-		}
556
-	} else {
557
-		$zstart = 0;
558
-		foreach ($z_boundaries as $boundary) {
559
-			$num = $stats->statsChildrenQuery(false, 'BOTH', $zstart, $boundary);
560
-			foreach ($num as $values) {
561
-				fill_y_data($boundary, $values['f_numchil'], $values['total']);
562
-				$total += $values['f_numchil'] * $values['total'];
563
-			}
564
-			$zstart = $boundary + 1;
565
-		}
566
-	}
539
+    if ($z_axis === 300) {
540
+        $num = $stats->statsChildrenQuery(false);
541
+        foreach ($num as $values) {
542
+            fill_y_data(0, $values['f_numchil'], $values['total']);
543
+            $total += $values['f_numchil'] * $values['total'];
544
+        }
545
+    } elseif ($z_axis === 301) {
546
+        $num = $stats->statsChildrenQuery(false, 'M');
547
+        foreach ($num as $values) {
548
+            fill_y_data(0, $values['num'], $values['total']);
549
+            $total += $values['num'] * $values['total'];
550
+        }
551
+        $num = $stats->statsChildrenQuery(false, 'F');
552
+        foreach ($num as $values) {
553
+            fill_y_data(1, $values['num'], $values['total']);
554
+            $total += $values['num'] * $values['total'];
555
+        }
556
+    } else {
557
+        $zstart = 0;
558
+        foreach ($z_boundaries as $boundary) {
559
+            $num = $stats->statsChildrenQuery(false, 'BOTH', $zstart, $boundary);
560
+            foreach ($num as $values) {
561
+                fill_y_data($boundary, $values['f_numchil'], $values['total']);
562
+                $total += $values['f_numchil'] * $values['total'];
563
+            }
564
+            $zstart = $boundary + 1;
565
+        }
566
+    }
567 567
 
568
-	return $total;
568
+    return $total;
569 569
 }
570 570
 
571 571
 /**
@@ -576,30 +576,30 @@  discard block
 block discarded – undo
576 576
  * @param int $val
577 577
  */
578 578
 function fill_y_data($z, $x, $val) {
579
-	global $ydata, $xmax, $x_boundaries, $zmax, $z_boundaries, $xgiven, $zgiven;
580
-	//-- calculate index $i out of given z value
581
-	//-- calculate index $j out of given x value
582
-	if ($xgiven) {
583
-		$j = $x;
584
-	} else {
585
-		$j = 0;
586
-		while (($x > $x_boundaries[$j]) && ($j < $xmax)) {
587
-			$j++;
588
-		}
589
-	}
590
-	if ($zgiven) {
591
-		$i = $z;
592
-	} else {
593
-		$i = 0;
594
-		while (($z > $z_boundaries[$i]) && ($i < $zmax)) {
595
-			$i++;
596
-		}
597
-	}
598
-	if (isset($ydata[$i][$j])) {
599
-		$ydata[$i][$j] += $val;
600
-	} else {
601
-		$ydata[$i][$j] = $val;
602
-	}
579
+    global $ydata, $xmax, $x_boundaries, $zmax, $z_boundaries, $xgiven, $zgiven;
580
+    //-- calculate index $i out of given z value
581
+    //-- calculate index $j out of given x value
582
+    if ($xgiven) {
583
+        $j = $x;
584
+    } else {
585
+        $j = 0;
586
+        while (($x > $x_boundaries[$j]) && ($j < $xmax)) {
587
+            $j++;
588
+        }
589
+    }
590
+    if ($zgiven) {
591
+        $i = $z;
592
+    } else {
593
+        $i = 0;
594
+        while (($z > $z_boundaries[$i]) && ($i < $zmax)) {
595
+            $i++;
596
+        }
597
+    }
598
+    if (isset($ydata[$i][$j])) {
599
+        $ydata[$i][$j] += $val;
600
+    } else {
601
+        $ydata[$i][$j] = $val;
602
+    }
603 603
 }
604 604
 
605 605
 /**
@@ -613,138 +613,138 @@  discard block
 block discarded – undo
613 613
  * @param string[]    $legend
614 614
  */
615 615
 function my_plot($mytitle, $xdata, $xtitle, $ydata, $ytitle, $legend) {
616
-	global $percentage, $male_female, $ymax, $scalefactor, $datastring, $imgurl;
616
+    global $percentage, $male_female, $ymax, $scalefactor, $datastring, $imgurl;
617 617
 
618
-	// Google Chart API only allows text encoding for numbers less than 100
619
-	// and it does not allow adjusting the y-axis range, so we must find the maximum y-value
620
-	// in order to adjust beforehand by changing the numbers
618
+    // Google Chart API only allows text encoding for numbers less than 100
619
+    // and it does not allow adjusting the y-axis range, so we must find the maximum y-value
620
+    // in order to adjust beforehand by changing the numbers
621 621
 
622
-	if ($male_female) {
623
-		$stop = 2;
624
-	} else {
625
-		$stop = count($ydata);
626
-	}
627
-	if ($percentage) {
628
-		$ypercentmax = 0;
629
-		$yt          = array();
630
-		for ($i = 0; $i < $stop; $i++) {
631
-			if (isset($ydata[$i])) {
632
-				$ymax   = max($ydata[$i]);
633
-				$yt[$i] = array_sum($ydata[$i]);
634
-				if ($yt[$i] > 0) {
635
-					$ypercent    = round($ymax / $yt[$i] * 100, 1);
636
-					$ypercentmax = max($ypercentmax, $ypercent);
637
-				}
638
-			}
639
-		}
640
-		$ymax = $ypercentmax;
641
-		if ($ymax > 0) {
642
-			$scalefactor = 100.0 / $ymax;
643
-		} else {
644
-			$scalefactor = 0;
645
-		}
646
-		$datastring = 'chd=t:';
647
-		for ($i = 0; $i < $stop; $i++) {
648
-			if (isset($ydata[$i])) {
649
-				foreach ($ydata[$i] as $j => $data) {
650
-					if ($j > 0) {
651
-						$datastring .= ',';
652
-					}
653
-					if ($yt[$i] > 0) {
654
-						$datastring .= round($data / $yt[$i] * 100 * $scalefactor, 1);
655
-					} else {
656
-						$datastring .= '0';
657
-					}
658
-				}
659
-				if ($i !== $stop - 1) {
660
-					$datastring .= '|';
661
-				}
662
-			}
663
-		}
664
-	} else {
665
-		for ($i = 0; $i < $stop; $i++) {
666
-			$ymax = max($ymax, max($ydata[$i]));
667
-		}
668
-		if ($ymax > 0) {
669
-			$scalefactor = 100.0 / $ymax;
670
-		} else {
671
-			$scalefactor = 0;
672
-		}
673
-		$datastring = 'chd=t:';
674
-		for ($i = 0; $i < $stop; $i++) {
675
-			foreach ($ydata[$i] as $j => $data) {
676
-				if ($j > 0) {
677
-					$datastring .= ',';
678
-				}
679
-				$datastring .= round($data * $scalefactor, 1);
680
-			}
681
-			if ($i !== $stop - 1) {
682
-				$datastring .= '|';
683
-			}
684
-		}
685
-	}
686
-	$colors      = array('0000FF', 'FFA0CB', '9F00FF', 'FF7000', '905030', 'FF0000', '00FF00', 'F0F000');
687
-	$colorstring = 'chco=';
688
-	for ($i = 0; $i < $stop; $i++) {
689
-		if (isset($colors[$i])) {
690
-			$colorstring .= $colors[$i];
691
-			if ($i !== ($stop - 1)) {
692
-				$colorstring .= ',';
693
-			}
694
-		}
695
-	}
622
+    if ($male_female) {
623
+        $stop = 2;
624
+    } else {
625
+        $stop = count($ydata);
626
+    }
627
+    if ($percentage) {
628
+        $ypercentmax = 0;
629
+        $yt          = array();
630
+        for ($i = 0; $i < $stop; $i++) {
631
+            if (isset($ydata[$i])) {
632
+                $ymax   = max($ydata[$i]);
633
+                $yt[$i] = array_sum($ydata[$i]);
634
+                if ($yt[$i] > 0) {
635
+                    $ypercent    = round($ymax / $yt[$i] * 100, 1);
636
+                    $ypercentmax = max($ypercentmax, $ypercent);
637
+                }
638
+            }
639
+        }
640
+        $ymax = $ypercentmax;
641
+        if ($ymax > 0) {
642
+            $scalefactor = 100.0 / $ymax;
643
+        } else {
644
+            $scalefactor = 0;
645
+        }
646
+        $datastring = 'chd=t:';
647
+        for ($i = 0; $i < $stop; $i++) {
648
+            if (isset($ydata[$i])) {
649
+                foreach ($ydata[$i] as $j => $data) {
650
+                    if ($j > 0) {
651
+                        $datastring .= ',';
652
+                    }
653
+                    if ($yt[$i] > 0) {
654
+                        $datastring .= round($data / $yt[$i] * 100 * $scalefactor, 1);
655
+                    } else {
656
+                        $datastring .= '0';
657
+                    }
658
+                }
659
+                if ($i !== $stop - 1) {
660
+                    $datastring .= '|';
661
+                }
662
+            }
663
+        }
664
+    } else {
665
+        for ($i = 0; $i < $stop; $i++) {
666
+            $ymax = max($ymax, max($ydata[$i]));
667
+        }
668
+        if ($ymax > 0) {
669
+            $scalefactor = 100.0 / $ymax;
670
+        } else {
671
+            $scalefactor = 0;
672
+        }
673
+        $datastring = 'chd=t:';
674
+        for ($i = 0; $i < $stop; $i++) {
675
+            foreach ($ydata[$i] as $j => $data) {
676
+                if ($j > 0) {
677
+                    $datastring .= ',';
678
+                }
679
+                $datastring .= round($data * $scalefactor, 1);
680
+            }
681
+            if ($i !== $stop - 1) {
682
+                $datastring .= '|';
683
+            }
684
+        }
685
+    }
686
+    $colors      = array('0000FF', 'FFA0CB', '9F00FF', 'FF7000', '905030', 'FF0000', '00FF00', 'F0F000');
687
+    $colorstring = 'chco=';
688
+    for ($i = 0; $i < $stop; $i++) {
689
+        if (isset($colors[$i])) {
690
+            $colorstring .= $colors[$i];
691
+            if ($i !== ($stop - 1)) {
692
+                $colorstring .= ',';
693
+            }
694
+        }
695
+    }
696 696
 
697
-	$titleLength = strpos($mytitle . "\n", "\n");
698
-	$title       = substr($mytitle, 0, $titleLength);
697
+    $titleLength = strpos($mytitle . "\n", "\n");
698
+    $title       = substr($mytitle, 0, $titleLength);
699 699
 
700
-	$imgurl = 'https://chart.googleapis.com/chart?cht=bvg&amp;chs=950x300&amp;chf=bg,s,ffffff00|c,s,ffffff00&amp;chtt=' . rawurlencode($title) . '&amp;' . $datastring . '&amp;' . $colorstring . '&amp;chbh=';
701
-	if (count($ydata) > 3) {
702
-		$imgurl .= '5,1';
703
-	} elseif (count($ydata) < 2) {
704
-		$imgurl .= '45,1';
705
-	} else {
706
-		$imgurl .= '20,3';
707
-	}
708
-	$imgurl .= '&amp;chxt=x,x,y,y&amp;chxl=0:|';
709
-	foreach ($xdata as $data) {
710
-		$imgurl .= rawurlencode($data) . '|';
711
-	}
700
+    $imgurl = 'https://chart.googleapis.com/chart?cht=bvg&amp;chs=950x300&amp;chf=bg,s,ffffff00|c,s,ffffff00&amp;chtt=' . rawurlencode($title) . '&amp;' . $datastring . '&amp;' . $colorstring . '&amp;chbh=';
701
+    if (count($ydata) > 3) {
702
+        $imgurl .= '5,1';
703
+    } elseif (count($ydata) < 2) {
704
+        $imgurl .= '45,1';
705
+    } else {
706
+        $imgurl .= '20,3';
707
+    }
708
+    $imgurl .= '&amp;chxt=x,x,y,y&amp;chxl=0:|';
709
+    foreach ($xdata as $data) {
710
+        $imgurl .= rawurlencode($data) . '|';
711
+    }
712 712
 
713
-	$imgurl .= '1:||||' . rawurlencode($xtitle) . '|2:|';
714
-	$imgurl .= '0|';
715
-	if ($percentage) {
716
-		for ($i = 1; $i < 11; $i++) {
717
-			if ($ymax < 11) {
718
-				$imgurl .= round($ymax * $i / 10, 1) . '|';
719
-			} else {
720
-				$imgurl .= round($ymax * $i / 10, 0) . '|';
721
-			}
722
-		}
723
-		$imgurl .= '3:||%|';
724
-	} else {
725
-		if ($ymax < 11) {
726
-			for ($i = 1; $i < $ymax + 1; $i++) {
727
-				$imgurl .= round($ymax * $i / ($ymax), 0) . '|';
728
-			}
729
-		} else {
730
-			for ($i = 1; $i < 11; $i++) {
731
-				$imgurl .= round($ymax * $i / 10, 0) . '|';
732
-			}
733
-		}
734
-		$imgurl .= '3:||' . rawurlencode($ytitle) . '|';
735
-	}
736
-	// Only show legend if y-data is non-2-dimensional
737
-	if (count($ydata) > 1) {
738
-		$imgurl .= '&amp;chdl=';
739
-		foreach ($legend as $i => $data) {
740
-			if ($i > 0) {
741
-				$imgurl .= '|';
742
-			}
743
-			$imgurl .= rawurlencode($data);
744
-		}
745
-	}
746
-	$title = strstr($mytitle, '|', true);
747
-	echo '<img src="', $imgurl, '" width="950" height="300" alt="', Filter::escapeHtml($title), '" title="', Filter::escapeHtml($title), '">';
713
+    $imgurl .= '1:||||' . rawurlencode($xtitle) . '|2:|';
714
+    $imgurl .= '0|';
715
+    if ($percentage) {
716
+        for ($i = 1; $i < 11; $i++) {
717
+            if ($ymax < 11) {
718
+                $imgurl .= round($ymax * $i / 10, 1) . '|';
719
+            } else {
720
+                $imgurl .= round($ymax * $i / 10, 0) . '|';
721
+            }
722
+        }
723
+        $imgurl .= '3:||%|';
724
+    } else {
725
+        if ($ymax < 11) {
726
+            for ($i = 1; $i < $ymax + 1; $i++) {
727
+                $imgurl .= round($ymax * $i / ($ymax), 0) . '|';
728
+            }
729
+        } else {
730
+            for ($i = 1; $i < 11; $i++) {
731
+                $imgurl .= round($ymax * $i / 10, 0) . '|';
732
+            }
733
+        }
734
+        $imgurl .= '3:||' . rawurlencode($ytitle) . '|';
735
+    }
736
+    // Only show legend if y-data is non-2-dimensional
737
+    if (count($ydata) > 1) {
738
+        $imgurl .= '&amp;chdl=';
739
+        foreach ($legend as $i => $data) {
740
+            if ($i > 0) {
741
+                $imgurl .= '|';
742
+            }
743
+            $imgurl .= rawurlencode($data);
744
+        }
745
+    }
746
+    $title = strstr($mytitle, '|', true);
747
+    echo '<img src="', $imgurl, '" width="950" height="300" alt="', Filter::escapeHtml($title), '" title="', Filter::escapeHtml($title), '">';
748 748
 }
749 749
 
750 750
 /**
@@ -753,44 +753,44 @@  discard block
 block discarded – undo
753 753
  * @param string $x_axis_boundaries
754 754
  */
755 755
 function calculate_axis($x_axis_boundaries) {
756
-	global $x_axis, $xdata, $xmax, $x_boundaries;
756
+    global $x_axis, $xdata, $xmax, $x_boundaries;
757 757
 
758
-	// Calculate xdata and zdata elements out of chart values
759
-	$hulpar = explode(',', $x_axis_boundaries);
760
-	$i      = 1;
761
-	if ($x_axis === 21 && $hulpar[0] == 1) {
762
-		$xdata[0] = 0;
763
-	} else {
764
-		$xdata[0] = format_range_of_numbers(0, $hulpar[0]);
765
-	}
766
-	$x_boundaries[0] = $hulpar[0] - 1;
767
-	while (isset($hulpar[$i])) {
768
-		$i1 = $i - 1;
769
-		if (($hulpar[$i] - $hulpar[$i1]) === 1) {
770
-			$xdata[$i]        = $hulpar[$i1];
771
-			$x_boundaries[$i] = $hulpar[$i1];
772
-		} elseif ($hulpar[$i1] === $hulpar[0]) {
773
-			$xdata[$i]        = format_range_of_numbers($hulpar[$i1], $hulpar[$i]);
774
-			$x_boundaries[$i] = $hulpar[$i];
775
-		} else {
776
-			$xdata[$i]        = format_range_of_numbers($hulpar[$i1] + 1, $hulpar[$i]);
777
-			$x_boundaries[$i] = $hulpar[$i];
778
-		}
779
-		$i++;
780
-	}
781
-	$xdata[$i]        = $hulpar[$i - 1];
782
-	$x_boundaries[$i] = $hulpar[$i - 1];
783
-	if ($hulpar[$i - 1] === $i) {
784
-		$xmax = $i + 1;
785
-	} else {
786
-		$xmax = $i;
787
-	}
788
-	$xdata[$xmax]        = /* I18N: Label on a graph; 40+ means 40 or more */ I18N::translate('%s+', I18N::number($hulpar[$i - 1]));
789
-	$x_boundaries[$xmax] = 10000;
790
-	$xmax                = $xmax + 1;
791
-	if ($xmax > 20) {
792
-		$xmax = 20;
793
-	}
758
+    // Calculate xdata and zdata elements out of chart values
759
+    $hulpar = explode(',', $x_axis_boundaries);
760
+    $i      = 1;
761
+    if ($x_axis === 21 && $hulpar[0] == 1) {
762
+        $xdata[0] = 0;
763
+    } else {
764
+        $xdata[0] = format_range_of_numbers(0, $hulpar[0]);
765
+    }
766
+    $x_boundaries[0] = $hulpar[0] - 1;
767
+    while (isset($hulpar[$i])) {
768
+        $i1 = $i - 1;
769
+        if (($hulpar[$i] - $hulpar[$i1]) === 1) {
770
+            $xdata[$i]        = $hulpar[$i1];
771
+            $x_boundaries[$i] = $hulpar[$i1];
772
+        } elseif ($hulpar[$i1] === $hulpar[0]) {
773
+            $xdata[$i]        = format_range_of_numbers($hulpar[$i1], $hulpar[$i]);
774
+            $x_boundaries[$i] = $hulpar[$i];
775
+        } else {
776
+            $xdata[$i]        = format_range_of_numbers($hulpar[$i1] + 1, $hulpar[$i]);
777
+            $x_boundaries[$i] = $hulpar[$i];
778
+        }
779
+        $i++;
780
+    }
781
+    $xdata[$i]        = $hulpar[$i - 1];
782
+    $x_boundaries[$i] = $hulpar[$i - 1];
783
+    if ($hulpar[$i - 1] === $i) {
784
+        $xmax = $i + 1;
785
+    } else {
786
+        $xmax = $i;
787
+    }
788
+    $xdata[$xmax]        = /* I18N: Label on a graph; 40+ means 40 or more */ I18N::translate('%s+', I18N::number($hulpar[$i - 1]));
789
+    $x_boundaries[$xmax] = 10000;
790
+    $xmax                = $xmax + 1;
791
+    if ($xmax > 20) {
792
+        $xmax = 20;
793
+    }
794 794
 }
795 795
 
796 796
 /**
@@ -802,11 +802,11 @@  discard block
 block discarded – undo
802 802
  * @return string
803 803
  */
804 804
 function format_range_of_numbers($x, $y) {
805
-	return /* I18N: A range of numbers */ I18N::translate(
806
-		'%1$s–%2$s',
807
-		I18N::number($x),
808
-		I18N::number($y)
809
-	);
805
+    return /* I18N: A range of numbers */ I18N::translate(
806
+        '%1$s–%2$s',
807
+        I18N::number($x),
808
+        I18N::number($y)
809
+    );
810 810
 }
811 811
 
812 812
 /**
@@ -815,30 +815,30 @@  discard block
 block discarded – undo
815 815
  * @param string $boundaries_z_axis
816 816
  */
817 817
 function calculate_legend($boundaries_z_axis) {
818
-	global $legend, $zmax, $z_boundaries;
818
+    global $legend, $zmax, $z_boundaries;
819 819
 
820
-	// calculate the legend values
821
-	$hulpar          = explode(',', $boundaries_z_axis);
822
-	$i               = 1;
823
-	$date            = new Date('BEF ' . $hulpar[0]);
824
-	$legend[0]       = strip_tags($date->display());
825
-	$z_boundaries[0] = $hulpar[0] - 1;
826
-	while (isset($hulpar[$i])) {
827
-		$i1               = $i - 1;
828
-		$date             = new Date('BET ' . $hulpar[$i1] . ' AND ' . ($hulpar[$i] - 1));
829
-		$legend[$i]       = strip_tags($date->display());
830
-		$z_boundaries[$i] = $hulpar[$i] - 1;
831
-		$i++;
832
-	}
833
-	$zmax                = $i;
834
-	$zmax1               = $zmax - 1;
835
-	$date                = new Date('AFT ' . $hulpar[$zmax1]);
836
-	$legend[$zmax]       = strip_tags($date->display());
837
-	$z_boundaries[$zmax] = 10000;
838
-	$zmax                = $zmax + 1;
839
-	if ($zmax > 8) {
840
-		$zmax = 8;
841
-	}
820
+    // calculate the legend values
821
+    $hulpar          = explode(',', $boundaries_z_axis);
822
+    $i               = 1;
823
+    $date            = new Date('BEF ' . $hulpar[0]);
824
+    $legend[0]       = strip_tags($date->display());
825
+    $z_boundaries[0] = $hulpar[0] - 1;
826
+    while (isset($hulpar[$i])) {
827
+        $i1               = $i - 1;
828
+        $date             = new Date('BET ' . $hulpar[$i1] . ' AND ' . ($hulpar[$i] - 1));
829
+        $legend[$i]       = strip_tags($date->display());
830
+        $z_boundaries[$i] = $hulpar[$i] - 1;
831
+        $i++;
832
+    }
833
+    $zmax                = $i;
834
+    $zmax1               = $zmax - 1;
835
+    $date                = new Date('AFT ' . $hulpar[$zmax1]);
836
+    $legend[$zmax]       = strip_tags($date->display());
837
+    $z_boundaries[$zmax] = 10000;
838
+    $zmax                = $zmax + 1;
839
+    if ($zmax > 8) {
840
+        $zmax = 8;
841
+    }
842 842
 }
843 843
 
844 844
 global $legend, $xdata, $ydata, $xmax, $zmax, $z_boundaries, $xgiven, $zgiven, $percentage, $male_female;
@@ -853,527 +853,527 @@  discard block
 block discarded – undo
853 853
 
854 854
 switch ($x_axis) {
855 855
 case '1':
856
-	echo $stats->chartDistribution(array(Filter::get('chart_shows'), Filter::get('chart_type'), Filter::get('SURN')));
857
-	break;
856
+    echo $stats->chartDistribution(array(Filter::get('chart_shows'), Filter::get('chart_type'), Filter::get('SURN')));
857
+    break;
858 858
 case '2':
859
-	echo $stats->chartDistribution(array(Filter::get('chart_shows'), 'birth_distribution_chart'));
860
-	break;
859
+    echo $stats->chartDistribution(array(Filter::get('chart_shows'), 'birth_distribution_chart'));
860
+    break;
861 861
 case '3':
862
-	echo $stats->chartDistribution(array(Filter::get('chart_shows'), 'death_distribution_chart'));
863
-	break;
862
+    echo $stats->chartDistribution(array(Filter::get('chart_shows'), 'death_distribution_chart'));
863
+    break;
864 864
 case '4':
865
-	echo $stats->chartDistribution(array(Filter::get('chart_shows'), 'marriage_distribution_chart'));
866
-	break;
865
+    echo $stats->chartDistribution(array(Filter::get('chart_shows'), 'marriage_distribution_chart'));
866
+    break;
867 867
 case '11':
868
-	$monthdata = array();
869
-	for ($i = 0; $i < 12; ++$i) {
870
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
871
-	}
872
-	$xgiven            = true;
873
-	$zgiven            = false;
874
-	$title             = I18N::translate('Month of birth');
875
-	$xtitle            = I18N::translate('month');
876
-	$ytitle            = I18N::translate('numbers');
877
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
878
-	$xdata             = $monthdata;
879
-	$xmax              = 12;
880
-	if ($z_axis !== 300 && $z_axis !== 301) {
881
-		calculate_legend($boundaries_z_axis);
882
-	}
883
-	$percentage = false;
884
-	if ($y_axis === 201) {
885
-		$percentage = false;
886
-		$ytitle     = I18N::translate('Individuals');
887
-	} elseif ($y_axis === 202) {
888
-		$percentage = true;
889
-		$ytitle     = I18N::translate('percentage');
890
-	}
891
-	$male_female = false;
892
-	if ($z_axis === 300) {
893
-		$zgiven          = false;
894
-		$legend[0]       = 'all';
895
-		$zmax            = 1;
896
-		$z_boundaries[0] = 100000;
897
-	} elseif ($z_axis === 301) {
898
-		$male_female = true;
899
-		$zgiven      = true;
900
-		$legend[0]   = I18N::translate('Male');
901
-		$legend[1]   = I18N::translate('Female');
902
-		$zmax        = 2;
903
-		$xtitle      = $xtitle . I18N::translate(' per gender');
904
-	} elseif ($z_axis === 302) {
905
-		$xtitle = $xtitle . I18N::translate(' per time period');
906
-	}
907
-	//-- reset the data array
908
-	for ($i = 0; $i < $zmax; $i++) {
909
-		for ($j = 0; $j < $xmax; $j++) {
910
-			$ydata[$i][$j] = 0;
911
-		}
912
-	}
913
-	$total = month_of_birth($z_axis, $z_boundaries, $stats);
914
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
915
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
916
-	break;
868
+    $monthdata = array();
869
+    for ($i = 0; $i < 12; ++$i) {
870
+        $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
871
+    }
872
+    $xgiven            = true;
873
+    $zgiven            = false;
874
+    $title             = I18N::translate('Month of birth');
875
+    $xtitle            = I18N::translate('month');
876
+    $ytitle            = I18N::translate('numbers');
877
+    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
878
+    $xdata             = $monthdata;
879
+    $xmax              = 12;
880
+    if ($z_axis !== 300 && $z_axis !== 301) {
881
+        calculate_legend($boundaries_z_axis);
882
+    }
883
+    $percentage = false;
884
+    if ($y_axis === 201) {
885
+        $percentage = false;
886
+        $ytitle     = I18N::translate('Individuals');
887
+    } elseif ($y_axis === 202) {
888
+        $percentage = true;
889
+        $ytitle     = I18N::translate('percentage');
890
+    }
891
+    $male_female = false;
892
+    if ($z_axis === 300) {
893
+        $zgiven          = false;
894
+        $legend[0]       = 'all';
895
+        $zmax            = 1;
896
+        $z_boundaries[0] = 100000;
897
+    } elseif ($z_axis === 301) {
898
+        $male_female = true;
899
+        $zgiven      = true;
900
+        $legend[0]   = I18N::translate('Male');
901
+        $legend[1]   = I18N::translate('Female');
902
+        $zmax        = 2;
903
+        $xtitle      = $xtitle . I18N::translate(' per gender');
904
+    } elseif ($z_axis === 302) {
905
+        $xtitle = $xtitle . I18N::translate(' per time period');
906
+    }
907
+    //-- reset the data array
908
+    for ($i = 0; $i < $zmax; $i++) {
909
+        for ($j = 0; $j < $xmax; $j++) {
910
+            $ydata[$i][$j] = 0;
911
+        }
912
+    }
913
+    $total = month_of_birth($z_axis, $z_boundaries, $stats);
914
+    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
915
+    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
916
+    break;
917 917
 case '12':
918
-	$monthdata = array();
919
-	for ($i = 0; $i < 12; ++$i) {
920
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
921
-	}
922
-	$xgiven            = true;
923
-	$zgiven            = false;
924
-	$title             = I18N::translate('Month of death');
925
-	$xtitle            = I18N::translate('month');
926
-	$ytitle            = I18N::translate('numbers');
927
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
928
-	$xdata             = $monthdata;
929
-	$xmax              = 12;
930
-	if ($z_axis !== 300 && $z_axis !== 301) {
931
-		calculate_legend($boundaries_z_axis);
932
-	}
933
-	$percentage = false;
934
-	if ($y_axis === 201) {
935
-		$percentage = false;
936
-		$ytitle     = I18N::translate('Individuals');
937
-	} elseif ($y_axis === 202) {
938
-		$percentage = true;
939
-		$ytitle     = I18N::translate('percentage');
940
-	}
941
-	$male_female = false;
942
-	if ($z_axis === 300) {
943
-		$zgiven          = false;
944
-		$legend[0]       = 'all';
945
-		$zmax            = 1;
946
-		$z_boundaries[0] = 100000;
947
-	} elseif ($z_axis === 301) {
948
-		$male_female = true;
949
-		$zgiven      = true;
950
-		$legend[0]   = I18N::translate('Male');
951
-		$legend[1]   = I18N::translate('Female');
952
-		$zmax        = 2;
953
-		$xtitle      = $xtitle . I18N::translate(' per gender');
954
-	} elseif ($z_axis === 302) {
955
-		$xtitle = $xtitle . I18N::translate(' per time period');
956
-	}
957
-	//-- reset the data array
958
-	for ($i = 0; $i < $zmax; $i++) {
959
-		for ($j = 0; $j < $xmax; $j++) {
960
-			$ydata[$i][$j] = 0;
961
-		}
962
-	}
963
-	$total = month_of_death($z_axis, $z_boundaries, $stats);
964
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
965
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
966
-	break;
918
+    $monthdata = array();
919
+    for ($i = 0; $i < 12; ++$i) {
920
+        $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
921
+    }
922
+    $xgiven            = true;
923
+    $zgiven            = false;
924
+    $title             = I18N::translate('Month of death');
925
+    $xtitle            = I18N::translate('month');
926
+    $ytitle            = I18N::translate('numbers');
927
+    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
928
+    $xdata             = $monthdata;
929
+    $xmax              = 12;
930
+    if ($z_axis !== 300 && $z_axis !== 301) {
931
+        calculate_legend($boundaries_z_axis);
932
+    }
933
+    $percentage = false;
934
+    if ($y_axis === 201) {
935
+        $percentage = false;
936
+        $ytitle     = I18N::translate('Individuals');
937
+    } elseif ($y_axis === 202) {
938
+        $percentage = true;
939
+        $ytitle     = I18N::translate('percentage');
940
+    }
941
+    $male_female = false;
942
+    if ($z_axis === 300) {
943
+        $zgiven          = false;
944
+        $legend[0]       = 'all';
945
+        $zmax            = 1;
946
+        $z_boundaries[0] = 100000;
947
+    } elseif ($z_axis === 301) {
948
+        $male_female = true;
949
+        $zgiven      = true;
950
+        $legend[0]   = I18N::translate('Male');
951
+        $legend[1]   = I18N::translate('Female');
952
+        $zmax        = 2;
953
+        $xtitle      = $xtitle . I18N::translate(' per gender');
954
+    } elseif ($z_axis === 302) {
955
+        $xtitle = $xtitle . I18N::translate(' per time period');
956
+    }
957
+    //-- reset the data array
958
+    for ($i = 0; $i < $zmax; $i++) {
959
+        for ($j = 0; $j < $xmax; $j++) {
960
+            $ydata[$i][$j] = 0;
961
+        }
962
+    }
963
+    $total = month_of_death($z_axis, $z_boundaries, $stats);
964
+    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
965
+    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
966
+    break;
967 967
 case '13':
968
-	$monthdata = array();
969
-	for ($i = 0; $i < 12; ++$i) {
970
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
971
-	}
968
+    $monthdata = array();
969
+    for ($i = 0; $i < 12; ++$i) {
970
+        $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
971
+    }
972 972
 
973
-	if ($z_axis === 301) {
974
-		$z_axis = 300;
975
-	}
976
-	$xgiven            = true;
977
-	$zgiven            = false;
978
-	$title             = I18N::translate('Month of marriage');
979
-	$xtitle            = I18N::translate('month');
980
-	$ytitle            = I18N::translate('numbers');
981
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
982
-	$xdata             = $monthdata;
983
-	$xmax              = 12;
984
-	if ($z_axis !== 300 && $z_axis !== 301) {
985
-		calculate_legend($boundaries_z_axis);
986
-	}
987
-	$percentage = false;
988
-	if ($y_axis === 201) {
989
-		$percentage = false;
990
-		$ytitle     = I18N::translate('Families');
991
-	} elseif ($y_axis === 202) {
992
-		$percentage = true;
993
-		$ytitle     = I18N::translate('percentage');
994
-	}
995
-	$male_female = false;
996
-	if ($z_axis === 300) {
997
-		$zgiven          = false;
998
-		$legend[0]       = 'all';
999
-		$zmax            = 1;
1000
-		$z_boundaries[0] = 100000;
1001
-	} elseif ($z_axis === 301) {
1002
-		$male_female = true;
1003
-		$zgiven      = true;
1004
-		$legend[0]   = I18N::translate('Male');
1005
-		$legend[1]   = I18N::translate('Female');
1006
-		$zmax        = 2;
1007
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1008
-	} elseif ($z_axis === 302) {
1009
-		$xtitle = $xtitle . I18N::translate(' per time period');
1010
-	}
1011
-	//-- reset the data array
1012
-	for ($i = 0; $i < $zmax; $i++) {
1013
-		for ($j = 0; $j < $xmax; $j++) {
1014
-			$ydata[$i][$j] = 0;
1015
-		}
1016
-	}
1017
-	$total = month_of_marriage($z_axis, $z_boundaries, $stats);
1018
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalFamilies();
1019
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1020
-	break;
973
+    if ($z_axis === 301) {
974
+        $z_axis = 300;
975
+    }
976
+    $xgiven            = true;
977
+    $zgiven            = false;
978
+    $title             = I18N::translate('Month of marriage');
979
+    $xtitle            = I18N::translate('month');
980
+    $ytitle            = I18N::translate('numbers');
981
+    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
982
+    $xdata             = $monthdata;
983
+    $xmax              = 12;
984
+    if ($z_axis !== 300 && $z_axis !== 301) {
985
+        calculate_legend($boundaries_z_axis);
986
+    }
987
+    $percentage = false;
988
+    if ($y_axis === 201) {
989
+        $percentage = false;
990
+        $ytitle     = I18N::translate('Families');
991
+    } elseif ($y_axis === 202) {
992
+        $percentage = true;
993
+        $ytitle     = I18N::translate('percentage');
994
+    }
995
+    $male_female = false;
996
+    if ($z_axis === 300) {
997
+        $zgiven          = false;
998
+        $legend[0]       = 'all';
999
+        $zmax            = 1;
1000
+        $z_boundaries[0] = 100000;
1001
+    } elseif ($z_axis === 301) {
1002
+        $male_female = true;
1003
+        $zgiven      = true;
1004
+        $legend[0]   = I18N::translate('Male');
1005
+        $legend[1]   = I18N::translate('Female');
1006
+        $zmax        = 2;
1007
+        $xtitle      = $xtitle . I18N::translate(' per gender');
1008
+    } elseif ($z_axis === 302) {
1009
+        $xtitle = $xtitle . I18N::translate(' per time period');
1010
+    }
1011
+    //-- reset the data array
1012
+    for ($i = 0; $i < $zmax; $i++) {
1013
+        for ($j = 0; $j < $xmax; $j++) {
1014
+            $ydata[$i][$j] = 0;
1015
+        }
1016
+    }
1017
+    $total = month_of_marriage($z_axis, $z_boundaries, $stats);
1018
+    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalFamilies();
1019
+    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1020
+    break;
1021 1021
 case '14':
1022
-	$monthdata = array();
1023
-	for ($i = 0; $i < 12; ++$i) {
1024
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1025
-	}
1026
-	$xgiven            = true;
1027
-	$zgiven            = false;
1028
-	$title             = I18N::translate('Month of birth of first child in a relation');
1029
-	$xtitle            = I18N::translate('month');
1030
-	$ytitle            = I18N::translate('numbers');
1031
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1032
-	$xdata             = $monthdata;
1033
-	$xmax              = 12;
1034
-	if ($z_axis !== 300 && $z_axis !== 301) {
1035
-		calculate_legend($boundaries_z_axis);
1036
-	}
1037
-	$percentage = false;
1038
-	if ($y_axis === 201) {
1039
-		$percentage = false;
1040
-		$ytitle     = I18N::translate('Children');
1041
-	} elseif ($y_axis === 202) {
1042
-		$percentage = true;
1043
-		$ytitle     = I18N::translate('percentage');
1044
-	}
1045
-	$male_female = false;
1046
-	if ($z_axis === 300) {
1047
-		$zgiven          = false;
1048
-		$legend[0]       = 'all';
1049
-		$zmax            = 1;
1050
-		$z_boundaries[0] = 100000;
1051
-	} elseif ($z_axis === 301) {
1052
-		$male_female = true;
1053
-		$zgiven      = true;
1054
-		$legend[0]   = I18N::translate('Male');
1055
-		$legend[1]   = I18N::translate('Female');
1056
-		$zmax        = 2;
1057
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1058
-	} elseif ($z_axis === 302) {
1059
-		$xtitle = $xtitle . I18N::translate(' per time period');
1060
-	}
1061
-	//-- reset the data array
1062
-	for ($i = 0; $i < $zmax; $i++) {
1063
-		for ($j = 0; $j < $xmax; $j++) {
1064
-			$ydata[$i][$j] = 0;
1065
-		}
1066
-	}
1067
-	$total = month_of_birth_of_first_child($z_axis, $z_boundaries, $stats);
1068
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalFamilies();
1069
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1070
-	break;
1022
+    $monthdata = array();
1023
+    for ($i = 0; $i < 12; ++$i) {
1024
+        $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1025
+    }
1026
+    $xgiven            = true;
1027
+    $zgiven            = false;
1028
+    $title             = I18N::translate('Month of birth of first child in a relation');
1029
+    $xtitle            = I18N::translate('month');
1030
+    $ytitle            = I18N::translate('numbers');
1031
+    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1032
+    $xdata             = $monthdata;
1033
+    $xmax              = 12;
1034
+    if ($z_axis !== 300 && $z_axis !== 301) {
1035
+        calculate_legend($boundaries_z_axis);
1036
+    }
1037
+    $percentage = false;
1038
+    if ($y_axis === 201) {
1039
+        $percentage = false;
1040
+        $ytitle     = I18N::translate('Children');
1041
+    } elseif ($y_axis === 202) {
1042
+        $percentage = true;
1043
+        $ytitle     = I18N::translate('percentage');
1044
+    }
1045
+    $male_female = false;
1046
+    if ($z_axis === 300) {
1047
+        $zgiven          = false;
1048
+        $legend[0]       = 'all';
1049
+        $zmax            = 1;
1050
+        $z_boundaries[0] = 100000;
1051
+    } elseif ($z_axis === 301) {
1052
+        $male_female = true;
1053
+        $zgiven      = true;
1054
+        $legend[0]   = I18N::translate('Male');
1055
+        $legend[1]   = I18N::translate('Female');
1056
+        $zmax        = 2;
1057
+        $xtitle      = $xtitle . I18N::translate(' per gender');
1058
+    } elseif ($z_axis === 302) {
1059
+        $xtitle = $xtitle . I18N::translate(' per time period');
1060
+    }
1061
+    //-- reset the data array
1062
+    for ($i = 0; $i < $zmax; $i++) {
1063
+        for ($j = 0; $j < $xmax; $j++) {
1064
+            $ydata[$i][$j] = 0;
1065
+        }
1066
+    }
1067
+    $total = month_of_birth_of_first_child($z_axis, $z_boundaries, $stats);
1068
+    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalFamilies();
1069
+    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1070
+    break;
1071 1071
 case '15':
1072
-	$monthdata = array();
1073
-	for ($i = 0; $i < 12; ++$i) {
1074
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1075
-	}
1072
+    $monthdata = array();
1073
+    for ($i = 0; $i < 12; ++$i) {
1074
+        $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1075
+    }
1076 1076
 
1077
-	if ($z_axis === 301) {
1078
-		$z_axis = 300;
1079
-	}
1080
-	$xgiven            = true;
1081
-	$zgiven            = false;
1082
-	$title             = I18N::translate('Month of first marriage');
1083
-	$xtitle            = I18N::translate('month');
1084
-	$ytitle            = I18N::translate('numbers');
1085
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1086
-	$xdata             = $monthdata;
1087
-	$xmax              = 12;
1088
-	if ($z_axis !== 300 && $z_axis !== 301) {
1089
-		calculate_legend($boundaries_z_axis);
1090
-	}
1091
-	$percentage = false;
1092
-	if ($y_axis === 201) {
1093
-		$percentage = false;
1094
-		$ytitle     = I18N::translate('Families');
1095
-	} elseif ($y_axis === 202) {
1096
-		$percentage = true;
1097
-		$ytitle     = I18N::translate('percentage');
1098
-	}
1099
-	$male_female = false;
1100
-	if ($z_axis === 300) {
1101
-		$zgiven          = false;
1102
-		$legend[0]       = 'all';
1103
-		$zmax            = 1;
1104
-		$z_boundaries[0] = 100000;
1105
-	} elseif ($z_axis === 301) {
1106
-		$male_female = true;
1107
-		$zgiven      = true;
1108
-		$legend[0]   = I18N::translate('Male');
1109
-		$legend[1]   = I18N::translate('Female');
1110
-		$zmax        = 2;
1111
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1112
-	} elseif ($z_axis === 302) {
1113
-		$xtitle = $xtitle . I18N::translate(' per time period');
1114
-	}
1115
-	//-- reset the data array
1116
-	for ($i = 0; $i < $zmax; $i++) {
1117
-		for ($j = 0; $j < $xmax; $j++) {
1118
-			$ydata[$i][$j] = 0;
1119
-		}
1120
-	}
1121
-	$total = month_of_first_marriage($z_axis, $z_boundaries, $stats);
1122
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalFamilies();
1123
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1124
-	break;
1077
+    if ($z_axis === 301) {
1078
+        $z_axis = 300;
1079
+    }
1080
+    $xgiven            = true;
1081
+    $zgiven            = false;
1082
+    $title             = I18N::translate('Month of first marriage');
1083
+    $xtitle            = I18N::translate('month');
1084
+    $ytitle            = I18N::translate('numbers');
1085
+    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1086
+    $xdata             = $monthdata;
1087
+    $xmax              = 12;
1088
+    if ($z_axis !== 300 && $z_axis !== 301) {
1089
+        calculate_legend($boundaries_z_axis);
1090
+    }
1091
+    $percentage = false;
1092
+    if ($y_axis === 201) {
1093
+        $percentage = false;
1094
+        $ytitle     = I18N::translate('Families');
1095
+    } elseif ($y_axis === 202) {
1096
+        $percentage = true;
1097
+        $ytitle     = I18N::translate('percentage');
1098
+    }
1099
+    $male_female = false;
1100
+    if ($z_axis === 300) {
1101
+        $zgiven          = false;
1102
+        $legend[0]       = 'all';
1103
+        $zmax            = 1;
1104
+        $z_boundaries[0] = 100000;
1105
+    } elseif ($z_axis === 301) {
1106
+        $male_female = true;
1107
+        $zgiven      = true;
1108
+        $legend[0]   = I18N::translate('Male');
1109
+        $legend[1]   = I18N::translate('Female');
1110
+        $zmax        = 2;
1111
+        $xtitle      = $xtitle . I18N::translate(' per gender');
1112
+    } elseif ($z_axis === 302) {
1113
+        $xtitle = $xtitle . I18N::translate(' per time period');
1114
+    }
1115
+    //-- reset the data array
1116
+    for ($i = 0; $i < $zmax; $i++) {
1117
+        for ($j = 0; $j < $xmax; $j++) {
1118
+            $ydata[$i][$j] = 0;
1119
+        }
1120
+    }
1121
+    $total = month_of_first_marriage($z_axis, $z_boundaries, $stats);
1122
+    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalFamilies();
1123
+    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1124
+    break;
1125 1125
 case '17':
1126
-	$monthdata = array();
1127
-	for ($i = 0; $i < 12; ++$i) {
1128
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1129
-	}
1130
-	$xgiven            = false;
1131
-	$zgiven            = false;
1132
-	$title             = I18N::translate('Age related to birth year');
1133
-	$xtitle            = I18N::translate('age');
1134
-	$ytitle            = I18N::translate('numbers');
1135
-	$boundaries_x_axis = Filter::get('x-axis-boundaries-ages');
1136
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1137
-	calculate_axis($boundaries_x_axis);
1138
-	if ($z_axis !== 300 && $z_axis !== 301) {
1139
-		calculate_legend($boundaries_z_axis);
1140
-	}
1141
-	$percentage = false;
1142
-	if ($y_axis === 201) {
1143
-		$percentage = false;
1144
-		$ytitle     = I18N::translate('Individuals');
1145
-	} elseif ($y_axis === 202) {
1146
-		$percentage = true;
1147
-		$ytitle     = I18N::translate('percentage');
1148
-	}
1149
-	$male_female = false;
1150
-	if ($z_axis === 300) {
1151
-		$zgiven          = false;
1152
-		$legend[0]       = 'all';
1153
-		$zmax            = 1;
1154
-		$z_boundaries[0] = 100000;
1155
-	} elseif ($z_axis === 301) {
1156
-		$male_female = true;
1157
-		$zgiven      = true;
1158
-		$legend[0]   = I18N::translate('Male');
1159
-		$legend[1]   = I18N::translate('Female');
1160
-		$zmax        = 2;
1161
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1162
-	} elseif ($z_axis === 302) {
1163
-		$xtitle = $xtitle . I18N::translate(' per time period');
1164
-	}
1165
-	//-- reset the data array
1166
-	for ($i = 0; $i < $zmax; $i++) {
1167
-		for ($j = 0; $j < $xmax; $j++) {
1168
-			$ydata[$i][$j] = 0;
1169
-		}
1170
-	}
1171
-	$total = lifespan_by_birth_year($z_axis, $z_boundaries, $stats);
1172
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1173
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1174
-	break;
1126
+    $monthdata = array();
1127
+    for ($i = 0; $i < 12; ++$i) {
1128
+        $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1129
+    }
1130
+    $xgiven            = false;
1131
+    $zgiven            = false;
1132
+    $title             = I18N::translate('Age related to birth year');
1133
+    $xtitle            = I18N::translate('age');
1134
+    $ytitle            = I18N::translate('numbers');
1135
+    $boundaries_x_axis = Filter::get('x-axis-boundaries-ages');
1136
+    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1137
+    calculate_axis($boundaries_x_axis);
1138
+    if ($z_axis !== 300 && $z_axis !== 301) {
1139
+        calculate_legend($boundaries_z_axis);
1140
+    }
1141
+    $percentage = false;
1142
+    if ($y_axis === 201) {
1143
+        $percentage = false;
1144
+        $ytitle     = I18N::translate('Individuals');
1145
+    } elseif ($y_axis === 202) {
1146
+        $percentage = true;
1147
+        $ytitle     = I18N::translate('percentage');
1148
+    }
1149
+    $male_female = false;
1150
+    if ($z_axis === 300) {
1151
+        $zgiven          = false;
1152
+        $legend[0]       = 'all';
1153
+        $zmax            = 1;
1154
+        $z_boundaries[0] = 100000;
1155
+    } elseif ($z_axis === 301) {
1156
+        $male_female = true;
1157
+        $zgiven      = true;
1158
+        $legend[0]   = I18N::translate('Male');
1159
+        $legend[1]   = I18N::translate('Female');
1160
+        $zmax        = 2;
1161
+        $xtitle      = $xtitle . I18N::translate(' per gender');
1162
+    } elseif ($z_axis === 302) {
1163
+        $xtitle = $xtitle . I18N::translate(' per time period');
1164
+    }
1165
+    //-- reset the data array
1166
+    for ($i = 0; $i < $zmax; $i++) {
1167
+        for ($j = 0; $j < $xmax; $j++) {
1168
+            $ydata[$i][$j] = 0;
1169
+        }
1170
+    }
1171
+    $total = lifespan_by_birth_year($z_axis, $z_boundaries, $stats);
1172
+    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1173
+    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1174
+    break;
1175 1175
 case '18':
1176
-	$monthdata = array();
1177
-	for ($i = 0; $i < 12; ++$i) {
1178
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1179
-	}
1180
-	$xgiven            = false;
1181
-	$zgiven            = false;
1182
-	$title             = I18N::translate('Age related to death year');
1183
-	$xtitle            = I18N::translate('age');
1184
-	$ytitle            = I18N::translate('numbers');
1185
-	$boundaries_x_axis = Filter::get('x-axis-boundaries-ages');
1186
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1187
-	calculate_axis($boundaries_x_axis);
1188
-	if ($z_axis !== 300 && $z_axis !== 301) {
1189
-		calculate_legend($boundaries_z_axis);
1190
-	}
1191
-	$percentage = false;
1192
-	if ($y_axis === 201) {
1193
-		$percentage = false;
1194
-		$ytitle     = I18N::translate('Individuals');
1195
-	} elseif ($y_axis === 202) {
1196
-		$percentage = true;
1197
-		$ytitle     = I18N::translate('percentage');
1198
-	}
1199
-	$male_female = false;
1200
-	if ($z_axis === 300) {
1201
-		$zgiven          = false;
1202
-		$legend[0]       = 'all';
1203
-		$zmax            = 1;
1204
-		$z_boundaries[0] = 100000;
1205
-	} elseif ($z_axis === 301) {
1206
-		$male_female = true;
1207
-		$zgiven      = true;
1208
-		$legend[0]   = I18N::translate('Male');
1209
-		$legend[1]   = I18N::translate('Female');
1210
-		$zmax        = 2;
1211
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1212
-	} elseif ($z_axis === 302) {
1213
-		$xtitle = $xtitle . I18N::translate(' per time period');
1214
-	}
1215
-	//-- reset the data array
1216
-	for ($i = 0; $i < $zmax; $i++) {
1217
-		for ($j = 0; $j < $xmax; $j++) {
1218
-			$ydata[$i][$j] = 0;
1219
-		}
1220
-	}
1221
-	$total = lifespan_by_death_year($z_axis, $z_boundaries, $stats);
1222
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1223
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1224
-	break;
1176
+    $monthdata = array();
1177
+    for ($i = 0; $i < 12; ++$i) {
1178
+        $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1179
+    }
1180
+    $xgiven            = false;
1181
+    $zgiven            = false;
1182
+    $title             = I18N::translate('Age related to death year');
1183
+    $xtitle            = I18N::translate('age');
1184
+    $ytitle            = I18N::translate('numbers');
1185
+    $boundaries_x_axis = Filter::get('x-axis-boundaries-ages');
1186
+    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1187
+    calculate_axis($boundaries_x_axis);
1188
+    if ($z_axis !== 300 && $z_axis !== 301) {
1189
+        calculate_legend($boundaries_z_axis);
1190
+    }
1191
+    $percentage = false;
1192
+    if ($y_axis === 201) {
1193
+        $percentage = false;
1194
+        $ytitle     = I18N::translate('Individuals');
1195
+    } elseif ($y_axis === 202) {
1196
+        $percentage = true;
1197
+        $ytitle     = I18N::translate('percentage');
1198
+    }
1199
+    $male_female = false;
1200
+    if ($z_axis === 300) {
1201
+        $zgiven          = false;
1202
+        $legend[0]       = 'all';
1203
+        $zmax            = 1;
1204
+        $z_boundaries[0] = 100000;
1205
+    } elseif ($z_axis === 301) {
1206
+        $male_female = true;
1207
+        $zgiven      = true;
1208
+        $legend[0]   = I18N::translate('Male');
1209
+        $legend[1]   = I18N::translate('Female');
1210
+        $zmax        = 2;
1211
+        $xtitle      = $xtitle . I18N::translate(' per gender');
1212
+    } elseif ($z_axis === 302) {
1213
+        $xtitle = $xtitle . I18N::translate(' per time period');
1214
+    }
1215
+    //-- reset the data array
1216
+    for ($i = 0; $i < $zmax; $i++) {
1217
+        for ($j = 0; $j < $xmax; $j++) {
1218
+            $ydata[$i][$j] = 0;
1219
+        }
1220
+    }
1221
+    $total = lifespan_by_death_year($z_axis, $z_boundaries, $stats);
1222
+    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1223
+    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1224
+    break;
1225 1225
 case '19':
1226
-	$monthdata = array();
1227
-	for ($i = 0; $i < 12; ++$i) {
1228
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1229
-	}
1230
-	$xgiven            = false;
1231
-	$zgiven            = false;
1232
-	$title             = I18N::translate('Age in year of marriage');
1233
-	$xtitle            = I18N::translate('age');
1234
-	$ytitle            = I18N::translate('numbers');
1235
-	$boundaries_x_axis = Filter::get('x-axis-boundaries-ages_m');
1236
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1237
-	calculate_axis($boundaries_x_axis);
1238
-	if ($z_axis !== 300 && $z_axis !== 301) {
1239
-		calculate_legend($boundaries_z_axis);
1240
-	}
1241
-	$percentage = false;
1242
-	if ($y_axis === 201) {
1243
-		$percentage = false;
1244
-		$ytitle     = I18N::translate('Individuals');
1245
-	} elseif ($y_axis === 202) {
1246
-		$percentage = true;
1247
-		$ytitle     = I18N::translate('percentage');
1248
-	}
1249
-	$male_female     = false;
1250
-	$z_boundaries[0] = 100000;
1251
-	if ($z_axis === 300) {
1252
-		$zgiven          = false;
1253
-		$legend[0]       = 'all';
1254
-		$zmax            = 1;
1255
-	} elseif ($z_axis === 301) {
1256
-		$male_female = true;
1257
-		$zgiven      = true;
1258
-		$legend[0]   = I18N::translate('Male');
1259
-		$legend[1]   = I18N::translate('Female');
1260
-		$zmax        = 2;
1261
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1262
-	} elseif ($z_axis === 302) {
1263
-		$xtitle = $xtitle . I18N::translate(' per time period');
1264
-	}
1265
-	//-- reset the data array
1266
-	for ($i = 0; $i < $zmax; $i++) {
1267
-		for ($j = 0; $j < $xmax; $j++) {
1268
-			$ydata[$i][$j] = 0;
1269
-		}
1270
-	}
1271
-	$total = age_at_marriage($z_axis, $z_boundaries, $stats);
1272
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1273
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1274
-	break;
1226
+    $monthdata = array();
1227
+    for ($i = 0; $i < 12; ++$i) {
1228
+        $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1229
+    }
1230
+    $xgiven            = false;
1231
+    $zgiven            = false;
1232
+    $title             = I18N::translate('Age in year of marriage');
1233
+    $xtitle            = I18N::translate('age');
1234
+    $ytitle            = I18N::translate('numbers');
1235
+    $boundaries_x_axis = Filter::get('x-axis-boundaries-ages_m');
1236
+    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1237
+    calculate_axis($boundaries_x_axis);
1238
+    if ($z_axis !== 300 && $z_axis !== 301) {
1239
+        calculate_legend($boundaries_z_axis);
1240
+    }
1241
+    $percentage = false;
1242
+    if ($y_axis === 201) {
1243
+        $percentage = false;
1244
+        $ytitle     = I18N::translate('Individuals');
1245
+    } elseif ($y_axis === 202) {
1246
+        $percentage = true;
1247
+        $ytitle     = I18N::translate('percentage');
1248
+    }
1249
+    $male_female     = false;
1250
+    $z_boundaries[0] = 100000;
1251
+    if ($z_axis === 300) {
1252
+        $zgiven          = false;
1253
+        $legend[0]       = 'all';
1254
+        $zmax            = 1;
1255
+    } elseif ($z_axis === 301) {
1256
+        $male_female = true;
1257
+        $zgiven      = true;
1258
+        $legend[0]   = I18N::translate('Male');
1259
+        $legend[1]   = I18N::translate('Female');
1260
+        $zmax        = 2;
1261
+        $xtitle      = $xtitle . I18N::translate(' per gender');
1262
+    } elseif ($z_axis === 302) {
1263
+        $xtitle = $xtitle . I18N::translate(' per time period');
1264
+    }
1265
+    //-- reset the data array
1266
+    for ($i = 0; $i < $zmax; $i++) {
1267
+        for ($j = 0; $j < $xmax; $j++) {
1268
+            $ydata[$i][$j] = 0;
1269
+        }
1270
+    }
1271
+    $total = age_at_marriage($z_axis, $z_boundaries, $stats);
1272
+    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1273
+    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1274
+    break;
1275 1275
 case '20':
1276
-	$monthdata = array();
1277
-	for ($i = 0; $i < 12; ++$i) {
1278
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1279
-	}
1280
-	$xgiven            = false;
1281
-	$zgiven            = false;
1282
-	$title             = I18N::translate('Age in year of first marriage');
1283
-	$xtitle            = I18N::translate('age');
1284
-	$ytitle            = I18N::translate('numbers');
1285
-	$boundaries_x_axis = Filter::get('x-axis-boundaries-ages_m');
1286
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1287
-	calculate_axis($boundaries_x_axis);
1288
-	if ($z_axis !== 300 && $z_axis !== 301) {
1289
-		calculate_legend($boundaries_z_axis);
1290
-	}
1291
-	$percentage = false;
1292
-	if ($y_axis === 201) {
1293
-		$percentage = false;
1294
-		$ytitle     = I18N::translate('Individuals');
1295
-	} elseif ($y_axis === 202) {
1296
-		$percentage = true;
1297
-		$ytitle     = I18N::translate('percentage');
1298
-	}
1299
-	$male_female = false;
1300
-	if ($z_axis === 300) {
1301
-		$zgiven          = false;
1302
-		$legend[0]       = 'all';
1303
-		$zmax            = 1;
1304
-		$z_boundaries[0] = 100000;
1305
-	} elseif ($z_axis === 301) {
1306
-		$male_female = true;
1307
-		$zgiven      = true;
1308
-		$legend[0]   = I18N::translate('Male');
1309
-		$legend[1]   = I18N::translate('Female');
1310
-		$zmax        = 2;
1311
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1312
-	} elseif ($z_axis === 302) {
1313
-		$xtitle = $xtitle . I18N::translate(' per time period');
1314
-	}
1315
-	//-- reset the data array
1316
-	for ($i = 0; $i < $zmax; $i++) {
1317
-		for ($j = 0; $j < $xmax; $j++) {
1318
-			$ydata[$i][$j] = 0;
1319
-		}
1320
-	}
1321
-	$total = age_at_first_marriage($z_axis, $z_boundaries, $stats);
1322
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1323
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1324
-	break;
1276
+    $monthdata = array();
1277
+    for ($i = 0; $i < 12; ++$i) {
1278
+        $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1279
+    }
1280
+    $xgiven            = false;
1281
+    $zgiven            = false;
1282
+    $title             = I18N::translate('Age in year of first marriage');
1283
+    $xtitle            = I18N::translate('age');
1284
+    $ytitle            = I18N::translate('numbers');
1285
+    $boundaries_x_axis = Filter::get('x-axis-boundaries-ages_m');
1286
+    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1287
+    calculate_axis($boundaries_x_axis);
1288
+    if ($z_axis !== 300 && $z_axis !== 301) {
1289
+        calculate_legend($boundaries_z_axis);
1290
+    }
1291
+    $percentage = false;
1292
+    if ($y_axis === 201) {
1293
+        $percentage = false;
1294
+        $ytitle     = I18N::translate('Individuals');
1295
+    } elseif ($y_axis === 202) {
1296
+        $percentage = true;
1297
+        $ytitle     = I18N::translate('percentage');
1298
+    }
1299
+    $male_female = false;
1300
+    if ($z_axis === 300) {
1301
+        $zgiven          = false;
1302
+        $legend[0]       = 'all';
1303
+        $zmax            = 1;
1304
+        $z_boundaries[0] = 100000;
1305
+    } elseif ($z_axis === 301) {
1306
+        $male_female = true;
1307
+        $zgiven      = true;
1308
+        $legend[0]   = I18N::translate('Male');
1309
+        $legend[1]   = I18N::translate('Female');
1310
+        $zmax        = 2;
1311
+        $xtitle      = $xtitle . I18N::translate(' per gender');
1312
+    } elseif ($z_axis === 302) {
1313
+        $xtitle = $xtitle . I18N::translate(' per time period');
1314
+    }
1315
+    //-- reset the data array
1316
+    for ($i = 0; $i < $zmax; $i++) {
1317
+        for ($j = 0; $j < $xmax; $j++) {
1318
+            $ydata[$i][$j] = 0;
1319
+        }
1320
+    }
1321
+    $total = age_at_first_marriage($z_axis, $z_boundaries, $stats);
1322
+    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1323
+    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1324
+    break;
1325 1325
 case '21':
1326
-	$monthdata = array();
1327
-	for ($i = 0; $i < 12; ++$i) {
1328
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1329
-	}
1330
-	$xgiven            = false;
1331
-	$zgiven            = false;
1332
-	$title             = I18N::translate('Number of children');
1333
-	$xtitle            = I18N::translate('children');
1334
-	$ytitle            = I18N::translate('numbers');
1335
-	$boundaries_x_axis = Filter::get('x-axis-boundaries-numbers');
1336
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1337
-	calculate_axis($boundaries_x_axis);
1338
-	if ($z_axis !== 300 && $z_axis !== 301) {
1339
-		calculate_legend($boundaries_z_axis);
1340
-	}
1341
-	$percentage = false;
1342
-	if ($y_axis === 201) {
1343
-		$percentage = false;
1344
-		$ytitle     = I18N::translate('Families');
1345
-	} elseif ($y_axis === 202) {
1346
-		$percentage = true;
1347
-		$ytitle     = I18N::translate('percentage');
1348
-	}
1349
-	$male_female = false;
1350
-	if ($z_axis === 300) {
1351
-		$zgiven          = false;
1352
-		$legend[0]       = 'all';
1353
-		$zmax            = 1;
1354
-		$z_boundaries[0] = 100000;
1355
-	} elseif ($z_axis === 301) {
1356
-		$male_female = true;
1357
-		$zgiven      = true;
1358
-		$legend[0]   = I18N::translate('Male');
1359
-		$legend[1]   = I18N::translate('Female');
1360
-		$zmax        = 2;
1361
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1362
-	} elseif ($z_axis === 302) {
1363
-		$xtitle = $xtitle . I18N::translate(' per time period');
1364
-	}
1365
-	//-- reset the data array
1366
-	for ($i = 0; $i < $zmax; $i++) {
1367
-		for ($j = 0; $j < $xmax; $j++) {
1368
-			$ydata[$i][$j] = 0;
1369
-		}
1370
-	}
1371
-	$total = number_of_children($z_axis, $z_boundaries, $stats);
1372
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalChildren();
1373
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1374
-	break;
1326
+    $monthdata = array();
1327
+    for ($i = 0; $i < 12; ++$i) {
1328
+        $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1329
+    }
1330
+    $xgiven            = false;
1331
+    $zgiven            = false;
1332
+    $title             = I18N::translate('Number of children');
1333
+    $xtitle            = I18N::translate('children');
1334
+    $ytitle            = I18N::translate('numbers');
1335
+    $boundaries_x_axis = Filter::get('x-axis-boundaries-numbers');
1336
+    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1337
+    calculate_axis($boundaries_x_axis);
1338
+    if ($z_axis !== 300 && $z_axis !== 301) {
1339
+        calculate_legend($boundaries_z_axis);
1340
+    }
1341
+    $percentage = false;
1342
+    if ($y_axis === 201) {
1343
+        $percentage = false;
1344
+        $ytitle     = I18N::translate('Families');
1345
+    } elseif ($y_axis === 202) {
1346
+        $percentage = true;
1347
+        $ytitle     = I18N::translate('percentage');
1348
+    }
1349
+    $male_female = false;
1350
+    if ($z_axis === 300) {
1351
+        $zgiven          = false;
1352
+        $legend[0]       = 'all';
1353
+        $zmax            = 1;
1354
+        $z_boundaries[0] = 100000;
1355
+    } elseif ($z_axis === 301) {
1356
+        $male_female = true;
1357
+        $zgiven      = true;
1358
+        $legend[0]   = I18N::translate('Male');
1359
+        $legend[1]   = I18N::translate('Female');
1360
+        $zmax        = 2;
1361
+        $xtitle      = $xtitle . I18N::translate(' per gender');
1362
+    } elseif ($z_axis === 302) {
1363
+        $xtitle = $xtitle . I18N::translate(' per time period');
1364
+    }
1365
+    //-- reset the data array
1366
+    for ($i = 0; $i < $zmax; $i++) {
1367
+        for ($j = 0; $j < $xmax; $j++) {
1368
+            $ydata[$i][$j] = 0;
1369
+        }
1370
+    }
1371
+    $total = number_of_children($z_axis, $z_boundaries, $stats);
1372
+    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalChildren();
1373
+    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1374
+    break;
1375 1375
 default:
1376
-	echo '<i class="icon-loading-large"></i>';
1377
-	break;
1376
+    echo '<i class="icon-loading-large"></i>';
1377
+    break;
1378 1378
 }
1379 1379
 echo '</div>';
Please login to merge, or discard this patch.
Switch Indentation   +521 added lines, -521 removed lines patch added patch discarded remove patch
@@ -852,528 +852,528 @@
 block discarded – undo
852 852
 echo '<div class="statistics_chart" title="', I18N::translate('Statistics chart'), '">';
853 853
 
854 854
 switch ($x_axis) {
855
-case '1':
856
-	echo $stats->chartDistribution(array(Filter::get('chart_shows'), Filter::get('chart_type'), Filter::get('SURN')));
857
-	break;
858
-case '2':
859
-	echo $stats->chartDistribution(array(Filter::get('chart_shows'), 'birth_distribution_chart'));
860
-	break;
861
-case '3':
862
-	echo $stats->chartDistribution(array(Filter::get('chart_shows'), 'death_distribution_chart'));
863
-	break;
864
-case '4':
865
-	echo $stats->chartDistribution(array(Filter::get('chart_shows'), 'marriage_distribution_chart'));
866
-	break;
867
-case '11':
868
-	$monthdata = array();
869
-	for ($i = 0; $i < 12; ++$i) {
870
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
871
-	}
872
-	$xgiven            = true;
873
-	$zgiven            = false;
874
-	$title             = I18N::translate('Month of birth');
875
-	$xtitle            = I18N::translate('month');
876
-	$ytitle            = I18N::translate('numbers');
877
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
878
-	$xdata             = $monthdata;
879
-	$xmax              = 12;
880
-	if ($z_axis !== 300 && $z_axis !== 301) {
881
-		calculate_legend($boundaries_z_axis);
882
-	}
883
-	$percentage = false;
884
-	if ($y_axis === 201) {
885
-		$percentage = false;
886
-		$ytitle     = I18N::translate('Individuals');
887
-	} elseif ($y_axis === 202) {
888
-		$percentage = true;
889
-		$ytitle     = I18N::translate('percentage');
890
-	}
891
-	$male_female = false;
892
-	if ($z_axis === 300) {
893
-		$zgiven          = false;
894
-		$legend[0]       = 'all';
895
-		$zmax            = 1;
896
-		$z_boundaries[0] = 100000;
897
-	} elseif ($z_axis === 301) {
898
-		$male_female = true;
899
-		$zgiven      = true;
900
-		$legend[0]   = I18N::translate('Male');
901
-		$legend[1]   = I18N::translate('Female');
902
-		$zmax        = 2;
903
-		$xtitle      = $xtitle . I18N::translate(' per gender');
904
-	} elseif ($z_axis === 302) {
905
-		$xtitle = $xtitle . I18N::translate(' per time period');
906
-	}
907
-	//-- reset the data array
908
-	for ($i = 0; $i < $zmax; $i++) {
909
-		for ($j = 0; $j < $xmax; $j++) {
910
-			$ydata[$i][$j] = 0;
911
-		}
912
-	}
913
-	$total = month_of_birth($z_axis, $z_boundaries, $stats);
914
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
915
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
916
-	break;
917
-case '12':
918
-	$monthdata = array();
919
-	for ($i = 0; $i < 12; ++$i) {
920
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
921
-	}
922
-	$xgiven            = true;
923
-	$zgiven            = false;
924
-	$title             = I18N::translate('Month of death');
925
-	$xtitle            = I18N::translate('month');
926
-	$ytitle            = I18N::translate('numbers');
927
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
928
-	$xdata             = $monthdata;
929
-	$xmax              = 12;
930
-	if ($z_axis !== 300 && $z_axis !== 301) {
931
-		calculate_legend($boundaries_z_axis);
932
-	}
933
-	$percentage = false;
934
-	if ($y_axis === 201) {
935
-		$percentage = false;
936
-		$ytitle     = I18N::translate('Individuals');
937
-	} elseif ($y_axis === 202) {
938
-		$percentage = true;
939
-		$ytitle     = I18N::translate('percentage');
940
-	}
941
-	$male_female = false;
942
-	if ($z_axis === 300) {
943
-		$zgiven          = false;
944
-		$legend[0]       = 'all';
945
-		$zmax            = 1;
946
-		$z_boundaries[0] = 100000;
947
-	} elseif ($z_axis === 301) {
948
-		$male_female = true;
949
-		$zgiven      = true;
950
-		$legend[0]   = I18N::translate('Male');
951
-		$legend[1]   = I18N::translate('Female');
952
-		$zmax        = 2;
953
-		$xtitle      = $xtitle . I18N::translate(' per gender');
954
-	} elseif ($z_axis === 302) {
955
-		$xtitle = $xtitle . I18N::translate(' per time period');
956
-	}
957
-	//-- reset the data array
958
-	for ($i = 0; $i < $zmax; $i++) {
959
-		for ($j = 0; $j < $xmax; $j++) {
960
-			$ydata[$i][$j] = 0;
961
-		}
962
-	}
963
-	$total = month_of_death($z_axis, $z_boundaries, $stats);
964
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
965
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
966
-	break;
967
-case '13':
968
-	$monthdata = array();
969
-	for ($i = 0; $i < 12; ++$i) {
970
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
971
-	}
855
+    case '1':
856
+	    echo $stats->chartDistribution(array(Filter::get('chart_shows'), Filter::get('chart_type'), Filter::get('SURN')));
857
+	    break;
858
+    case '2':
859
+	    echo $stats->chartDistribution(array(Filter::get('chart_shows'), 'birth_distribution_chart'));
860
+	    break;
861
+    case '3':
862
+	    echo $stats->chartDistribution(array(Filter::get('chart_shows'), 'death_distribution_chart'));
863
+	    break;
864
+    case '4':
865
+	    echo $stats->chartDistribution(array(Filter::get('chart_shows'), 'marriage_distribution_chart'));
866
+	    break;
867
+    case '11':
868
+	    $monthdata = array();
869
+	    for ($i = 0; $i < 12; ++$i) {
870
+		    $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
871
+	    }
872
+	    $xgiven            = true;
873
+	    $zgiven            = false;
874
+	    $title             = I18N::translate('Month of birth');
875
+	    $xtitle            = I18N::translate('month');
876
+	    $ytitle            = I18N::translate('numbers');
877
+	    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
878
+	    $xdata             = $monthdata;
879
+	    $xmax              = 12;
880
+	    if ($z_axis !== 300 && $z_axis !== 301) {
881
+		    calculate_legend($boundaries_z_axis);
882
+	    }
883
+	    $percentage = false;
884
+	    if ($y_axis === 201) {
885
+		    $percentage = false;
886
+		    $ytitle     = I18N::translate('Individuals');
887
+	    } elseif ($y_axis === 202) {
888
+		    $percentage = true;
889
+		    $ytitle     = I18N::translate('percentage');
890
+	    }
891
+	    $male_female = false;
892
+	    if ($z_axis === 300) {
893
+		    $zgiven          = false;
894
+		    $legend[0]       = 'all';
895
+		    $zmax            = 1;
896
+		    $z_boundaries[0] = 100000;
897
+	    } elseif ($z_axis === 301) {
898
+		    $male_female = true;
899
+		    $zgiven      = true;
900
+		    $legend[0]   = I18N::translate('Male');
901
+		    $legend[1]   = I18N::translate('Female');
902
+		    $zmax        = 2;
903
+		    $xtitle      = $xtitle . I18N::translate(' per gender');
904
+	    } elseif ($z_axis === 302) {
905
+		    $xtitle = $xtitle . I18N::translate(' per time period');
906
+	    }
907
+	    //-- reset the data array
908
+	    for ($i = 0; $i < $zmax; $i++) {
909
+		    for ($j = 0; $j < $xmax; $j++) {
910
+			    $ydata[$i][$j] = 0;
911
+		    }
912
+	    }
913
+	    $total = month_of_birth($z_axis, $z_boundaries, $stats);
914
+	    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
915
+	    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
916
+	    break;
917
+    case '12':
918
+	    $monthdata = array();
919
+	    for ($i = 0; $i < 12; ++$i) {
920
+		    $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
921
+	    }
922
+	    $xgiven            = true;
923
+	    $zgiven            = false;
924
+	    $title             = I18N::translate('Month of death');
925
+	    $xtitle            = I18N::translate('month');
926
+	    $ytitle            = I18N::translate('numbers');
927
+	    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
928
+	    $xdata             = $monthdata;
929
+	    $xmax              = 12;
930
+	    if ($z_axis !== 300 && $z_axis !== 301) {
931
+		    calculate_legend($boundaries_z_axis);
932
+	    }
933
+	    $percentage = false;
934
+	    if ($y_axis === 201) {
935
+		    $percentage = false;
936
+		    $ytitle     = I18N::translate('Individuals');
937
+	    } elseif ($y_axis === 202) {
938
+		    $percentage = true;
939
+		    $ytitle     = I18N::translate('percentage');
940
+	    }
941
+	    $male_female = false;
942
+	    if ($z_axis === 300) {
943
+		    $zgiven          = false;
944
+		    $legend[0]       = 'all';
945
+		    $zmax            = 1;
946
+		    $z_boundaries[0] = 100000;
947
+	    } elseif ($z_axis === 301) {
948
+		    $male_female = true;
949
+		    $zgiven      = true;
950
+		    $legend[0]   = I18N::translate('Male');
951
+		    $legend[1]   = I18N::translate('Female');
952
+		    $zmax        = 2;
953
+		    $xtitle      = $xtitle . I18N::translate(' per gender');
954
+	    } elseif ($z_axis === 302) {
955
+		    $xtitle = $xtitle . I18N::translate(' per time period');
956
+	    }
957
+	    //-- reset the data array
958
+	    for ($i = 0; $i < $zmax; $i++) {
959
+		    for ($j = 0; $j < $xmax; $j++) {
960
+			    $ydata[$i][$j] = 0;
961
+		    }
962
+	    }
963
+	    $total = month_of_death($z_axis, $z_boundaries, $stats);
964
+	    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
965
+	    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
966
+	    break;
967
+    case '13':
968
+	    $monthdata = array();
969
+	    for ($i = 0; $i < 12; ++$i) {
970
+		    $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
971
+	    }
972 972
 
973
-	if ($z_axis === 301) {
974
-		$z_axis = 300;
975
-	}
976
-	$xgiven            = true;
977
-	$zgiven            = false;
978
-	$title             = I18N::translate('Month of marriage');
979
-	$xtitle            = I18N::translate('month');
980
-	$ytitle            = I18N::translate('numbers');
981
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
982
-	$xdata             = $monthdata;
983
-	$xmax              = 12;
984
-	if ($z_axis !== 300 && $z_axis !== 301) {
985
-		calculate_legend($boundaries_z_axis);
986
-	}
987
-	$percentage = false;
988
-	if ($y_axis === 201) {
989
-		$percentage = false;
990
-		$ytitle     = I18N::translate('Families');
991
-	} elseif ($y_axis === 202) {
992
-		$percentage = true;
993
-		$ytitle     = I18N::translate('percentage');
994
-	}
995
-	$male_female = false;
996
-	if ($z_axis === 300) {
997
-		$zgiven          = false;
998
-		$legend[0]       = 'all';
999
-		$zmax            = 1;
1000
-		$z_boundaries[0] = 100000;
1001
-	} elseif ($z_axis === 301) {
1002
-		$male_female = true;
1003
-		$zgiven      = true;
1004
-		$legend[0]   = I18N::translate('Male');
1005
-		$legend[1]   = I18N::translate('Female');
1006
-		$zmax        = 2;
1007
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1008
-	} elseif ($z_axis === 302) {
1009
-		$xtitle = $xtitle . I18N::translate(' per time period');
1010
-	}
1011
-	//-- reset the data array
1012
-	for ($i = 0; $i < $zmax; $i++) {
1013
-		for ($j = 0; $j < $xmax; $j++) {
1014
-			$ydata[$i][$j] = 0;
1015
-		}
1016
-	}
1017
-	$total = month_of_marriage($z_axis, $z_boundaries, $stats);
1018
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalFamilies();
1019
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1020
-	break;
1021
-case '14':
1022
-	$monthdata = array();
1023
-	for ($i = 0; $i < 12; ++$i) {
1024
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1025
-	}
1026
-	$xgiven            = true;
1027
-	$zgiven            = false;
1028
-	$title             = I18N::translate('Month of birth of first child in a relation');
1029
-	$xtitle            = I18N::translate('month');
1030
-	$ytitle            = I18N::translate('numbers');
1031
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1032
-	$xdata             = $monthdata;
1033
-	$xmax              = 12;
1034
-	if ($z_axis !== 300 && $z_axis !== 301) {
1035
-		calculate_legend($boundaries_z_axis);
1036
-	}
1037
-	$percentage = false;
1038
-	if ($y_axis === 201) {
1039
-		$percentage = false;
1040
-		$ytitle     = I18N::translate('Children');
1041
-	} elseif ($y_axis === 202) {
1042
-		$percentage = true;
1043
-		$ytitle     = I18N::translate('percentage');
1044
-	}
1045
-	$male_female = false;
1046
-	if ($z_axis === 300) {
1047
-		$zgiven          = false;
1048
-		$legend[0]       = 'all';
1049
-		$zmax            = 1;
1050
-		$z_boundaries[0] = 100000;
1051
-	} elseif ($z_axis === 301) {
1052
-		$male_female = true;
1053
-		$zgiven      = true;
1054
-		$legend[0]   = I18N::translate('Male');
1055
-		$legend[1]   = I18N::translate('Female');
1056
-		$zmax        = 2;
1057
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1058
-	} elseif ($z_axis === 302) {
1059
-		$xtitle = $xtitle . I18N::translate(' per time period');
1060
-	}
1061
-	//-- reset the data array
1062
-	for ($i = 0; $i < $zmax; $i++) {
1063
-		for ($j = 0; $j < $xmax; $j++) {
1064
-			$ydata[$i][$j] = 0;
1065
-		}
1066
-	}
1067
-	$total = month_of_birth_of_first_child($z_axis, $z_boundaries, $stats);
1068
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalFamilies();
1069
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1070
-	break;
1071
-case '15':
1072
-	$monthdata = array();
1073
-	for ($i = 0; $i < 12; ++$i) {
1074
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1075
-	}
973
+	    if ($z_axis === 301) {
974
+		    $z_axis = 300;
975
+	    }
976
+	    $xgiven            = true;
977
+	    $zgiven            = false;
978
+	    $title             = I18N::translate('Month of marriage');
979
+	    $xtitle            = I18N::translate('month');
980
+	    $ytitle            = I18N::translate('numbers');
981
+	    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
982
+	    $xdata             = $monthdata;
983
+	    $xmax              = 12;
984
+	    if ($z_axis !== 300 && $z_axis !== 301) {
985
+		    calculate_legend($boundaries_z_axis);
986
+	    }
987
+	    $percentage = false;
988
+	    if ($y_axis === 201) {
989
+		    $percentage = false;
990
+		    $ytitle     = I18N::translate('Families');
991
+	    } elseif ($y_axis === 202) {
992
+		    $percentage = true;
993
+		    $ytitle     = I18N::translate('percentage');
994
+	    }
995
+	    $male_female = false;
996
+	    if ($z_axis === 300) {
997
+		    $zgiven          = false;
998
+		    $legend[0]       = 'all';
999
+		    $zmax            = 1;
1000
+		    $z_boundaries[0] = 100000;
1001
+	    } elseif ($z_axis === 301) {
1002
+		    $male_female = true;
1003
+		    $zgiven      = true;
1004
+		    $legend[0]   = I18N::translate('Male');
1005
+		    $legend[1]   = I18N::translate('Female');
1006
+		    $zmax        = 2;
1007
+		    $xtitle      = $xtitle . I18N::translate(' per gender');
1008
+	    } elseif ($z_axis === 302) {
1009
+		    $xtitle = $xtitle . I18N::translate(' per time period');
1010
+	    }
1011
+	    //-- reset the data array
1012
+	    for ($i = 0; $i < $zmax; $i++) {
1013
+		    for ($j = 0; $j < $xmax; $j++) {
1014
+			    $ydata[$i][$j] = 0;
1015
+		    }
1016
+	    }
1017
+	    $total = month_of_marriage($z_axis, $z_boundaries, $stats);
1018
+	    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalFamilies();
1019
+	    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1020
+	    break;
1021
+    case '14':
1022
+	    $monthdata = array();
1023
+	    for ($i = 0; $i < 12; ++$i) {
1024
+		    $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1025
+	    }
1026
+	    $xgiven            = true;
1027
+	    $zgiven            = false;
1028
+	    $title             = I18N::translate('Month of birth of first child in a relation');
1029
+	    $xtitle            = I18N::translate('month');
1030
+	    $ytitle            = I18N::translate('numbers');
1031
+	    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1032
+	    $xdata             = $monthdata;
1033
+	    $xmax              = 12;
1034
+	    if ($z_axis !== 300 && $z_axis !== 301) {
1035
+		    calculate_legend($boundaries_z_axis);
1036
+	    }
1037
+	    $percentage = false;
1038
+	    if ($y_axis === 201) {
1039
+		    $percentage = false;
1040
+		    $ytitle     = I18N::translate('Children');
1041
+	    } elseif ($y_axis === 202) {
1042
+		    $percentage = true;
1043
+		    $ytitle     = I18N::translate('percentage');
1044
+	    }
1045
+	    $male_female = false;
1046
+	    if ($z_axis === 300) {
1047
+		    $zgiven          = false;
1048
+		    $legend[0]       = 'all';
1049
+		    $zmax            = 1;
1050
+		    $z_boundaries[0] = 100000;
1051
+	    } elseif ($z_axis === 301) {
1052
+		    $male_female = true;
1053
+		    $zgiven      = true;
1054
+		    $legend[0]   = I18N::translate('Male');
1055
+		    $legend[1]   = I18N::translate('Female');
1056
+		    $zmax        = 2;
1057
+		    $xtitle      = $xtitle . I18N::translate(' per gender');
1058
+	    } elseif ($z_axis === 302) {
1059
+		    $xtitle = $xtitle . I18N::translate(' per time period');
1060
+	    }
1061
+	    //-- reset the data array
1062
+	    for ($i = 0; $i < $zmax; $i++) {
1063
+		    for ($j = 0; $j < $xmax; $j++) {
1064
+			    $ydata[$i][$j] = 0;
1065
+		    }
1066
+	    }
1067
+	    $total = month_of_birth_of_first_child($z_axis, $z_boundaries, $stats);
1068
+	    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalFamilies();
1069
+	    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1070
+	    break;
1071
+    case '15':
1072
+	    $monthdata = array();
1073
+	    for ($i = 0; $i < 12; ++$i) {
1074
+		    $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1075
+	    }
1076 1076
 
1077
-	if ($z_axis === 301) {
1078
-		$z_axis = 300;
1079
-	}
1080
-	$xgiven            = true;
1081
-	$zgiven            = false;
1082
-	$title             = I18N::translate('Month of first marriage');
1083
-	$xtitle            = I18N::translate('month');
1084
-	$ytitle            = I18N::translate('numbers');
1085
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1086
-	$xdata             = $monthdata;
1087
-	$xmax              = 12;
1088
-	if ($z_axis !== 300 && $z_axis !== 301) {
1089
-		calculate_legend($boundaries_z_axis);
1090
-	}
1091
-	$percentage = false;
1092
-	if ($y_axis === 201) {
1093
-		$percentage = false;
1094
-		$ytitle     = I18N::translate('Families');
1095
-	} elseif ($y_axis === 202) {
1096
-		$percentage = true;
1097
-		$ytitle     = I18N::translate('percentage');
1098
-	}
1099
-	$male_female = false;
1100
-	if ($z_axis === 300) {
1101
-		$zgiven          = false;
1102
-		$legend[0]       = 'all';
1103
-		$zmax            = 1;
1104
-		$z_boundaries[0] = 100000;
1105
-	} elseif ($z_axis === 301) {
1106
-		$male_female = true;
1107
-		$zgiven      = true;
1108
-		$legend[0]   = I18N::translate('Male');
1109
-		$legend[1]   = I18N::translate('Female');
1110
-		$zmax        = 2;
1111
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1112
-	} elseif ($z_axis === 302) {
1113
-		$xtitle = $xtitle . I18N::translate(' per time period');
1114
-	}
1115
-	//-- reset the data array
1116
-	for ($i = 0; $i < $zmax; $i++) {
1117
-		for ($j = 0; $j < $xmax; $j++) {
1118
-			$ydata[$i][$j] = 0;
1119
-		}
1120
-	}
1121
-	$total = month_of_first_marriage($z_axis, $z_boundaries, $stats);
1122
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalFamilies();
1123
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1124
-	break;
1125
-case '17':
1126
-	$monthdata = array();
1127
-	for ($i = 0; $i < 12; ++$i) {
1128
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1129
-	}
1130
-	$xgiven            = false;
1131
-	$zgiven            = false;
1132
-	$title             = I18N::translate('Age related to birth year');
1133
-	$xtitle            = I18N::translate('age');
1134
-	$ytitle            = I18N::translate('numbers');
1135
-	$boundaries_x_axis = Filter::get('x-axis-boundaries-ages');
1136
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1137
-	calculate_axis($boundaries_x_axis);
1138
-	if ($z_axis !== 300 && $z_axis !== 301) {
1139
-		calculate_legend($boundaries_z_axis);
1140
-	}
1141
-	$percentage = false;
1142
-	if ($y_axis === 201) {
1143
-		$percentage = false;
1144
-		$ytitle     = I18N::translate('Individuals');
1145
-	} elseif ($y_axis === 202) {
1146
-		$percentage = true;
1147
-		$ytitle     = I18N::translate('percentage');
1148
-	}
1149
-	$male_female = false;
1150
-	if ($z_axis === 300) {
1151
-		$zgiven          = false;
1152
-		$legend[0]       = 'all';
1153
-		$zmax            = 1;
1154
-		$z_boundaries[0] = 100000;
1155
-	} elseif ($z_axis === 301) {
1156
-		$male_female = true;
1157
-		$zgiven      = true;
1158
-		$legend[0]   = I18N::translate('Male');
1159
-		$legend[1]   = I18N::translate('Female');
1160
-		$zmax        = 2;
1161
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1162
-	} elseif ($z_axis === 302) {
1163
-		$xtitle = $xtitle . I18N::translate(' per time period');
1164
-	}
1165
-	//-- reset the data array
1166
-	for ($i = 0; $i < $zmax; $i++) {
1167
-		for ($j = 0; $j < $xmax; $j++) {
1168
-			$ydata[$i][$j] = 0;
1169
-		}
1170
-	}
1171
-	$total = lifespan_by_birth_year($z_axis, $z_boundaries, $stats);
1172
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1173
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1174
-	break;
1175
-case '18':
1176
-	$monthdata = array();
1177
-	for ($i = 0; $i < 12; ++$i) {
1178
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1179
-	}
1180
-	$xgiven            = false;
1181
-	$zgiven            = false;
1182
-	$title             = I18N::translate('Age related to death year');
1183
-	$xtitle            = I18N::translate('age');
1184
-	$ytitle            = I18N::translate('numbers');
1185
-	$boundaries_x_axis = Filter::get('x-axis-boundaries-ages');
1186
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1187
-	calculate_axis($boundaries_x_axis);
1188
-	if ($z_axis !== 300 && $z_axis !== 301) {
1189
-		calculate_legend($boundaries_z_axis);
1190
-	}
1191
-	$percentage = false;
1192
-	if ($y_axis === 201) {
1193
-		$percentage = false;
1194
-		$ytitle     = I18N::translate('Individuals');
1195
-	} elseif ($y_axis === 202) {
1196
-		$percentage = true;
1197
-		$ytitle     = I18N::translate('percentage');
1198
-	}
1199
-	$male_female = false;
1200
-	if ($z_axis === 300) {
1201
-		$zgiven          = false;
1202
-		$legend[0]       = 'all';
1203
-		$zmax            = 1;
1204
-		$z_boundaries[0] = 100000;
1205
-	} elseif ($z_axis === 301) {
1206
-		$male_female = true;
1207
-		$zgiven      = true;
1208
-		$legend[0]   = I18N::translate('Male');
1209
-		$legend[1]   = I18N::translate('Female');
1210
-		$zmax        = 2;
1211
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1212
-	} elseif ($z_axis === 302) {
1213
-		$xtitle = $xtitle . I18N::translate(' per time period');
1214
-	}
1215
-	//-- reset the data array
1216
-	for ($i = 0; $i < $zmax; $i++) {
1217
-		for ($j = 0; $j < $xmax; $j++) {
1218
-			$ydata[$i][$j] = 0;
1219
-		}
1220
-	}
1221
-	$total = lifespan_by_death_year($z_axis, $z_boundaries, $stats);
1222
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1223
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1224
-	break;
1225
-case '19':
1226
-	$monthdata = array();
1227
-	for ($i = 0; $i < 12; ++$i) {
1228
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1229
-	}
1230
-	$xgiven            = false;
1231
-	$zgiven            = false;
1232
-	$title             = I18N::translate('Age in year of marriage');
1233
-	$xtitle            = I18N::translate('age');
1234
-	$ytitle            = I18N::translate('numbers');
1235
-	$boundaries_x_axis = Filter::get('x-axis-boundaries-ages_m');
1236
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1237
-	calculate_axis($boundaries_x_axis);
1238
-	if ($z_axis !== 300 && $z_axis !== 301) {
1239
-		calculate_legend($boundaries_z_axis);
1240
-	}
1241
-	$percentage = false;
1242
-	if ($y_axis === 201) {
1243
-		$percentage = false;
1244
-		$ytitle     = I18N::translate('Individuals');
1245
-	} elseif ($y_axis === 202) {
1246
-		$percentage = true;
1247
-		$ytitle     = I18N::translate('percentage');
1248
-	}
1249
-	$male_female     = false;
1250
-	$z_boundaries[0] = 100000;
1251
-	if ($z_axis === 300) {
1252
-		$zgiven          = false;
1253
-		$legend[0]       = 'all';
1254
-		$zmax            = 1;
1255
-	} elseif ($z_axis === 301) {
1256
-		$male_female = true;
1257
-		$zgiven      = true;
1258
-		$legend[0]   = I18N::translate('Male');
1259
-		$legend[1]   = I18N::translate('Female');
1260
-		$zmax        = 2;
1261
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1262
-	} elseif ($z_axis === 302) {
1263
-		$xtitle = $xtitle . I18N::translate(' per time period');
1264
-	}
1265
-	//-- reset the data array
1266
-	for ($i = 0; $i < $zmax; $i++) {
1267
-		for ($j = 0; $j < $xmax; $j++) {
1268
-			$ydata[$i][$j] = 0;
1269
-		}
1270
-	}
1271
-	$total = age_at_marriage($z_axis, $z_boundaries, $stats);
1272
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1273
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1274
-	break;
1275
-case '20':
1276
-	$monthdata = array();
1277
-	for ($i = 0; $i < 12; ++$i) {
1278
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1279
-	}
1280
-	$xgiven            = false;
1281
-	$zgiven            = false;
1282
-	$title             = I18N::translate('Age in year of first marriage');
1283
-	$xtitle            = I18N::translate('age');
1284
-	$ytitle            = I18N::translate('numbers');
1285
-	$boundaries_x_axis = Filter::get('x-axis-boundaries-ages_m');
1286
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1287
-	calculate_axis($boundaries_x_axis);
1288
-	if ($z_axis !== 300 && $z_axis !== 301) {
1289
-		calculate_legend($boundaries_z_axis);
1290
-	}
1291
-	$percentage = false;
1292
-	if ($y_axis === 201) {
1293
-		$percentage = false;
1294
-		$ytitle     = I18N::translate('Individuals');
1295
-	} elseif ($y_axis === 202) {
1296
-		$percentage = true;
1297
-		$ytitle     = I18N::translate('percentage');
1298
-	}
1299
-	$male_female = false;
1300
-	if ($z_axis === 300) {
1301
-		$zgiven          = false;
1302
-		$legend[0]       = 'all';
1303
-		$zmax            = 1;
1304
-		$z_boundaries[0] = 100000;
1305
-	} elseif ($z_axis === 301) {
1306
-		$male_female = true;
1307
-		$zgiven      = true;
1308
-		$legend[0]   = I18N::translate('Male');
1309
-		$legend[1]   = I18N::translate('Female');
1310
-		$zmax        = 2;
1311
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1312
-	} elseif ($z_axis === 302) {
1313
-		$xtitle = $xtitle . I18N::translate(' per time period');
1314
-	}
1315
-	//-- reset the data array
1316
-	for ($i = 0; $i < $zmax; $i++) {
1317
-		for ($j = 0; $j < $xmax; $j++) {
1318
-			$ydata[$i][$j] = 0;
1319
-		}
1320
-	}
1321
-	$total = age_at_first_marriage($z_axis, $z_boundaries, $stats);
1322
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1323
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1324
-	break;
1325
-case '21':
1326
-	$monthdata = array();
1327
-	for ($i = 0; $i < 12; ++$i) {
1328
-		$monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1329
-	}
1330
-	$xgiven            = false;
1331
-	$zgiven            = false;
1332
-	$title             = I18N::translate('Number of children');
1333
-	$xtitle            = I18N::translate('children');
1334
-	$ytitle            = I18N::translate('numbers');
1335
-	$boundaries_x_axis = Filter::get('x-axis-boundaries-numbers');
1336
-	$boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1337
-	calculate_axis($boundaries_x_axis);
1338
-	if ($z_axis !== 300 && $z_axis !== 301) {
1339
-		calculate_legend($boundaries_z_axis);
1340
-	}
1341
-	$percentage = false;
1342
-	if ($y_axis === 201) {
1343
-		$percentage = false;
1344
-		$ytitle     = I18N::translate('Families');
1345
-	} elseif ($y_axis === 202) {
1346
-		$percentage = true;
1347
-		$ytitle     = I18N::translate('percentage');
1348
-	}
1349
-	$male_female = false;
1350
-	if ($z_axis === 300) {
1351
-		$zgiven          = false;
1352
-		$legend[0]       = 'all';
1353
-		$zmax            = 1;
1354
-		$z_boundaries[0] = 100000;
1355
-	} elseif ($z_axis === 301) {
1356
-		$male_female = true;
1357
-		$zgiven      = true;
1358
-		$legend[0]   = I18N::translate('Male');
1359
-		$legend[1]   = I18N::translate('Female');
1360
-		$zmax        = 2;
1361
-		$xtitle      = $xtitle . I18N::translate(' per gender');
1362
-	} elseif ($z_axis === 302) {
1363
-		$xtitle = $xtitle . I18N::translate(' per time period');
1364
-	}
1365
-	//-- reset the data array
1366
-	for ($i = 0; $i < $zmax; $i++) {
1367
-		for ($j = 0; $j < $xmax; $j++) {
1368
-			$ydata[$i][$j] = 0;
1369
-		}
1370
-	}
1371
-	$total = number_of_children($z_axis, $z_boundaries, $stats);
1372
-	$hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalChildren();
1373
-	my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1374
-	break;
1375
-default:
1376
-	echo '<i class="icon-loading-large"></i>';
1377
-	break;
1077
+	    if ($z_axis === 301) {
1078
+		    $z_axis = 300;
1079
+	    }
1080
+	    $xgiven            = true;
1081
+	    $zgiven            = false;
1082
+	    $title             = I18N::translate('Month of first marriage');
1083
+	    $xtitle            = I18N::translate('month');
1084
+	    $ytitle            = I18N::translate('numbers');
1085
+	    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1086
+	    $xdata             = $monthdata;
1087
+	    $xmax              = 12;
1088
+	    if ($z_axis !== 300 && $z_axis !== 301) {
1089
+		    calculate_legend($boundaries_z_axis);
1090
+	    }
1091
+	    $percentage = false;
1092
+	    if ($y_axis === 201) {
1093
+		    $percentage = false;
1094
+		    $ytitle     = I18N::translate('Families');
1095
+	    } elseif ($y_axis === 202) {
1096
+		    $percentage = true;
1097
+		    $ytitle     = I18N::translate('percentage');
1098
+	    }
1099
+	    $male_female = false;
1100
+	    if ($z_axis === 300) {
1101
+		    $zgiven          = false;
1102
+		    $legend[0]       = 'all';
1103
+		    $zmax            = 1;
1104
+		    $z_boundaries[0] = 100000;
1105
+	    } elseif ($z_axis === 301) {
1106
+		    $male_female = true;
1107
+		    $zgiven      = true;
1108
+		    $legend[0]   = I18N::translate('Male');
1109
+		    $legend[1]   = I18N::translate('Female');
1110
+		    $zmax        = 2;
1111
+		    $xtitle      = $xtitle . I18N::translate(' per gender');
1112
+	    } elseif ($z_axis === 302) {
1113
+		    $xtitle = $xtitle . I18N::translate(' per time period');
1114
+	    }
1115
+	    //-- reset the data array
1116
+	    for ($i = 0; $i < $zmax; $i++) {
1117
+		    for ($j = 0; $j < $xmax; $j++) {
1118
+			    $ydata[$i][$j] = 0;
1119
+		    }
1120
+	    }
1121
+	    $total = month_of_first_marriage($z_axis, $z_boundaries, $stats);
1122
+	    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalFamilies();
1123
+	    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1124
+	    break;
1125
+    case '17':
1126
+	    $monthdata = array();
1127
+	    for ($i = 0; $i < 12; ++$i) {
1128
+		    $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1129
+	    }
1130
+	    $xgiven            = false;
1131
+	    $zgiven            = false;
1132
+	    $title             = I18N::translate('Age related to birth year');
1133
+	    $xtitle            = I18N::translate('age');
1134
+	    $ytitle            = I18N::translate('numbers');
1135
+	    $boundaries_x_axis = Filter::get('x-axis-boundaries-ages');
1136
+	    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1137
+	    calculate_axis($boundaries_x_axis);
1138
+	    if ($z_axis !== 300 && $z_axis !== 301) {
1139
+		    calculate_legend($boundaries_z_axis);
1140
+	    }
1141
+	    $percentage = false;
1142
+	    if ($y_axis === 201) {
1143
+		    $percentage = false;
1144
+		    $ytitle     = I18N::translate('Individuals');
1145
+	    } elseif ($y_axis === 202) {
1146
+		    $percentage = true;
1147
+		    $ytitle     = I18N::translate('percentage');
1148
+	    }
1149
+	    $male_female = false;
1150
+	    if ($z_axis === 300) {
1151
+		    $zgiven          = false;
1152
+		    $legend[0]       = 'all';
1153
+		    $zmax            = 1;
1154
+		    $z_boundaries[0] = 100000;
1155
+	    } elseif ($z_axis === 301) {
1156
+		    $male_female = true;
1157
+		    $zgiven      = true;
1158
+		    $legend[0]   = I18N::translate('Male');
1159
+		    $legend[1]   = I18N::translate('Female');
1160
+		    $zmax        = 2;
1161
+		    $xtitle      = $xtitle . I18N::translate(' per gender');
1162
+	    } elseif ($z_axis === 302) {
1163
+		    $xtitle = $xtitle . I18N::translate(' per time period');
1164
+	    }
1165
+	    //-- reset the data array
1166
+	    for ($i = 0; $i < $zmax; $i++) {
1167
+		    for ($j = 0; $j < $xmax; $j++) {
1168
+			    $ydata[$i][$j] = 0;
1169
+		    }
1170
+	    }
1171
+	    $total = lifespan_by_birth_year($z_axis, $z_boundaries, $stats);
1172
+	    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1173
+	    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1174
+	    break;
1175
+    case '18':
1176
+	    $monthdata = array();
1177
+	    for ($i = 0; $i < 12; ++$i) {
1178
+		    $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1179
+	    }
1180
+	    $xgiven            = false;
1181
+	    $zgiven            = false;
1182
+	    $title             = I18N::translate('Age related to death year');
1183
+	    $xtitle            = I18N::translate('age');
1184
+	    $ytitle            = I18N::translate('numbers');
1185
+	    $boundaries_x_axis = Filter::get('x-axis-boundaries-ages');
1186
+	    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1187
+	    calculate_axis($boundaries_x_axis);
1188
+	    if ($z_axis !== 300 && $z_axis !== 301) {
1189
+		    calculate_legend($boundaries_z_axis);
1190
+	    }
1191
+	    $percentage = false;
1192
+	    if ($y_axis === 201) {
1193
+		    $percentage = false;
1194
+		    $ytitle     = I18N::translate('Individuals');
1195
+	    } elseif ($y_axis === 202) {
1196
+		    $percentage = true;
1197
+		    $ytitle     = I18N::translate('percentage');
1198
+	    }
1199
+	    $male_female = false;
1200
+	    if ($z_axis === 300) {
1201
+		    $zgiven          = false;
1202
+		    $legend[0]       = 'all';
1203
+		    $zmax            = 1;
1204
+		    $z_boundaries[0] = 100000;
1205
+	    } elseif ($z_axis === 301) {
1206
+		    $male_female = true;
1207
+		    $zgiven      = true;
1208
+		    $legend[0]   = I18N::translate('Male');
1209
+		    $legend[1]   = I18N::translate('Female');
1210
+		    $zmax        = 2;
1211
+		    $xtitle      = $xtitle . I18N::translate(' per gender');
1212
+	    } elseif ($z_axis === 302) {
1213
+		    $xtitle = $xtitle . I18N::translate(' per time period');
1214
+	    }
1215
+	    //-- reset the data array
1216
+	    for ($i = 0; $i < $zmax; $i++) {
1217
+		    for ($j = 0; $j < $xmax; $j++) {
1218
+			    $ydata[$i][$j] = 0;
1219
+		    }
1220
+	    }
1221
+	    $total = lifespan_by_death_year($z_axis, $z_boundaries, $stats);
1222
+	    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1223
+	    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1224
+	    break;
1225
+    case '19':
1226
+	    $monthdata = array();
1227
+	    for ($i = 0; $i < 12; ++$i) {
1228
+		    $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1229
+	    }
1230
+	    $xgiven            = false;
1231
+	    $zgiven            = false;
1232
+	    $title             = I18N::translate('Age in year of marriage');
1233
+	    $xtitle            = I18N::translate('age');
1234
+	    $ytitle            = I18N::translate('numbers');
1235
+	    $boundaries_x_axis = Filter::get('x-axis-boundaries-ages_m');
1236
+	    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1237
+	    calculate_axis($boundaries_x_axis);
1238
+	    if ($z_axis !== 300 && $z_axis !== 301) {
1239
+		    calculate_legend($boundaries_z_axis);
1240
+	    }
1241
+	    $percentage = false;
1242
+	    if ($y_axis === 201) {
1243
+		    $percentage = false;
1244
+		    $ytitle     = I18N::translate('Individuals');
1245
+	    } elseif ($y_axis === 202) {
1246
+		    $percentage = true;
1247
+		    $ytitle     = I18N::translate('percentage');
1248
+	    }
1249
+	    $male_female     = false;
1250
+	    $z_boundaries[0] = 100000;
1251
+	    if ($z_axis === 300) {
1252
+		    $zgiven          = false;
1253
+		    $legend[0]       = 'all';
1254
+		    $zmax            = 1;
1255
+	    } elseif ($z_axis === 301) {
1256
+		    $male_female = true;
1257
+		    $zgiven      = true;
1258
+		    $legend[0]   = I18N::translate('Male');
1259
+		    $legend[1]   = I18N::translate('Female');
1260
+		    $zmax        = 2;
1261
+		    $xtitle      = $xtitle . I18N::translate(' per gender');
1262
+	    } elseif ($z_axis === 302) {
1263
+		    $xtitle = $xtitle . I18N::translate(' per time period');
1264
+	    }
1265
+	    //-- reset the data array
1266
+	    for ($i = 0; $i < $zmax; $i++) {
1267
+		    for ($j = 0; $j < $xmax; $j++) {
1268
+			    $ydata[$i][$j] = 0;
1269
+		    }
1270
+	    }
1271
+	    $total = age_at_marriage($z_axis, $z_boundaries, $stats);
1272
+	    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1273
+	    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1274
+	    break;
1275
+    case '20':
1276
+	    $monthdata = array();
1277
+	    for ($i = 0; $i < 12; ++$i) {
1278
+		    $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1279
+	    }
1280
+	    $xgiven            = false;
1281
+	    $zgiven            = false;
1282
+	    $title             = I18N::translate('Age in year of first marriage');
1283
+	    $xtitle            = I18N::translate('age');
1284
+	    $ytitle            = I18N::translate('numbers');
1285
+	    $boundaries_x_axis = Filter::get('x-axis-boundaries-ages_m');
1286
+	    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1287
+	    calculate_axis($boundaries_x_axis);
1288
+	    if ($z_axis !== 300 && $z_axis !== 301) {
1289
+		    calculate_legend($boundaries_z_axis);
1290
+	    }
1291
+	    $percentage = false;
1292
+	    if ($y_axis === 201) {
1293
+		    $percentage = false;
1294
+		    $ytitle     = I18N::translate('Individuals');
1295
+	    } elseif ($y_axis === 202) {
1296
+		    $percentage = true;
1297
+		    $ytitle     = I18N::translate('percentage');
1298
+	    }
1299
+	    $male_female = false;
1300
+	    if ($z_axis === 300) {
1301
+		    $zgiven          = false;
1302
+		    $legend[0]       = 'all';
1303
+		    $zmax            = 1;
1304
+		    $z_boundaries[0] = 100000;
1305
+	    } elseif ($z_axis === 301) {
1306
+		    $male_female = true;
1307
+		    $zgiven      = true;
1308
+		    $legend[0]   = I18N::translate('Male');
1309
+		    $legend[1]   = I18N::translate('Female');
1310
+		    $zmax        = 2;
1311
+		    $xtitle      = $xtitle . I18N::translate(' per gender');
1312
+	    } elseif ($z_axis === 302) {
1313
+		    $xtitle = $xtitle . I18N::translate(' per time period');
1314
+	    }
1315
+	    //-- reset the data array
1316
+	    for ($i = 0; $i < $zmax; $i++) {
1317
+		    for ($j = 0; $j < $xmax; $j++) {
1318
+			    $ydata[$i][$j] = 0;
1319
+		    }
1320
+	    }
1321
+	    $total = age_at_first_marriage($z_axis, $z_boundaries, $stats);
1322
+	    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalIndividuals();
1323
+	    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1324
+	    break;
1325
+    case '21':
1326
+	    $monthdata = array();
1327
+	    for ($i = 0; $i < 12; ++$i) {
1328
+		    $monthdata[$i] = GregorianDate::monthNameNominativeCase($i + 1, false);
1329
+	    }
1330
+	    $xgiven            = false;
1331
+	    $zgiven            = false;
1332
+	    $title             = I18N::translate('Number of children');
1333
+	    $xtitle            = I18N::translate('children');
1334
+	    $ytitle            = I18N::translate('numbers');
1335
+	    $boundaries_x_axis = Filter::get('x-axis-boundaries-numbers');
1336
+	    $boundaries_z_axis = Filter::get('z-axis-boundaries-periods', null, '0');
1337
+	    calculate_axis($boundaries_x_axis);
1338
+	    if ($z_axis !== 300 && $z_axis !== 301) {
1339
+		    calculate_legend($boundaries_z_axis);
1340
+	    }
1341
+	    $percentage = false;
1342
+	    if ($y_axis === 201) {
1343
+		    $percentage = false;
1344
+		    $ytitle     = I18N::translate('Families');
1345
+	    } elseif ($y_axis === 202) {
1346
+		    $percentage = true;
1347
+		    $ytitle     = I18N::translate('percentage');
1348
+	    }
1349
+	    $male_female = false;
1350
+	    if ($z_axis === 300) {
1351
+		    $zgiven          = false;
1352
+		    $legend[0]       = 'all';
1353
+		    $zmax            = 1;
1354
+		    $z_boundaries[0] = 100000;
1355
+	    } elseif ($z_axis === 301) {
1356
+		    $male_female = true;
1357
+		    $zgiven      = true;
1358
+		    $legend[0]   = I18N::translate('Male');
1359
+		    $legend[1]   = I18N::translate('Female');
1360
+		    $zmax        = 2;
1361
+		    $xtitle      = $xtitle . I18N::translate(' per gender');
1362
+	    } elseif ($z_axis === 302) {
1363
+		    $xtitle = $xtitle . I18N::translate(' per time period');
1364
+	    }
1365
+	    //-- reset the data array
1366
+	    for ($i = 0; $i < $zmax; $i++) {
1367
+		    for ($j = 0; $j < $xmax; $j++) {
1368
+			    $ydata[$i][$j] = 0;
1369
+		    }
1370
+	    }
1371
+	    $total = number_of_children($z_axis, $z_boundaries, $stats);
1372
+	    $hstr  = $title . '|' . I18N::translate('Counts ') . ' ' . I18N::number($total) . ' ' . I18N::translate('of') . ' ' . $stats->totalChildren();
1373
+	    my_plot($hstr, $xdata, $xtitle, $ydata, $ytitle, $legend);
1374
+	    break;
1375
+    default:
1376
+	    echo '<i class="icon-loading-large"></i>';
1377
+	    break;
1378 1378
 }
1379 1379
 echo '</div>';
Please login to merge, or discard this patch.
Braces   +30 added lines, -15 removed lines patch added patch discarded remove patch
@@ -36,7 +36,8 @@  discard block
 block discarded – undo
36 36
  *
37 37
  * @return int
38 38
  */
39
-function month_of_birth($z_axis, array $z_boundaries, Stats $stats) {
39
+function month_of_birth($z_axis, array $z_boundaries, Stats $stats)
40
+{
40 41
 	$total = 0;
41 42
 
42 43
 	if ($z_axis === 300) {
@@ -92,7 +93,8 @@  discard block
 block discarded – undo
92 93
  *
93 94
  * @return int
94 95
  */
95
-function month_of_birth_of_first_child($z_axis, array $z_boundaries, Stats $stats) {
96
+function month_of_birth_of_first_child($z_axis, array $z_boundaries, Stats $stats)
97
+{
96 98
 	$total = 0;
97 99
 
98 100
 	if ($z_axis === 300) {
@@ -148,7 +150,8 @@  discard block
 block discarded – undo
148 150
  *
149 151
  * @return int
150 152
  */
151
-function month_of_death($z_axis, array $z_boundaries, Stats $stats) {
153
+function month_of_death($z_axis, array $z_boundaries, Stats $stats)
154
+{
152 155
 	$total = 0;
153 156
 
154 157
 	if ($z_axis === 300) {
@@ -204,7 +207,8 @@  discard block
 block discarded – undo
204 207
  *
205 208
  * @return int
206 209
  */
207
-function month_of_marriage($z_axis, array $z_boundaries, Stats $stats) {
210
+function month_of_marriage($z_axis, array $z_boundaries, Stats $stats)
211
+{
208 212
 	$total = 0;
209 213
 
210 214
 	if ($z_axis === 300) {
@@ -245,7 +249,8 @@  discard block
 block discarded – undo
245 249
  *
246 250
  * @return int
247 251
  */
248
-function month_of_first_marriage($z_axis, array $z_boundaries, Stats $stats) {
252
+function month_of_first_marriage($z_axis, array $z_boundaries, Stats $stats)
253
+{
249 254
 	$total = 0;
250 255
 
251 256
 	if ($z_axis === 300) {
@@ -298,7 +303,8 @@  discard block
 block discarded – undo
298 303
  *
299 304
  * @return int
300 305
  */
301
-function lifespan_by_birth_year($z_axis, array $z_boundaries, Stats $stats) {
306
+function lifespan_by_birth_year($z_axis, array $z_boundaries, Stats $stats)
307
+{
302 308
 	$total = 0;
303 309
 
304 310
 	if ($z_axis === 300) {
@@ -350,7 +356,8 @@  discard block
 block discarded – undo
350 356
  *
351 357
  * @return int
352 358
  */
353
-function lifespan_by_death_year($z_axis, array $z_boundaries, Stats $stats) {
359
+function lifespan_by_death_year($z_axis, array $z_boundaries, Stats $stats)
360
+{
354 361
 	$total = 0;
355 362
 
356 363
 	if ($z_axis === 300) {
@@ -402,7 +409,8 @@  discard block
 block discarded – undo
402 409
  *
403 410
  * @return int
404 411
  */
405
-function age_at_marriage($z_axis, array $z_boundaries, Stats $stats) {
412
+function age_at_marriage($z_axis, array $z_boundaries, Stats $stats)
413
+{
406 414
 	$total = 0;
407 415
 
408 416
 	if ($z_axis === 300) {
@@ -456,7 +464,8 @@  discard block
 block discarded – undo
456 464
  *
457 465
  * @return int
458 466
  */
459
-function age_at_first_marriage($z_axis, array $z_boundaries, Stats $stats) {
467
+function age_at_first_marriage($z_axis, array $z_boundaries, Stats $stats)
468
+{
460 469
 	$total = 0;
461 470
 
462 471
 	if ($z_axis === 300) {
@@ -533,7 +542,8 @@  discard block
 block discarded – undo
533 542
  *
534 543
  * @return int
535 544
  */
536
-function number_of_children($z_axis, array $z_boundaries, Stats $stats) {
545
+function number_of_children($z_axis, array $z_boundaries, Stats $stats)
546
+{
537 547
 	$total = 0;
538 548
 
539 549
 	if ($z_axis === 300) {
@@ -575,7 +585,8 @@  discard block
 block discarded – undo
575 585
  * @param int $x
576 586
  * @param int $val
577 587
  */
578
-function fill_y_data($z, $x, $val) {
588
+function fill_y_data($z, $x, $val)
589
+{
579 590
 	global $ydata, $xmax, $x_boundaries, $zmax, $z_boundaries, $xgiven, $zgiven;
580 591
 	//-- calculate index $i out of given z value
581 592
 	//-- calculate index $j out of given x value
@@ -612,7 +623,8 @@  discard block
 block discarded – undo
612 623
  * @param string      $ytitle
613 624
  * @param string[]    $legend
614 625
  */
615
-function my_plot($mytitle, $xdata, $xtitle, $ydata, $ytitle, $legend) {
626
+function my_plot($mytitle, $xdata, $xtitle, $ydata, $ytitle, $legend)
627
+{
616 628
 	global $percentage, $male_female, $ymax, $scalefactor, $datastring, $imgurl;
617 629
 
618 630
 	// Google Chart API only allows text encoding for numbers less than 100
@@ -752,7 +764,8 @@  discard block
 block discarded – undo
752 764
  *
753 765
  * @param string $x_axis_boundaries
754 766
  */
755
-function calculate_axis($x_axis_boundaries) {
767
+function calculate_axis($x_axis_boundaries)
768
+{
756 769
 	global $x_axis, $xdata, $xmax, $x_boundaries;
757 770
 
758 771
 	// Calculate xdata and zdata elements out of chart values
@@ -801,7 +814,8 @@  discard block
 block discarded – undo
801 814
  *
802 815
  * @return string
803 816
  */
804
-function format_range_of_numbers($x, $y) {
817
+function format_range_of_numbers($x, $y)
818
+{
805 819
 	return /* I18N: A range of numbers */ I18N::translate(
806 820
 		'%1$s–%2$s',
807 821
 		I18N::number($x),
@@ -814,7 +828,8 @@  discard block
 block discarded – undo
814 828
  *
815 829
  * @param string $boundaries_z_axis
816 830
  */
817
-function calculate_legend($boundaries_z_axis) {
831
+function calculate_legend($boundaries_z_axis)
832
+{
818 833
 	global $legend, $zmax, $z_boundaries;
819 834
 
820 835
 	// calculate the legend values
Please login to merge, or discard this patch.
admin_trees_check.php 2 patches
Indentation   +131 added lines, -131 removed lines patch added patch discarded remove patch
@@ -29,92 +29,92 @@  discard block
 block discarded – undo
29 29
 
30 30
 $controller = new PageController;
31 31
 $controller
32
-	->restrictAccess(Auth::isManager($WT_TREE))
33
-	->setPageTitle(I18N::translate('Check for errors') . ' — ' . $WT_TREE->getTitleHtml())
34
-	->pageHeader();
32
+    ->restrictAccess(Auth::isManager($WT_TREE))
33
+    ->setPageTitle(I18N::translate('Check for errors') . ' — ' . $WT_TREE->getTitleHtml())
34
+    ->pageHeader();
35 35
 
36 36
 // We need to work with raw GEDCOM data, as we are looking for errors
37 37
 // which may prevent the GedcomRecord objects from working.
38 38
 
39 39
 $rows = Database::prepare(
40
-	"SELECT i_id AS xref, 'INDI' AS type, i_gedcom AS gedrec FROM `##individuals` WHERE i_file=?" .
41
-	" UNION " .
42
-	"SELECT f_id AS xref, 'FAM'  AS type, f_gedcom AS gedrec FROM `##families`    WHERE f_file=?" .
43
-	" UNION " .
44
-	"SELECT s_id AS xref, 'SOUR' AS type, s_gedcom AS gedrec FROM `##sources`     WHERE s_file=?" .
45
-	" UNION " .
46
-	"SELECT m_id AS xref, 'OBJE' AS type, m_gedcom AS gedrec FROM `##media`       WHERE m_file=?" .
47
-	" UNION " .
48
-	"SELECT o_id AS xref, o_type AS type, o_gedcom AS gedrec FROM `##other`       WHERE o_file=? AND o_type NOT IN ('HEAD', 'TRLR')"
40
+    "SELECT i_id AS xref, 'INDI' AS type, i_gedcom AS gedrec FROM `##individuals` WHERE i_file=?" .
41
+    " UNION " .
42
+    "SELECT f_id AS xref, 'FAM'  AS type, f_gedcom AS gedrec FROM `##families`    WHERE f_file=?" .
43
+    " UNION " .
44
+    "SELECT s_id AS xref, 'SOUR' AS type, s_gedcom AS gedrec FROM `##sources`     WHERE s_file=?" .
45
+    " UNION " .
46
+    "SELECT m_id AS xref, 'OBJE' AS type, m_gedcom AS gedrec FROM `##media`       WHERE m_file=?" .
47
+    " UNION " .
48
+    "SELECT o_id AS xref, o_type AS type, o_gedcom AS gedrec FROM `##other`       WHERE o_file=? AND o_type NOT IN ('HEAD', 'TRLR')"
49 49
 )->execute(array($WT_TREE->getTreeId(), $WT_TREE->getTreeId(), $WT_TREE->getTreeId(), $WT_TREE->getTreeId(), $WT_TREE->getTreeId()))->fetchAll();
50 50
 
51 51
 $records = array();
52 52
 foreach ($rows as $row) {
53
-	$records[$row->xref] = $row;
53
+    $records[$row->xref] = $row;
54 54
 }
55 55
 
56 56
 // Need to merge pending new/changed/deleted records
57 57
 
58 58
 $rows = Database::prepare(
59
-	"SELECT xref, SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(CASE WHEN old_gedcom='' THEN new_gedcom ELSE old_gedcom END, '\n', 1), ' ', 3), ' ', -1) AS type, new_gedcom AS gedrec" .
60
-	" FROM (" .
61
-	"  SELECT MAX(change_id) AS change_id" .
62
-	"  FROM `##change`" .
63
-	"  WHERE gedcom_id=? AND status='pending'" .
64
-	"  GROUP BY xref" .
65
-	" ) AS t1" .
66
-	" JOIN `##change` t2 USING (change_id)"
59
+    "SELECT xref, SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(CASE WHEN old_gedcom='' THEN new_gedcom ELSE old_gedcom END, '\n', 1), ' ', 3), ' ', -1) AS type, new_gedcom AS gedrec" .
60
+    " FROM (" .
61
+    "  SELECT MAX(change_id) AS change_id" .
62
+    "  FROM `##change`" .
63
+    "  WHERE gedcom_id=? AND status='pending'" .
64
+    "  GROUP BY xref" .
65
+    " ) AS t1" .
66
+    " JOIN `##change` t2 USING (change_id)"
67 67
 )->execute(array($WT_TREE->getTreeId()))->fetchAll();
68 68
 
69 69
 foreach ($rows as $row) {
70
-	if ($row->gedrec) {
71
-		// new/updated record
72
-		$records[$row->xref] = $row;
73
-	} else {
74
-		// deleted record
75
-		unset($records[$row->xref]);
76
-	}
70
+    if ($row->gedrec) {
71
+        // new/updated record
72
+        $records[$row->xref] = $row;
73
+    } else {
74
+        // deleted record
75
+        unset($records[$row->xref]);
76
+    }
77 77
 }
78 78
 
79 79
 // Keep a list of upper case XREFs, to detect mismatches.
80 80
 $ukeys = array();
81 81
 foreach (array_keys($records) as $key) {
82
-	$ukeys[strtoupper($key)] = $key;
82
+    $ukeys[strtoupper($key)] = $key;
83 83
 }
84 84
 
85 85
 // LOOK FOR BROKEN LINKS
86 86
 $XREF_LINKS = array(
87
-	'NOTE'          => 'NOTE',
88
-	'SOUR'          => 'SOUR',
89
-	'REPO'          => 'REPO',
90
-	'OBJE'          => 'OBJE',
91
-	'SUBM'          => 'SUBM',
92
-	'FAMC'          => 'FAM',
93
-	'FAMS'          => 'FAM',
94
-	//'ADOP'=>'FAM', // Need to handle this case specially. We may have both ADOP and FAMC links to the same FAM, but only store one.
95
-	'HUSB'          => 'INDI',
96
-	'WIFE'          => 'INDI',
97
-	'CHIL'          => 'INDI',
98
-	'ASSO'          => 'INDI',
99
-	'_ASSO'         => 'INDI', // A webtrees extension
100
-	'ALIA'          => 'INDI',
101
-	'AUTH'          => 'INDI', // A webtrees extension
102
-	'ANCI'          => 'SUBM',
103
-	'DESI'          => 'SUBM',
104
-	'_WT_OBJE_SORT' => 'OBJE',
105
-	'_LOC'          => '_LOC',
87
+    'NOTE'          => 'NOTE',
88
+    'SOUR'          => 'SOUR',
89
+    'REPO'          => 'REPO',
90
+    'OBJE'          => 'OBJE',
91
+    'SUBM'          => 'SUBM',
92
+    'FAMC'          => 'FAM',
93
+    'FAMS'          => 'FAM',
94
+    //'ADOP'=>'FAM', // Need to handle this case specially. We may have both ADOP and FAMC links to the same FAM, but only store one.
95
+    'HUSB'          => 'INDI',
96
+    'WIFE'          => 'INDI',
97
+    'CHIL'          => 'INDI',
98
+    'ASSO'          => 'INDI',
99
+    '_ASSO'         => 'INDI', // A webtrees extension
100
+    'ALIA'          => 'INDI',
101
+    'AUTH'          => 'INDI', // A webtrees extension
102
+    'ANCI'          => 'SUBM',
103
+    'DESI'          => 'SUBM',
104
+    '_WT_OBJE_SORT' => 'OBJE',
105
+    '_LOC'          => '_LOC',
106 106
 );
107 107
 
108 108
 $RECORD_LINKS = array(
109
-	'INDI' => array('NOTE', 'OBJE', 'SOUR', 'SUBM', 'ASSO', '_ASSO', 'FAMC', 'FAMS', 'ALIA', '_WT_OBJE_SORT', '_LOC'),
110
-	'FAM'  => array('NOTE', 'OBJE', 'SOUR', 'SUBM', 'ASSO', '_ASSO', 'HUSB', 'WIFE', 'CHIL', '_LOC'),
111
-	'SOUR' => array('NOTE', 'OBJE', 'REPO', 'AUTH'),
112
-	'REPO' => array('NOTE'),
113
-	'OBJE' => array('NOTE'), // The spec also allows SOUR, but we treat this as a warning
114
-	'NOTE' => array(), // The spec also allows SOUR, but we treat this as a warning
115
-	'SUBM' => array('NOTE', 'OBJE'),
116
-	'SUBN' => array('SUBM'),
117
-	'_LOC' => array('SOUR', 'OBJE', '_LOC'),
109
+    'INDI' => array('NOTE', 'OBJE', 'SOUR', 'SUBM', 'ASSO', '_ASSO', 'FAMC', 'FAMS', 'ALIA', '_WT_OBJE_SORT', '_LOC'),
110
+    'FAM'  => array('NOTE', 'OBJE', 'SOUR', 'SUBM', 'ASSO', '_ASSO', 'HUSB', 'WIFE', 'CHIL', '_LOC'),
111
+    'SOUR' => array('NOTE', 'OBJE', 'REPO', 'AUTH'),
112
+    'REPO' => array('NOTE'),
113
+    'OBJE' => array('NOTE'), // The spec also allows SOUR, but we treat this as a warning
114
+    'NOTE' => array(), // The spec also allows SOUR, but we treat this as a warning
115
+    'SUBM' => array('NOTE', 'OBJE'),
116
+    'SUBN' => array('SUBM'),
117
+    '_LOC' => array('SOUR', 'OBJE', '_LOC'),
118 118
 );
119 119
 
120 120
 $errors = false;
@@ -144,71 +144,71 @@  discard block
 block discarded – undo
144 144
 $all_links   = array();
145 145
 $upper_links = array();
146 146
 foreach ($records as $record) {
147
-	$all_links[$record->xref]               = array();
148
-	$upper_links[strtoupper($record->xref)] = $record->xref;
149
-	preg_match_all('/\n\d (' . WT_REGEX_TAG . ') @([^#@\n][^\n@]*)@/', $record->gedrec, $matches, PREG_SET_ORDER);
150
-	foreach ($matches as $match) {
151
-		$all_links[$record->xref][$match[2]] = $match[1];
152
-	}
147
+    $all_links[$record->xref]               = array();
148
+    $upper_links[strtoupper($record->xref)] = $record->xref;
149
+    preg_match_all('/\n\d (' . WT_REGEX_TAG . ') @([^#@\n][^\n@]*)@/', $record->gedrec, $matches, PREG_SET_ORDER);
150
+    foreach ($matches as $match) {
151
+        $all_links[$record->xref][$match[2]] = $match[1];
152
+    }
153 153
 }
154 154
 
155 155
 foreach ($all_links as $xref1 => $links) {
156
-	$type1 = $records[$xref1]->type;
157
-	foreach ($links as $xref2 => $type2) {
158
-		$type3 = isset($records[$xref2]) ? $records[$xref2]->type : '';
159
-		if (!array_key_exists($xref2, $all_links)) {
160
-			if (array_key_exists(strtoupper($xref2), $upper_links)) {
161
-				echo warning(
162
-					link_message($type1, $xref1, $type2, $xref2) . ' ' .
163
-					/* I18N: placeholders are GEDCOM XREFs, such as R123 */
164
-					I18N::translate('%1$s does not exist. Did you mean %2$s?', format_link($xref2), format_link($upper_links[strtoupper($xref2)]))
165
-				);
166
-			} else {
167
-				echo error(
168
-					link_message(
169
-						$type1, $xref1, $type2, $xref2) . ' ' .
170
-					/* I18N: placeholders are GEDCOM XREFs, such as R123 */
171
-					I18N::translate('%1$s does not exist.', format_link($xref2))
172
-				);
173
-			}
174
-		} elseif ($type2 === 'SOUR' && $type1 === 'NOTE') {
175
-			// Notes are intended to add explanations and comments to other records. They should not have their own sources.
176
-		} elseif ($type2 === 'SOUR' && $type1 === 'OBJE') {
177
-			// Media objects are intended to illustrate other records, facts, and source/citations. They should not have their own sources.
178
-		} elseif ($type2 === 'OBJE' && $type1 === 'REPO') {
179
-			echo warning(
180
-				link_message($type1, $xref1, $type2, $xref2) . ' ' . I18N::translate('This type of link is not allowed here.')
181
-			);
182
-		} elseif (!array_key_exists($type1, $RECORD_LINKS) || !in_array($type2, $RECORD_LINKS[$type1]) || !array_key_exists($type2, $XREF_LINKS)) {
183
-			echo error(
184
-				link_message($type1, $xref1, $type2, $xref2) . ' ' .
185
-				I18N::translate('This type of link is not allowed here.')
186
-			);
187
-		} elseif ($XREF_LINKS[$type2] !== $type3) {
188
-			// Target XREF does exist - but is invalid
189
-			echo error(
190
-				link_message($type1, $xref1, $type2, $xref2) . ' ' .
191
-				/* I18N: %1$s is an internal ID number such as R123. %2$s and %3$s are record types, such as INDI or SOUR */
192
-				I18N::translate('%1$s is a %2$s but a %3$s is expected.', format_link($xref2), format_type($type3), format_type($type2))
193
-			);
194
-		} elseif (
195
-			$type2 === 'FAMC' && (!array_key_exists($xref1, $all_links[$xref2]) || $all_links[$xref2][$xref1] !== 'CHIL') ||
196
-			$type2 === 'FAMS' && (!array_key_exists($xref1, $all_links[$xref2]) || $all_links[$xref2][$xref1] !== 'HUSB' && $all_links[$xref2][$xref1] !== 'WIFE') ||
197
-			$type2 === 'CHIL' && (!array_key_exists($xref1, $all_links[$xref2]) || $all_links[$xref2][$xref1] !== 'FAMC') ||
198
-			$type2 === 'HUSB' && (!array_key_exists($xref1, $all_links[$xref2]) || $all_links[$xref2][$xref1] !== 'FAMS') ||
199
-			$type2 === 'WIFE' && (!array_key_exists($xref1, $all_links[$xref2]) || $all_links[$xref2][$xref1] !== 'FAMS')
200
-		) {
201
-			echo error(
202
-				link_message($type1, $xref1, $type2, $xref2) . ' ' .
203
-				/* I18N: %1$s and %2$s are internal ID numbers such as R123 */
204
-				I18N::translate('%1$s does not have a link back to %2$s.', format_link($xref2), format_link($xref1))
205
-			);
206
-		}
207
-	}
156
+    $type1 = $records[$xref1]->type;
157
+    foreach ($links as $xref2 => $type2) {
158
+        $type3 = isset($records[$xref2]) ? $records[$xref2]->type : '';
159
+        if (!array_key_exists($xref2, $all_links)) {
160
+            if (array_key_exists(strtoupper($xref2), $upper_links)) {
161
+                echo warning(
162
+                    link_message($type1, $xref1, $type2, $xref2) . ' ' .
163
+                    /* I18N: placeholders are GEDCOM XREFs, such as R123 */
164
+                    I18N::translate('%1$s does not exist. Did you mean %2$s?', format_link($xref2), format_link($upper_links[strtoupper($xref2)]))
165
+                );
166
+            } else {
167
+                echo error(
168
+                    link_message(
169
+                        $type1, $xref1, $type2, $xref2) . ' ' .
170
+                    /* I18N: placeholders are GEDCOM XREFs, such as R123 */
171
+                    I18N::translate('%1$s does not exist.', format_link($xref2))
172
+                );
173
+            }
174
+        } elseif ($type2 === 'SOUR' && $type1 === 'NOTE') {
175
+            // Notes are intended to add explanations and comments to other records. They should not have their own sources.
176
+        } elseif ($type2 === 'SOUR' && $type1 === 'OBJE') {
177
+            // Media objects are intended to illustrate other records, facts, and source/citations. They should not have their own sources.
178
+        } elseif ($type2 === 'OBJE' && $type1 === 'REPO') {
179
+            echo warning(
180
+                link_message($type1, $xref1, $type2, $xref2) . ' ' . I18N::translate('This type of link is not allowed here.')
181
+            );
182
+        } elseif (!array_key_exists($type1, $RECORD_LINKS) || !in_array($type2, $RECORD_LINKS[$type1]) || !array_key_exists($type2, $XREF_LINKS)) {
183
+            echo error(
184
+                link_message($type1, $xref1, $type2, $xref2) . ' ' .
185
+                I18N::translate('This type of link is not allowed here.')
186
+            );
187
+        } elseif ($XREF_LINKS[$type2] !== $type3) {
188
+            // Target XREF does exist - but is invalid
189
+            echo error(
190
+                link_message($type1, $xref1, $type2, $xref2) . ' ' .
191
+                /* I18N: %1$s is an internal ID number such as R123. %2$s and %3$s are record types, such as INDI or SOUR */
192
+                I18N::translate('%1$s is a %2$s but a %3$s is expected.', format_link($xref2), format_type($type3), format_type($type2))
193
+            );
194
+        } elseif (
195
+            $type2 === 'FAMC' && (!array_key_exists($xref1, $all_links[$xref2]) || $all_links[$xref2][$xref1] !== 'CHIL') ||
196
+            $type2 === 'FAMS' && (!array_key_exists($xref1, $all_links[$xref2]) || $all_links[$xref2][$xref1] !== 'HUSB' && $all_links[$xref2][$xref1] !== 'WIFE') ||
197
+            $type2 === 'CHIL' && (!array_key_exists($xref1, $all_links[$xref2]) || $all_links[$xref2][$xref1] !== 'FAMC') ||
198
+            $type2 === 'HUSB' && (!array_key_exists($xref1, $all_links[$xref2]) || $all_links[$xref2][$xref1] !== 'FAMS') ||
199
+            $type2 === 'WIFE' && (!array_key_exists($xref1, $all_links[$xref2]) || $all_links[$xref2][$xref1] !== 'FAMS')
200
+        ) {
201
+            echo error(
202
+                link_message($type1, $xref1, $type2, $xref2) . ' ' .
203
+                /* I18N: %1$s and %2$s are internal ID numbers such as R123 */
204
+                I18N::translate('%1$s does not have a link back to %2$s.', format_link($xref2), format_link($xref1))
205
+            );
206
+        }
207
+    }
208 208
 }
209 209
 
210 210
 if (!$errors) {
211
-	echo '<li class="list-group-item">', I18N::translate('No errors have been found.'), '</li>';
211
+    echo '<li class="list-group-item">', I18N::translate('No errors have been found.'), '</li>';
212 212
 }
213 213
 
214 214
 echo '</ul>';
@@ -224,13 +224,13 @@  discard block
 block discarded – undo
224 224
  * @return string
225 225
  */
226 226
 function link_message($type1, $xref1, $type2, $xref2) {
227
-	return /* I18N: The placeholders are GEDCOM XREFs and tags. e.g. “INDI I123 contains a FAMC link to F234.” */ I18N::translate(
228
-		'%1$s %2$s has a %3$s link to %4$s.',
229
-		format_type($type1),
230
-		format_link($xref1),
231
-		format_type($type2),
232
-		format_link($xref2)
233
-	);
227
+    return /* I18N: The placeholders are GEDCOM XREFs and tags. e.g. “INDI I123 contains a FAMC link to F234.” */ I18N::translate(
228
+        '%1$s %2$s has a %3$s link to %4$s.',
229
+        format_type($type1),
230
+        format_link($xref1),
231
+        format_type($type2),
232
+        format_link($xref2)
233
+    );
234 234
 }
235 235
 
236 236
 /**
@@ -241,7 +241,7 @@  discard block
 block discarded – undo
241 241
  * @return string
242 242
  */
243 243
 function format_link($xref) {
244
-	return '<b><a href="gedrecord.php?pid=' . $xref . '">' . $xref . '</a></b>';
244
+    return '<b><a href="gedrecord.php?pid=' . $xref . '">' . $xref . '</a></b>';
245 245
 }
246 246
 
247 247
 /**
@@ -252,7 +252,7 @@  discard block
 block discarded – undo
252 252
  * @return string
253 253
  */
254 254
 function format_type($type) {
255
-	return '<b title="' . strip_tags(GedcomTag::getLabel($type)) . '">' . $type . '</b>';
255
+    return '<b title="' . strip_tags(GedcomTag::getLabel($type)) . '">' . $type . '</b>';
256 256
 }
257 257
 
258 258
 /**
@@ -263,10 +263,10 @@  discard block
 block discarded – undo
263 263
  * @return string
264 264
  */
265 265
 function error($message) {
266
-	global $errors;
267
-	$errors = true;
266
+    global $errors;
267
+    $errors = true;
268 268
 
269
-	return '<li class="list-group-item list-group-item-danger">' . $message . '</li>';
269
+    return '<li class="list-group-item list-group-item-danger">' . $message . '</li>';
270 270
 }
271 271
 
272 272
 /**
@@ -277,8 +277,8 @@  discard block
 block discarded – undo
277 277
  * @return string
278 278
  */
279 279
 function warning($message) {
280
-	global $errors;
281
-	$errors = true;
280
+    global $errors;
281
+    $errors = true;
282 282
 
283
-	return '<li class="list-group-item list-group-item-warning">' . $message . '</li>';
283
+    return '<li class="list-group-item list-group-item-warning">' . $message . '</li>';
284 284
 }
Please login to merge, or discard this patch.
Braces   +10 added lines, -5 removed lines patch added patch discarded remove patch
@@ -223,7 +223,8 @@  discard block
 block discarded – undo
223 223
  *
224 224
  * @return string
225 225
  */
226
-function link_message($type1, $xref1, $type2, $xref2) {
226
+function link_message($type1, $xref1, $type2, $xref2)
227
+{
227 228
 	return /* I18N: The placeholders are GEDCOM XREFs and tags. e.g. “INDI I123 contains a FAMC link to F234.” */ I18N::translate(
228 229
 		'%1$s %2$s has a %3$s link to %4$s.',
229 230
 		format_type($type1),
@@ -240,7 +241,8 @@  discard block
 block discarded – undo
240 241
  *
241 242
  * @return string
242 243
  */
243
-function format_link($xref) {
244
+function format_link($xref)
245
+{
244 246
 	return '<b><a href="gedrecord.php?pid=' . $xref . '">' . $xref . '</a></b>';
245 247
 }
246 248
 
@@ -251,7 +253,8 @@  discard block
 block discarded – undo
251 253
  *
252 254
  * @return string
253 255
  */
254
-function format_type($type) {
256
+function format_type($type)
257
+{
255 258
 	return '<b title="' . strip_tags(GedcomTag::getLabel($type)) . '">' . $type . '</b>';
256 259
 }
257 260
 
@@ -262,7 +265,8 @@  discard block
 block discarded – undo
262 265
  *
263 266
  * @return string
264 267
  */
265
-function error($message) {
268
+function error($message)
269
+{
266 270
 	global $errors;
267 271
 	$errors = true;
268 272
 
@@ -276,7 +280,8 @@  discard block
 block discarded – undo
276 280
  *
277 281
  * @return string
278 282
  */
279
-function warning($message) {
283
+function warning($message)
284
+{
280 285
 	global $errors;
281 286
 	$errors = true;
282 287
 
Please login to merge, or discard this patch.
admin_trees_manage.php 3 patches
Indentation   +166 added lines, -166 removed lines patch added patch discarded remove patch
@@ -30,9 +30,9 @@  discard block
 block discarded – undo
30 30
 
31 31
 $controller = new PageController;
32 32
 $controller
33
-	->addExternalJavascript(WT_ADMIN_JS_URL)
34
-	->restrictAccess(Auth::isAdmin() || Auth::isManager($WT_TREE))
35
-	->setPageTitle(I18N::translate('Manage family trees'));
33
+    ->addExternalJavascript(WT_ADMIN_JS_URL)
34
+    ->restrictAccess(Auth::isAdmin() || Auth::isManager($WT_TREE))
35
+    ->setPageTitle(I18N::translate('Manage family trees'));
36 36
 
37 37
 // Show a reduced page when there are more than a certain number of trees
38 38
 $multiple_tree_threshold = Site::getPreference('MULTIPLE_TREE_THRESHOLD') ?: 500;
@@ -40,126 +40,126 @@  discard block
 block discarded – undo
40 40
 // Note that glob() returns false instead of an empty array when open_basedir_restriction
41 41
 // is in force and no files are found. See PHP bug #47358.
42 42
 if (defined('GLOB_BRACE')) {
43
-	$gedcom_files = glob(WT_DATA_DIR . '*.{ged,Ged,GED}', GLOB_NOSORT | GLOB_BRACE) ?: array();
43
+    $gedcom_files = glob(WT_DATA_DIR . '*.{ged,Ged,GED}', GLOB_NOSORT | GLOB_BRACE) ?: array();
44 44
 } else {
45
-	$gedcom_files = array_merge(
46
-		glob(WT_DATA_DIR . '*.ged', GLOB_NOSORT) ?: array(),
47
-		glob(WT_DATA_DIR . '*.Ged', GLOB_NOSORT) ?: array(),
48
-		glob(WT_DATA_DIR . '*.GED', GLOB_NOSORT) ?: array()
49
-	);
45
+    $gedcom_files = array_merge(
46
+        glob(WT_DATA_DIR . '*.ged', GLOB_NOSORT) ?: array(),
47
+        glob(WT_DATA_DIR . '*.Ged', GLOB_NOSORT) ?: array(),
48
+        glob(WT_DATA_DIR . '*.GED', GLOB_NOSORT) ?: array()
49
+    );
50 50
 }
51 51
 // Process POST actions
52 52
 switch (Filter::post('action')) {
53 53
 case 'delete':
54
-	$gedcom_id = Filter::postInteger('gedcom_id');
55
-	if (Filter::checkCsrf() && $gedcom_id) {
56
-		$tree = Tree::findById($gedcom_id);
57
-		FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” has been deleted.', $tree->getTitleHtml()), 'success');
58
-		$tree->delete();
59
-	}
60
-	header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
61
-
62
-	return;
54
+    $gedcom_id = Filter::postInteger('gedcom_id');
55
+    if (Filter::checkCsrf() && $gedcom_id) {
56
+        $tree = Tree::findById($gedcom_id);
57
+        FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” has been deleted.', $tree->getTitleHtml()), 'success');
58
+        $tree->delete();
59
+    }
60
+    header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
61
+
62
+    return;
63 63
 case 'setdefault':
64
-	if (Filter::checkCsrf()) {
65
-		Site::setPreference('DEFAULT_GEDCOM', Filter::post('ged'));
66
-		FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” will be shown to visitors when they first arrive at this website.', $WT_TREE->getTitleHtml()), 'success');
67
-	}
68
-	header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
64
+    if (Filter::checkCsrf()) {
65
+        Site::setPreference('DEFAULT_GEDCOM', Filter::post('ged'));
66
+        FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” will be shown to visitors when they first arrive at this website.', $WT_TREE->getTitleHtml()), 'success');
67
+    }
68
+    header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
69 69
 
70
-	return;
70
+    return;
71 71
 case 'new_tree':
72
-	$basename   = basename(Filter::post('tree_name'));
73
-	$tree_title = Filter::post('tree_title');
74
-
75
-	if (Filter::checkCsrf() && $basename && $tree_title) {
76
-		if (Tree::findByName($basename)) {
77
-			FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” already exists.', Filter::escapeHtml($basename)), 'danger');
78
-		} else {
79
-			Tree::create($basename, $tree_title);
80
-			FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” has been created.', Filter::escapeHtml($basename)), 'success');
81
-		}
82
-	}
83
-	header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME . '?ged=' . Filter::escapeUrl($basename));
84
-
85
-	return;
72
+    $basename   = basename(Filter::post('tree_name'));
73
+    $tree_title = Filter::post('tree_title');
74
+
75
+    if (Filter::checkCsrf() && $basename && $tree_title) {
76
+        if (Tree::findByName($basename)) {
77
+            FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” already exists.', Filter::escapeHtml($basename)), 'danger');
78
+        } else {
79
+            Tree::create($basename, $tree_title);
80
+            FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” has been created.', Filter::escapeHtml($basename)), 'success');
81
+        }
82
+    }
83
+    header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME . '?ged=' . Filter::escapeUrl($basename));
84
+
85
+    return;
86 86
 case 'replace_upload':
87
-	$gedcom_id          = Filter::postInteger('gedcom_id');
88
-	$keep_media         = Filter::post('keep_media', '1', '0');
89
-	$GEDCOM_MEDIA_PATH  = Filter::post('GEDCOM_MEDIA_PATH');
90
-	$WORD_WRAPPED_NOTES = Filter::post('WORD_WRAPPED_NOTES', '1', '0');
91
-	$tree               = Tree::findById($gedcom_id);
92
-
93
-	if (Filter::checkCsrf() && $tree) {
94
-		$tree->setPreference('keep_media', $keep_media);
95
-		$tree->setPreference('GEDCOM_MEDIA_PATH', $GEDCOM_MEDIA_PATH);
96
-		$tree->setPreference('WORD_WRAPPED_NOTES', $WORD_WRAPPED_NOTES);
97
-		if (isset($_FILES['tree_name'])) {
98
-			if ($_FILES['tree_name']['error'] == 0 && is_readable($_FILES['tree_name']['tmp_name'])) {
99
-				$tree->importGedcomFile($_FILES['tree_name']['tmp_name'], $_FILES['tree_name']['name']);
100
-			} else {
101
-				FlashMessages::addMessage(Functions::fileUploadErrorText($_FILES['tree_name']['error']), 'danger');
102
-			}
103
-		} else {
104
-			FlashMessages::addMessage(I18N::translate('No GEDCOM file was received.'), 'danger');
105
-		}
106
-	}
107
-	header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
108
-
109
-	return;
87
+    $gedcom_id          = Filter::postInteger('gedcom_id');
88
+    $keep_media         = Filter::post('keep_media', '1', '0');
89
+    $GEDCOM_MEDIA_PATH  = Filter::post('GEDCOM_MEDIA_PATH');
90
+    $WORD_WRAPPED_NOTES = Filter::post('WORD_WRAPPED_NOTES', '1', '0');
91
+    $tree               = Tree::findById($gedcom_id);
92
+
93
+    if (Filter::checkCsrf() && $tree) {
94
+        $tree->setPreference('keep_media', $keep_media);
95
+        $tree->setPreference('GEDCOM_MEDIA_PATH', $GEDCOM_MEDIA_PATH);
96
+        $tree->setPreference('WORD_WRAPPED_NOTES', $WORD_WRAPPED_NOTES);
97
+        if (isset($_FILES['tree_name'])) {
98
+            if ($_FILES['tree_name']['error'] == 0 && is_readable($_FILES['tree_name']['tmp_name'])) {
99
+                $tree->importGedcomFile($_FILES['tree_name']['tmp_name'], $_FILES['tree_name']['name']);
100
+            } else {
101
+                FlashMessages::addMessage(Functions::fileUploadErrorText($_FILES['tree_name']['error']), 'danger');
102
+            }
103
+        } else {
104
+            FlashMessages::addMessage(I18N::translate('No GEDCOM file was received.'), 'danger');
105
+        }
106
+    }
107
+    header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
108
+
109
+    return;
110 110
 case 'replace_import':
111
-	$basename           = basename(Filter::post('tree_name'));
112
-	$gedcom_id          = Filter::postInteger('gedcom_id');
113
-	$keep_media         = Filter::post('keep_media', '1', '0');
114
-	$GEDCOM_MEDIA_PATH  = Filter::post('GEDCOM_MEDIA_PATH');
115
-	$WORD_WRAPPED_NOTES = Filter::post('WORD_WRAPPED_NOTES', '1', '0');
116
-	$tree               = Tree::findById($gedcom_id);
117
-
118
-	if (Filter::checkCsrf() && $tree) {
119
-		$tree->setPreference('keep_media', $keep_media);
120
-		$tree->setPreference('GEDCOM_MEDIA_PATH', $GEDCOM_MEDIA_PATH);
121
-		$tree->setPreference('WORD_WRAPPED_NOTES', $WORD_WRAPPED_NOTES);
122
-		if ($basename) {
123
-			$tree->importGedcomFile(WT_DATA_DIR . $basename, $basename);
124
-		} else {
125
-			FlashMessages::addMessage(I18N::translate('No GEDCOM file was received.'), 'danger');
126
-		}
127
-	}
128
-	header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
129
-
130
-	return;
111
+    $basename           = basename(Filter::post('tree_name'));
112
+    $gedcom_id          = Filter::postInteger('gedcom_id');
113
+    $keep_media         = Filter::post('keep_media', '1', '0');
114
+    $GEDCOM_MEDIA_PATH  = Filter::post('GEDCOM_MEDIA_PATH');
115
+    $WORD_WRAPPED_NOTES = Filter::post('WORD_WRAPPED_NOTES', '1', '0');
116
+    $tree               = Tree::findById($gedcom_id);
117
+
118
+    if (Filter::checkCsrf() && $tree) {
119
+        $tree->setPreference('keep_media', $keep_media);
120
+        $tree->setPreference('GEDCOM_MEDIA_PATH', $GEDCOM_MEDIA_PATH);
121
+        $tree->setPreference('WORD_WRAPPED_NOTES', $WORD_WRAPPED_NOTES);
122
+        if ($basename) {
123
+            $tree->importGedcomFile(WT_DATA_DIR . $basename, $basename);
124
+        } else {
125
+            FlashMessages::addMessage(I18N::translate('No GEDCOM file was received.'), 'danger');
126
+        }
127
+    }
128
+    header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
129
+
130
+    return;
131 131
 
132 132
 case 'synchronize':
133
-	if (Filter::checkCsrf()) {
134
-		$basenames = array();
135
-
136
-		foreach ($gedcom_files as $gedcom_file) {
137
-			$filemtime   = filemtime($gedcom_file); // Only import files that have changed
138
-			$basename    = basename($gedcom_file);
139
-			$basenames[] = $basename;
140
-
141
-			$tree = Tree::findByName($basename);
142
-			if (!$tree) {
143
-				$tree = Tree::create($basename, $basename);
144
-			}
145
-			if ($tree->getPreference('filemtime') != $filemtime) {
146
-				$tree->importGedcomFile($gedcom_file, $basename);
147
-				$tree->setPreference('filemtime', $filemtime);
148
-				FlashMessages::addMessage(I18N::translate('The GEDCOM file “%s” has been imported.', Filter::escapeHtml($basename)), 'success');
149
-			}
150
-		}
151
-
152
-		foreach (Tree::getAll() as $tree) {
153
-			if (!in_array($tree->getName(), $basenames)) {
154
-				FlashMessages::addMessage(I18N::translate('The family tree “%s” has been deleted.', $tree->getTitleHtml()), 'success');
155
-				$tree->delete();
156
-			}
157
-		}
158
-
159
-	}
160
-	header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
161
-
162
-	return;
133
+    if (Filter::checkCsrf()) {
134
+        $basenames = array();
135
+
136
+        foreach ($gedcom_files as $gedcom_file) {
137
+            $filemtime   = filemtime($gedcom_file); // Only import files that have changed
138
+            $basename    = basename($gedcom_file);
139
+            $basenames[] = $basename;
140
+
141
+            $tree = Tree::findByName($basename);
142
+            if (!$tree) {
143
+                $tree = Tree::create($basename, $basename);
144
+            }
145
+            if ($tree->getPreference('filemtime') != $filemtime) {
146
+                $tree->importGedcomFile($gedcom_file, $basename);
147
+                $tree->setPreference('filemtime', $filemtime);
148
+                FlashMessages::addMessage(I18N::translate('The GEDCOM file “%s” has been imported.', Filter::escapeHtml($basename)), 'success');
149
+            }
150
+        }
151
+
152
+        foreach (Tree::getAll() as $tree) {
153
+            if (!in_array($tree->getName(), $basenames)) {
154
+                FlashMessages::addMessage(I18N::translate('The family tree “%s” has been deleted.', $tree->getTitleHtml()), 'success');
155
+                $tree->delete();
156
+            }
157
+        }
158
+
159
+    }
160
+    header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
161
+
162
+    return;
163 163
 }
164 164
 
165 165
 $default_tree_title  = /* I18N: Default name for a new tree */ I18N::translate('My family tree');
@@ -167,18 +167,18 @@  discard block
 block discarded – undo
167 167
 $default_tree_number = 1;
168 168
 $existing_trees      = Tree::getNameList();
169 169
 while (array_key_exists($default_tree_name . $default_tree_number, $existing_trees)) {
170
-	$default_tree_number++;
170
+    $default_tree_number++;
171 171
 }
172 172
 $default_tree_name .= $default_tree_number;
173 173
 
174 174
 // Process GET actions
175 175
 switch (Filter::get('action')) {
176 176
 case 'importform':
177
-	$controller
178
-		->setPageTitle($WT_TREE->getTitleHtml() . ' — ' . I18N::translate('Import a GEDCOM file'))
179
-		->pageHeader();
177
+    $controller
178
+        ->setPageTitle($WT_TREE->getTitleHtml() . ' — ' . I18N::translate('Import a GEDCOM file'))
179
+        ->pageHeader();
180 180
 
181
-	?>
181
+    ?>
182 182
 	<ol class="breadcrumb small">
183 183
 		<li><a href="admin.php"><?php echo I18N::translate('Control panel'); ?></a></li>
184 184
 		<li><a href="admin_trees_manage.php"><?php echo I18N::translate('Manage family trees'); ?></a></li>
@@ -188,13 +188,13 @@  discard block
 block discarded – undo
188 188
 	<h1><?php echo $controller->getPageTitle(); ?></h1>
189 189
 	<?php
190 190
 
191
-	$tree = Tree::findById(Filter::getInteger('gedcom_id'));
192
-	// Check it exists
193
-	if (!$tree) {
194
-		break;
195
-	}
196
-	$gedcom_filename = $tree->getPreference('gedcom_filename')
197
-	?>
191
+    $tree = Tree::findById(Filter::getInteger('gedcom_id'));
192
+    // Check it exists
193
+    if (!$tree) {
194
+        break;
195
+    }
196
+    $gedcom_filename = $tree->getPreference('gedcom_filename')
197
+    ?>
198 198
 	<p>
199 199
 		<?php echo /* I18N: %s is the name of a family tree */ I18N::translate('This will delete all the genealogy data from “%s” and replace it with data from a GEDCOM file.', $tree->getTitleHtml()); ?>
200 200
 	</p>
@@ -230,33 +230,33 @@  discard block
 block discarded – undo
230 230
 								<?php echo WT_DATA_DIR; ?>
231 231
 							</span>
232 232
 							<?php
233
-							$d     = opendir(WT_DATA_DIR);
234
-							$files = array();
235
-							while (($f = readdir($d)) !== false) {
236
-								if (!is_dir(WT_DATA_DIR . $f) && is_readable(WT_DATA_DIR . $f)) {
237
-									$fp     = fopen(WT_DATA_DIR . $f, 'rb');
238
-									$header = fread($fp, 64);
239
-									fclose($fp);
240
-									if (preg_match('/^(' . WT_UTF8_BOM . ')?0 *HEAD/', $header)) {
241
-										$files[] = $f;
242
-									}
243
-								}
244
-							}
245
-							echo '<select name="tree_name" class="form-control" id="import-server-file">';
246
-							echo '<option value=""></option>';
247
-							sort($files);
248
-							foreach ($files as $gedcom_file) {
249
-								echo '<option value="', Filter::escapeHtml($gedcom_file), '" ';
250
-								if ($gedcom_file === $gedcom_filename) {
251
-									echo ' selected';
252
-								}
253
-								echo'>', Filter::escapeHtml($gedcom_file), '</option>';
254
-							}
255
-							if (!$files) {
256
-								echo '<option disabled selected>', I18N::translate('No GEDCOM files found.'), '</option>';
257
-							}
258
-							echo '</select>';
259
-							?>
233
+                            $d     = opendir(WT_DATA_DIR);
234
+                            $files = array();
235
+                            while (($f = readdir($d)) !== false) {
236
+                                if (!is_dir(WT_DATA_DIR . $f) && is_readable(WT_DATA_DIR . $f)) {
237
+                                    $fp     = fopen(WT_DATA_DIR . $f, 'rb');
238
+                                    $header = fread($fp, 64);
239
+                                    fclose($fp);
240
+                                    if (preg_match('/^(' . WT_UTF8_BOM . ')?0 *HEAD/', $header)) {
241
+                                        $files[] = $f;
242
+                                    }
243
+                                }
244
+                            }
245
+                            echo '<select name="tree_name" class="form-control" id="import-server-file">';
246
+                            echo '<option value=""></option>';
247
+                            sort($files);
248
+                            foreach ($files as $gedcom_file) {
249
+                                echo '<option value="', Filter::escapeHtml($gedcom_file), '" ';
250
+                                if ($gedcom_file === $gedcom_filename) {
251
+                                    echo ' selected';
252
+                                }
253
+                                echo'>', Filter::escapeHtml($gedcom_file), '</option>';
254
+                            }
255
+                            if (!$files) {
256
+                                echo '<option disabled selected>', I18N::translate('No GEDCOM files found.'), '</option>';
257
+                            }
258
+                            echo '</select>';
259
+                            ?>
260 260
 						</div>
261 261
 					</div>
262 262
 				</div>
@@ -313,11 +313,11 @@  discard block
 block discarded – undo
313 313
 	</form>
314 314
 	<?php
315 315
 
316
-	return;
316
+    return;
317 317
 }
318 318
 
319 319
 if (!Tree::getAll()) {
320
-	FlashMessages::addMessage(I18N::translate('You need to create a family tree.'), 'info');
320
+    FlashMessages::addMessage(I18N::translate('You need to create a family tree.'), 'info');
321 321
 }
322 322
 
323 323
 $controller->pageHeader();
@@ -326,9 +326,9 @@  discard block
 block discarded – undo
326 326
 // On sites with hundreds or thousands of trees, this page becomes very large.
327 327
 // Just show the current tree, the default tree, and unimported trees
328 328
 if (count($all_trees) >= $multiple_tree_threshold) {
329
-	$all_trees = array_filter($all_trees, function (Tree $x) use ($WT_TREE) {
330
-		return $x->getPreference('imported') === '0' || $WT_TREE->getTreeId() === $x->getTreeId() || $x->getName() === Site::getPreference('DEFAULT_GEDCOM');
331
-	});
329
+    $all_trees = array_filter($all_trees, function (Tree $x) use ($WT_TREE) {
330
+        return $x->getPreference('imported') === '0' || $WT_TREE->getTreeId() === $x->getTreeId() || $x->getName() === Site::getPreference('DEFAULT_GEDCOM');
331
+    });
332 332
 }
333 333
 
334 334
 // List the gedcoms available to this user
@@ -356,23 +356,23 @@  discard block
 block discarded – undo
356 356
 			<div class="panel-body">
357 357
 				<?php
358 358
 
359
-		// The third row shows an optional progress bar and a list of maintenance options
360
-		$importing = Database::prepare(
361
-			"SELECT 1 FROM `##gedcom_chunk` WHERE gedcom_id = ? AND imported = '0' LIMIT 1"
362
-		)->execute(array($tree->getTreeId()))->fetchOne();
363
-		if ($importing) {
364
-				?>
359
+        // The third row shows an optional progress bar and a list of maintenance options
360
+        $importing = Database::prepare(
361
+            "SELECT 1 FROM `##gedcom_chunk` WHERE gedcom_id = ? AND imported = '0' LIMIT 1"
362
+        )->execute(array($tree->getTreeId()))->fetchOne();
363
+        if ($importing) {
364
+                ?>
365 365
 				<div id="import<?php echo $tree->getTreeId(); ?>" class="col-xs-12">
366 366
 					<div class="progress">
367 367
 						<?php echo I18N::translate('Calculating…'); ?>
368 368
 					</div>
369 369
 				</div>
370 370
 				<?php
371
-			$controller->addInlineJavascript(
372
-				'jQuery("#import' . $tree->getTreeId() . '").load("import.php?gedcom_id=' . $tree->getTreeId() . '");'
373
-			);
374
-		}
375
-				?>
371
+            $controller->addInlineJavascript(
372
+                'jQuery("#import' . $tree->getTreeId() . '").load("import.php?gedcom_id=' . $tree->getTreeId() . '");'
373
+            );
374
+        }
375
+                ?>
376 376
 				<div class="row<?php echo $importing ? ' hidden' : ''; ?>" id="actions<?php echo $tree->getTreeId(); ?>">
377 377
 					<div class="col-sm-6 col-md-3">
378 378
 						<h3>
Please login to merge, or discard this patch.
Switch Indentation   +153 added lines, -153 removed lines patch added patch discarded remove patch
@@ -50,116 +50,116 @@  discard block
 block discarded – undo
50 50
 }
51 51
 // Process POST actions
52 52
 switch (Filter::post('action')) {
53
-case 'delete':
54
-	$gedcom_id = Filter::postInteger('gedcom_id');
55
-	if (Filter::checkCsrf() && $gedcom_id) {
56
-		$tree = Tree::findById($gedcom_id);
57
-		FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” has been deleted.', $tree->getTitleHtml()), 'success');
58
-		$tree->delete();
59
-	}
60
-	header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
61
-
62
-	return;
63
-case 'setdefault':
64
-	if (Filter::checkCsrf()) {
65
-		Site::setPreference('DEFAULT_GEDCOM', Filter::post('ged'));
66
-		FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” will be shown to visitors when they first arrive at this website.', $WT_TREE->getTitleHtml()), 'success');
67
-	}
68
-	header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
69
-
70
-	return;
71
-case 'new_tree':
72
-	$basename   = basename(Filter::post('tree_name'));
73
-	$tree_title = Filter::post('tree_title');
74
-
75
-	if (Filter::checkCsrf() && $basename && $tree_title) {
76
-		if (Tree::findByName($basename)) {
77
-			FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” already exists.', Filter::escapeHtml($basename)), 'danger');
78
-		} else {
79
-			Tree::create($basename, $tree_title);
80
-			FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” has been created.', Filter::escapeHtml($basename)), 'success');
81
-		}
82
-	}
83
-	header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME . '?ged=' . Filter::escapeUrl($basename));
84
-
85
-	return;
86
-case 'replace_upload':
87
-	$gedcom_id          = Filter::postInteger('gedcom_id');
88
-	$keep_media         = Filter::post('keep_media', '1', '0');
89
-	$GEDCOM_MEDIA_PATH  = Filter::post('GEDCOM_MEDIA_PATH');
90
-	$WORD_WRAPPED_NOTES = Filter::post('WORD_WRAPPED_NOTES', '1', '0');
91
-	$tree               = Tree::findById($gedcom_id);
92
-
93
-	if (Filter::checkCsrf() && $tree) {
94
-		$tree->setPreference('keep_media', $keep_media);
95
-		$tree->setPreference('GEDCOM_MEDIA_PATH', $GEDCOM_MEDIA_PATH);
96
-		$tree->setPreference('WORD_WRAPPED_NOTES', $WORD_WRAPPED_NOTES);
97
-		if (isset($_FILES['tree_name'])) {
98
-			if ($_FILES['tree_name']['error'] == 0 && is_readable($_FILES['tree_name']['tmp_name'])) {
99
-				$tree->importGedcomFile($_FILES['tree_name']['tmp_name'], $_FILES['tree_name']['name']);
100
-			} else {
101
-				FlashMessages::addMessage(Functions::fileUploadErrorText($_FILES['tree_name']['error']), 'danger');
102
-			}
103
-		} else {
104
-			FlashMessages::addMessage(I18N::translate('No GEDCOM file was received.'), 'danger');
105
-		}
106
-	}
107
-	header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
108
-
109
-	return;
110
-case 'replace_import':
111
-	$basename           = basename(Filter::post('tree_name'));
112
-	$gedcom_id          = Filter::postInteger('gedcom_id');
113
-	$keep_media         = Filter::post('keep_media', '1', '0');
114
-	$GEDCOM_MEDIA_PATH  = Filter::post('GEDCOM_MEDIA_PATH');
115
-	$WORD_WRAPPED_NOTES = Filter::post('WORD_WRAPPED_NOTES', '1', '0');
116
-	$tree               = Tree::findById($gedcom_id);
117
-
118
-	if (Filter::checkCsrf() && $tree) {
119
-		$tree->setPreference('keep_media', $keep_media);
120
-		$tree->setPreference('GEDCOM_MEDIA_PATH', $GEDCOM_MEDIA_PATH);
121
-		$tree->setPreference('WORD_WRAPPED_NOTES', $WORD_WRAPPED_NOTES);
122
-		if ($basename) {
123
-			$tree->importGedcomFile(WT_DATA_DIR . $basename, $basename);
124
-		} else {
125
-			FlashMessages::addMessage(I18N::translate('No GEDCOM file was received.'), 'danger');
126
-		}
127
-	}
128
-	header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
129
-
130
-	return;
131
-
132
-case 'synchronize':
133
-	if (Filter::checkCsrf()) {
134
-		$basenames = array();
135
-
136
-		foreach ($gedcom_files as $gedcom_file) {
137
-			$filemtime   = filemtime($gedcom_file); // Only import files that have changed
138
-			$basename    = basename($gedcom_file);
139
-			$basenames[] = $basename;
140
-
141
-			$tree = Tree::findByName($basename);
142
-			if (!$tree) {
143
-				$tree = Tree::create($basename, $basename);
144
-			}
145
-			if ($tree->getPreference('filemtime') != $filemtime) {
146
-				$tree->importGedcomFile($gedcom_file, $basename);
147
-				$tree->setPreference('filemtime', $filemtime);
148
-				FlashMessages::addMessage(I18N::translate('The GEDCOM file “%s” has been imported.', Filter::escapeHtml($basename)), 'success');
149
-			}
150
-		}
151
-
152
-		foreach (Tree::getAll() as $tree) {
153
-			if (!in_array($tree->getName(), $basenames)) {
154
-				FlashMessages::addMessage(I18N::translate('The family tree “%s” has been deleted.', $tree->getTitleHtml()), 'success');
155
-				$tree->delete();
156
-			}
157
-		}
158
-
159
-	}
160
-	header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
161
-
162
-	return;
53
+    case 'delete':
54
+	    $gedcom_id = Filter::postInteger('gedcom_id');
55
+	    if (Filter::checkCsrf() && $gedcom_id) {
56
+		    $tree = Tree::findById($gedcom_id);
57
+		    FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” has been deleted.', $tree->getTitleHtml()), 'success');
58
+		    $tree->delete();
59
+	    }
60
+	    header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
61
+
62
+	    return;
63
+    case 'setdefault':
64
+	    if (Filter::checkCsrf()) {
65
+		    Site::setPreference('DEFAULT_GEDCOM', Filter::post('ged'));
66
+		    FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” will be shown to visitors when they first arrive at this website.', $WT_TREE->getTitleHtml()), 'success');
67
+	    }
68
+	    header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
69
+
70
+	    return;
71
+    case 'new_tree':
72
+	    $basename   = basename(Filter::post('tree_name'));
73
+	    $tree_title = Filter::post('tree_title');
74
+
75
+	    if (Filter::checkCsrf() && $basename && $tree_title) {
76
+		    if (Tree::findByName($basename)) {
77
+			    FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” already exists.', Filter::escapeHtml($basename)), 'danger');
78
+		    } else {
79
+			    Tree::create($basename, $tree_title);
80
+			    FlashMessages::addMessage(/* I18N: %s is the name of a family tree */ I18N::translate('The family tree “%s” has been created.', Filter::escapeHtml($basename)), 'success');
81
+		    }
82
+	    }
83
+	    header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME . '?ged=' . Filter::escapeUrl($basename));
84
+
85
+	    return;
86
+    case 'replace_upload':
87
+	    $gedcom_id          = Filter::postInteger('gedcom_id');
88
+	    $keep_media         = Filter::post('keep_media', '1', '0');
89
+	    $GEDCOM_MEDIA_PATH  = Filter::post('GEDCOM_MEDIA_PATH');
90
+	    $WORD_WRAPPED_NOTES = Filter::post('WORD_WRAPPED_NOTES', '1', '0');
91
+	    $tree               = Tree::findById($gedcom_id);
92
+
93
+	    if (Filter::checkCsrf() && $tree) {
94
+		    $tree->setPreference('keep_media', $keep_media);
95
+		    $tree->setPreference('GEDCOM_MEDIA_PATH', $GEDCOM_MEDIA_PATH);
96
+		    $tree->setPreference('WORD_WRAPPED_NOTES', $WORD_WRAPPED_NOTES);
97
+		    if (isset($_FILES['tree_name'])) {
98
+			    if ($_FILES['tree_name']['error'] == 0 && is_readable($_FILES['tree_name']['tmp_name'])) {
99
+				    $tree->importGedcomFile($_FILES['tree_name']['tmp_name'], $_FILES['tree_name']['name']);
100
+			    } else {
101
+				    FlashMessages::addMessage(Functions::fileUploadErrorText($_FILES['tree_name']['error']), 'danger');
102
+			    }
103
+		    } else {
104
+			    FlashMessages::addMessage(I18N::translate('No GEDCOM file was received.'), 'danger');
105
+		    }
106
+	    }
107
+	    header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
108
+
109
+	    return;
110
+    case 'replace_import':
111
+	    $basename           = basename(Filter::post('tree_name'));
112
+	    $gedcom_id          = Filter::postInteger('gedcom_id');
113
+	    $keep_media         = Filter::post('keep_media', '1', '0');
114
+	    $GEDCOM_MEDIA_PATH  = Filter::post('GEDCOM_MEDIA_PATH');
115
+	    $WORD_WRAPPED_NOTES = Filter::post('WORD_WRAPPED_NOTES', '1', '0');
116
+	    $tree               = Tree::findById($gedcom_id);
117
+
118
+	    if (Filter::checkCsrf() && $tree) {
119
+		    $tree->setPreference('keep_media', $keep_media);
120
+		    $tree->setPreference('GEDCOM_MEDIA_PATH', $GEDCOM_MEDIA_PATH);
121
+		    $tree->setPreference('WORD_WRAPPED_NOTES', $WORD_WRAPPED_NOTES);
122
+		    if ($basename) {
123
+			    $tree->importGedcomFile(WT_DATA_DIR . $basename, $basename);
124
+		    } else {
125
+			    FlashMessages::addMessage(I18N::translate('No GEDCOM file was received.'), 'danger');
126
+		    }
127
+	    }
128
+	    header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
129
+
130
+	    return;
131
+
132
+    case 'synchronize':
133
+	    if (Filter::checkCsrf()) {
134
+		    $basenames = array();
135
+
136
+		    foreach ($gedcom_files as $gedcom_file) {
137
+			    $filemtime   = filemtime($gedcom_file); // Only import files that have changed
138
+			    $basename    = basename($gedcom_file);
139
+			    $basenames[] = $basename;
140
+
141
+			    $tree = Tree::findByName($basename);
142
+			    if (!$tree) {
143
+				    $tree = Tree::create($basename, $basename);
144
+			    }
145
+			    if ($tree->getPreference('filemtime') != $filemtime) {
146
+				    $tree->importGedcomFile($gedcom_file, $basename);
147
+				    $tree->setPreference('filemtime', $filemtime);
148
+				    FlashMessages::addMessage(I18N::translate('The GEDCOM file “%s” has been imported.', Filter::escapeHtml($basename)), 'success');
149
+			    }
150
+		    }
151
+
152
+		    foreach (Tree::getAll() as $tree) {
153
+			    if (!in_array($tree->getName(), $basenames)) {
154
+				    FlashMessages::addMessage(I18N::translate('The family tree “%s” has been deleted.', $tree->getTitleHtml()), 'success');
155
+				    $tree->delete();
156
+			    }
157
+		    }
158
+
159
+	    }
160
+	    header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME);
161
+
162
+	    return;
163 163
 }
164 164
 
165 165
 $default_tree_title  = /* I18N: Default name for a new tree */ I18N::translate('My family tree');
@@ -173,12 +173,12 @@  discard block
 block discarded – undo
173 173
 
174 174
 // Process GET actions
175 175
 switch (Filter::get('action')) {
176
-case 'importform':
177
-	$controller
178
-		->setPageTitle($WT_TREE->getTitleHtml() . ' — ' . I18N::translate('Import a GEDCOM file'))
179
-		->pageHeader();
176
+    case 'importform':
177
+	    $controller
178
+		    ->setPageTitle($WT_TREE->getTitleHtml() . ' — ' . I18N::translate('Import a GEDCOM file'))
179
+		    ->pageHeader();
180 180
 
181
-	?>
181
+	    ?>
182 182
 	<ol class="breadcrumb small">
183 183
 		<li><a href="admin.php"><?php echo I18N::translate('Control panel'); ?></a></li>
184 184
 		<li><a href="admin_trees_manage.php"><?php echo I18N::translate('Manage family trees'); ?></a></li>
@@ -188,14 +188,14 @@  discard block
 block discarded – undo
188 188
 	<h1><?php echo $controller->getPageTitle(); ?></h1>
189 189
 	<?php
190 190
 
191
-	$tree = Tree::findById(Filter::getInteger('gedcom_id'));
192
-	// Check it exists
193
-	if (!$tree) {
194
-		break;
195
-	}
196
-	$gedcom_filename = $tree->getPreference('gedcom_filename')
197
-	?>
198
-	<p>
191
+	    $tree = Tree::findById(Filter::getInteger('gedcom_id'));
192
+	    // Check it exists
193
+	    if (!$tree) {
194
+		    break;
195
+	    }
196
+	    $gedcom_filename = $tree->getPreference('gedcom_filename')
197
+	    ?>
198
+    	<p>
199 199
 		<?php echo /* I18N: %s is the name of a family tree */ I18N::translate('This will delete all the genealogy data from “%s” and replace it with data from a GEDCOM file.', $tree->getTitleHtml()); ?>
200 200
 	</p>
201 201
 	<form class="form form-horizontal" name="gedcomimportform" method="post" enctype="multipart/form-data" onsubmit="return checkGedcomImportForm('<?php echo Filter::escapeHtml(I18N::translate('You have selected a GEDCOM file with a different name. Is this correct?')); ?>');">
@@ -228,35 +228,35 @@  discard block
 block discarded – undo
228 228
 						<div class="input-group">
229 229
 							<span class="input-group-addon">
230 230
 								<?php echo WT_DATA_DIR; ?>
231
-							</span>
231
+    							</span>
232 232
 							<?php
233
-							$d     = opendir(WT_DATA_DIR);
234
-							$files = array();
235
-							while (($f = readdir($d)) !== false) {
236
-								if (!is_dir(WT_DATA_DIR . $f) && is_readable(WT_DATA_DIR . $f)) {
237
-									$fp     = fopen(WT_DATA_DIR . $f, 'rb');
238
-									$header = fread($fp, 64);
239
-									fclose($fp);
240
-									if (preg_match('/^(' . WT_UTF8_BOM . ')?0 *HEAD/', $header)) {
241
-										$files[] = $f;
242
-									}
243
-								}
244
-							}
245
-							echo '<select name="tree_name" class="form-control" id="import-server-file">';
246
-							echo '<option value=""></option>';
247
-							sort($files);
248
-							foreach ($files as $gedcom_file) {
249
-								echo '<option value="', Filter::escapeHtml($gedcom_file), '" ';
250
-								if ($gedcom_file === $gedcom_filename) {
251
-									echo ' selected';
252
-								}
253
-								echo'>', Filter::escapeHtml($gedcom_file), '</option>';
254
-							}
255
-							if (!$files) {
256
-								echo '<option disabled selected>', I18N::translate('No GEDCOM files found.'), '</option>';
257
-							}
258
-							echo '</select>';
259
-							?>
233
+							    $d     = opendir(WT_DATA_DIR);
234
+							    $files = array();
235
+							    while (($f = readdir($d)) !== false) {
236
+								    if (!is_dir(WT_DATA_DIR . $f) && is_readable(WT_DATA_DIR . $f)) {
237
+									    $fp     = fopen(WT_DATA_DIR . $f, 'rb');
238
+									    $header = fread($fp, 64);
239
+									    fclose($fp);
240
+									    if (preg_match('/^(' . WT_UTF8_BOM . ')?0 *HEAD/', $header)) {
241
+										    $files[] = $f;
242
+									    }
243
+								    }
244
+							    }
245
+							    echo '<select name="tree_name" class="form-control" id="import-server-file">';
246
+							    echo '<option value=""></option>';
247
+							    sort($files);
248
+							    foreach ($files as $gedcom_file) {
249
+								    echo '<option value="', Filter::escapeHtml($gedcom_file), '" ';
250
+								    if ($gedcom_file === $gedcom_filename) {
251
+									    echo ' selected';
252
+								    }
253
+								    echo'>', Filter::escapeHtml($gedcom_file), '</option>';
254
+							    }
255
+							    if (!$files) {
256
+								    echo '<option disabled selected>', I18N::translate('No GEDCOM files found.'), '</option>';
257
+							    }
258
+							    echo '</select>';
259
+							    ?>
260 260
 						</div>
261 261
 					</div>
262 262
 				</div>
@@ -298,7 +298,7 @@  discard block
 block discarded – undo
298 298
 					>
299 299
 				<p class="small text-muted">
300 300
 					<?php echo /* I18N: Help text for the “GEDCOM media path” configuration setting. A “path” is something like “C:\Documents\Genealogy\Photos\John_Smith.jpeg” */ I18N::translate('Some genealogy software creates GEDCOM files that contain media filenames with full paths. These paths will not exist on the web-server. To allow webtrees to find the file, the first part of the path must be removed.'); ?>
301
-					<?php echo /* I18N: Help text for the “GEDCOM media path” configuration setting. %s are all folder names */ I18N::translate('For example, if the GEDCOM file contains %1$s and webtrees expects to find %2$s in the media folder, then you would need to remove %3$s.', '<code>C:\\Documents\\family\\photo.jpeg</code>', '<code>family\\photo.jpeg</code>', '<code>C:\\Documents\\</code>'); ?>
301
+    					<?php echo /* I18N: Help text for the “GEDCOM media path” configuration setting. %s are all folder names */ I18N::translate('For example, if the GEDCOM file contains %1$s and webtrees expects to find %2$s in the media folder, then you would need to remove %3$s.', '<code>C:\\Documents\\family\\photo.jpeg</code>', '<code>family\\photo.jpeg</code>', '<code>C:\\Documents\\</code>'); ?>
302 302
 				</p>
303 303
 			</div>
304 304
 		</fieldset>
@@ -313,7 +313,7 @@  discard block
 block discarded – undo
313 313
 	</form>
314 314
 	<?php
315 315
 
316
-	return;
316
+	    return;
317 317
 }
318 318
 
319 319
 if (!Tree::getAll()) {
Please login to merge, or discard this patch.
Braces   +5 added lines, -2 removed lines patch added patch discarded remove patch
@@ -436,8 +436,11 @@
 block discarded – undo
436 436
 									<i class="fa fa-li fa-star"></i>
437 437
 									<?php if ($tree->getName() == Site::getPreference('DEFAULT_GEDCOM')): ?>
438 438
 										<?php echo I18N::translate('Default family tree'); ?>
439
-									<?php else: ?>
440
-										<a href="#" onclick="document.defaultform<?php echo $tree->getTreeId(); ?>.submit();">
439
+									<?php else {
440
+    : ?>
441
+										<a href="#" onclick="document.defaultform<?php echo $tree->getTreeId();
442
+}
443
+?>.submit();">
441 444
 											<?php echo I18N::translate('Set as default'); ?>
442 445
 											<span class="sr-only">
443 446
 										<?php echo $tree->getTitleHtml(); ?>
Please login to merge, or discard this patch.
gedrecord.php 1 patch
Indentation   +38 added lines, -38 removed lines patch added patch discarded remove patch
@@ -32,48 +32,48 @@  discard block
 block discarded – undo
32 32
 
33 33
 $record = GedcomRecord::getInstance(Filter::get('pid', WT_REGEX_XREF), $WT_TREE);
34 34
 if (
35
-	$record instanceof Individual ||
36
-	$record instanceof Family ||
37
-	$record instanceof Source ||
38
-	$record instanceof Repository ||
39
-	$record instanceof Note ||
40
-	$record instanceof Media
35
+    $record instanceof Individual ||
36
+    $record instanceof Family ||
37
+    $record instanceof Source ||
38
+    $record instanceof Repository ||
39
+    $record instanceof Note ||
40
+    $record instanceof Media
41 41
 ) {
42
-	header('Location: ' . WT_BASE_URL . $record->getRawUrl());
42
+    header('Location: ' . WT_BASE_URL . $record->getRawUrl());
43 43
 
44
-	return;
44
+    return;
45 45
 }
46 46
 $controller = new GedcomRecordController($record);
47 47
 
48 48
 if ($controller->record && $controller->record->canShow()) {
49
-	if ($controller->record->isPendingDeletion()) {
50
-		if (Auth::isModerator($controller->record->getTree())) {
51
-			FlashMessages::addMessage(/* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate(
52
-				'This record has been deleted. You should review the deletion and then %1$s or %2$s it.',
53
-				'<a href="#" onclick="accept_changes(\'' . $controller->record->getXref() . '\');">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>',
54
-				'<a href="#" onclick="reject_changes(\'' . $controller->record->getXref() . '\');">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>'
55
-			) . ' ' . FunctionsPrint::helpLink('pending_changes'), 'warning');
56
-		} elseif (Auth::isEditor($controller->record->getTree())) {
57
-			FlashMessages::addMessage(I18N::translate('This record has been deleted. The deletion will need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes'), 'warning');
58
-		}
59
-	} elseif ($controller->record->isPendingAddtion()) {
60
-		if (Auth::isModerator($controller->record->getTree())) {
61
-			FlashMessages::addMessage(/* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate(
62
-				'This record has been edited. You should review the changes and then %1$s or %2$s them.',
63
-				'<a href="#" onclick="accept_changes(\'' . $controller->record->getXref() . '\');">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>',
64
-				'<a href="#" onclick="reject_changes(\'' . $controller->record->getXref() . '\');">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>'
65
-			) . ' ' . FunctionsPrint::helpLink('pending_changes'), 'warning');
66
-		} elseif (Auth::isEditor($controller->record->getTree())) {
67
-			FlashMessages::addMessage(I18N::translate('This record has been edited. The changes need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes'), 'warning');
68
-		}
69
-	}
70
-	$controller->pageHeader();
49
+    if ($controller->record->isPendingDeletion()) {
50
+        if (Auth::isModerator($controller->record->getTree())) {
51
+            FlashMessages::addMessage(/* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate(
52
+                'This record has been deleted. You should review the deletion and then %1$s or %2$s it.',
53
+                '<a href="#" onclick="accept_changes(\'' . $controller->record->getXref() . '\');">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>',
54
+                '<a href="#" onclick="reject_changes(\'' . $controller->record->getXref() . '\');">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>'
55
+            ) . ' ' . FunctionsPrint::helpLink('pending_changes'), 'warning');
56
+        } elseif (Auth::isEditor($controller->record->getTree())) {
57
+            FlashMessages::addMessage(I18N::translate('This record has been deleted. The deletion will need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes'), 'warning');
58
+        }
59
+    } elseif ($controller->record->isPendingAddtion()) {
60
+        if (Auth::isModerator($controller->record->getTree())) {
61
+            FlashMessages::addMessage(/* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ I18N::translate(
62
+                'This record has been edited. You should review the changes and then %1$s or %2$s them.',
63
+                '<a href="#" onclick="accept_changes(\'' . $controller->record->getXref() . '\');">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>',
64
+                '<a href="#" onclick="reject_changes(\'' . $controller->record->getXref() . '\');">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>'
65
+            ) . ' ' . FunctionsPrint::helpLink('pending_changes'), 'warning');
66
+        } elseif (Auth::isEditor($controller->record->getTree())) {
67
+            FlashMessages::addMessage(I18N::translate('This record has been edited. The changes need to be reviewed by a moderator.') . ' ' . FunctionsPrint::helpLink('pending_changes'), 'warning');
68
+        }
69
+    }
70
+    $controller->pageHeader();
71 71
 } else {
72
-	FlashMessages::addMessage(I18N::translate('This record does not exist or you do not have permission to view it.'), 'danger');
73
-	http_response_code(404);
74
-	$controller->pageHeader();
72
+    FlashMessages::addMessage(I18N::translate('This record does not exist or you do not have permission to view it.'), 'danger');
73
+    http_response_code(404);
74
+    $controller->pageHeader();
75 75
 
76
-	return;
76
+    return;
77 77
 }
78 78
 
79 79
 $controller->addInlineJavascript('
@@ -141,10 +141,10 @@  discard block
 block discarded – undo
141 141
 		<div id="record-edit">
142 142
 			<table class="facts_table">
143 143
 				<?php
144
-				foreach ($facts as $fact) {
145
-					FunctionsPrintFacts::printFact($fact, $controller->record);
146
-				}
147
-				?>
144
+                foreach ($facts as $fact) {
145
+                    FunctionsPrintFacts::printFact($fact, $controller->record);
146
+                }
147
+                ?>
148 148
 			</table>
149 149
 		</div>
150 150
 
Please login to merge, or discard this patch.
sourcelist.php 1 patch
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -34,6 +34,6 @@
 block discarded – undo
34 34
 $controller->pageHeader();
35 35
 
36 36
 echo '<div id="sourcelist-page">',
37
-	'<h2>', I18N::translate('Sources'), '</h2>';
38
-	echo FunctionsPrintLists::sourceTable(FunctionsDb::getSourceList($WT_TREE));
37
+    '<h2>', I18N::translate('Sources'), '</h2>';
38
+    echo FunctionsPrintLists::sourceTable(FunctionsDb::getSourceList($WT_TREE));
39 39
 echo '</div>';
Please login to merge, or discard this patch.
repolist.php 1 patch
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -34,6 +34,6 @@
 block discarded – undo
34 34
 $controller->pageHeader();
35 35
 
36 36
 echo '<div id="repolist-page">',
37
-	'<h2>', I18N::translate('Repositories'), '</h2>';
38
-	echo FunctionsPrintLists::repositoryTable(FunctionsDb::getRepositoryList($WT_TREE));
37
+    '<h2>', I18N::translate('Repositories'), '</h2>';
38
+    echo FunctionsPrintLists::repositoryTable(FunctionsDb::getRepositoryList($WT_TREE));
39 39
 echo '</div>';
Please login to merge, or discard this patch.