Browse Source

Merge pull request #640 from Arantor/release-2.1

! Try to make sure the DB session serializer is indeed using one we know...
Arantor 11 years ago
parent
commit
96349182ce
2 changed files with 39 additions and 25 deletions
  1. 38 25
      Sources/PersonalMessage.php
  2. 1 0
      Sources/Session.php

+ 38 - 25
Sources/PersonalMessage.php

@@ -1161,34 +1161,47 @@ function MessageSearch2()
 				unset($possible_users[$k]);
 		}
 
-		// Who matches those criteria?
-		// @todo This doesn't support sent item searching.
-		$request = $smcFunc['db_query']('', '
-			SELECT id_member
-			FROM {db_prefix}members
-			WHERE real_name LIKE {raw:real_name_implode}',
-			array(
-				'real_name_implode' => '\'' . implode('\' OR real_name LIKE \'', $possible_users) . '\'',
-			)
-		);
-		// Simply do nothing if there're too many members matching the criteria.
-		if ($smcFunc['db_num_rows']($request) > $maxMembersToSearch)
-			$userQuery = '';
-		elseif ($smcFunc['db_num_rows']($request) == 0)
+		if (!empty($possible_users))
 		{
-			$userQuery = 'AND pm.id_member_from = 0 AND (pm.from_name LIKE {raw:guest_user_name_implode})';
-			$searchq_parameters['guest_user_name_implode'] = '\'' . implode('\' OR pm.from_name LIKE \'', $possible_users) . '\'';
+			// We need to bring this into the query and do it nice and cleanly.
+			$where_params = array();
+			$where_clause = array();
+			foreach ($possible_users as $k => $v)
+			{
+				$where_params['name_' . $k] = $v;
+				$where_clause[] = 'real_name LIKE {string:name_' . $k . '}';
+			}
+
+			// Who matches those criteria?
+			// @todo This doesn't support sent item searching.
+			$request = $smcFunc['db_query']('', '
+				SELECT id_member
+				FROM {db_prefix}members
+				WHERE ' . implode(' OR ', $where_clause),
+				$where_params
+			);
+
+			// Simply do nothing if there're too many members matching the criteria.
+			if ($smcFunc['db_num_rows']($request) > $maxMembersToSearch)
+				$userQuery = '';
+			elseif ($smcFunc['db_num_rows']($request) == 0)
+			{
+				$userQuery = 'AND pm.id_member_from = 0 AND (pm.from_name LIKE {raw:guest_user_name_implode})';
+				$searchq_parameters['guest_user_name_implode'] = '\'' . implode('\' OR pm.from_name LIKE \'', $possible_users) . '\'';
+			}
+			else
+			{
+				$memberlist = array();
+				while ($row = $smcFunc['db_fetch_assoc']($request))
+					$memberlist[] = $row['id_member'];
+				$userQuery = 'AND (pm.id_member_from IN ({array_int:member_list}) OR (pm.id_member_from = 0 AND (pm.from_name LIKE {raw:guest_user_name_implode})))';
+				$searchq_parameters['guest_user_name_implode'] = '\'' . implode('\' OR pm.from_name LIKE \'', $possible_users) . '\'';
+				$searchq_parameters['member_list'] = $memberlist;
+			}
+			$smcFunc['db_free_result']($request);
 		}
 		else
-		{
-			$memberlist = array();
-			while ($row = $smcFunc['db_fetch_assoc']($request))
-				$memberlist[] = $row['id_member'];
-			$userQuery = 'AND (pm.id_member_from IN ({array_int:member_list}) OR (pm.id_member_from = 0 AND (pm.from_name LIKE {raw:guest_user_name_implode})))';
-			$searchq_parameters['guest_user_name_implode'] = '\'' . implode('\' OR pm.from_name LIKE \'', $possible_users) . '\'';
-			$searchq_parameters['member_list'] = $memberlist;
-		}
-		$smcFunc['db_free_result']($request);
+			$userQuery = '';
 	}
 
 	// Setup the sorting variables...

+ 1 - 0
Sources/Session.php

@@ -62,6 +62,7 @@ function loadSession()
 		// Use database sessions? (they don't work in 4.1.x!)
 		if (!empty($modSettings['databaseSession_enable']))
 		{
+			@ini_set('session.serialize_handler', 'php');
 			session_set_save_handler('sessionOpen', 'sessionClose', 'sessionRead', 'sessionWrite', 'sessionDestroy', 'sessionGC');
 			@ini_set('session.gc_probability', '1');
 		}