You are here

public function BrokenLink::merge in Broken Link 8.3

Same name and namespace in other branches
  1. 8 src/Entity/BrokenLink.php \Drupal\broken_link\Entity\BrokenLink::merge()
  2. 8.2 src/Entity/BrokenLink.php \Drupal\broken_link\Entity\BrokenLink::merge()

Method to create or update broken link and its hits.

Parameters

string $request_path: Broken link.

string $request_args: Query string parameters.

File

src/Entity/BrokenLink.php, line 128

Class

BrokenLink
Defines the broken link entity class.

Namespace

Drupal\broken_link\Entity

Code

public function merge($request_path, $request_args = NULL) {
  $broken_link = $this
    ->loadByLink($request_path);
  if ($broken_link === NULL) {
    $broken_link = $this
      ->create();
    $broken_link->link = $request_path;
    $broken_link->hits = 1;
    $broken_link->created = time();
  }
  else {
    $hits = (int) $broken_link
      ->get('hits')
      ->get(0)
      ->getValue()['value'];
    $broken_link->hits = ++$hits;
    $broken_link->updated = time();
  }
  $recorded_query_string = explode(', ', $broken_link
    ->get('query_string')
    ->getString());
  if (!empty($request_args) && !in_array($request_args, $recorded_query_string)) {
    $broken_link->query_string[] = $request_args;
  }
  $referer = \Drupal::request()->server
    ->get('HTTP_REFERER');
  $recorded_referers = explode(', ', $broken_link
    ->get('referers')
    ->getString());
  if (!empty($referer) && !in_array($referer, $recorded_referers)) {
    $broken_link->referers[] = $referer;
  }
  $broken_link
    ->save();
}