Completed
Pull Request — release-2.1 (#4150)
by Fran
13:39 queued 01:31
created
Sources/ManageSearch.php 1 patch
Braces   +109 added lines, -90 removed lines patch added patch discarded remove patch
@@ -13,8 +13,9 @@  discard block
 block discarded – undo
13 13
  * @version 2.1 Beta 4
14 14
  */
15 15
 
16
-if (!defined('SMF'))
16
+if (!defined('SMF')) {
17 17
 	die('No direct access...');
18
+}
18 19
 
19 20
 /**
20 21
  * Main entry point for the admin search settings screen.
@@ -107,11 +108,13 @@  discard block
 block discarded – undo
107 108
 	// Perhaps the search method wants to add some settings?
108 109
 	require_once($sourcedir . '/Search.php');
109 110
 	$searchAPI = findSearchAPI();
110
-	if (is_callable(array($searchAPI, 'searchSettings')))
111
-		call_user_func_array(array($searchAPI, 'searchSettings'), array(&$config_vars));
111
+	if (is_callable(array($searchAPI, 'searchSettings'))) {
112
+			call_user_func_array(array($searchAPI, 'searchSettings'), array(&$config_vars));
113
+	}
112 114
 
113
-	if ($return_config)
114
-		return $config_vars;
115
+	if ($return_config) {
116
+			return $config_vars;
117
+	}
115 118
 
116 119
 	$context['page_title'] = $txt['search_settings_title'];
117 120
 	$context['sub_template'] = 'show_settings';
@@ -126,8 +129,9 @@  discard block
 block discarded – undo
126 129
 
127 130
 		call_integration_hook('integrate_save_search_settings');
128 131
 
129
-		if (empty($_POST['search_results_per_page']))
130
-			$_POST['search_results_per_page'] = !empty($modSettings['search_results_per_page']) ? $modSettings['search_results_per_page'] : $modSettings['defaultMaxMessages'];
132
+		if (empty($_POST['search_results_per_page'])) {
133
+					$_POST['search_results_per_page'] = !empty($modSettings['search_results_per_page']) ? $modSettings['search_results_per_page'] : $modSettings['defaultMaxMessages'];
134
+		}
131 135
 		saveDBSettings($config_vars);
132 136
 		$_SESSION['adm-save'] = true;
133 137
 		redirectexit('action=admin;area=managesearch;sa=settings;' . $context['session_var'] . '=' . $context['session_id']);
@@ -177,17 +181,20 @@  discard block
 block discarded – undo
177 181
 		call_integration_hook('integrate_save_search_weights');
178 182
 
179 183
 		$changes = array();
180
-		foreach ($factors as $factor)
181
-			$changes[$factor] = (int) $_POST[$factor];
184
+		foreach ($factors as $factor) {
185
+					$changes[$factor] = (int) $_POST[$factor];
186
+		}
182 187
 		updateSettings($changes);
183 188
 	}
184 189
 
185 190
 	$context['relative_weights'] = array('total' => 0);
186
-	foreach ($factors as $factor)
187
-		$context['relative_weights']['total'] += isset($modSettings[$factor]) ? $modSettings[$factor] : 0;
191
+	foreach ($factors as $factor) {
192
+			$context['relative_weights']['total'] += isset($modSettings[$factor]) ? $modSettings[$factor] : 0;
193
+	}
188 194
 
189
-	foreach ($factors as $factor)
190
-		$context['relative_weights'][$factor] = round(100 * (isset($modSettings[$factor]) ? $modSettings[$factor] : 0) / $context['relative_weights']['total'], 1);
195
+	foreach ($factors as $factor) {
196
+			$context['relative_weights'][$factor] = round(100 * (isset($modSettings[$factor]) ? $modSettings[$factor] : 0) / $context['relative_weights']['total'], 1);
197
+	}
191 198
 
192 199
 	createToken('admin-msw');
193 200
 }
@@ -215,8 +222,9 @@  discard block
 block discarded – undo
215 222
 	$context['search_apis'] = loadSearchAPIs();
216 223
 
217 224
 	// Detect whether a fulltext index is set.
218
-	if ($context['supports_fulltext'])
219
-		detectFulltextIndex();
225
+	if ($context['supports_fulltext']) {
226
+			detectFulltextIndex();
227
+	}
220 228
 
221 229
 	if (!empty($_REQUEST['sa']) && $_REQUEST['sa'] == 'createfulltext')
222 230
 	{
@@ -240,8 +248,7 @@  discard block
 block discarded – undo
240 248
 					'language' => $language_ftx
241 249
 				)
242 250
 			);
243
-		}
244
-		else
251
+		} else
245 252
 		{
246 253
 			// Make sure it's gone before creating it.
247 254
 			$smcFunc['db_query']('', '
@@ -261,8 +268,7 @@  discard block
 block discarded – undo
261 268
 		}
262 269
 
263 270
 		$context['fulltext_index'] = 'body';
264
-	}
265
-	elseif (!empty($_REQUEST['sa']) && $_REQUEST['sa'] == 'removefulltext' && !empty($context['fulltext_index']))
271
+	} elseif (!empty($_REQUEST['sa']) && $_REQUEST['sa'] == 'removefulltext' && !empty($context['fulltext_index']))
266 272
 	{
267 273
 		checkSession('get');
268 274
 		validateToken('admin-msm', 'get');
@@ -279,12 +285,12 @@  discard block
 block discarded – undo
279 285
 		$context['fulltext_index'] = '';
280 286
 
281 287
 		// Go back to the default search method.
282
-		if (!empty($modSettings['search_index']) && $modSettings['search_index'] == 'fulltext')
283
-			updateSettings(array(
288
+		if (!empty($modSettings['search_index']) && $modSettings['search_index'] == 'fulltext') {
289
+					updateSettings(array(
284 290
 				'search_index' => '',
285 291
 			));
286
-	}
287
-	elseif (!empty($_REQUEST['sa']) && $_REQUEST['sa'] == 'removecustom')
292
+		}
293
+	} elseif (!empty($_REQUEST['sa']) && $_REQUEST['sa'] == 'removecustom')
288 294
 	{
289 295
 		checkSession('get');
290 296
 		validateToken('admin-msm', 'get');
@@ -306,12 +312,12 @@  discard block
 block discarded – undo
306 312
 		));
307 313
 
308 314
 		// Go back to the default search method.
309
-		if (!empty($modSettings['search_index']) && $modSettings['search_index'] == 'custom')
310
-			updateSettings(array(
315
+		if (!empty($modSettings['search_index']) && $modSettings['search_index'] == 'custom') {
316
+					updateSettings(array(
311 317
 				'search_index' => '',
312 318
 			));
313
-	}
314
-	elseif (isset($_POST['save']))
319
+		}
320
+	} elseif (isset($_POST['save']))
315 321
 	{
316 322
 		checkSession();
317 323
 		validateToken('admin-msmpost');
@@ -333,8 +339,8 @@  discard block
 block discarded – undo
333 339
 	// Get some info about the messages table, to show its size and index size.
334 340
 	if ($db_type == 'mysql')
335 341
 	{
336
-		if (preg_match('~^`(.+?)`\.(.+?)$~', $db_prefix, $match) !== 0)
337
-			$request = $smcFunc['db_query']('', '
342
+		if (preg_match('~^`(.+?)`\.(.+?)$~', $db_prefix, $match) !== 0) {
343
+					$request = $smcFunc['db_query']('', '
338 344
 				SHOW TABLE STATUS
339 345
 				FROM {string:database_name}
340 346
 				LIKE {string:table_name}',
@@ -343,14 +349,15 @@  discard block
 block discarded – undo
343 349
 					'table_name' => str_replace('_', '\_', $match[2]) . 'messages',
344 350
 				)
345 351
 			);
346
-		else
347
-			$request = $smcFunc['db_query']('', '
352
+		} else {
353
+					$request = $smcFunc['db_query']('', '
348 354
 				SHOW TABLE STATUS
349 355
 				LIKE {string:table_name}',
350 356
 				array(
351 357
 					'table_name' => str_replace('_', '\_', $db_prefix) . 'messages',
352 358
 				)
353 359
 			);
360
+		}
354 361
 		if ($request !== false && $smcFunc['db_num_rows']($request) == 1)
355 362
 		{
356 363
 			// Only do this if the user has permission to execute this query.
@@ -362,8 +369,8 @@  discard block
 block discarded – undo
362 369
 		}
363 370
 
364 371
 		// Now check the custom index table, if it exists at all.
365
-		if (preg_match('~^`(.+?)`\.(.+?)$~', $db_prefix, $match) !== 0)
366
-			$request = $smcFunc['db_query']('', '
372
+		if (preg_match('~^`(.+?)`\.(.+?)$~', $db_prefix, $match) !== 0) {
373
+					$request = $smcFunc['db_query']('', '
367 374
 				SHOW TABLE STATUS
368 375
 				FROM {string:database_name}
369 376
 				LIKE {string:table_name}',
@@ -372,14 +379,15 @@  discard block
 block discarded – undo
372 379
 					'table_name' => str_replace('_', '\_', $match[2]) . 'log_search_words',
373 380
 				)
374 381
 			);
375
-		else
376
-			$request = $smcFunc['db_query']('', '
382
+		} else {
383
+					$request = $smcFunc['db_query']('', '
377 384
 				SHOW TABLE STATUS
378 385
 				LIKE {string:table_name}',
379 386
 				array(
380 387
 					'table_name' => str_replace('_', '\_', $db_prefix) . 'log_search_words',
381 388
 				)
382 389
 			);
390
+		}
383 391
 		if ($request !== false && $smcFunc['db_num_rows']($request) == 1)
384 392
 		{
385 393
 			// Only do this if the user has permission to execute this query.
@@ -388,8 +396,7 @@  discard block
 block discarded – undo
388 396
 			$context['table_info']['custom_index_length'] = $row['Data_length'] + $row['Index_length'];
389 397
 			$smcFunc['db_free_result']($request);
390 398
 		}
391
-	}
392
-	elseif ($db_type == 'postgresql')
399
+	} elseif ($db_type == 'postgresql')
393 400
 	{
394 401
 		// In order to report the sizes correctly we need to perform vacuum (optimize) on the tables we will be using.
395 402
 		//db_extend();
@@ -431,38 +438,38 @@  discard block
 block discarded – undo
431 438
 					$context['table_info']['data_length'] = (int) $row['table_size'];
432 439
 					$context['table_info']['index_length'] = (int) $row['index_size'];
433 440
 					$context['table_info']['fulltext_length'] = (int) $row['index_size'];
434
-				}
435
-				elseif ($row['indexname'] == $db_prefix . 'log_search_words')
441
+				} elseif ($row['indexname'] == $db_prefix . 'log_search_words')
436 442
 				{
437 443
 					$context['table_info']['index_length'] = (int) $row['index_size'];
438 444
 					$context['table_info']['custom_index_length'] = (int) $row['index_size'];
439 445
 				}
440 446
 			}
441 447
 			$smcFunc['db_free_result']($request);
442
-		}
443
-		else
444
-			// Didn't work for some reason...
448
+		} else {
449
+					// Didn't work for some reason...
445 450
 			$context['table_info'] = array(
446 451
 				'data_length' => $txt['not_applicable'],
447 452
 				'index_length' => $txt['not_applicable'],
448 453
 				'fulltext_length' => $txt['not_applicable'],
449 454
 				'custom_index_length' => $txt['not_applicable'],
450 455
 			);
451
-	}
452
-	else
453
-		$context['table_info'] = array(
456
+		}
457
+	} else {
458
+			$context['table_info'] = array(
454 459
 			'data_length' => $txt['not_applicable'],
455 460
 			'index_length' => $txt['not_applicable'],
456 461
 			'fulltext_length' => $txt['not_applicable'],
457 462
 			'custom_index_length' => $txt['not_applicable'],
458 463
 		);
464
+	}
459 465
 
460 466
 	// Format the data and index length in kilobytes.
461 467
 	foreach ($context['table_info'] as $type => $size)
462 468
 	{
463 469
 		// If it's not numeric then just break.  This database engine doesn't support size.
464
-		if (!is_numeric($size))
465
-			break;
470
+		if (!is_numeric($size)) {
471
+					break;
472
+		}
466 473
 
467 474
 		$context['table_info'][$type] = comma_format($context['table_info'][$type] / 1024) . ' ' . $txt['search_method_kilobytes'];
468 475
 	}
@@ -491,8 +498,9 @@  discard block
 block discarded – undo
491 498
 
492 499
 	// Scotty, we need more time...
493 500
 	@set_time_limit(600);
494
-	if (function_exists('apache_reset_timeout'))
495
-		@apache_reset_timeout();
501
+	if (function_exists('apache_reset_timeout')) {
502
+			@apache_reset_timeout();
503
+	}
496 504
 
497 505
 	$context[$context['admin_menu_name']]['current_subsection'] = 'method';
498 506
 	$context['page_title'] = $txt['search_index_custom'];
@@ -522,8 +530,7 @@  discard block
 block discarded – undo
522 530
 		$context['start'] = (int) $context['index_settings']['resume_at'];
523 531
 		unset($context['index_settings']['resume_at']);
524 532
 		$context['step'] = 1;
525
-	}
526
-	else
533
+	} else
527 534
 	{
528 535
 		$context['index_settings'] = array(
529 536
 			'bytes_per_word' => isset($_REQUEST['bytes_per_word']) && isset($index_properties[$_REQUEST['bytes_per_word']]) ? (int) $_REQUEST['bytes_per_word'] : 2,
@@ -532,12 +539,14 @@  discard block
 block discarded – undo
532 539
 		$context['step'] = isset($_REQUEST['step']) ? (int) $_REQUEST['step'] : 0;
533 540
 
534 541
 		// admin timeouts are painful when building these long indexes - but only if we actually have such things enabled
535
-		if (empty($modSettings['securityDisable']) && $_SESSION['admin_time'] + 3300 < time() && $context['step'] >= 1)
536
-			$_SESSION['admin_time'] = time();
542
+		if (empty($modSettings['securityDisable']) && $_SESSION['admin_time'] + 3300 < time() && $context['step'] >= 1) {
543
+					$_SESSION['admin_time'] = time();
544
+		}
537 545
 	}
538 546
 
539
-	if ($context['step'] !== 0)
540
-		checkSession('request');
547
+	if ($context['step'] !== 0) {
548
+			checkSession('request');
549
+	}
541 550
 
542 551
 	// Step 0: let the user determine how they like their index.
543 552
 	if ($context['step'] === 0)
@@ -566,12 +575,14 @@  discard block
 block discarded – undo
566 575
 			$smcFunc['db_create_word_search']($index_properties[$context['index_settings']['bytes_per_word']]['column_definition']);
567 576
 
568 577
 			// Temporarily switch back to not using a search index.
569
-			if (!empty($modSettings['search_index']) && $modSettings['search_index'] == 'custom')
570
-				updateSettings(array('search_index' => ''));
578
+			if (!empty($modSettings['search_index']) && $modSettings['search_index'] == 'custom') {
579
+							updateSettings(array('search_index' => ''));
580
+			}
571 581
 
572 582
 			// Don't let simultanious processes be updating the search index.
573
-			if (!empty($modSettings['search_custom_index_config']))
574
-				updateSettings(array('search_custom_index_config' => ''));
583
+			if (!empty($modSettings['search_custom_index_config'])) {
584
+							updateSettings(array('search_custom_index_config' => ''));
585
+			}
575 586
 		}
576 587
 
577 588
 		$num_messages = array(
@@ -587,16 +598,16 @@  discard block
 block discarded – undo
587 598
 				'starting_id' => $context['start'],
588 599
 			)
589 600
 		);
590
-		while ($row = $smcFunc['db_fetch_assoc']($request))
591
-			$num_messages[empty($row['todo']) ? 'done' : 'todo'] = $row['num_messages'];
601
+		while ($row = $smcFunc['db_fetch_assoc']($request)) {
602
+					$num_messages[empty($row['todo']) ? 'done' : 'todo'] = $row['num_messages'];
603
+		}
592 604
 
593 605
 		if (empty($num_messages['todo']))
594 606
 		{
595 607
 			$context['step'] = 2;
596 608
 			$context['percentage'] = 80;
597 609
 			$context['start'] = 0;
598
-		}
599
-		else
610
+		} else
600 611
 		{
601 612
 			// Number of seconds before the next step.
602 613
 			$stop = time() + 3;
@@ -637,21 +648,22 @@  discard block
 block discarded – undo
637 648
 
638 649
 				$context['start'] += $forced_break ? $number_processed : $messages_per_batch;
639 650
 
640
-				if (!empty($inserts))
641
-					$smcFunc['db_insert']('ignore',
651
+				if (!empty($inserts)) {
652
+									$smcFunc['db_insert']('ignore',
642 653
 						'{db_prefix}log_search_words',
643 654
 						array('id_word' => 'int', 'id_msg' => 'int'),
644 655
 						$inserts,
645 656
 						array('id_word', 'id_msg')
646 657
 					);
658
+				}
647 659
 				if ($num_messages['todo'] === 0)
648 660
 				{
649 661
 					$context['step'] = 2;
650 662
 					$context['start'] = 0;
651 663
 					break;
664
+				} else {
665
+									updateSettings(array('search_custom_index_resume' => json_encode(array_merge($context['index_settings'], array('resume_at' => $context['start'])))));
652 666
 				}
653
-				else
654
-					updateSettings(array('search_custom_index_resume' => json_encode(array_merge($context['index_settings'], array('resume_at' => $context['start'])))));
655 667
 			}
656 668
 
657 669
 			// Since there are still two steps to go, 80% is the maximum here.
@@ -662,9 +674,9 @@  discard block
 block discarded – undo
662 674
 	// Step 2: removing the words that occur too often and are of no use.
663 675
 	elseif ($context['step'] === 2)
664 676
 	{
665
-		if ($context['index_settings']['bytes_per_word'] < 4)
666
-			$context['step'] = 3;
667
-		else
677
+		if ($context['index_settings']['bytes_per_word'] < 4) {
678
+					$context['step'] = 3;
679
+		} else
668 680
 		{
669 681
 			$stop_words = $context['start'] === 0 || empty($modSettings['search_stopwords']) ? array() : explode(',', $modSettings['search_stopwords']);
670 682
 			$stop = time() + 3;
@@ -685,20 +697,22 @@  discard block
 block discarded – undo
685 697
 						'minimum_messages' => $max_messages,
686 698
 					)
687 699
 				);
688
-				while ($row = $smcFunc['db_fetch_assoc']($request))
689
-					$stop_words[] = $row['id_word'];
700
+				while ($row = $smcFunc['db_fetch_assoc']($request)) {
701
+									$stop_words[] = $row['id_word'];
702
+				}
690 703
 				$smcFunc['db_free_result']($request);
691 704
 
692 705
 				updateSettings(array('search_stopwords' => implode(',', $stop_words)));
693 706
 
694
-				if (!empty($stop_words))
695
-					$smcFunc['db_query']('', '
707
+				if (!empty($stop_words)) {
708
+									$smcFunc['db_query']('', '
696 709
 						DELETE FROM {db_prefix}log_search_words
697 710
 						WHERE id_word in ({array_int:stop_words})',
698 711
 						array(
699 712
 							'stop_words' => $stop_words,
700 713
 						)
701 714
 					);
715
+				}
702 716
 
703 717
 				$context['start'] += $index_properties[$context['index_settings']['bytes_per_word']]['step_size'];
704 718
 				if ($context['start'] > $index_properties[$context['index_settings']['bytes_per_word']]['max_size'])
@@ -759,8 +773,9 @@  discard block
 block discarded – undo
759 773
 					$searchAPI = new $search_class_name();
760 774
 
761 775
 					// No Support?  NEXT!
762
-					if (!$searchAPI->is_supported)
763
-						continue;
776
+					if (!$searchAPI->is_supported) {
777
+											continue;
778
+					}
764 779
 
765 780
 					$apis[$index_name] = array(
766 781
 						'filename' => $file,
@@ -807,10 +822,10 @@  discard block
 block discarded – undo
807 822
 				'messages_ftx' => $db_prefix . 'messages_ftx',
808 823
 			)
809 824
 		);
810
-		while ($row = $smcFunc['db_fetch_assoc']($request))
811
-			$context['fulltext_index'][] = $row['indexname'];
812
-	}
813
-	else
825
+		while ($row = $smcFunc['db_fetch_assoc']($request)) {
826
+					$context['fulltext_index'][] = $row['indexname'];
827
+		}
828
+	} else
814 829
 	{
815 830
 		$request = $smcFunc['db_query']('', '
816 831
 			SHOW INDEX
@@ -821,17 +836,19 @@  discard block
 block discarded – undo
821 836
 		$context['fulltext_index'] = array();
822 837
 		if ($request !== false || $smcFunc['db_num_rows']($request) != 0)
823 838
 		{
824
-			while ($row = $smcFunc['db_fetch_assoc']($request))
825
-			if ($row['Column_name'] == 'body' && (isset($row['Index_type']) && $row['Index_type'] == 'FULLTEXT' || isset($row['Comment']) && $row['Comment'] == 'FULLTEXT'))
839
+			while ($row = $smcFunc['db_fetch_assoc']($request)) {
840
+						if ($row['Column_name'] == 'body' && (isset($row['Index_type']) && $row['Index_type'] == 'FULLTEXT' || isset($row['Comment']) && $row['Comment'] == 'FULLTEXT'))
826 841
 				$context['fulltext_index'][] = $row['Key_name'];
842
+			}
827 843
 			$smcFunc['db_free_result']($request);
828 844
 
829
-			if (is_array($context['fulltext_index']))
830
-				$context['fulltext_index'] = array_unique($context['fulltext_index']);
845
+			if (is_array($context['fulltext_index'])) {
846
+							$context['fulltext_index'] = array_unique($context['fulltext_index']);
847
+			}
831 848
 		}
832 849
 
833
-		if (preg_match('~^`(.+?)`\.(.+?)$~', $db_prefix, $match) !== 0)
834
-			$request = $smcFunc['db_query']('', '
850
+		if (preg_match('~^`(.+?)`\.(.+?)$~', $db_prefix, $match) !== 0) {
851
+					$request = $smcFunc['db_query']('', '
835 852
 			SHOW TABLE STATUS
836 853
 			FROM {string:database_name}
837 854
 			LIKE {string:table_name}',
@@ -840,20 +857,22 @@  discard block
 block discarded – undo
840 857
 				'table_name' => str_replace('_', '\_', $match[2]) . 'messages',
841 858
 			)
842 859
 			);
843
-		else
844
-			$request = $smcFunc['db_query']('', '
860
+		} else {
861
+					$request = $smcFunc['db_query']('', '
845 862
 			SHOW TABLE STATUS
846 863
 			LIKE {string:table_name}',
847 864
 			array(
848 865
 				'table_name' => str_replace('_', '\_', $db_prefix) . 'messages',
849 866
 			)
850 867
 			);
868
+		}
851 869
 
852 870
 		if ($request !== false)
853 871
 		{
854
-			while ($row = $smcFunc['db_fetch_assoc']($request))
855
-			if (isset($row['Engine']) && strtolower($row['Engine']) != 'myisam' && !(strtolower($row['Engine']) == 'innodb' && version_compare($smcFunc['db_get_version'], '5.6.4', '>=')))
872
+			while ($row = $smcFunc['db_fetch_assoc']($request)) {
873
+						if (isset($row['Engine']) && strtolower($row['Engine']) != 'myisam' && !(strtolower($row['Engine']) == 'innodb' && version_compare($smcFunc['db_get_version'], '5.6.4', '>=')))
856 874
 				$context['cannot_create_fulltext'] = true;
875
+			}
857 876
 			$smcFunc['db_free_result']($request);
858 877
 		}
859 878
 	}
Please login to merge, or discard this patch.