diff --git a/core/includes/actions.inc b/core/includes/actions.inc
index 75cda42..e77d6e3 100644
--- a/core/includes/actions.inc
+++ b/core/includes/actions.inc
@@ -240,7 +240,7 @@ function actions_function_lookup($hash) {
   // Check for a function name match.
   $actions_list = actions_list();
   foreach ($actions_list as $function => $array) {
-    if (drupal_hash_base64($function) == $hash) {
+    if (drupal_hash_base64($function) === $hash) {
       return $function;
     }
   }
@@ -248,7 +248,7 @@ function actions_function_lookup($hash) {
   // Must be a configurable action; check database.
   $result = db_query("SELECT aid FROM {actions} WHERE parameters <> ''")->fetchAll(PDO::FETCH_ASSOC);
   foreach ($result as $row) {
-    if (drupal_hash_base64($row['aid']) == $hash) {
+    if (drupal_hash_base64($row['aid']) === $hash) {
       $aid = $row['aid'];
       break;
     }
diff --git a/core/includes/ajax.inc b/core/includes/ajax.inc
index 8817356..6bc4ac7 100644
--- a/core/includes/ajax.inc
+++ b/core/includes/ajax.inc
@@ -520,7 +520,7 @@ function ajax_prepare_response($page_callback_result) {
         break;
     }
   }
-  elseif (is_array($page_callback_result) && isset($page_callback_result['#type']) && ($page_callback_result['#type'] == 'ajax')) {
+  elseif (is_array($page_callback_result) && isset($page_callback_result['#type']) && ($page_callback_result['#type'] === 'ajax')) {
     // Complex Ajax callbacks can return a result that contains an error message
     // or a specific set of commands to send to the browser.
     $page_callback_result += element_info('ajax');
@@ -564,7 +564,7 @@ function ajax_footer() {
   // Even for Ajax requests, invoke hook_exit() implementations. There may be
   // modules that need very fast Ajax responses, and therefore, run Ajax
   // requests with an early bootstrap.
-  if (drupal_get_bootstrap_phase() == DRUPAL_BOOTSTRAP_FULL && (!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE != 'update')) {
+  if (drupal_get_bootstrap_phase() === DRUPAL_BOOTSTRAP_FULL && (!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE != 'update')) {
     module_invoke_all('exit');
   }
 
@@ -691,7 +691,7 @@ function ajax_pre_render_element($element) {
     );
 
     // @todo Legacy support. Remove in Drupal 8.
-    if (isset($settings['method']) && $settings['method'] == 'replace') {
+    if (isset($settings['method']) && $settings['method'] === 'replace') {
       $settings['method'] = 'replaceWith';
     }
 
diff --git a/core/includes/authorize.inc b/core/includes/authorize.inc
index cf55624..9810daa 100644
--- a/core/includes/authorize.inc
+++ b/core/includes/authorize.inc
@@ -102,7 +102,7 @@ function authorize_filetransfer_form($form, &$form_state) {
     $form['connection_settings'][$name] += _authorize_filetransfer_connection_settings($name);
 
     // Start non-JS code.
-    if (isset($form_state['values']['connection_settings']['authorize_filetransfer_default']) && $form_state['values']['connection_settings']['authorize_filetransfer_default'] == $name) {
+    if (isset($form_state['values']['connection_settings']['authorize_filetransfer_default']) && $form_state['values']['connection_settings']['authorize_filetransfer_default'] === $name) {
 
       // If the user switches from JS to non-JS, Drupal (and Batch API) will
       // barf. This is a known bug: http://drupal.org/node/229825.
diff --git a/core/includes/batch.inc b/core/includes/batch.inc
index 83ddd30..9164d9c 100644
--- a/core/includes/batch.inc
+++ b/core/includes/batch.inc
@@ -201,7 +201,7 @@ function _batch_progress_page_nojs() {
 
     // Perform actual processing.
     list($percentage, $message) = _batch_process($batch);
-    if ($percentage == 100) {
+    if ($percentage === 100) {
       $new_op = 'finished';
     }
 
@@ -389,7 +389,7 @@ function _batch_process() {
  * @see _batch_process()
  */
 function _batch_api_percentage($total, $current) {
-  if (!$total || $total == $current) {
+  if (!$total || $total === $current) {
     // If $total doesn't evaluate as true or is equal to the current set, then
     // we're finished, and we can return "100".
     $percentage = "100";
@@ -407,7 +407,7 @@ function _batch_api_percentage($total, $current) {
       // may be erroneously rounded up to 100%. To prevent that, we add one
       // more decimal place and try again.
       $decimal_places++;
-    } while ($percentage == '100');
+    } while ($percentage === '100');
   }
   return $percentage;
 }
diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index 12b1d80..a9b7a90 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -605,7 +605,7 @@ function drupal_settings_initialize() {
   if (file_exists(DRUPAL_ROOT . '/' . conf_path() . '/settings.php')) {
     include_once DRUPAL_ROOT . '/' . conf_path() . '/settings.php';
   }
-  $is_https = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on';
+  $is_https = isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) === 'on';
 
   if (isset($base_url)) {
     // Parse fixed base URL from settings.php.
@@ -631,7 +631,7 @@ function drupal_settings_initialize() {
       // Remove "core" directory if present, allowing install.php, update.php,
       // cron.php and others to auto-detect a base path.
       $core_position = strrpos($dir, '/core');
-      if ($core_position !== FALSE && strlen($dir) - 5 == $core_position) {
+      if ($core_position !== FALSE && strlen($dir) - 5 === $core_position) {
         $base_path = substr($dir, 0, $core_position);
       }
       else {
@@ -721,7 +721,7 @@ function drupal_get_filename($type, $name, $filename = NULL) {
   static $files = array(), $dirs = array();
 
   // Profiles are a special case: they have a fixed location and naming.
-  if ($type == 'profile') {
+  if ($type === 'profile') {
     $profile_filename = "profiles/$name/$name.profile";
     $files[$type][$name] = file_exists($profile_filename) ? $profile_filename : FALSE;
   }
@@ -758,11 +758,11 @@ function drupal_get_filename($type, $name, $filename = NULL) {
     if (!isset($files[$type][$name])) {
       // We have a consistent directory naming: modules, themes...
       $dir = $type . 's';
-      if ($type == 'theme_engine') {
+      if ($type === 'theme_engine') {
         $dir = 'themes/engines';
         $extension = 'engine';
       }
-      elseif ($type == 'theme') {
+      elseif ($type === 'theme') {
         $extension = 'info';
       }
       else {
@@ -949,7 +949,7 @@ function drupal_page_is_cacheable($allow_caching = NULL) {
     $allow_caching_static = $allow_caching;
   }
 
-  return $allow_caching_static && ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'HEAD')
+  return $allow_caching_static && ($_SERVER['REQUEST_METHOD'] === 'GET' || $_SERVER['REQUEST_METHOD'] === 'HEAD')
     && !drupal_is_cli();
 }
 
@@ -1110,7 +1110,7 @@ function drupal_send_headers($default_headers = array(), $only_default = FALSE)
     }
   }
   foreach ($headers as $name_lower => $value) {
-    if ($name_lower == 'status') {
+    if ($name_lower === 'status') {
       header($_SERVER['SERVER_PROTOCOL'] . ' ' . $value);
     }
     // Skip headers that have been unset.
@@ -1216,8 +1216,8 @@ function drupal_serve_page_from_cache(stdClass $cache) {
   $if_none_match = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? stripslashes($_SERVER['HTTP_IF_NONE_MATCH']) : FALSE;
 
   if ($if_modified_since && $if_none_match
-      && $if_none_match == $etag // etag must match
-      && $if_modified_since == $cache->created) {  // if-modified-since must match
+      && $if_none_match === $etag // etag must match
+      && $if_modified_since === $cache->created) {  // if-modified-since must match
     header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
     drupal_send_headers($default_headers);
     return;
@@ -1474,13 +1474,13 @@ function check_plain($text) {
  *   TRUE if the text is valid UTF-8, FALSE if not.
  */
 function drupal_validate_utf8($text) {
-  if (strlen($text) == 0) {
+  if (strlen($text) === 0) {
     return TRUE;
   }
   // With the PCRE_UTF8 modifier 'u', preg_match() fails silently on strings
   // containing invalid UTF-8 byte sequences. It does not reject character
   // codes above U+10FFFF (represented by 4 or more octets), though.
-  return (preg_match('/^./us', $text) == 1);
+  return (preg_match('/^./us', $text) === 1);
 }
 
 /**
@@ -1725,7 +1725,7 @@ function drupal_set_title($title = NULL, $output = CHECK_PLAIN) {
   $stored_title = &drupal_static(__FUNCTION__);
 
   if (isset($title)) {
-    $stored_title = ($output == PASS_THROUGH) ? $title : check_plain($title);
+    $stored_title = ($output === PASS_THROUGH) ? $title : check_plain($title);
   }
 
   return $stored_title;
@@ -2330,7 +2330,7 @@ function drupal_valid_test_ua() {
     $time_diff = REQUEST_TIME - $time;
     // Since we are making a local request a 5 second time window is allowed,
     // and the HMAC must match.
-    if ($time_diff >= 0 && $time_diff <= 5 && $hmac == drupal_hmac_base64($check_string, $key)) {
+    if ($time_diff >= 0 && $time_diff <= 5 && $hmac === drupal_hmac_base64($check_string, $key)) {
       $test_prefix = $prefix;
       return $test_prefix;
     }
@@ -2404,7 +2404,7 @@ function drupal_fast_404() {
  * Returns TRUE if a Drupal installation is currently being attempted.
  */
 function drupal_installation_attempted() {
-  return defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'install';
+  return defined('MAINTENANCE_MODE') && MAINTENANCE_MODE === 'install';
 }
 
 /**
@@ -2531,7 +2531,7 @@ function language_list($only_enabled = FALSE) {
     // save the same object without data loss. Also fill in the filtered list
     // of enabled languages only.
     foreach ($languages['all'] as $langcode => $language) {
-      $languages['all'][$langcode]->default = ($langcode == $default->langcode);
+      $languages['all'][$langcode]->default = ($langcode === $default->langcode);
       if ($language->enabled) {
         $languages['enabled'][$langcode] = $languages['all'][$langcode];
       }
@@ -2565,7 +2565,7 @@ function language_load($langcode) {
  *   The printed name of the language.
  */
 function language_name($langcode) {
-  if ($langcode == LANGUAGE_NOT_SPECIFIED) {
+  if ($langcode === LANGUAGE_NOT_SPECIFIED) {
     return t('None');
   }
 
@@ -2638,7 +2638,7 @@ function request_path() {
     // explicitly provided in the URL, or because the server added it to
     // $_SERVER['REQUEST_URI'] even when it wasn't provided in the URL (some
     // versions of Microsoft IIS do this), the front page should be served.
-    if ($path == basename($_SERVER['PHP_SELF'])) {
+    if ($path === basename($_SERVER['PHP_SELF'])) {
       $path = '';
     }
   }
@@ -2860,7 +2860,7 @@ function drupal_autoload_class($class) {
 function _registry_check_code($type, $name = NULL) {
   static $lookup_cache, $cache_update_needed;
 
-  if ($type == 'class' && class_exists($name) || $type == 'interface' && interface_exists($name)) {
+  if ($type === 'class' && class_exists($name) || $type === 'interface' && interface_exists($name)) {
     return TRUE;
   }
 
@@ -2873,7 +2873,7 @@ function _registry_check_code($type, $name = NULL) {
 
   // When we rebuild the registry, we need to reset this cache so
   // we don't keep lookups for resources that changed during the rebuild.
-  if ($type == REGISTRY_RESET_LOOKUP_CACHE) {
+  if ($type === REGISTRY_RESET_LOOKUP_CACHE) {
     $cache_update_needed = TRUE;
     $lookup_cache = NULL;
     return;
@@ -2881,7 +2881,7 @@ function _registry_check_code($type, $name = NULL) {
 
   // Called from drupal_page_footer, we write to permanent storage if there
   // changes to the lookup cache for this request.
-  if ($type == REGISTRY_WRITE_LOOKUP_CACHE) {
+  if ($type === REGISTRY_WRITE_LOOKUP_CACHE) {
     if ($cache_update_needed) {
       cache('bootstrap')->set('lookup_cache', $lookup_cache);
     }
@@ -3092,7 +3092,7 @@ function &drupal_static($name, $default_value = NULL, $reset = FALSE) {
     $default[$name] = $data[$name] = $default_value;
     return $data[$name];
   }
-  // Reset all: ($name == NULL). This needs to be done one at a time so that
+  // Reset all: ($name === NULL). This needs to be done one at a time so that
   // references returned by earlier invocations of drupal_static() also get
   // reset.
   foreach ($default as $name => $value) {
@@ -3117,7 +3117,7 @@ function drupal_static_reset($name = NULL) {
  * Detects whether the current script is running in a command-line environment.
  */
 function drupal_is_cli() {
-  return (!isset($_SERVER['SERVER_SOFTWARE']) && (php_sapi_name() == 'cli' || (is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 0)));
+  return (!isset($_SERVER['SERVER_SOFTWARE']) && (php_sapi_name() === 'cli' || (is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 0)));
 }
 
 /**
diff --git a/core/includes/common.inc b/core/includes/common.inc
index 5ff6167..dda572c 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -772,7 +772,7 @@ function drupal_http_request($url, array $options = array()) {
   // Parse the URL and make sure we can handle the schema.
   $uri = @parse_url($url);
 
-  if ($uri == FALSE) {
+  if ($uri === FALSE) {
     $result->error = 'unable to parse URL';
     $result->code = -1001;
     return $result;
@@ -860,7 +860,7 @@ function drupal_http_request($url, array $options = array()) {
   // at least HEAD/GET requests, and Squid always requires Content-Length in
   // POST/PUT requests.
   $content_length = strlen($options['data']);
-  if ($content_length > 0 || $options['method'] == 'POST' || $options['method'] == 'PUT') {
+  if ($content_length > 0 || $options['method'] === 'POST' || $options['method'] === 'PUT') {
     $options['headers']['Content-Length'] = $content_length;
   }
 
@@ -937,7 +937,7 @@ function drupal_http_request($url, array $options = array()) {
   while ($line = trim(array_shift($response))) {
     list($name, $value) = explode(':', $line, 2);
     $name = strtolower($name);
-    if (isset($result->headers[$name]) && $name == 'set-cookie') {
+    if (isset($result->headers[$name]) && $name === 'set-cookie') {
       // RFC 2109: the Set-Cookie response header comprises the token Set-
       // Cookie:, followed by a comma-separated list of one or more cookies.
       $result->headers[$name] .= ',' . trim($value);
@@ -1461,7 +1461,7 @@ function _filter_xss_split($m, $store = FALSE) {
     // We matched a lone ">" character.
     return '&gt;';
   }
-  elseif (strlen($string) == 1) {
+  elseif (strlen($string) === 1) {
     // We matched a lone "<" character.
     return '&lt;';
   }
@@ -1525,7 +1525,7 @@ function _filter_xss_attributes($attr) {
         // Attribute name, href for instance.
         if (preg_match('/^([-a-zA-Z]+)/', $attr, $match)) {
           $attrname = strtolower($match[1]);
-          $skip = ($attrname == 'style' || substr($attrname, 0, 2) == 'on');
+          $skip = ($attrname === 'style' || substr($attrname, 0, 2) === 'on');
           $working = $mode = 1;
           $attr = preg_replace('/^[-a-zA-Z]+/', '', $attr);
         }
@@ -1585,7 +1585,7 @@ function _filter_xss_attributes($attr) {
         break;
     }
 
-    if ($working == 0) {
+    if ($working === 0) {
       // Not well formed; remove and try again.
       $attr = preg_replace('/
         ^
@@ -1603,7 +1603,7 @@ function _filter_xss_attributes($attr) {
   }
 
   // The attribute list ends with a valueless attribute like "selected".
-  if ($mode == 1 && !$skip) {
+  if ($mode === 1 && !$skip) {
     $attrarr[] = $attrname;
   }
   return $attrarr;
@@ -1781,14 +1781,14 @@ function format_plural($count, $singular, $plural, array $args = array(), array
   // Split joined translation strings into array.
   $translated_array = explode(LOCALE_PLURAL_DELIMITER, $translated_strings);
 
-  if ($count == 1) {
+  if ($count === 1) {
     return $translated_array[0];
   }
 
   // Get the plural index through the gettext formula.
   // @todo implement static variable to minimize function_exists() usage.
   $index = (function_exists('locale_get_plural')) ? locale_get_plural($count, isset($options['langcode']) ? $options['langcode'] : NULL) : -1;
-  if ($index == 0) {
+  if ($index === 0) {
     // Singular form.
     return $translated_array[0];
   }
@@ -1901,7 +1901,7 @@ function format_interval($interval, $granularity = 2, $langcode = NULL) {
       $granularity--;
     }
 
-    if ($granularity == 0) {
+    if ($granularity === 0) {
       break;
     }
   }
@@ -2076,11 +2076,11 @@ function _format_date_callback(array $matches = NULL, $new_langcode = NULL) {
       'langcode' => $langcode,
     );
 
-    if ($code == 'F') {
+    if ($code === 'F') {
       $options['context'] = 'Long month name';
     }
 
-    if ($code == '') {
+    if ($code === '') {
       $cache[$langcode][$code][$string] = $string;
     }
     else {
@@ -2174,7 +2174,7 @@ function url($path = NULL, array $options = array()) {
     // that would require another function call, and performance inside url() is
     // critical.
     $colonpos = strpos($path, ':');
-    $options['external'] = ($colonpos !== FALSE && !preg_match('![/?#]!', substr($path, 0, $colonpos)) && drupal_strip_dangerous_protocols($path) == $path);
+    $options['external'] = ($colonpos !== FALSE && !preg_match('![/?#]!', substr($path, 0, $colonpos)) && drupal_strip_dangerous_protocols($path) === $path);
   }
 
   // Preserve the original path before altering or aliasing.
@@ -2232,7 +2232,7 @@ function url($path = NULL, array $options = array()) {
   }
 
   // The special path '<front>' links to the default front page.
-  if ($path == '<front>') {
+  if ($path === '<front>') {
     $path = '';
   }
   elseif (!empty($path) && !$options['alias']) {
@@ -2292,7 +2292,7 @@ function url_is_external($path) {
   // Avoid calling drupal_strip_dangerous_protocols() if there is any
   // slash (/), hash (#) or question_mark (?) before the colon (:)
   // occurrence - if any - as this would clearly mean it is not a URL.
-  return $colonpos !== FALSE && !preg_match('![/?#]!', substr($path, 0, $colonpos)) && drupal_strip_dangerous_protocols($path) == $path;
+  return $colonpos !== FALSE && !preg_match('![/?#]!', substr($path, 0, $colonpos)) && drupal_strip_dangerous_protocols($path) === $path;
 }
 
 /**
@@ -2408,8 +2408,8 @@ function l($text, $path, array $options = array()) {
   );
 
   // Append active class.
-  if (($path == $_GET['q'] || ($path == '<front>' && drupal_is_front_page())) &&
-      (empty($options['language']) || $options['language']->langcode == $language_url->langcode)) {
+  if (($path === $_GET['q'] || ($path === '<front>' && drupal_is_front_page())) &&
+      (empty($options['language']) || $options['language']->langcode === $language_url->langcode)) {
     $options['attributes']['class'][] = 'active';
   }
 
@@ -2595,7 +2595,7 @@ function drupal_deliver_html_page($page_callback_result) {
           $return = menu_execute_active_handler($path, FALSE);
         }
 
-        if (empty($return) || $return == MENU_NOT_FOUND || $return == MENU_ACCESS_DENIED) {
+        if (empty($return) || $return === MENU_NOT_FOUND || $return === MENU_ACCESS_DENIED) {
           // Standard 404 handler.
           drupal_set_title(t('Page not found'));
           $return = t('The requested page "@path" could not be found.', array('@path' => request_uri()));
@@ -2624,7 +2624,7 @@ function drupal_deliver_html_page($page_callback_result) {
           $return = menu_execute_active_handler($path, FALSE);
         }
 
-        if (empty($return) || $return == MENU_NOT_FOUND || $return == MENU_ACCESS_DENIED) {
+        if (empty($return) || $return === MENU_NOT_FOUND || $return === MENU_ACCESS_DENIED) {
           // Standard 403 handler.
           drupal_set_title(t('Access denied'));
           $return = t('You are not authorized to access this page.');
@@ -2694,7 +2694,7 @@ function drupal_page_footer() {
  *   This should be passed along to hook_exit() implementations.
  */
 function drupal_exit($destination = NULL) {
-  if (drupal_get_bootstrap_phase() == DRUPAL_BOOTSTRAP_FULL) {
+  if (drupal_get_bootstrap_phase() === DRUPAL_BOOTSTRAP_FULL) {
     if (!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE != 'update') {
       module_invoke_all('exit', $destination);
     }
@@ -3052,7 +3052,7 @@ function drupal_get_css($css = NULL, $skip_alter = FALSE) {
   // Remove the overridden CSS files. Later CSS files override former ones.
   $previous_item = array();
   foreach ($css as $key => $item) {
-    if ($item['type'] == 'file') {
+    if ($item['type'] === 'file') {
       // If defined, force a unique basename for this file.
       $basename = isset($item['basename']) ? $item['basename'] : drupal_basename($item['data']);
       if (isset($previous_item[$basename])) {
@@ -3533,7 +3533,7 @@ function drupal_build_css_cache($css) {
     // Build aggregate CSS file.
     foreach ($css as $stylesheet) {
       // Only 'file' stylesheets can be aggregated.
-      if ($stylesheet['type'] == 'file') {
+      if ($stylesheet['type'] === 'file') {
         $contents = drupal_load_stylesheet($stylesheet['data'], TRUE);
 
         // Build the base URL of this CSS file: start with the full URL.
@@ -3542,7 +3542,7 @@ function drupal_build_css_cache($css) {
         $css_base_url = substr($css_base_url, 0, strrpos($css_base_url, '/'));
         // Simplify to a relative URL if the stylesheet URL starts with the
         // base URL of the website.
-        if (substr($css_base_url, 0, strlen($GLOBALS['base_root'])) == $GLOBALS['base_root']) {
+        if (substr($css_base_url, 0, strlen($GLOBALS['base_root'])) === $GLOBALS['base_root']) {
           $css_base_url = substr($css_base_url, strlen($GLOBALS['base_root']));
         }
 
@@ -3734,7 +3734,7 @@ function _drupal_load_stylesheet($matches) {
   $directory = dirname($filename);
   // If the file is in the current directory, make sure '.' doesn't appear in
   // the url() path.
-  $directory = $directory == '.' ? '' : $directory .'/';
+  $directory = $directory === '.' ? '' : $directory .'/';
 
   // Alter all internal url() paths. Leave external paths alone. We don't need
   // to normalize absolute paths here (i.e. remove folder/... segments) because
@@ -4235,7 +4235,7 @@ function drupal_get_js($scope = 'header', $javascript = NULL, $skip_alter = FALS
   // Filter out elements of the given scope.
   $items = array();
   foreach ($javascript as $key => $item) {
-    if ($item['scope'] == $scope) {
+    if ($item['scope'] === $scope) {
       $items[$key] = $item;
     }
   }
@@ -4255,7 +4255,7 @@ function drupal_get_js($scope = 'header', $javascript = NULL, $skip_alter = FALS
   // because drupal_get_js() was intentionally passed a $javascript argument
   // stripped of settings, potentially in order to override how settings get
   // output, so in this case, do not add the setting to this output.
-  if ($scope == 'header' && isset($items['settings'])) {
+  if ($scope === 'header' && isset($items['settings'])) {
     $items['settings']['data'][] = $setting;
   }
 
@@ -4334,7 +4334,7 @@ function drupal_pre_render_scripts($elements) {
     // If a group of files has been aggregated into a single file,
     // $group['data'] contains the URI of the aggregate file. Add a single
     // script element for this file.
-    if ($group['type'] == 'file' && isset($group['data'])) {
+    if ($group['type'] === 'file' && isset($group['data'])) {
       $element = $element_defaults;
       $element['#attributes']['src'] = file_create_url($group['data']);
       $element['#browsers'] = $group['browsers'];
@@ -4497,7 +4497,7 @@ function drupal_aggregate_js(&$js_groups) {
 
   if ($preprocess_js) {
     foreach ($js_groups as $key => $group) {
-      if ($group['type'] == 'file' && $group['preprocess']) {
+      if ($group['type'] === 'file' && $group['preprocess']) {
         $js_groups[$key]['data'] = drupal_build_js_cache($group['items']);
       }
     }
@@ -5168,7 +5168,7 @@ function drupal_get_token($value = '') {
  */
 function drupal_valid_token($token, $value = '', $skip_anonymous = FALSE) {
   global $user;
-  return (($skip_anonymous && $user->uid == 0) || ($token == drupal_get_token($value)));
+  return (($skip_anonymous && $user->uid === 0) || ($token === drupal_get_token($value)));
 }
 
 function _drupal_bootstrap_full() {
@@ -5264,7 +5264,7 @@ function drupal_page_set_cache() {
     $header_names = _drupal_set_preferred_header_name();
     foreach (drupal_get_http_header() as $name_lower => $value) {
       $cache->data['headers'][$header_names[$name_lower]] = $value;
-      if ($name_lower == 'expires') {
+      if ($name_lower === 'expires') {
         // Use the actual timestamp from an Expires header if available.
         $cache->expire = strtotime($value);
       }
@@ -5952,7 +5952,7 @@ function drupal_render(&$elements) {
   // If #theme was not set and the element has children, render them now.
   // This is the same process as drupal_render_children() but is inlined
   // for speed.
-  if ($elements['#children'] == '') {
+  if ($elements['#children'] === '') {
     foreach ($children as $key) {
       $elements['#children'] .= drupal_render($elements[$key]);
     }
@@ -6346,7 +6346,7 @@ function drupal_render_cid_create($elements) {
 function element_sort($a, $b) {
   $a_weight = (is_array($a) && isset($a['#weight'])) ? $a['#weight'] : 0;
   $b_weight = (is_array($b) && isset($b['#weight'])) ? $b['#weight'] : 0;
-  if ($a_weight == $b_weight) {
+  if ($a_weight === $b_weight) {
     return 0;
   }
   return ($a_weight < $b_weight) ? -1 : 1;
@@ -6431,7 +6431,7 @@ function element_info_property($type, $property_name, $default = NULL) {
 function drupal_sort_weight($a, $b) {
   $a_weight = (is_array($a) && isset($a['weight'])) ? $a['weight'] : 0;
   $b_weight = (is_array($b) && isset($b['weight'])) ? $b['weight'] : 0;
-  if ($a_weight == $b_weight) {
+  if ($a_weight === $b_weight) {
     return 0;
   }
   return ($a_weight < $b_weight) ? -1 : 1;
@@ -6462,7 +6462,7 @@ function drupal_sort_title($a, $b) {
  * Checks if the key is a property.
  */
 function element_property($key) {
-  return $key[0] == '#';
+  return $key[0] === '#';
 }
 
 /**
@@ -7182,7 +7182,7 @@ function drupal_parse_info_format($data) {
 
       // Create nested arrays.
       foreach ($keys as $key) {
-        if ($key == '') {
+        if ($key === '') {
           $key = count($parent);
         }
         if (!isset($parent[$key]) || !is_array($parent[$key])) {
@@ -7197,7 +7197,7 @@ function drupal_parse_info_format($data) {
       }
 
       // Insert actual value.
-      if ($last == '') {
+      if ($last === '') {
         $last = count($parent);
       }
       $parent[$last] = $value;
@@ -7370,7 +7370,7 @@ function debug($data, $label = NULL, $print_r = FALSE) {
  *   - 'original_version' contains the original version string (which can be
  *     used in the UI for reporting incompatibilities).
  *   - 'versions' is a list of associative arrays, each containing the keys
- *     'op' and 'version'. 'op' can be one of: '=', '==', '!=', '<>', '<',
+ *     'op' and 'version'. 'op' can be one of: '=', '===', '!=', '<>', '<',
  *     '<=', '>', or '>='. 'version' is one piece like '4.5-beta3'.
  *   Callers should pass this structure to drupal_check_incompatibility().
  *
@@ -7379,7 +7379,7 @@ function debug($data, $label = NULL, $print_r = FALSE) {
 function drupal_parse_dependency($dependency) {
   // We use named subpatterns and support every op that version_compare
   // supports. Also, op is optional and defaults to equals.
-  $p_op = '(?P<operation>!=|==|=|<|<=|>|>=|<>)?';
+  $p_op = '(?P<operation>!=|===|=|<|<=|>|>=|<>)?';
   // Core version is always optional: 8.x-2.x and 2.x is treated the same.
   $p_core = '(?:' . preg_quote(DRUPAL_CORE_COMPATIBILITY) . '-)?';
   $p_major = '(?P<major>\d+)';
@@ -7393,18 +7393,18 @@ function drupal_parse_dependency($dependency) {
     foreach (explode(',', $parts[1]) as $version) {
       if (preg_match("/^\s*$p_op\s*$p_core$p_major\.$p_minor/", $version, $matches)) {
         $op = !empty($matches['operation']) ? $matches['operation'] : '=';
-        if ($matches['minor'] == 'x') {
+        if ($matches['minor'] === 'x') {
           // Drupal considers "2.x" to mean any version that begins with
           // "2" (e.g. 2.0, 2.9 are all "2.x"). PHP's version_compare(),
           // on the other hand, treats "x" as a string; so to
           // version_compare(), "2.x" is considered less than 2.0. This
           // means that >=2.x and <2.x are handled by version_compare()
           // as we need, but > and <= are not.
-          if ($op == '>' || $op == '<=') {
+          if ($op === '>' || $op === '<=') {
             $matches['major']++;
           }
           // Equivalence can be checked by adding two restrictions.
-          if ($op == '=' || $op == '==') {
+          if ($op === '=' || $op === '===') {
             $value['versions'][] = array('op' => '<', 'version' => ($matches['major'] + 1) . '.x');
             $op = '>=';
           }
diff --git a/core/includes/database.inc b/core/includes/database.inc
index c2df949..3b3eff2 100644
--- a/core/includes/database.inc
+++ b/core/includes/database.inc
@@ -161,7 +161,7 @@ use Drupal\Core\Database\Query\Condition;
  * function my_other_function($id) {
  *   // The transaction is still open here.
  *
- *   if ($id % 2 == 0) {
+ *   if ($id % 2 === 0) {
  *     db_update('example')
  *       ->condition('id', $id)
  *       ->fields(array('field2' => 10))
@@ -289,7 +289,7 @@ function db_query_temporary($query, array $args = array(), array $options = arra
  *   A new InsertQuery object for this connection.
  */
 function db_insert($table, array $options = array()) {
-  if (empty($options['target']) || $options['target'] == 'slave') {
+  if (empty($options['target']) || $options['target'] === 'slave') {
     $options['target'] = 'default';
   }
   return Database::getConnection($options['target'])->insert($table, $options);
@@ -307,7 +307,7 @@ function db_insert($table, array $options = array()) {
  *   A new MergeQuery object for this connection.
  */
 function db_merge($table, array $options = array()) {
-  if (empty($options['target']) || $options['target'] == 'slave') {
+  if (empty($options['target']) || $options['target'] === 'slave') {
     $options['target'] = 'default';
   }
   return Database::getConnection($options['target'])->merge($table, $options);
@@ -325,7 +325,7 @@ function db_merge($table, array $options = array()) {
  *   A new UpdateQuery object for this connection.
  */
 function db_update($table, array $options = array()) {
-  if (empty($options['target']) || $options['target'] == 'slave') {
+  if (empty($options['target']) || $options['target'] === 'slave') {
     $options['target'] = 'default';
   }
   return Database::getConnection($options['target'])->update($table, $options);
@@ -343,7 +343,7 @@ function db_update($table, array $options = array()) {
  *   A new DeleteQuery object for this connection.
  */
 function db_delete($table, array $options = array()) {
-  if (empty($options['target']) || $options['target'] == 'slave') {
+  if (empty($options['target']) || $options['target'] === 'slave') {
     $options['target'] = 'default';
   }
   return Database::getConnection($options['target'])->delete($table, $options);
@@ -361,7 +361,7 @@ function db_delete($table, array $options = array()) {
  *   A new TruncateQuery object for this connection.
  */
 function db_truncate($table, array $options = array()) {
-  if (empty($options['target']) || $options['target'] == 'slave') {
+  if (empty($options['target']) || $options['target'] === 'slave') {
     $options['target'] = 'default';
   }
   return Database::getConnection($options['target'])->truncate($table, $options);
diff --git a/core/includes/errors.inc b/core/includes/errors.inc
index 0524170..7f0f3a9 100644
--- a/core/includes/errors.inc
+++ b/core/includes/errors.inc
@@ -85,7 +85,7 @@ function _drupal_error_handler_real($error_level, $message, $filename, $line, $c
       '%file' => $caller['file'],
       '%line' => $caller['line'],
       'severity_level' => $severity_level,
-    ), $error_level == E_RECOVERABLE_ERROR);
+    ), $error_level === E_RECOVERABLE_ERROR);
   }
 }
 
@@ -164,9 +164,9 @@ function _drupal_render_exception_safe($exception) {
  */
 function error_displayable($error = NULL) {
   $error_level = variable_get('error_level', ERROR_REPORTING_DISPLAY_ALL);
-  $updating = (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'update');
-  $all_errors_displayed = ($error_level == ERROR_REPORTING_DISPLAY_ALL);
-  $error_needs_display = ($error_level == ERROR_REPORTING_DISPLAY_SOME &&
+  $updating = (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE === 'update');
+  $all_errors_displayed = ($error_level === ERROR_REPORTING_DISPLAY_ALL);
+  $error_needs_display = ($error_level === ERROR_REPORTING_DISPLAY_SOME &&
     isset($error) && $error['%type'] != 'Notice' && $error['%type'] != 'Strict warning');
 
   return ($updating || $all_errors_displayed || $error_needs_display);
@@ -227,7 +227,7 @@ function _drupal_log_error($error, $fatal = FALSE) {
     }
   }
 
-  if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
+  if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest') {
     if ($fatal) {
       // When called from JavaScript, simply output the error message.
       print t('%type: !message in %function (line %line of %file).', $error);
@@ -242,7 +242,7 @@ function _drupal_log_error($error, $fatal = FALSE) {
 
       // If error type is 'User notice' then treat it as debug information
       // instead of an error message, see dd().
-      if ($error['%type'] == 'User notice') {
+      if ($error['%type'] === 'User notice') {
         $error['%type'] = 'Debug';
         $class = 'status';
       }
diff --git a/core/includes/file.inc b/core/includes/file.inc
index eaff634..47abdab 100644
--- a/core/includes/file.inc
+++ b/core/includes/file.inc
@@ -206,7 +206,7 @@ function file_get_stream_wrappers($filter = STREAM_WRAPPERS_ALL) {
         else {
           $wrappers[$scheme]['override'] = FALSE;
         }
-        if (($info['type'] & STREAM_WRAPPERS_LOCAL) == STREAM_WRAPPERS_LOCAL) {
+        if (($info['type'] & STREAM_WRAPPERS_LOCAL) === STREAM_WRAPPERS_LOCAL) {
           stream_wrapper_register($scheme, $info['class']);
         }
         else {
@@ -215,7 +215,7 @@ function file_get_stream_wrappers($filter = STREAM_WRAPPERS_ALL) {
       }
       // Pre-populate the static cache with the filters most typically used.
       $wrappers_storage[STREAM_WRAPPERS_ALL][$scheme] = $wrappers[$scheme];
-      if (($info['type'] & STREAM_WRAPPERS_WRITE_VISIBLE) == STREAM_WRAPPERS_WRITE_VISIBLE) {
+      if (($info['type'] & STREAM_WRAPPERS_WRITE_VISIBLE) === STREAM_WRAPPERS_WRITE_VISIBLE) {
         $wrappers_storage[STREAM_WRAPPERS_WRITE_VISIBLE][$scheme] = $wrappers[$scheme];
       }
     }
@@ -225,7 +225,7 @@ function file_get_stream_wrappers($filter = STREAM_WRAPPERS_ALL) {
     $wrappers_storage[$filter] = array();
     foreach ($wrappers_storage[STREAM_WRAPPERS_ALL] as $scheme => $info) {
       // Bit-wise filter.
-      if (($info['type'] & $filter) == $filter) {
+      if (($info['type'] & $filter) === $filter) {
         $wrappers_storage[$filter][$scheme] = $info;
       }
     }
@@ -308,7 +308,7 @@ function file_uri_target($uri) {
   $data = explode('://', $uri, 2);
 
   // Remove erroneous leading or trailing, forward-slashes and backslashes.
-  return count($data) == 2 ? trim($data[1], '\/') : FALSE;
+  return count($data) === 2 ? trim($data[1], '\/') : FALSE;
 }
 
 /**
@@ -452,7 +452,7 @@ function file_create_url($uri) {
     //   HTTP and to https://example.com/bar.jpg when viewing a HTTPS page)
     // Both types of relative URIs are characterized by a leading slash, hence
     // we can use a single check.
-    if (drupal_substr($uri, 0, 1) == '/') {
+    if (drupal_substr($uri, 0, 1) === '/') {
       return $uri;
     }
     else {
@@ -461,7 +461,7 @@ function file_create_url($uri) {
       return $GLOBALS['base_url'] . '/' . drupal_encode_path($uri);
     }
   }
-  elseif ($scheme == 'http' || $scheme == 'https') {
+  elseif ($scheme === 'http' || $scheme === 'https') {
     // Check for http so that we don't have to implement getExternalUrl() for
     // the http wrapper.
     return $uri;
@@ -841,7 +841,7 @@ function file_copy(stdClass $source, $destination = NULL, $replace = FILE_EXISTS
     $file->uri = $uri;
     $file->filename = drupal_basename($uri);
     // If we are replacing an existing file re-use its database record.
-    if ($replace == FILE_EXISTS_REPLACE) {
+    if ($replace === FILE_EXISTS_REPLACE) {
       $existing_files = file_load_multiple(array(), array('uri' => $uri));
       if (count($existing_files)) {
         $existing = reset($existing_files);
@@ -851,7 +851,7 @@ function file_copy(stdClass $source, $destination = NULL, $replace = FILE_EXISTS
     }
     // If we are renaming around an existing file (rather than a directory),
     // use its basename for the filename.
-    elseif ($replace == FILE_EXISTS_RENAME && is_file($destination)) {
+    elseif ($replace === FILE_EXISTS_RENAME && is_file($destination)) {
       $file->filename = drupal_basename($destination);
     }
 
@@ -971,7 +971,7 @@ function file_unmanaged_copy($source, $destination = NULL, $replace = FILE_EXIST
   // Assert that the source and destination filenames are not the same.
   $real_source = drupal_realpath($source);
   $real_destination = drupal_realpath($destination);
-  if ($source == $destination || ($real_source !== FALSE) && ($real_source == $real_destination)) {
+  if ($source === $destination || ($real_source !== FALSE) && ($real_source === $real_destination)) {
     drupal_set_message(t('The specified file %file was not copied because it would overwrite itself.', array('%file' => $source)), 'error');
     watchdog('file', 'File %file could not be copied because it would overwrite itself.', array('%file' => $source));
     return FALSE;
@@ -1090,7 +1090,7 @@ function file_move(stdClass $source, $destination = NULL, $replace = FILE_EXISTS
     $file = clone $source;
     $file->uri = $uri;
     // If we are replacing an existing file re-use its database record.
-    if ($replace == FILE_EXISTS_REPLACE) {
+    if ($replace === FILE_EXISTS_REPLACE) {
       $existing_files = file_load_multiple(array(), array('uri' => $uri));
       if (count($existing_files)) {
         $existing = reset($existing_files);
@@ -1100,7 +1100,7 @@ function file_move(stdClass $source, $destination = NULL, $replace = FILE_EXISTS
     }
     // If we are renaming around an existing file (rather than a directory),
     // use its basename for the filename.
-    elseif ($replace == FILE_EXISTS_RENAME && is_file($destination)) {
+    elseif ($replace === FILE_EXISTS_RENAME && is_file($destination)) {
       $file->filename = drupal_basename($destination);
     }
 
@@ -1142,7 +1142,7 @@ function file_move(stdClass $source, $destination = NULL, $replace = FILE_EXISTS
  */
 function file_unmanaged_move($source, $destination = NULL, $replace = FILE_EXISTS_RENAME) {
   $filepath = file_unmanaged_copy($source, $destination, $replace);
-  if ($filepath == FALSE || file_unmanaged_delete($source) == FALSE) {
+  if ($filepath === FALSE || file_unmanaged_delete($source) === FALSE) {
     return FALSE;
   }
   return $filepath;
@@ -1244,13 +1244,13 @@ function file_create_filename($basename, $directory) {
   // Strip control characters (ASCII value < 32). Though these are allowed in
   // some filesystems, not many applications handle them well.
   $basename = preg_replace('/[\x00-\x1F]/u', '_', $basename);
-  if (substr(PHP_OS, 0, 3) == 'WIN') {
+  if (substr(PHP_OS, 0, 3) === 'WIN') {
     // These characters are not allowed in Windows filenames
     $basename = str_replace(array(':', '*', '?', '"', '<', '>', '|'), '_', $basename);
   }
 
   // A URI or path may already have a trailing slash or look like "public://".
-  if (substr($directory, -1) == '/') {
+  if (substr($directory, -1) === '/') {
     $separator = '';
   }
   else {
@@ -1402,7 +1402,7 @@ function file_unmanaged_delete_recursive($path) {
   if (is_dir($path)) {
     $dir = dir($path);
     while (($entry = $dir->read()) !== FALSE) {
-      if ($entry == '.' || $entry == '..') {
+      if ($entry === '.' || $entry === '..') {
         continue;
       }
       $entry_path = $path . '/' . $entry;
@@ -1589,7 +1589,7 @@ function file_save_upload($source, $validators = array(), $destination = FALSE,
     $destination .= '/';
   }
   $file->destination = file_destination($destination . $file->filename, $replace);
-  // If file_destination() returns FALSE then $replace == FILE_EXISTS_ERROR and
+  // If file_destination() returns FALSE then $replace === FILE_EXISTS_ERROR and
   // there's an existing file so we need to bail.
   if ($file->destination === FALSE) {
     drupal_set_message(t('The file %source could not be uploaded because a file by that name already exists in the destination %directory.', array('%source' => $source, '%directory' => $destination)), 'error');
@@ -1629,7 +1629,7 @@ function file_save_upload($source, $validators = array(), $destination = FALSE,
   drupal_chmod($file->uri);
 
   // If we are replacing an existing file re-use its database record.
-  if ($replace == FILE_EXISTS_REPLACE) {
+  if ($replace === FILE_EXISTS_REPLACE) {
     $existing_files = file_load_multiple(array(), array('uri' => $file->uri));
     if (count($existing_files)) {
       $existing = reset($existing_files);
@@ -1927,7 +1927,7 @@ function file_save_data($data, $destination = NULL, $replace = FILE_EXISTS_RENAM
     $file->uid      = $user->uid;
     $file->status   = FILE_STATUS_PERMANENT;
     // If we are replacing an existing file re-use its database record.
-    if ($replace == FILE_EXISTS_REPLACE) {
+    if ($replace === FILE_EXISTS_REPLACE) {
       $existing_files = file_load_multiple(array(), array('uri' => $uri));
       if (count($existing_files)) {
         $existing = reset($existing_files);
@@ -1937,7 +1937,7 @@ function file_save_data($data, $destination = NULL, $replace = FILE_EXISTS_RENAM
     }
     // If we are renaming around an existing file (rather than a directory),
     // use its basename for the filename.
-    elseif ($replace == FILE_EXISTS_RENAME && is_file($destination)) {
+    elseif ($replace === FILE_EXISTS_RENAME && is_file($destination)) {
       $file->filename = drupal_basename($destination);
     }
 
@@ -2045,7 +2045,7 @@ function file_download() {
     foreach (module_implements('file_download') as $module) {
       $function = $module . '_file_download';
       $result = $function($uri);
-      if ($result == -1) {
+      if ($result === -1) {
         return drupal_access_denied();
       }
       if (isset($result) && is_array($result)) {
@@ -2263,7 +2263,7 @@ function drupal_chmod($uri, $mode = NULL) {
  */
 function drupal_unlink($uri, $context = NULL) {
   $scheme = file_uri_scheme($uri);
-  if ((!$scheme || !file_stream_wrapper_valid_scheme($scheme)) && (substr(PHP_OS, 0, 3) == 'WIN')) {
+  if ((!$scheme || !file_stream_wrapper_valid_scheme($scheme)) && (substr(PHP_OS, 0, 3) === 'WIN')) {
     chmod($uri, 0600);
   }
   if ($context) {
@@ -2429,7 +2429,7 @@ function drupal_mkdir($uri, $mode = NULL, $recursive = FALSE, $context = NULL) {
  */
 function drupal_rmdir($uri, $context = NULL) {
   $scheme = file_uri_scheme($uri);
-  if ((!$scheme || !file_stream_wrapper_valid_scheme($scheme)) && (substr(PHP_OS, 0, 3) == 'WIN')) {
+  if ((!$scheme || !file_stream_wrapper_valid_scheme($scheme)) && (substr(PHP_OS, 0, 3) === 'WIN')) {
     chmod($uri, 0700);
   }
   if ($context) {
@@ -2496,7 +2496,7 @@ function file_directory_temp() {
     }
 
     // Operating system specific dirs.
-    if (substr(PHP_OS, 0, 3) == 'WIN') {
+    if (substr(PHP_OS, 0, 3) === 'WIN') {
       $directories[] = 'c:\\windows\\temp';
       $directories[] = 'c:\\winnt\\temp';
     }
diff --git a/core/includes/form.inc b/core/includes/form.inc
index ae04144..00bc79b 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -304,7 +304,7 @@ function drupal_build_form($form_id, &$form_state) {
   $form_state += form_state_defaults();
 
   if (!isset($form_state['input'])) {
-    $form_state['input'] = $form_state['method'] == 'get' ? $_GET : $_POST;
+    $form_state['input'] = $form_state['method'] === 'get' ? $_GET : $_POST;
   }
 
   if (isset($_SESSION['batch_form_state'])) {
@@ -320,7 +320,7 @@ function drupal_build_form($form_id, &$form_state) {
   // form to proceed. In addition, if there is stored form_state data from a
   // previous step, we'll retrieve it so it can be passed on to the form
   // processing code.
-  $check_cache = isset($form_state['input']['form_id']) && $form_state['input']['form_id'] == $form_id && !empty($form_state['input']['form_build_id']);
+  $check_cache = isset($form_state['input']['form_id']) && $form_state['input']['form_id'] === $form_id && !empty($form_state['input']['form_build_id']);
   if ($check_cache) {
     $form = form_get_cache($form_state['input']['form_build_id'], $form_state);
   }
@@ -828,7 +828,7 @@ function drupal_process_form($form_id, &$form, &$form_state) {
   $form_state['values'] = array();
 
   // With $_GET, these forms are always submitted if requested.
-  if ($form_state['method'] == 'get' && !empty($form_state['always_process'])) {
+  if ($form_state['method'] === 'get' && !empty($form_state['always_process'])) {
     if (!isset($form_state['input']['form_build_id'])) {
       $form_state['input']['form_build_id'] = $form['#build_id'];
     }
@@ -969,7 +969,7 @@ function drupal_prepare_form($form_id, &$form, &$form_state) {
   $form_state['programmed'] = isset($form_state['programmed']) ? $form_state['programmed'] : FALSE;
 
   // Fix the form method, if it is 'get' in $form_state, but not in $form.
-  if ($form_state['method'] == 'get' && !isset($form['#method'])) {
+  if ($form_state['method'] === 'get' && !isset($form['#method'])) {
     $form['#method'] = 'get';
   }
 
@@ -1296,7 +1296,7 @@ function _form_validate(&$elements, &$form_state, $form_id = NULL) {
       }
 
       if (isset($elements['#options']) && isset($elements['#value'])) {
-        if ($elements['#type'] == 'select') {
+        if ($elements['#type'] === 'select') {
           $options = form_options_flatten($elements['#options']);
         }
         else {
@@ -1320,7 +1320,7 @@ function _form_validate(&$elements, &$form_state, $form_id = NULL) {
         // identical to the empty option's value, we reset the element's value
         // to NULL to trigger the regular #required handling below.
         // @see form_process_select()
-        elseif ($elements['#type'] == 'select' && !$elements['#multiple'] && $elements['#required'] && !isset($elements['#default_value']) && $elements['#value'] === $elements['#empty_value']) {
+        elseif ($elements['#type'] === 'select' && !$elements['#multiple'] && $elements['#required'] && !isset($elements['#default_value']) && $elements['#value'] === $elements['#empty_value']) {
           $elements['#value'] = NULL;
           form_set_value($elements, NULL, $form_state);
         }
@@ -1372,7 +1372,7 @@ function _form_validate(&$elements, &$form_state, $form_id = NULL) {
       // An unchecked checkbox has a #value of integer 0, different than string
       // '0', which could be a valid value.
       $is_empty_multiple = (!count($elements['#value']));
-      $is_empty_string = (is_string($elements['#value']) && drupal_strlen(trim($elements['#value'])) == 0);
+      $is_empty_string = (is_string($elements['#value']) && drupal_strlen(trim($elements['#value'])) === 0);
       $is_empty_value = ($elements['#value'] === 0);
       if ($is_empty_multiple || $is_empty_string || $is_empty_value) {
         // Although discouraged, a #title is not mandatory for form elements. In
@@ -1442,7 +1442,7 @@ function form_execute_handlers($type, &$form, &$form_state) {
     // Check if a previous _submit handler has set a batch, but make sure we
     // do not react to a batch that is already being processed (for instance
     // if a batch operation performs a drupal_form_submit()).
-    if ($type == 'submit' && ($batch =& batch_get()) && !isset($batch['id'])) {
+    if ($type === 'submit' && ($batch =& batch_get()) && !isset($batch['id'])) {
       // Some previous submit handler has set a batch. To ensure correct
       // execution order, store the call in a special 'control' batch set.
       // See _batch_next_set().
@@ -1748,7 +1748,7 @@ function form_builder($form_id, &$element, &$form_state) {
   );
 
   // Special handling if we're on the top level form element.
-  if (isset($element['#type']) && $element['#type'] == 'form') {
+  if (isset($element['#type']) && $element['#type'] === 'form') {
     if (!empty($element['#https']) && variable_get('https', FALSE) &&
         !url_is_external($element['#action'])) {
       global $base_root;
@@ -1765,7 +1765,7 @@ function form_builder($form_id, &$element, &$form_state) {
     // Set a flag if we have a correct form submission. This is always TRUE for
     // programmed forms coming from drupal_form_submit(), or if the form_id coming
     // from the POST data is set and matches the current form_id.
-    if ($form_state['programmed'] || (!empty($form_state['input']) && (isset($form_state['input']['form_id']) && ($form_state['input']['form_id'] == $form_id)))) {
+    if ($form_state['programmed'] || (!empty($form_state['input']) && (isset($form_state['input']['form_id']) && ($form_state['input']['form_id'] === $form_id)))) {
       $form_state['process_input'] = TRUE;
     }
     else {
@@ -1864,13 +1864,13 @@ function form_builder($form_id, &$element, &$form_state) {
 
   // If there is a file element, we need to flip a flag so later the
   // form encoding can be set.
-  if (isset($element['#type']) && $element['#type'] == 'file') {
+  if (isset($element['#type']) && $element['#type'] === 'file') {
     $form_state['has_file_element'] = TRUE;
   }
 
   // Final tasks for the form element after form_builder() has run for all other
   // elements.
-  if (isset($element['#type']) && $element['#type'] == 'form') {
+  if (isset($element['#type']) && $element['#type'] === 'form') {
     // If there is a file element, we set the form encoding.
     if (isset($form_state['has_file_element'])) {
       $element['#attributes']['enctype'] = 'multipart/form-data';
@@ -1927,7 +1927,7 @@ function _form_builder_handle_input_element($form_id, &$element, &$form_state) {
   if (!isset($element['#name'])) {
     $name = array_shift($element['#parents']);
     $element['#name'] = $name;
-    if ($element['#type'] == 'file') {
+    if ($element['#type'] === 'file') {
       // To make it easier to handle $_FILES in file.inc, we place all
       // file fields in the 'files' array. Also, we do not support
       // nested file names.
@@ -2071,8 +2071,8 @@ function _form_builder_handle_input_element($form_id, &$element, &$form_state) {
  * named 'op', and only differing in their value.
  */
 function _form_element_triggered_scripted_submission($element, &$form_state) {
-  if (!empty($form_state['input']['_triggering_element_name']) && $element['#name'] == $form_state['input']['_triggering_element_name']) {
-    if (empty($form_state['input']['_triggering_element_value']) || $form_state['input']['_triggering_element_value'] == $element['#value']) {
+  if (!empty($form_state['input']['_triggering_element_name']) && $element['#name'] === $form_state['input']['_triggering_element_name']) {
+    if (empty($form_state['input']['_triggering_element_value']) || $form_state['input']['_triggering_element_value'] === $element['#value']) {
       return TRUE;
     }
   }
@@ -2105,7 +2105,7 @@ function _form_button_was_clicked($element, &$form_state) {
   // and the specific return value is used to determine which was
   // clicked. This ONLY works as long as $form['#name'] puts the
   // value at the top level of the tree of $_POST data.
-  if (isset($form_state['input'][$element['#name']]) && $form_state['input'][$element['#name']] == $element['#value']) {
+  if (isset($form_state['input'][$element['#name']]) && $form_state['input'][$element['#name']] === $element['#value']) {
     return TRUE;
   }
   // When image buttons are clicked, browsers do NOT pass the form element
@@ -2205,7 +2205,7 @@ function form_type_image_button_value($form, $input, $form_state) {
       $input = $form_state['input'];
       foreach (explode('[', $form['#name']) as $element_name) {
         // chop off the ] that may exist.
-        if (substr($element_name, -1) == ']') {
+        if (substr($element_name, -1) === ']') {
           $element_name = substr($element_name, 0, -1);
         }
 
@@ -2360,7 +2360,7 @@ function form_type_radios_value(&$element, $input = FALSE) {
  *   for this element. Return nothing to use the default.
  */
 function form_type_tableselect_value($element, $input = FALSE) {
-  // If $element['#multiple'] == FALSE, then radio buttons are displayed and
+  // If $element['#multiple'] === FALSE, then radio buttons are displayed and
   // the default value handling is used.
   if (isset($element['#multiple']) && $element['#multiple']) {
     // Checkboxes are being displayed with the default value coming from the
@@ -2733,7 +2733,7 @@ function form_get_options($element, $key) {
         $keys[] = $index;
       }
     }
-    elseif ($index == $key) {
+    elseif ($index === $key) {
       $keys[] = $index;
     }
   }
@@ -2793,7 +2793,7 @@ function theme_radio($variables) {
   $element['#attributes']['type'] = 'radio';
   element_set_attributes($element, array('id', 'name', '#return_value' => 'value'));
 
-  if (isset($element['#return_value']) && $element['#value'] !== FALSE && $element['#value'] == $element['#return_value']) {
+  if (isset($element['#return_value']) && $element['#value'] !== FALSE && $element['#value'] === $element['#return_value']) {
     $element['#attributes']['checked'] = 'checked';
   }
   _form_set_class($element, array('form-radio'));
@@ -3103,7 +3103,7 @@ function theme_checkboxes($variables) {
 function form_pre_render_conditional_form_element($element) {
   $t = get_t();
   // Set the element's title attribute to show #title as a tooltip, if needed.
-  if (isset($element['#title']) && $element['#title_display'] == 'attribute') {
+  if (isset($element['#title']) && $element['#title_display'] === 'attribute') {
     $element['#attributes']['title'] = $element['#title'];
     if (!empty($element['#required'])) {
       // Append an indication that this field is required.
@@ -3164,7 +3164,7 @@ function form_process_checkboxes($element) {
   $value = is_array($element['#value']) ? $element['#value'] : array();
   $element['#tree'] = TRUE;
   if (count($element['#options']) > 0) {
-    if (!isset($element['#default_value']) || $element['#default_value'] == 0) {
+    if (!isset($element['#default_value']) || $element['#default_value'] === 0) {
       $element['#default_value'] = array();
     }
     $weight = 0;
@@ -3402,7 +3402,7 @@ function form_process_tableselect($element) {
             '#type' => 'radio',
             '#title' => '',
             '#return_value' => $key,
-            '#default_value' => ($element['#default_value'] == $key) ? $key : NULL,
+            '#default_value' => ($element['#default_value'] === $key) ? $key : NULL,
             '#attributes' => $element['#attributes'],
             '#parents' => $element['#parents'],
             '#id' => drupal_html_id('edit-' . implode('-', $parents_for_id)),
@@ -3544,7 +3544,7 @@ function form_validate_machine_name(&$element, &$form_state) {
     if (!isset($element['#machine_name']['error'])) {
       // Since a hyphen is the most common alternative replacement character,
       // a corresponding validation error message is supported here.
-      if ($element['#machine_name']['replace'] == '-') {
+      if ($element['#machine_name']['replace'] === '-') {
         form_error($element, t('The machine-readable name must contain only lowercase letters, numbers, and hyphens.'));
       }
       // Otherwise, we assume the default (underscore).
@@ -4346,11 +4346,11 @@ function theme_form_element_label($variables) {
 
   $attributes = array();
   // Style the label as class option to display inline with the element.
-  if ($element['#title_display'] == 'after') {
+  if ($element['#title_display'] === 'after') {
     $attributes['class'] = 'option';
   }
   // Show label only to screen readers to avoid disruption in visual flows.
-  elseif ($element['#title_display'] == 'invisible') {
+  elseif ($element['#title_display'] === 'invisible') {
     $attributes['class'] = 'element-invisible';
   }
 
diff --git a/core/includes/gettext.inc b/core/includes/gettext.inc
index a8498dc..840b4e4 100644
--- a/core/includes/gettext.inc
+++ b/core/includes/gettext.inc
@@ -128,7 +128,7 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
     // A line should not be longer than 10 * 1024.
     $line = fgets($fd, 10 * 1024);
 
-    if ($lineno == 0) {
+    if ($lineno === 0) {
       // The first line might come with a UTF-8 BOM, which should be removed.
       $line = str_replace("\xEF\xBB\xBF", '', $line);
     }
@@ -141,11 +141,11 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
     if (!strncmp('#', $line, 1)) {
       // Lines starting with '#' are comments.
 
-      if ($context == 'COMMENT') {
+      if ($context === 'COMMENT') {
         // Already in comment token, insert the comment.
         $current['#'][] = substr($line, 1);
       }
-      elseif (($context == 'MSGSTR') || ($context == 'MSGSTR_ARR')) {
+      elseif (($context === 'MSGSTR') || ($context === 'MSGSTR_ARR')) {
         // We are currently in string token, close it out.
         _locale_import_one_string($op, $current, $overwrite_options, $lang, $file, $customized);
 
@@ -189,14 +189,14 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
     elseif (!strncmp('msgid', $line, 5)) {
       // Starting a new message.
 
-      if (($context == 'MSGSTR') || ($context == 'MSGSTR_ARR')) {
+      if (($context === 'MSGSTR') || ($context === 'MSGSTR_ARR')) {
         // We are currently in a message string, close it out.
         _locale_import_one_string($op, $current, $overwrite_options, $lang, $file, $customized);
 
         // Start a new context for the id.
         $current = array();
       }
-      elseif ($context == 'MSGID') {
+      elseif ($context === 'MSGID') {
         // We are currently already in the context, meaning we passed an id with no data.
         _locale_import_message('The translation file %filename contains an error: "msgid" is unexpected on line %line.', $file, $lineno);
         return FALSE;
@@ -219,7 +219,7 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
     elseif (!strncmp('msgctxt', $line, 7)) {
       // Starting a new context.
 
-      if (($context == 'MSGSTR') || ($context == 'MSGSTR_ARR')) {
+      if (($context === 'MSGSTR') || ($context === 'MSGSTR_ARR')) {
         // We are currently in a message, start a new one.
         _locale_import_one_string($op, $current, $overwrite_options, $lang, $file, $customized);
         $current = array();
@@ -313,16 +313,16 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
       }
 
       // Append the string to the current context.
-      if (($context == 'MSGID') || ($context == 'MSGID_PLURAL')) {
+      if (($context === 'MSGID') || ($context === 'MSGID_PLURAL')) {
         $current['msgid'] .= $quoted;
       }
-      elseif ($context == 'MSGCTXT') {
+      elseif ($context === 'MSGCTXT') {
         $current['msgctxt'] .= $quoted;
       }
-      elseif ($context == 'MSGSTR') {
+      elseif ($context === 'MSGSTR') {
         $current['msgstr'] .= $quoted;
       }
-      elseif ($context == 'MSGSTR_ARR') {
+      elseif ($context === 'MSGSTR_ARR') {
         $current['msgstr'][$plural] .= $quoted;
       }
       else {
@@ -334,7 +334,7 @@ function _locale_import_read_po($op, $file, $overwrite_options = NULL, $lang = N
   }
 
   // End of PO file, closed out the last entry.
-  if (($context == 'MSGSTR') || ($context == 'MSGSTR_ARR')) {
+  if (($context === 'MSGSTR') || ($context === 'MSGSTR_ARR')) {
     _locale_import_one_string($op, $current, $overwrite_options, $lang, $file, $customized);
   }
   elseif ($context != 'COMMENT') {
@@ -404,7 +404,7 @@ function _locale_import_one_string($op, $value = NULL, $overwrite_options = NULL
     // Store the string we got in the database.
     case 'db-store':
 
-      if ($value['msgid'] == '') {
+      if ($value['msgid'] === '') {
         // If 'msgid' is empty, it means we got values for the header of the
         // file as per the structure of the Gettext format.
         $locale_plurals = variable_get('locale_translation_plurals', array());
@@ -653,7 +653,7 @@ function _locale_import_parse_plural_forms($pluralforms, $filepath) {
  */
 function _locale_import_parse_arithmetic($string) {
   // Operator precedence table
-  $precedence = array("(" => -1, ")" => -1, "?" => 1, ":" => 1, "||" => 3, "&&" => 4, "==" => 5, "!=" => 5, "<" => 6, ">" => 6, "<=" => 6, ">=" => 6, "+" => 7, "-" => 7, "*" => 8, "/" => 8, "%" => 8);
+  $precedence = array("(" => -1, ")" => -1, "?" => 1, ":" => 1, "||" => 3, "&&" => 4, "===" => 5, "!=" => 5, "<" => 6, ">" => 6, "<=" => 6, ">=" => 6, "+" => 7, "-" => 7, "*" => 8, "/" => 8, "%" => 8);
   // Right associativity
   $right_associativity = array("?" => 1, ":" => 1);
 
@@ -672,13 +672,13 @@ function _locale_import_parse_arithmetic($string) {
     if (is_numeric($token)) {
       $element_stack[] = $current_token;
     }
-    elseif ($current_token == "n") {
+    elseif ($current_token === "n") {
       $element_stack[] = '$n';
     }
-    elseif ($current_token == "(") {
+    elseif ($current_token === "(") {
       $operator_stack[] = $current_token;
     }
-    elseif ($current_token == ")") {
+    elseif ($current_token === ")") {
       $topop = array_pop($operator_stack);
       while (isset($topop) && ($topop != "(")) {
         $element_stack[] = $topop;
@@ -689,7 +689,7 @@ function _locale_import_parse_arithmetic($string) {
       // If it's an operator, then pop from $operator_stack into $element_stack until the
       // precedence in $operator_stack is less than current, then push into $operator_stack
       $topop = array_pop($operator_stack);
-      while (isset($topop) && ($precedence[$topop] >= $precedence[$current_token]) && !(($precedence[$topop] == $precedence[$current_token]) && !empty($right_associativity[$topop]) && !empty($right_associativity[$current_token]))) {
+      while (isset($topop) && ($precedence[$topop] >= $precedence[$current_token]) && !(($precedence[$topop] === $precedence[$current_token]) && !empty($right_associativity[$topop]) && !empty($right_associativity[$current_token]))) {
         $element_stack[] = $topop;
         $topop = array_pop($operator_stack);
       }
@@ -718,10 +718,10 @@ function _locale_import_parse_arithmetic($string) {
       $op = $element_stack[$i];
       if (!empty($precedence[$op])) {
         $f = "";
-        if ($op == ":") {
+        if ($op === ":") {
           $f = $element_stack[$i - 2] . "):" . $element_stack[$i - 1] . ")";
         }
-        elseif ($op == "?") {
+        elseif ($op === "?") {
           $f = "(" . $element_stack[$i - 2] . "?(" . $element_stack[$i - 1];
         }
         else {
@@ -734,7 +734,7 @@ function _locale_import_parse_arithmetic($string) {
   }
 
   // If only one element is left, the number of operators is appropriate
-  if (count($element_stack) == 1) {
+  if (count($element_stack) === 1) {
     return $element_stack[0];
   }
   else {
@@ -772,7 +772,7 @@ function _locale_import_tokenize_formula($formula) {
         case 2:
         case 3:
         case 4:
-          if ($next == '=') {
+          if ($next === '=') {
             $tokens[] = $formula[$i] . '=';
             $i++;
           }
@@ -781,7 +781,7 @@ function _locale_import_tokenize_formula($formula) {
           }
           break;
         case 5:
-          if ($next == '&') {
+          if ($next === '&') {
             $tokens[] = '&&';
             $i++;
           }
@@ -790,7 +790,7 @@ function _locale_import_tokenize_formula($formula) {
           }
           break;
         case 6:
-          if ($next == '|') {
+          if ($next === '|') {
             $tokens[] = '||';
             $i++;
           }
@@ -845,10 +845,10 @@ function _locale_import_parse_quoted($string) {
   }
   $quote = substr($string, 0, 1);
   $string = substr($string, 1, -1);
-  if ($quote == '"') {        // Double quotes: strip slashes
+  if ($quote === '"') {        // Double quotes: strip slashes
     return stripcslashes($string);
   }
-  elseif ($quote == "'") {  // Simple quote: return as-is
+  elseif ($quote === "'") {  // Simple quote: return as-is
     return $string;
   }
   else {
@@ -880,7 +880,7 @@ function _locale_export_get_strings($language = NULL, $options = array()) {
     'not_customized' => FALSE,
     'not_translated' => FALSE,
   );
-  if (array_sum($options) == 0) {
+  if (array_sum($options) === 0) {
     // If user asked to not include anything in the translation files,
     // that would not make sense, so just fall back on providing a template.
     $language = NULL;
@@ -1089,7 +1089,7 @@ function _locale_export_string($str) {
     return "\"\"\n\"" . implode("\"\n\"", $parts) . "\"\n";
   }
   // Single line string
-  elseif (count($parts) == 1) {
+  elseif (count($parts) === 1) {
     return "\"$parts[0]\"\n";
   }
   // No translation
diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index e07808a..beb2b22 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -386,7 +386,7 @@ function install_run_tasks(&$install_state) {
     if (!$install_state['task_not_complete']) {
       $install_state['tasks_performed'][] = $task_name;
       $install_state['installation_finished'] = empty($tasks_to_perform);
-      if ($install_state['database_tables_exist'] && ($task['run'] == INSTALL_TASK_RUN_IF_NOT_COMPLETED || $install_state['installation_finished'])) {
+      if ($install_state['database_tables_exist'] && ($task['run'] === INSTALL_TASK_RUN_IF_NOT_COMPLETED || $install_state['installation_finished'])) {
         variable_set('install_task', $install_state['installation_finished'] ? 'done' : $task_name);
       }
     }
@@ -414,7 +414,7 @@ function install_run_tasks(&$install_state) {
 function install_run_task($task, &$install_state) {
   $function = $task['function'];
 
-  if ($task['type'] == 'form') {
+  if ($task['type'] === 'form') {
     require_once DRUPAL_ROOT . '/core/includes/form.inc';
     if ($install_state['interactive']) {
       // For interactive forms, build the form and ensure that it will not
@@ -457,7 +457,7 @@ function install_run_task($task, &$install_state) {
     }
   }
 
-  elseif ($task['type'] == 'batch') {
+  elseif ($task['type'] === 'batch') {
     // Start a new batch based on the task function, if one is not running
     // already.
     $current_batch = variable_get('install_current_batch');
@@ -485,7 +485,7 @@ function install_run_task($task, &$install_state) {
     }
     // If we are in the middle of processing this batch, keep sending back
     // any output from the batch process, until the task is complete.
-    elseif ($current_batch == $function) {
+    elseif ($current_batch === $function) {
       include_once DRUPAL_ROOT . '/core/includes/batch.inc';
       $output = _batch_page();
       // The task is complete when we try to access the batch page and receive
@@ -533,10 +533,10 @@ function install_tasks_to_perform($install_state) {
     // Also, if we started this page request with an indication of the last
     // task that was completed, skip that task and all those that come before
     // it, unless they are marked as always needing to run.
-    if ($task['run'] == INSTALL_TASK_SKIP || in_array($name, $install_state['tasks_performed']) || (!empty($install_state['completed_task']) && empty($completed_task_found) && $task['run'] != INSTALL_TASK_RUN_IF_REACHED)) {
+    if ($task['run'] === INSTALL_TASK_SKIP || in_array($name, $install_state['tasks_performed']) || (!empty($install_state['completed_task']) && empty($completed_task_found) && $task['run'] != INSTALL_TASK_RUN_IF_REACHED)) {
       unset($tasks[$name]);
     }
-    if (!empty($install_state['completed_task']) && $name == $install_state['completed_task']) {
+    if (!empty($install_state['completed_task']) && $name === $install_state['completed_task']) {
       $completed_task_found = TRUE;
     }
   }
@@ -591,7 +591,7 @@ function install_tasks($install_state) {
       'run' => INSTALL_TASK_RUN_IF_REACHED,
     ),
     'install_profile_modules' => array(
-      'display_name' => count($install_state['profiles']) == 1 ? st('Install site') : st('Install profile'),
+      'display_name' => count($install_state['profiles']) === 1 ? st('Install site') : st('Install profile'),
       'type' => 'batch',
     ),
     'install_import_translations' => array(
@@ -772,7 +772,7 @@ function install_verify_requirements(&$install_state) {
   // If there are errors, always display them. If there are only warnings, skip
   // them if the user has provided a URL parameter acknowledging the warnings
   // and indicating a desire to continue anyway. See drupal_requirements_url().
-  if ($severity == REQUIREMENT_ERROR || ($severity == REQUIREMENT_WARNING && empty($install_state['parameters']['continue']))) {
+  if ($severity === REQUIREMENT_ERROR || ($severity === REQUIREMENT_WARNING && empty($install_state['parameters']['continue']))) {
     if ($install_state['interactive']) {
       drupal_set_title(st('Requirements problem'));
       $status_report = theme('status_report', array('requirements' => $requirements));
@@ -786,7 +786,7 @@ function install_verify_requirements(&$install_state) {
         // Skip warnings altogether for non-interactive installations; these
         // proceed in a single request so there is no good opportunity (and no
         // good method) to warn the user anyway.
-        if (isset($requirement['severity']) && $requirement['severity'] == REQUIREMENT_ERROR) {
+        if (isset($requirement['severity']) && $requirement['severity'] === REQUIREMENT_ERROR) {
           $failures[] = $requirement['title'] . ': ' . $requirement['value'] . "\n\n" . $requirement['description'];
         }
       }
@@ -841,7 +841,7 @@ function install_verify_completed_task() {
   catch (Exception $e) {
   }
   if (isset($task)) {
-    if ($task == 'done') {
+    if ($task === 'done') {
       throw new Exception(install_already_done_error());
     }
     return $task;
@@ -911,7 +911,7 @@ function install_settings_form($form, &$form_state, &$install_state) {
     '#default_value' => !empty($database['driver']) ? $database['driver'] : current($drivers_keys),
     '#description' => st('The type of database your @drupal data will be stored in.', array('@drupal' => drupal_install_profile_distribution_name())),
   );
-  if (count($drivers) == 1) {
+  if (count($drivers) === 1) {
     $form['driver']['#disabled'] = TRUE;
     $form['driver']['#description'] .= ' ' . st('Your PHP configuration only supports a single database type, so it has been automatically selected.');
   }
@@ -1110,11 +1110,11 @@ function install_select_profile(&$install_state) {
  * list or from a selection passed in via $_POST.
  */
 function _install_select_profile($profiles) {
-  if (sizeof($profiles) == 0) {
+  if (sizeof($profiles) === 0) {
     throw new Exception(install_no_profile_error());
   }
   // Don't need to choose profile if only one available.
-  if (sizeof($profiles) == 1) {
+  if (sizeof($profiles) === 1) {
     $profile = array_pop($profiles);
     // TODO: is this right?
     require_once DRUPAL_ROOT . '/' . $profile->uri;
@@ -1122,7 +1122,7 @@ function _install_select_profile($profiles) {
   }
   else {
     foreach ($profiles as $profile) {
-      if (!empty($_POST['profile']) && ($_POST['profile'] == $profile->name)) {
+      if (!empty($_POST['profile']) && ($_POST['profile'] === $profile->name)) {
         return $profile->name;
       }
     }
@@ -1257,7 +1257,7 @@ function install_select_language(&$install_state) {
 
   if (!empty($_POST['langcode'])) {
     foreach ($files as $file) {
-      if ($_POST['langcode'] == $file->langcode) {
+      if ($_POST['langcode'] === $file->langcode) {
         $install_state['parameters']['langcode'] = $file->langcode;
         return;
       }
@@ -1269,7 +1269,7 @@ function install_select_language(&$install_state) {
     // performing an interactive installation, inform the user that the
     // installer can be translated. Otherwise we assume the user knows what he
     // is doing.
-    if (count($files) == 1) {
+    if (count($files) === 1) {
       if ($install_state['interactive']) {
         $directory = variable_get('locale_translate_file_directory', conf_path() . '/files/translations');
 
@@ -1354,7 +1354,7 @@ function install_select_language_form($form, &$form_state, $files) {
     '#size' => min(count($select_options), 10),
   );
 
-  if (count($files) == 1) {
+  if (count($files) === 1) {
     $form['help'] = array(
       '#markup' => '<p><a href="' . check_url(drupal_current_script_url(array('translate' => 'true'))) . '">' . st('Learn how to install Drupal in other languages') . '</a></p>',
     );
diff --git a/core/includes/install.inc b/core/includes/install.inc
index 72adf1c..0e630ab 100644
--- a/core/includes/install.inc
+++ b/core/includes/install.inc
@@ -120,7 +120,7 @@ function drupal_install_profile_distribution_name() {
 function drupal_detect_baseurl($file = 'core/install.php') {
   $proto = $_SERVER['HTTPS'] ? 'https://' : 'http://';
   $host = $_SERVER['SERVER_NAME'];
-  $port = ($_SERVER['SERVER_PORT'] == 80 ? '' : ':' . $_SERVER['SERVER_PORT']);
+  $port = ($_SERVER['SERVER_PORT'] === 80 ? '' : ':' . $_SERVER['SERVER_PORT']);
   $uri = preg_replace("/\?.*/", '', $_SERVER['REQUEST_URI']);
   $dir = str_replace("/$file", '', $uri);
 
@@ -211,7 +211,7 @@ function drupal_rewrite_settings($settings = array()) {
       }
       $first = FALSE;
       // Check for constants.
-      if (substr($line, 0, 7) == 'define(') {
+      if (substr($line, 0, 7) === 'define(') {
         preg_match('/define\(\s*[\'"]([A-Z_-]+)[\'"]\s*,(.*?)\);/', $line, $variable);
         if (in_array($variable[1], $keys)) {
           $setting = $settings[$variable[1]];
@@ -224,7 +224,7 @@ function drupal_rewrite_settings($settings = array()) {
         }
       }
       // Check for variables.
-      elseif (substr($line, 0, 1) == '$') {
+      elseif (substr($line, 0, 1) === '$') {
         preg_match('/\$([^ ]*) /', $line, $variable);
         if (in_array($variable[1], $keys)) {
           // Write new value to settings.php in the following format:
@@ -365,7 +365,7 @@ function drupal_uninstall_modules($module_list = array(), $uninstall_dependents
 
     $profile = drupal_get_profile();
     while (list($module) = each($module_list)) {
-      if (!isset($module_data[$module]) || drupal_get_installed_schema_version($module) == SCHEMA_UNINSTALLED) {
+      if (!isset($module_data[$module]) || drupal_get_installed_schema_version($module) === SCHEMA_UNINSTALLED) {
         // This module doesn't exist or is already uninstalled, skip it.
         unset($module_list[$module]);
         continue;
@@ -456,7 +456,7 @@ function drupal_verify_install_file($file, $mask = NULL, $type = 'file') {
         switch ($current_mask) {
           case FILE_EXIST:
             if (!file_exists($file)) {
-              if ($type == 'dir') {
+              if ($type === 'dir') {
                 drupal_install_mkdir($file, $mask);
               }
               if (!file_exists($file)) {
@@ -694,7 +694,7 @@ function drupal_requirements_url($severity) {
   $query = array();
   // If there are no errors, only warnings, append 'continue=1' to the URL so
   // the user can bypass this screen on the next page load.
-  if ($severity == REQUIREMENT_WARNING) {
+  if ($severity === REQUIREMENT_WARNING) {
     $query['continue'] = 1;
   }
   return drupal_current_script_url($query);
@@ -823,10 +823,10 @@ function drupal_check_module($module) {
   if (module_hook($module, 'requirements')) {
     // Check requirements
     $requirements = module_invoke($module, 'requirements', 'install');
-    if (is_array($requirements) && drupal_requirements_severity($requirements) == REQUIREMENT_ERROR) {
+    if (is_array($requirements) && drupal_requirements_severity($requirements) === REQUIREMENT_ERROR) {
       // Print any error messages
       foreach ($requirements as $requirement) {
-        if (isset($requirement['severity']) && $requirement['severity'] == REQUIREMENT_ERROR) {
+        if (isset($requirement['severity']) && $requirement['severity'] === REQUIREMENT_ERROR) {
           $message = $requirement['description'];
           if (isset($requirement['value']) && $requirement['value']) {
             $message .= ' (' . t('Currently using !item !version', array('!item' => $requirement['title'], '!version' => $requirement['value'])) . ')';
diff --git a/core/includes/language.inc b/core/includes/language.inc
index 2c46c76..0fe3a6d 100644
--- a/core/includes/language.inc
+++ b/core/includes/language.inc
@@ -352,7 +352,7 @@ function language_negotiation_method_invoke($method_id, $method = NULL) {
 
     // If the language negotiation method has no cache preference or this is
     // satisfied we can execute the callback.
-    $cache = !isset($method['cache']) || $user->uid || $method['cache'] == variable_get('cache', 0);
+    $cache = !isset($method['cache']) || $user->uid || $method['cache'] === variable_get('cache', 0);
     $callback = isset($method['callbacks']['negotiation']) ? $method['callbacks']['negotiation'] : FALSE;
     $langcode = $cache && function_exists($callback) ? $callback($languages) : FALSE;
     $results[$method_id] = isset($languages[$langcode]) ? $languages[$langcode] : FALSE;
@@ -399,7 +399,7 @@ function language_url_split_prefix($path, $languages) {
   // Search prefix within enabled languages.
   $prefixes = language_negotiation_url_prefixes();
   foreach ($languages as $language) {
-    if (isset($prefixes[$language->langcode]) && $prefixes[$language->langcode] == $prefix) {
+    if (isset($prefixes[$language->langcode]) && $prefixes[$language->langcode] === $prefix) {
       // Rebuild $path with the language removed.
       return array($language, implode('/', $args));
     }
diff --git a/core/includes/mail.inc b/core/includes/mail.inc
index f58a76e..736745d 100644
--- a/core/includes/mail.inc
+++ b/core/includes/mail.inc
@@ -462,7 +462,7 @@ function drupal_html_to_text($string, $allowed_tags = NULL) {
         case '/h2':
           $casing = NULL;
           // Pad the line with dashes.
-          $output = _drupal_html_to_text_pad($output, ($tagname == '/h1') ? '=' : '-', ' ');
+          $output = _drupal_html_to_text_pad($output, ($tagname === '/h1') ? '=' : '-', ' ');
           array_pop($indent);
           $chunk = ''; // Ensure blank new-line.
           break;
diff --git a/core/includes/menu.inc b/core/includes/menu.inc
index 4f0cf94..05db979 100644
--- a/core/includes/menu.inc
+++ b/core/includes/menu.inc
@@ -495,7 +495,7 @@ function menu_execute_active_handler($path = NULL, $deliver = TRUE) {
   drupal_alter('menu_site_status', $page_callback_result, $read_only_path);
 
   // Only continue if the site status is not set.
-  if ($page_callback_result == MENU_SITE_ONLINE) {
+  if ($page_callback_result === MENU_SITE_ONLINE) {
     if ($router_item = menu_get_item($path)) {
       if ($router_item['access']) {
         if ($router_item['include_file']) {
@@ -616,8 +616,8 @@ function _menu_check_access(&$item, $map) {
     $arguments = menu_unserialize($item['access_arguments'], $map);
     // As call_user_func_array is quite slow and user_access is a very common
     // callback, it is worth making a special case for it.
-    if ($callback == 'user_access') {
-      $item['access'] = (count($arguments) == 1) ? user_access($arguments[0]) : user_access($arguments[0], $arguments[1]);
+    if ($callback === 'user_access') {
+      $item['access'] = (count($arguments) === 1) ? user_access($arguments[0]) : user_access($arguments[0], $arguments[1]);
     }
     else {
       $item['access'] = call_user_func_array($callback, $arguments);
@@ -668,10 +668,10 @@ function _menu_item_localize(&$item, $map, $link_translate = FALSE) {
   // itself; can't localize.
   // If we are translating a router item (tabs, page, breadcrumb), then we
   // can always use the information from the router item.
-  if (!$link_translate || ($item['title'] == $item['link_title'])) {
+  if (!$link_translate || ($item['title'] === $item['link_title'])) {
     // t() is a special case. Since it is used very close to all the time,
     // we handle it directly instead of using indirect, slower methods.
-    if ($callback == 't') {
+    if ($callback === 't') {
       if (empty($item['title_arguments'])) {
         $item['title'] = t($item['title']);
       }
@@ -687,7 +687,7 @@ function _menu_item_localize(&$item, $map, $link_translate = FALSE) {
         $item['title'] = call_user_func_array($callback, menu_unserialize($item['title_arguments'], $map));
       }
       // Avoid calling check_plain again on l() function.
-      if ($callback == 'check_plain') {
+      if ($callback === 'check_plain') {
         $item['localized_options']['html'] = TRUE;
       }
     }
@@ -700,7 +700,7 @@ function _menu_item_localize(&$item, $map, $link_translate = FALSE) {
   if (!empty($item['description'])) {
     $original_description = $item['description'];
     $item['description'] = t($item['description']);
-    if ($link_translate && isset($item['options']['attributes']['title']) && $item['options']['attributes']['title'] == $original_description) {
+    if ($link_translate && isset($item['options']['attributes']['title']) && $item['options']['attributes']['title'] === $original_description) {
       $item['localized_options']['attributes']['title'] = $item['description'];
     }
   }
@@ -759,13 +759,13 @@ function _menu_translate(&$router_item, $map, $to_arg = FALSE) {
     $tab_parent_map = explode('/', $router_item['tab_parent']);
   }
   for ($i = 0; $i < $router_item['number_parts']; $i++) {
-    if ($link_map[$i] == '%') {
+    if ($link_map[$i] === '%') {
       $link_map[$i] = $path_map[$i];
     }
-    if (isset($tab_root_map[$i]) && $tab_root_map[$i] == '%') {
+    if (isset($tab_root_map[$i]) && $tab_root_map[$i] === '%') {
       $tab_root_map[$i] = $path_map[$i];
     }
-    if (isset($tab_parent_map[$i]) && $tab_parent_map[$i] == '%') {
+    if (isset($tab_parent_map[$i]) && $tab_parent_map[$i] === '%') {
       $tab_parent_map[$i] = $path_map[$i];
     }
   }
@@ -937,7 +937,7 @@ function _menu_link_translate(&$item, $translate = FALSE) {
  * "story" content type:
  * @code
  * $node = menu_get_object();
- * $story = $node->type == 'story';
+ * $story = $node->type === 'story';
  * @endcode
  *
  * @param $type
@@ -954,7 +954,7 @@ function _menu_link_translate(&$item, $translate = FALSE) {
  */
 function menu_get_object($type = 'node', $position = 1, $path = NULL) {
   $router_item = menu_get_item($path);
-  if (isset($router_item['load_functions'][$position]) && !empty($router_item['map'][$position]) && $router_item['load_functions'][$position] == $type . '_load') {
+  if (isset($router_item['load_functions'][$position]) && !empty($router_item['map'][$position]) && $router_item['load_functions'][$position] === $type . '_load') {
     return $router_item['map'][$position];
   }
 }
@@ -1013,10 +1013,10 @@ function menu_tree_output($tree) {
   $num_items = count($items);
   foreach ($items as $i => $data) {
     $class = array();
-    if ($i == 0) {
+    if ($i === 0) {
       $class[] = 'first';
     }
-    if ($i == $num_items - 1) {
+    if ($i === $num_items - 1) {
       $class[] = 'last';
     }
     // Set a class for the <li>-tag. Since $data['below'] may contain local
@@ -1040,7 +1040,7 @@ function menu_tree_output($tree) {
     // the active class accordingly. But local tasks do not appear in menu
     // trees, so if the current path is a local task, and this link is its
     // tab root, then we have to set the class manually.
-    if ($data['link']['href'] == $router_item['tab_root_href'] && $data['link']['href'] != $_GET['q']) {
+    if ($data['link']['href'] === $router_item['tab_root_href'] && $data['link']['href'] != $_GET['q']) {
       $data['link']['localized_options']['attributes']['class'][] = 'active';
     }
 
@@ -1234,7 +1234,7 @@ function menu_tree_page_data($menu_name, $max_depth = NULL, $only_active_trail =
           'max_depth' => $max_depth,
         );
         // Parent mlids; used both as key and value to ensure uniqueness.
-        // We always want all the top-level links with plid == 0.
+        // We always want all the top-level links with plid === 0.
         $active_trail = array(0 => 0);
 
         // If the item for the current page is accessible, build the tree
@@ -1247,7 +1247,7 @@ function menu_tree_page_data($menu_name, $max_depth = NULL, $only_active_trail =
             // active trail, if it resides in the requested menu. Otherwise,
             // we'd needlessly re-run _menu_build_tree() queries for every menu
             // on every page.
-            if ($active_link['menu_name'] == $menu_name) {
+            if ($active_link['menu_name'] === $menu_name) {
               // Use all the coordinates, except the last one because there
               // can be no child beyond the last column.
               for ($i = 1; $i < MENU_MAX_DEPTH; $i++) {
@@ -1446,7 +1446,7 @@ function _menu_build_tree($menu_name, array $parameters = array()) {
  */
 function menu_tree_collect_node_links(&$tree, &$node_links) {
   foreach ($tree as $key => $v) {
-    if ($tree[$key]['link']['router_path'] == 'node/%') {
+    if ($tree[$key]['link']['router_path'] === 'node/%') {
       $nid = substr($tree[$key]['link']['link_path'], 5);
       if (is_numeric($nid)) {
         $node_links[$nid][$tree[$key]['link']['mlid']] = &$tree[$key]['link'];
@@ -1780,7 +1780,7 @@ function menu_secondary_menu() {
 
   // If the secondary menu source is set as the primary menu, we display the
   // second level of the primary menu.
-  if (variable_get('menu_secondary_links_source', 'user-menu') == variable_get('menu_main_links_source', 'main-menu')) {
+  if (variable_get('menu_secondary_links_source', 'user-menu') === variable_get('menu_main_links_source', 'main-menu')) {
     return menu_navigation_links(variable_get('menu_main_links_source', 'main-menu'), 1);
   }
   else {
@@ -1837,7 +1837,7 @@ function menu_navigation_links($menu_name, $level = 0) {
       // the active class accordingly. But local tasks do not appear in menu
       // trees, so if the current path is a local task, and this link is its
       // tab root, then we have to set the class manually.
-      if ($item['link']['href'] == $router_item['tab_root_href'] && $item['link']['href'] != $_GET['q']) {
+      if ($item['link']['href'] === $router_item['tab_root_href'] && $item['link']['href'] != $_GET['q']) {
         $l['attributes']['class'][] = 'active';
       }
       // Keyed with the unique mlid to generate classes in theme_links().
@@ -1940,9 +1940,9 @@ function menu_local_tasks($level = 0) {
           $link = $item;
           // The default task is always active. As tabs can be normal items
           // too, so bitmask with MENU_LINKS_TO_PARENT before checking.
-          if (($item['type'] & MENU_LINKS_TO_PARENT) == MENU_LINKS_TO_PARENT) {
+          if (($item['type'] & MENU_LINKS_TO_PARENT) === MENU_LINKS_TO_PARENT) {
             // Find the first parent which is not a default local task or action.
-            for ($p = $item['tab_parent']; ($tasks[$p]['type'] & MENU_LINKS_TO_PARENT) == MENU_LINKS_TO_PARENT; $p = $tasks[$p]['tab_parent']);
+            for ($p = $item['tab_parent']; ($tasks[$p]['type'] & MENU_LINKS_TO_PARENT) === MENU_LINKS_TO_PARENT; $p = $tasks[$p]['tab_parent']);
             // Use the path of the parent instead.
             $link['href'] = $tasks[$p]['href'];
             // Mark the link as active, if the current path happens to be the
@@ -1966,7 +1966,7 @@ function menu_local_tasks($level = 0) {
           else {
             // Actions can be normal items too, so bitmask with
             // MENU_IS_LOCAL_ACTION before checking.
-            if (($item['type'] & MENU_IS_LOCAL_ACTION) == MENU_IS_LOCAL_ACTION) {
+            if (($item['type'] & MENU_IS_LOCAL_ACTION) === MENU_IS_LOCAL_ACTION) {
               // The item is an action, display it as such.
               $actions_current[] = array(
                 '#theme' => 'menu_local_action',
@@ -2013,17 +2013,17 @@ function menu_local_tasks($level = 0) {
           $link = $item;
           // Local tasks can be normal items too, so bitmask with
           // MENU_LINKS_TO_PARENT before checking.
-          if (($item['type'] & MENU_LINKS_TO_PARENT) == MENU_LINKS_TO_PARENT) {
+          if (($item['type'] & MENU_LINKS_TO_PARENT) === MENU_LINKS_TO_PARENT) {
             // Find the first parent which is not a default local task.
-            for ($p = $item['tab_parent']; ($tasks[$p]['type'] & MENU_LINKS_TO_PARENT) == MENU_LINKS_TO_PARENT; $p = $tasks[$p]['tab_parent']);
+            for ($p = $item['tab_parent']; ($tasks[$p]['type'] & MENU_LINKS_TO_PARENT) === MENU_LINKS_TO_PARENT; $p = $tasks[$p]['tab_parent']);
             // Use the path of the parent instead.
             $link['href'] = $tasks[$p]['href'];
-            if ($item['path'] == $router_item['path']) {
+            if ($item['path'] === $router_item['path']) {
               $root_path = $tasks[$p]['path'];
             }
           }
           // We check for the active tab.
-          if ($item['path'] == $path) {
+          if ($item['path'] === $path) {
             // Mark the link as active, if the current path is a (second-level)
             // local task of a default local task. Since this default local task
             // links to its parent, l() will not mark it as active, as it only
@@ -2530,7 +2530,7 @@ function menu_get_active_breadcrumb() {
 
     // Don't show a link to the current page in the breadcrumb trail.
     $end = end($active_trail);
-    if ($item['href'] == $end['href']) {
+    if ($item['href'] === $end['href']) {
       array_pop($active_trail);
     }
 
@@ -2547,7 +2547,7 @@ function menu_get_active_breadcrumb() {
     // (commonly MENU_DEFAULT_LOCAL_TASK). In order to also hide the parent link
     // itself, we always remove the last link in the trail, if the current
     // router item links to its parent.
-    if (($item['type'] & MENU_LINKS_TO_PARENT) == MENU_LINKS_TO_PARENT) {
+    if (($item['type'] & MENU_LINKS_TO_PARENT) === MENU_LINKS_TO_PARENT) {
       array_pop($active_trail);
     }
 
@@ -2727,7 +2727,7 @@ function menu_get_router() {
  */
 function _menu_link_build($item) {
   // Suggested items are disabled by default.
-  if ($item['type'] == MENU_SUGGESTED_ITEM) {
+  if ($item['type'] === MENU_SUGGESTED_ITEM) {
     $item['hidden'] = 1;
   }
   // Hide all items that are not visible in the tree.
@@ -2775,7 +2775,7 @@ function _menu_navigation_links_rebuild($menu) {
       if ($existing_item) {
         $item['mlid'] = $existing_item['mlid'];
         // A change in hook_menu may move the link to a different menu
-        if (empty($item['menu_name']) || ($item['menu_name'] == $existing_item['menu_name'])) {
+        if (empty($item['menu_name']) || ($item['menu_name'] === $existing_item['menu_name'])) {
           $item['menu_name'] = $existing_item['menu_name'];
           $item['plid'] = $existing_item['plid'];
         }
@@ -3007,7 +3007,7 @@ function menu_link_save(&$item, $existing_item = array(), $parent_candidates = a
 
   // This is the easiest way to handle the unique internal path '<front>',
   // since a path marked as external does not need to match a router path.
-  $item['external'] = (url_is_external($item['link_path'])  || $item['link_path'] == '<front>') ? 1 : 0;
+  $item['external'] = (url_is_external($item['link_path'])  || $item['link_path'] === '<front>') ? 1 : 0;
   // Load defaults.
   $item += array(
     'menu_name' => 'navigation',
@@ -3066,7 +3066,7 @@ function menu_link_save(&$item, $existing_item = array(), $parent_candidates = a
   }
 
   // Directly fill parents for top-level links.
-  if ($item['plid'] == 0) {
+  if ($item['plid'] === 0) {
     $item['p1'] = $item['mlid'];
     for ($i = 2; $i <= MENU_MAX_DEPTH; $i++) {
       $item["p$i"] = 0;
@@ -3210,7 +3210,7 @@ function _menu_link_find_parent($menu_link, $parent_candidates = array()) {
   // If everything else failed, try to derive the parent from the path
   // hierarchy. This only makes sense for links derived from menu router
   // items (ie. from hook_menu()).
-  if ($menu_link['module'] == 'system') {
+  if ($menu_link['module'] === 'system') {
     $query = db_select('menu_links');
     $query->condition('module', 'system');
     // We always respect the link's 'menu_name'; inheritance for router items is
@@ -3225,7 +3225,7 @@ function _menu_link_find_parent($menu_link, $parent_candidates = array()) {
       $new_query = clone $query;
       $new_query->condition('link_path', $parent_path);
       // Only valid if we get a unique result.
-      if ($new_query->countQuery()->execute()->fetchField() == 1) {
+      if ($new_query->countQuery()->execute()->fetchField() === 1) {
         $parent = $new_query->fields('menu_links')->execute()->fetchAssoc();
       }
     } while ($parent === FALSE && $parent_path);
@@ -3242,13 +3242,13 @@ function _menu_clear_page_cache() {
 
   // Clear the page and block caches, but at most twice, including at
   //  the end of the page load when there are multiple links saved or deleted.
-  if ($cache_cleared == 0) {
+  if ($cache_cleared === 0) {
     cache_clear_all();
     // Keep track of which menus have expanded items.
     _menu_set_expanded_menus();
     $cache_cleared = 1;
   }
-  elseif ($cache_cleared == 1) {
+  elseif ($cache_cleared === 1) {
     drupal_register_shutdown_function('cache_clear_all');
     // Keep track of which menus have expanded items.
     drupal_register_shutdown_function('_menu_set_expanded_menus');
@@ -3431,7 +3431,7 @@ function _menu_link_move_children($item, $existing_item) {
  * Check and update the has_children status for the parent of a link.
  */
 function _menu_update_parental_status($item, $exclude = FALSE) {
-  // If plid == 0, there is nothing to update.
+  // If plid === 0, there is nothing to update.
   if ($item['plid']) {
     // Check if at least one visible child exists in the table.
     $query = db_select('menu_links');
@@ -3599,7 +3599,7 @@ function _menu_router_build($callbacks) {
         // If an access callback is not found for a default local task we use
         // the callback from the parent, since we expect them to be identical.
         // In all other cases, the access parameters must be specified.
-        if (($item['type'] == MENU_DEFAULT_LOCAL_TASK) && !isset($item['access callback']) && isset($parent['access callback'])) {
+        if (($item['type'] === MENU_DEFAULT_LOCAL_TASK) && !isset($item['access callback']) && isset($parent['access callback'])) {
           $item['access callback'] = $parent['access callback'];
           if (!isset($item['access arguments']) && isset($parent['access arguments'])) {
             $item['access arguments'] = $parent['access arguments'];
@@ -3763,7 +3763,7 @@ function _menu_router_save($menu, $masks) {
 
     // Execute in batches to avoid the memory overhead of all of those records
     // in the query object.
-    if (++$num_records == 20) {
+    if (++$num_records === 20) {
       $insert->execute();
       $num_records = 0;
     }
diff --git a/core/includes/module.inc b/core/includes/module.inc
index 0b357a1..5f1d7c2 100644
--- a/core/includes/module.inc
+++ b/core/includes/module.inc
@@ -127,7 +127,7 @@ function system_list($type) {
   // For bootstrap modules, attempt to fetch the list from cache if possible.
   // if not fetch only the required information to fire bootstrap hooks
   // in case we are going to serve the page from cache.
-  if ($type == 'bootstrap') {
+  if ($type === 'bootstrap') {
     if (isset($lists['bootstrap'])) {
       return $lists['bootstrap'];
     }
@@ -169,11 +169,11 @@ function system_list($type) {
       foreach ($result as $record) {
         $record->info = unserialize($record->info);
         // Build a list of all enabled modules.
-        if ($record->type == 'module') {
+        if ($record->type === 'module') {
           $lists['module_enabled'][$record->name] = $record;
         }
         // Build a list of themes.
-        if ($record->type == 'theme') {
+        if ($record->type === 'theme') {
           $lists['theme'][$record->name] = $record;
         }
         // Build a list of filenames so drupal_get_filename can use it.
@@ -203,7 +203,7 @@ function system_list($type) {
           $base_key = $key;
         }
         // Set the theme engine prefix.
-        $lists['theme'][$key]->prefix = ($lists['theme'][$key]->info['engine'] == 'theme') ? $base_key : $lists['theme'][$key]->info['engine'];
+        $lists['theme'][$key]->prefix = ($lists['theme'][$key]->info['engine'] === 'theme') ? $base_key : $lists['theme'][$key]->info['engine'];
       }
       cache('bootstrap')->set('system_list', $lists);
     }
@@ -429,7 +429,7 @@ function module_enable($module_list, $enable_dependencies = TRUE) {
       ':type' => 'module',
       ':name' => $module))
       ->fetchObject();
-    if ($existing->status == 0) {
+    if ((int) $existing->status === 0) {
       // Load the module's code.
       drupal_load('module', $module);
       module_load_install($module);
@@ -457,7 +457,7 @@ function module_enable($module_list, $enable_dependencies = TRUE) {
       module_invoke_all('modules_preinstall', array($module));
 
       // Now install the module if necessary.
-      if (drupal_get_installed_schema_version($module, TRUE) == SCHEMA_UNINSTALLED) {
+      if ((int) drupal_get_installed_schema_version($module, TRUE) === SCHEMA_UNINSTALLED) {
         drupal_install_schema($module);
 
         // Set the schema version to the number of the last update provided
@@ -788,7 +788,7 @@ function module_implements_write_cache() {
   // Check whether we need to write the cache. We do not want to cache hooks
   // which are only invoked on HTTP POST requests since these do not need to be
   // optimized as tightly, and not doing so keeps the cache entry smaller.
-  if (isset($implementations['#write_cache']) && ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'HEAD')) {
+  if (isset($implementations['#write_cache']) && ($_SERVER['REQUEST_METHOD'] === 'GET' || $_SERVER['REQUEST_METHOD'] === 'HEAD')) {
     unset($implementations['#write_cache']);
     cache('bootstrap')->set('module_implements', $implementations);
   }
diff --git a/core/includes/pager.inc b/core/includes/pager.inc
index c579e7e..79233a7 100644
--- a/core/includes/pager.inc
+++ b/core/includes/pager.inc
@@ -389,7 +389,7 @@ function theme_pager($variables) {
             'data' => theme('pager_previous', array('text' => $i, 'element' => $element, 'interval' => ($pager_current - $i), 'parameters' => $parameters)),
           );
         }
-        if ($i == $pager_current) {
+        if ($i === $pager_current) {
           $items[] = array(
             'class' => array('pager-current'),
             'data' => $i,
@@ -493,7 +493,7 @@ function theme_pager_previous($variables) {
     $page_new = pager_load_array($pager_page_array[$element] - $interval, $element, $pager_page_array);
 
     // If the previous page is the first page, mark the link as such.
-    if ($page_new[$element] == 0) {
+    if ($page_new[$element] === 0) {
       $output = theme('pager_first', array('text' => $text, 'element' => $element, 'parameters' => $parameters));
     }
     // The previous page is not the first page.
@@ -531,7 +531,7 @@ function theme_pager_next($variables) {
   if ($pager_page_array[$element] < ($pager_total[$element] - 1)) {
     $page_new = pager_load_array($pager_page_array[$element] + $interval, $element, $pager_page_array);
     // If the next page is the last page, mark the link as such.
-    if ($page_new[$element] == ($pager_total[$element] - 1)) {
+    if ($page_new[$element] === ($pager_total[$element] - 1)) {
       $output = theme('pager_last', array('text' => $text, 'element' => $element, 'parameters' => $parameters));
     }
     // The next page is not the last page.
diff --git a/core/includes/password.inc b/core/includes/password.inc
index b052a4a..17cb08f 100644
--- a/core/includes/password.inc
+++ b/core/includes/password.inc
@@ -181,7 +181,7 @@ function _password_crypt($algo, $password, $setting) {
   // _password_base64_encode() of a 16 byte MD5 will always be 22 characters.
   // _password_base64_encode() of a 64 byte sha512 will always be 86 characters.
   $expected = 12 + ceil((8 * $len) / 6);
-  return (strlen($output) == $expected) ? substr($output, 0, DRUPAL_HASH_LENGTH) : FALSE;
+  return (strlen($output) === $expected) ? substr($output, 0, DRUPAL_HASH_LENGTH) : FALSE;
 }
 
 /**
@@ -228,7 +228,7 @@ function user_hash_password($password, $count_log2 = 0) {
  *   TRUE or FALSE.
  */
 function user_check_password($password, $account) {
-  if (substr($account->pass, 0, 2) == 'U$') {
+  if (substr($account->pass, 0, 2) === 'U$') {
     // This may be an updated password from user_update_7000(). Such hashes
     // have 'U' added as the first character and need an extra md5() (see the
     // Drupal 7 documentation).
@@ -255,7 +255,7 @@ function user_check_password($password, $account) {
     default:
       return FALSE;
   }
-  return ($hash && $stored_hash == $hash);
+  return ($hash && $stored_hash === $hash);
 }
 
 /**
diff --git a/core/includes/path.inc b/core/includes/path.inc
index 223ab04..c9f6219 100644
--- a/core/includes/path.inc
+++ b/core/includes/path.inc
@@ -76,12 +76,12 @@ function drupal_lookup_path($action, $path = '', $langcode = NULL) {
   // alias matching the URL path.
   $langcode = $langcode ? $langcode : $language_url->langcode;
 
-  if ($action == 'wipe') {
+  if ($action === 'wipe') {
     $cache = array();
     $cache['whitelist'] = drupal_path_alias_whitelist_rebuild();
   }
   elseif ($cache['whitelist'] && $path != '') {
-    if ($action == 'alias') {
+    if ($action === 'alias') {
       // During the first call to drupal_lookup_path() per language, load the
       // expected system paths for the page from cache.
       if (!empty($cache['first_call'])) {
@@ -105,7 +105,7 @@ function drupal_lookup_path($action, $path = '', $langcode = NULL) {
           // the most recently created alias for each source. Subsequent queries
           // using fetchField() must use pid DESC to have the same effect.
           // For performance reasons, the query builder is not used here.
-          if ($langcode == LANGUAGE_NOT_SPECIFIED) {
+          if ($langcode === LANGUAGE_NOT_SPECIFIED) {
             // Prevent PDO from complaining about a token the query doesn't use.
             unset($args[':langcode']);
             $result = db_query('SELECT source, alias FROM {url_alias} WHERE source IN (:system) AND langcode = :langcode_undetermined ORDER BY pid ASC', $args);
@@ -139,7 +139,7 @@ function drupal_lookup_path($action, $path = '', $langcode = NULL) {
           ':langcode_undetermined' => LANGUAGE_NOT_SPECIFIED,
         );
         // See the queries above.
-        if ($langcode == LANGUAGE_NOT_SPECIFIED) {
+        if ($langcode === LANGUAGE_NOT_SPECIFIED) {
           unset($args[':langcode']);
           $alias = db_query("SELECT alias FROM {url_alias} WHERE source = :source AND langcode = :langcode_undetermined ORDER BY pid DESC", $args)->fetchField();
         }
@@ -155,7 +155,7 @@ function drupal_lookup_path($action, $path = '', $langcode = NULL) {
     }
     // Check $no_source for this $path in case we've already determined that there
     // isn't a path that has this alias
-    elseif ($action == 'source' && !isset($cache['no_source'][$langcode][$path])) {
+    elseif ($action === 'source' && !isset($cache['no_source'][$langcode][$path])) {
       // Look for the value $path within the cached $map
       $source = FALSE;
       if (!isset($cache['map'][$langcode]) || !($source = array_search($path, $cache['map'][$langcode]))) {
@@ -165,7 +165,7 @@ function drupal_lookup_path($action, $path = '', $langcode = NULL) {
           ':langcode_undetermined' => LANGUAGE_NOT_SPECIFIED,
         );
         // See the queries above.
-        if ($langcode == LANGUAGE_NOT_SPECIFIED) {
+        if ($langcode === LANGUAGE_NOT_SPECIFIED) {
           unset($args[':langcode']);
           $result = db_query("SELECT source FROM {url_alias} WHERE alias = :alias AND langcode = :langcode_undetermined ORDER BY pid DESC", $args);
         }
@@ -234,7 +234,7 @@ function drupal_cache_system_paths() {
  */
 function drupal_get_path_alias($path = NULL, $langcode = NULL) {
   // If no path is specified, use the current page's path.
-  if ($path == NULL) {
+  if ($path === NULL) {
     $path = $_GET['q'];
   }
   $result = $path;
@@ -292,7 +292,7 @@ function drupal_is_front_page() {
   if (!isset($is_front_page)) {
     // As drupal_path_initialize updates $_GET['q'] with the 'site_frontpage' path,
     // we can check it against the 'site_frontpage' variable.
-    $is_front_page = ($_GET['q'] == variable_get('site_frontpage', 'user'));
+    $is_front_page = ($_GET['q'] === variable_get('site_frontpage', 'user'));
   }
 
   return $is_front_page;
@@ -554,7 +554,7 @@ function drupal_valid_path($path, $dynamic_allowed = FALSE) {
   global $menu_admin;
   // We indicate that a menu administrator is running the menu access check.
   $menu_admin = TRUE;
-  if ($path == '<front>' || url_is_external($path)) {
+  if ($path === '<front>' || url_is_external($path)) {
     $item = array('access' => TRUE);
   }
   elseif ($dynamic_allowed && preg_match('/\/\%/', $path)) {
diff --git a/core/includes/schema.inc b/core/includes/schema.inc
index f698189..f7484c9 100644
--- a/core/includes/schema.inc
+++ b/core/includes/schema.inc
@@ -93,7 +93,7 @@ function drupal_get_complete_schema($rebuild = FALSE) {
       drupal_alter('schema', $schema);
       // If the schema is empty, avoid saving it: some database engines require
       // the schema to perform queries, and this could lead to infinite loops.
-      if (!empty($schema) && (drupal_get_bootstrap_phase() == DRUPAL_BOOTSTRAP_FULL)) {
+      if (!empty($schema) && (drupal_get_bootstrap_phase() === DRUPAL_BOOTSTRAP_FULL)) {
         cache()->set('schema', $schema);
       }
       if ($rebuild) {
@@ -387,7 +387,7 @@ function drupal_write_record($table, &$record, $primary_keys = array()) {
 
   // Go through the schema to determine fields to write.
   foreach ($schema['fields'] as $field => $info) {
-    if ($info['type'] == 'serial') {
+    if ($info['type'] === 'serial') {
       // Skip serial types if we are updating.
       if (!empty($primary_keys)) {
         continue;
@@ -414,7 +414,7 @@ function drupal_write_record($table, &$record, $primary_keys = array()) {
     // always exist, as they cannot be unset. Therefore, if $field is a serial
     // type and the value is NULL, skip it.
     // @see http://php.net/manual/en/function.property-exists.php
-    if ($info['type'] == 'serial' && !isset($object->$field)) {
+    if ($info['type'] === 'serial' && !isset($object->$field)) {
       $default_fields[] = $field;
       continue;
     }
@@ -434,10 +434,10 @@ function drupal_write_record($table, &$record, $primary_keys = array()) {
     // into an integer column, but PostgreSQL PDO does not. Also type cast NULL
     // when the column does not allow this.
     if (isset($object->$field) || !empty($info['not null'])) {
-      if ($info['type'] == 'int' || $info['type'] == 'serial') {
+      if ($info['type'] === 'int' || $info['type'] === 'serial') {
         $fields[$field] = (int) $fields[$field];
       }
-      elseif ($info['type'] == 'float') {
+      elseif ($info['type'] === 'float') {
         $fields[$field] = (float) $fields[$field];
       }
       else {
@@ -496,7 +496,7 @@ function drupal_write_record($table, &$record, $primary_keys = array()) {
   // query failed. Note that we explicitly check for FALSE, because
   // a valid update query which doesn't change any values will return
   // zero (0) affected rows.
-  elseif ($query_return === FALSE && count($primary_keys) == 1) {
+  elseif ($query_return === FALSE && count($primary_keys) === 1) {
     $return = FALSE;
   }
 
diff --git a/core/includes/session.inc b/core/includes/session.inc
index b07997c..695fd4b 100644
--- a/core/includes/session.inc
+++ b/core/includes/session.inc
@@ -104,7 +104,7 @@ function _drupal_session_read($sid) {
 
   // We found the client's session record and they are an authenticated,
   // active user.
-  if ($user && $user->uid > 0 && $user->status == 1) {
+  if ($user && $user->uid > 0 && $user->status === 1) {
     // This is done to unserialize the data member of $user.
     $user->data = unserialize($user->data);
 
diff --git a/core/includes/tablesort.inc b/core/includes/tablesort.inc
index 3c70b96..1c6a0b5 100644
--- a/core/includes/tablesort.inc
+++ b/core/includes/tablesort.inc
@@ -136,12 +136,12 @@ function tablesort_header($cell, $header, $ts) {
   // Special formatting for the currently sorted column header.
   if (is_array($cell) && isset($cell['field'])) {
     $title = t('sort by @s', array('@s' => $cell['data']));
-    if ($cell['data'] == $ts['name']) {
+    if ($cell['data'] === $ts['name']) {
       // aria-sort is a WAI-ARIA property that indicates if items in a table
       // or grid are sorted in ascending or descending order. See
       // http://www.w3.org/TR/wai-aria/states_and_properties#aria-sort
-      $cell['aria-sort'] = ($ts['sort'] == 'asc') ? 'ascending' : 'descending';
-      $ts['sort'] = (($ts['sort'] == 'asc') ? 'desc' : 'asc');
+      $cell['aria-sort'] = ($ts['sort'] === 'asc') ? 'ascending' : 'descending';
+      $ts['sort'] = (($ts['sort'] === 'asc') ? 'desc' : 'asc');
       $cell['class'][] = 'active';
       $image = theme('tablesort_indicator', array('style' => $ts['sort']));
     }
@@ -174,7 +174,7 @@ function tablesort_header($cell, $header, $ts) {
  *   A properly formatted cell, ready for _theme_table_cell().
  */
 function tablesort_cell($cell, $header, $ts, $i) {
-  if (isset($header[$i]['data']) && $header[$i]['data'] == $ts['name'] && !empty($header[$i]['field'])) {
+  if (isset($header[$i]['data']) && $header[$i]['data'] === $ts['name'] && !empty($header[$i]['field'])) {
     if (is_array($cell)) {
       $cell['class'][] = 'active';
     }
@@ -210,12 +210,12 @@ function tablesort_get_order($headers) {
   $order = isset($_GET['order']) ? $_GET['order'] : '';
   foreach ($headers as $header) {
     if (is_array($header)) {
-      if (isset($header['data']) && $order == $header['data']) {
+      if (isset($header['data']) && $order === $header['data']) {
         $default = $header;
         break;
       }
 
-      if (empty($default) && isset($header['sort']) && ($header['sort'] == 'asc' || $header['sort'] == 'desc')) {
+      if (empty($default) && isset($header['sort']) && ($header['sort'] === 'asc' || $header['sort'] === 'desc')) {
         $default = $header;
       }
     }
@@ -242,7 +242,7 @@ function tablesort_get_order($headers) {
  */
 function tablesort_get_sort($headers) {
   if (isset($_GET['sort'])) {
-    return (strtolower($_GET['sort']) == 'desc') ? 'desc' : 'asc';
+    return (strtolower($_GET['sort']) === 'desc') ? 'desc' : 'asc';
   }
   // The user has not specified a sort. Use the default for the currently sorted
   // header if specified; otherwise use "asc".
@@ -250,7 +250,7 @@ function tablesort_get_sort($headers) {
     // Find out which header is currently being sorted.
     $ts = tablesort_get_order($headers);
     foreach ($headers as $header) {
-      if (is_array($header) && isset($header['data']) && $header['data'] == $ts['name'] && isset($header['sort'])) {
+      if (is_array($header) && isset($header['data']) && $header['data'] === $ts['name'] && isset($header['sort'])) {
         return $header['sort'];
       }
     }
diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index f5c25f9..6dc6a9b 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -61,7 +61,7 @@ function drupal_theme_access($theme) {
  */
 function _drupal_theme_access($theme) {
   $admin_theme = variable_get('admin_theme');
-  return !empty($theme->status) || ($admin_theme && $theme->name == $admin_theme);
+  return !empty($theme->status) || ($admin_theme && $theme->name === $admin_theme);
 }
 
 /**
@@ -365,7 +365,7 @@ class ThemeRegistry Extends CacheArray {
   function __construct($cid, $bin) {
     $this->cid = $cid;
     $this->bin = $bin;
-    $this->persistable = module_load_all(NULL) && $_SERVER['REQUEST_METHOD'] == 'GET';
+    $this->persistable = module_load_all(NULL) && $_SERVER['REQUEST_METHOD'] === 'GET';
 
     $data = array();
     if ($this->persistable && $cached = cache($this->bin)->get($this->cid)) {
@@ -532,7 +532,7 @@ function _theme_process_registry(&$cache, $name, $type, $theme, $path) {
       // If function and file are omitted, default to standard naming
       // conventions.
       if (!isset($info['template']) && !isset($info['function'])) {
-        $result[$hook]['function'] = ($type == 'module' ? 'theme_' : $name . '_') . $hook;
+        $result[$hook]['function'] = ($type === 'module' ? 'theme_' : $name . '_') . $hook;
       }
 
       if (isset($cache[$hook]['includes'])) {
@@ -571,7 +571,7 @@ function _theme_process_registry(&$cache, $name, $type, $theme, $path) {
         if (!isset($info[$phase_key]) || !is_array($info[$phase_key])) {
           $info[$phase_key] = array();
           $prefixes = array();
-          if ($type == 'module') {
+          if ($type === 'module') {
             // Default variable processor prefix.
             $prefixes[] = 'template';
             // Add all modules so they can intervene with their own variable
@@ -579,7 +579,7 @@ function _theme_process_registry(&$cache, $name, $type, $theme, $path) {
             // if they are not the owner of the current hook.
             $prefixes += module_list();
           }
-          elseif ($type == 'theme_engine' || $type == 'base_theme_engine') {
+          elseif ($type === 'theme_engine' || $type === 'base_theme_engine') {
             // Theme engines get an extra set that come before the normally
             // named variable processors.
             $prefixes[] = $name . '_engine';
@@ -622,7 +622,7 @@ function _theme_process_registry(&$cache, $name, $type, $theme, $path) {
   }
 
   // Let themes have variable processors even if they didn't register a template.
-  if ($type == 'theme' || $type == 'base_theme') {
+  if ($type === 'theme' || $type === 'base_theme') {
     foreach ($cache as $hook => $info) {
       // Check only if not registered by the theme or engine.
       if (empty($result[$hook])) {
@@ -1725,17 +1725,17 @@ function theme_links($variables) {
       $class[] = drupal_html_class($key);
       // Add odd/even, first, and last classes.
       $class[] = ($i % 2 ? 'odd' : 'even');
-      if ($i == 1) {
+      if ($i === 1) {
         $class[] = 'first';
       }
-      if ($i == $num_links) {
+      if ($i === $num_links) {
         $class[] = 'last';
       }
 
       // Handle links.
       if (isset($link['href'])) {
-        $is_current_path = ($link['href'] == $_GET['q'] || ($link['href'] == '<front>' && drupal_is_front_page()));
-        $is_current_language = (empty($link['language']) || $link['language']->langcode == $language_url->langcode);
+        $is_current_path = ($link['href'] === $_GET['q'] || ($link['href'] === '<front>' && drupal_is_front_page()));
+        $is_current_language = (empty($link['language']) || $link['language']->langcode === $language_url->langcode);
         if ($is_current_path && $is_current_language) {
           $class[] = 'active';
         }
@@ -1928,7 +1928,7 @@ function theme_table($variables) {
       // Check if we're dealing with a simple or complex column
       if (isset($colgroup['data'])) {
         foreach ($colgroup as $key => $value) {
-          if ($key == 'data') {
+          if ($key === 'data') {
             $cols = $value;
           }
           else {
@@ -1997,7 +1997,7 @@ function theme_table($variables) {
       // Check if we're dealing with a simple or complex row
       if (isset($row['data'])) {
         foreach ($row as $key => $value) {
-          if ($key == 'data') {
+          if ($key === 'data') {
             $cells = $value;
           }
           else {
@@ -2040,7 +2040,7 @@ function theme_table($variables) {
  *   - style: Set to either 'asc' or 'desc', this determines which icon to show.
  */
 function theme_tablesort_indicator($variables) {
-  if ($variables['style'] == "asc") {
+  if ($variables['style'] === "asc") {
     return theme('image', array('uri' => 'core/misc/arrow-asc.png', 'width' => 13, 'height' => 13, 'alt' => t('sort ascending'), 'title' => t('sort ascending')));
   }
   else {
@@ -2060,10 +2060,10 @@ function theme_mark($variables) {
   $type = $variables['type'];
   global $user;
   if ($user->uid) {
-    if ($type == MARK_NEW) {
+    if ($type === MARK_NEW) {
       return ' <span class="marker">' . t('new') . '</span>';
     }
-    elseif ($type == MARK_UPDATED) {
+    elseif ($type === MARK_UPDATED) {
       return ' <span class="marker">' . t('updated') . '</span>';
     }
   }
@@ -2133,10 +2133,10 @@ function theme_item_list($variables) {
       }
 
       $attributes['class'][] = ($i % 2 ? 'odd' : 'even');
-      if ($i == 1) {
+      if ($i === 1) {
         $attributes['class'][] = 'first';
       }
-      if ($i == $num_items) {
+      if ($i === $num_items) {
         $attributes['class'][] = 'last';
       }
 
@@ -2574,7 +2574,7 @@ function template_preprocess_page(&$variables) {
     $variables['layout'] = 'first';
   }
   if (!empty($variables['page']['sidebar_second'])) {
-    $variables['layout'] = ($variables['layout'] == 'first') ? 'both' : 'second';
+    $variables['layout'] = ($variables['layout'] === 'first') ? 'both' : 'second';
   }
 
   $variables['base_path']         = base_path();
@@ -2765,7 +2765,7 @@ function template_preprocess_maintenance_page(&$variables) {
     $variables['layout'] = 'first';
   }
   if (!empty($variables['sidebar_second'])) {
-    $variables['layout'] = ($variables['layout'] == 'first') ? 'both' : 'second';
+    $variables['layout'] = ($variables['layout'] === 'first') ? 'both' : 'second';
   }
 
   // Construct page title
@@ -2808,10 +2808,10 @@ function template_preprocess_maintenance_page(&$variables) {
   if (isset($variables['db_is_active']) && !$variables['db_is_active']) {
     $variables['classes_array'][] = 'db-offline';
   }
-  if ($variables['layout'] == 'both') {
+  if ($variables['layout'] === 'both') {
     $variables['classes_array'][] = 'two-sidebars';
   }
-  elseif ($variables['layout'] == 'none') {
+  elseif ($variables['layout'] === 'none') {
     $variables['classes_array'][] = 'no-sidebars';
   }
   else {
diff --git a/core/includes/theme.maintenance.inc b/core/includes/theme.maintenance.inc
index 3fd60c9..4e7f23e 100644
--- a/core/includes/theme.maintenance.inc
+++ b/core/includes/theme.maintenance.inc
@@ -31,7 +31,7 @@ function _drupal_maintenance_theme() {
   unicode_check();
 
   // Install and update pages are treated differently to prevent theming overrides.
-  if (defined('MAINTENANCE_MODE') && (MAINTENANCE_MODE == 'install' || MAINTENANCE_MODE == 'update')) {
+  if (defined('MAINTENANCE_MODE') && (MAINTENANCE_MODE === 'install' || MAINTENANCE_MODE === 'update')) {
     $custom_theme = (isset($conf['maintenance_theme']) ? $conf['maintenance_theme'] : 'seven');
   }
   else {
@@ -109,12 +109,12 @@ function theme_task_list($variables) {
   $items = $variables['items'];
   $active = $variables['active'];
 
-  $done = isset($items[$active]) || $active == NULL;
+  $done = isset($items[$active]) || $active === NULL;
   $output = '<h2 class="element-invisible">Installation tasks</h2>';
   $output .= '<ol class="task-list">';
 
   foreach ($items as $k => $item) {
-    if ($active == $k) {
+    if ($active === $k) {
       $class = 'active';
       $status = '(' . t('active') . ')';
       $done = FALSE;
diff --git a/core/includes/token.inc b/core/includes/token.inc
index 5c74519..2766758 100644
--- a/core/includes/token.inc
+++ b/core/includes/token.inc
@@ -201,7 +201,7 @@ function token_generate($type, array $tokens, array $data = array(), array $opti
  *     'created'     => '[node:created]',
  *   );
  *   $results = token_find_with_prefix($data, 'author');
- *   $results == array('name' => '[node:author:name]');
+ *   $results === array('name' => '[node:author:name]');
  * @endcode
  *
  * @param $tokens
@@ -220,7 +220,7 @@ function token_find_with_prefix(array $tokens, $prefix, $delimiter = ':') {
   $results = array();
   foreach ($tokens as $token => $raw) {
     $parts = explode($delimiter, $token, 2);
-    if (count($parts) == 2 && $parts[0] == $prefix) {
+    if (count($parts) === 2 && $parts[0] === $prefix) {
       $results[$parts[1]] = $raw;
     }
   }
diff --git a/core/includes/unicode.inc b/core/includes/unicode.inc
index 1450b43..f4d064b 100644
--- a/core/includes/unicode.inc
+++ b/core/includes/unicode.inc
@@ -395,7 +395,7 @@ function mime_header_encode($string) {
  */
 function mime_header_decode($header) {
   // First step: encoded chunks followed by other encoded chunks (need to collapse whitespace)
-  $header = preg_replace_callback('/=\?([^?]+)\?(Q|B)\?([^?]+|\?(?!=))\?=\s+(?==\?)/', '_mime_header_decode', $header);
+  $header = preg_replace_callback('/=\?([^?]+)\?(Q|B)\?([^?]+|\?(?!=))\?=\s+(?===\?)/', '_mime_header_decode', $header);
   // Second step: remaining chunks (do not collapse whitespace)
   return preg_replace_callback('/=\?([^?]+)\?(Q|B)\?([^?]+|\?(?!=))\?=/', '_mime_header_decode', $header);
 }
@@ -408,7 +408,7 @@ function _mime_header_decode($matches) {
   // 1: Character set name
   // 2: Escaping method (Q or B)
   // 3: Encoded data
-  $data = ($matches[2] == 'B') ? base64_decode($matches[3]) : str_replace('_', ' ', quoted_printable_decode($matches[3]));
+  $data = ($matches[2] === 'B') ? base64_decode($matches[3]) : str_replace('_', ' ', quoted_printable_decode($matches[3]));
   if (strtolower($matches[1]) != 'utf-8') {
     $data = drupal_convert_to_utf8($data, $matches[1]);
   }
@@ -440,7 +440,7 @@ function decode_entities($text) {
  */
 function drupal_strlen($text) {
   global $multibyte;
-  if ($multibyte == UNICODE_MULTIBYTE) {
+  if ($multibyte === UNICODE_MULTIBYTE) {
     return mb_strlen($text);
   }
   else {
@@ -456,7 +456,7 @@ function drupal_strlen($text) {
  */
 function drupal_strtoupper($text) {
   global $multibyte;
-  if ($multibyte == UNICODE_MULTIBYTE) {
+  if ($multibyte === UNICODE_MULTIBYTE) {
     return mb_strtoupper($text);
   }
   else {
@@ -475,7 +475,7 @@ function drupal_strtoupper($text) {
  */
 function drupal_strtolower($text) {
   global $multibyte;
-  if ($multibyte == UNICODE_MULTIBYTE) {
+  if ($multibyte === UNICODE_MULTIBYTE) {
     return mb_strtolower($text);
   }
   else {
@@ -517,7 +517,7 @@ function drupal_ucfirst($text) {
  */
 function drupal_substr($text, $start, $length = NULL) {
   global $multibyte;
-  if ($multibyte == UNICODE_MULTIBYTE) {
+  if ($multibyte === UNICODE_MULTIBYTE) {
     return $length === NULL ? mb_substr($text, $start) : mb_substr($text, $start, $length);
   }
   else {
@@ -595,7 +595,7 @@ function drupal_substr($text, $start, $length = NULL) {
       }
     }
     else {
-      // $length == 0, return an empty string.
+      // $length === 0, return an empty string.
       return '';
     }
 
diff --git a/core/includes/update.inc b/core/includes/update.inc
index 2715fdf..635efde 100644
--- a/core/includes/update.inc
+++ b/core/includes/update.inc
@@ -54,10 +54,10 @@ function update_check_incompatibility($name, $type = 'module') {
     $modules = system_rebuild_module_data();
   }
 
-  if ($type == 'module' && isset($modules[$name])) {
+  if ($type === 'module' && isset($modules[$name])) {
     $file = $modules[$name];
   }
-  elseif ($type == 'theme' && isset($themes[$name])) {
+  elseif ($type === 'theme' && isset($themes[$name])) {
     $file = $themes[$name];
   }
   if (!isset($file)
@@ -143,7 +143,7 @@ function update_prepare_stored_includes() {
   foreach (language_types_get_all() as $language_type) {
     $negotiation = variable_get("language_negotiation_$language_type", array());
     foreach ($negotiation as $method_id => &$method) {
-      if (isset($method['file']) && $method['file'] == 'includes/locale.inc') {
+      if (isset($method['file']) && $method['file'] === 'includes/locale.inc') {
         $method['file'] = 'core/modules/language/language.negotiation.inc';
       }
     }
@@ -374,7 +374,7 @@ function update_do_one($module, $number, $dependency_map, &$context) {
   }
 
   // Record the schema update if it was completed successfully.
-  if ($context['finished'] == 1 && empty($ret['#abort'])) {
+  if ($context['finished'] === 1 && empty($ret['#abort'])) {
     drupal_set_installed_schema_version($module, $number);
   }
 
@@ -412,7 +412,7 @@ function update_batch($start, $redirect = NULL, $url = NULL, $batch = array(), $
   // During the update, bring the site offline so that schema changes do not
   // affect visiting users.
   $_SESSION['maintenance_mode'] = variable_get('maintenance_mode', FALSE);
-  if ($_SESSION['maintenance_mode'] == FALSE) {
+  if ($_SESSION['maintenance_mode'] === FALSE) {
     variable_set('maintenance_mode', TRUE);
   }
 
@@ -483,7 +483,7 @@ function update_finished($success, $results, $operations) {
 
   // Now that the update is done, we can put the site back online if it was
   // previously in maintenance mode.
-  if (isset($_SESSION['maintenance_mode']) && $_SESSION['maintenance_mode'] == FALSE) {
+  if (isset($_SESSION['maintenance_mode']) && $_SESSION['maintenance_mode'] === FALSE) {
     variable_set('maintenance_mode', FALSE);
     unset($_SESSION['maintenance_mode']);
   }
@@ -514,14 +514,14 @@ function update_get_update_list() {
   $modules = drupal_get_installed_schema_version(NULL, FALSE, TRUE);
   foreach ($modules as $module => $schema_version) {
     // Skip uninstalled and incompatible modules.
-    if ($schema_version == SCHEMA_UNINSTALLED || update_check_incompatibility($module)) {
+    if ($schema_version === SCHEMA_UNINSTALLED || update_check_incompatibility($module)) {
       continue;
     }
     // Otherwise, get the list of updates defined by this module.
     $updates = drupal_get_schema_versions($module);
     if ($updates !== FALSE) {
       // module_invoke returns NULL for nonexisting hooks, so if no updates
-      // are removed, it will == 0.
+      // are removed, it will === 0.
       $last_removed = module_invoke($module, 'update_last_removed');
       if ($schema_version < $last_removed) {
         $ret[$module]['warning'] = '<em>' . $module . '</em> module can not be updated. Its schema version is ' . $schema_version . '. Updates up to and including ' . $last_removed . ' have been removed in this release. In order to update <em>' . $module . '</em> module, you will first <a href="http://drupal.org/upgrade">need to upgrade</a> to the last version in which these updates were available.';
diff --git a/core/includes/xmlrpc.inc b/core/includes/xmlrpc.inc
index b1c6f39..a750959 100644
--- a/core/includes/xmlrpc.inc
+++ b/core/includes/xmlrpc.inc
@@ -29,13 +29,13 @@ function xmlrpc_value($data, $type = FALSE) {
     $type = xmlrpc_value_calculate_type($xmlrpc_value);
   }
   $xmlrpc_value->type = $type;
-  if ($type == 'struct') {
+  if ($type === 'struct') {
     // Turn all the values in the array into new xmlrpc_values
     foreach ($xmlrpc_value->data as $key => $value) {
       $xmlrpc_value->data[$key] = xmlrpc_value($value);
     }
   }
-  if ($type == 'array') {
+  if ($type === 'array') {
     for ($i = 0, $j = count($xmlrpc_value->data); $i < $j; $i++) {
       $xmlrpc_value->data[$i] = xmlrpc_value($xmlrpc_value->data[$i]);
     }
@@ -188,7 +188,7 @@ function xmlrpc_message_parse($xmlrpc_message) {
   if (!isset($xmlrpc_message->messagetype)) {
     return FALSE;
   }
-  elseif ($xmlrpc_message->messagetype == 'fault') {
+  elseif ($xmlrpc_message->messagetype === 'fault') {
     $xmlrpc_message->fault_code = $xmlrpc_message->params[0]['faultCode'];
     $xmlrpc_message->fault_string = $xmlrpc_message->params[0]['faultString'];
   }
@@ -295,7 +295,7 @@ function xmlrpc_message_tag_close($parser, $tag) {
     case 'value':
       // If no type is indicated, the type is string
       // We take special care for empty values
-      if (trim($xmlrpc_message->current_tag_contents) != '' || (isset($xmlrpc_message->last_open) && ($xmlrpc_message->last_open == 'value'))) {
+      if (trim($xmlrpc_message->current_tag_contents) != '' || (isset($xmlrpc_message->last_open) && ($xmlrpc_message->last_open === 'value'))) {
         $value = (string) $xmlrpc_message->current_tag_contents;
         $value_flag = TRUE;
       }
@@ -335,7 +335,7 @@ function xmlrpc_message_tag_close($parser, $tag) {
   if ($value_flag) {
     if (count($xmlrpc_message->array_structs) > 0) {
       // Add value to struct or array
-      if ($xmlrpc_message->array_structs_types[count($xmlrpc_message->array_structs_types) - 1] == 'struct') {
+      if ($xmlrpc_message->array_structs_types[count($xmlrpc_message->array_structs_types) - 1] === 'struct') {
         // Add to struct
         $xmlrpc_message->array_structs[count($xmlrpc_message->array_structs) - 1][$xmlrpc_message->current_struct_name[count($xmlrpc_message->current_struct_name) - 1]] = $value;
       }
@@ -575,16 +575,16 @@ function _xmlrpc($url, $args, $options = array()) {
     return FALSE;
   }
   // Is the message a fault?
-  if ($message->messagetype == 'fault') {
+  if ($message->messagetype === 'fault') {
     xmlrpc_error($message->fault_code, $message->fault_string);
     return FALSE;
   }
   // We now know that the message is well-formed and a non-fault result.
-  if ($method == 'system.multicall') {
+  if ($method === 'system.multicall') {
     // Return per-method results or error objects.
     $return = array();
     foreach ($message->params[0] as $result) {
-      if (array_keys($result) == array(0)) {
+      if (array_keys($result) === array(0)) {
         $return[] = $result[0];
       }
       else {
diff --git a/core/includes/xmlrpcs.inc b/core/includes/xmlrpcs.inc
index 118f652..ba393d9 100644
--- a/core/includes/xmlrpcs.inc
+++ b/core/includes/xmlrpcs.inc
@@ -272,7 +272,7 @@ function xmlrpc_server_multicall($methodcalls) {
     }
     $method = $call['methodName'];
     $params = $call['params'];
-    if ($method == 'system.multicall') {
+    if ($method === 'system.multicall') {
       $result = xmlrpc_error(-32600, t('Recursive calls to system.multicall are forbidden.'));
     }
     elseif ($ok) {
