basket_imex-10.x-dev/src/Plugin/IMEX/field/UrlField.php

src/Plugin/IMEX/field/UrlField.php
<?php

namespace Drupal\basket_imex\Plugin\IMEX\field;

use Drupal\basket_imex\Plugins\IMEXfield\BasketIMEXfieldInterface;

/**
 * UrlField IMEX type.
 *
 * @BasketIMEXfield(
 *   id = "url",
 *   type = {"basket_imex_old_redirect"},
 *   name = "Url",
 * )
 */
class UrlField implements BasketIMEXfieldInterface {

  /**
   * Getting data for export.
   *
   * @param object $entity
   *   Entity that has been updated.
   * @param string $fieldName
   *   Field that has been updated.
   */
  public function getValues($entity, $fieldName) {}

  /**
   * Data array formation.
   *
   * @param object $entity
   *   Entity that has been updated.
   * @param string $importValue
   *   Import value.
   */
  public function setValues($entity, $importValue = '') {}

  /**
   * Additional field processing after $entity update / creation.
   *
   * @param object $entity
   *   Entity that has been updated.
   * @param string $importValue
   *   Import value.
   */
  public function postSave($entity, $importValue = '') {
    if (!empty($entity->basketIMEXupdateField) && $entity->basketIMEXupdateField == 'basket_imex_old_redirect') {
      \Drupal::database()->delete('basket_imex_redirect')
        ->condition('nid', $entity->id())
        ->execute();
      if (!empty($importValue)) {
        $url = parse_url($importValue);

        if (!empty($url['scheme'])) {
          unset($url['scheme']);
        }
        if (!empty($url['host'])) {
          unset($url['host']);
        }

        \Drupal::database()->insert('basket_imex_redirect')
          ->fields([
            'old_url' => $this->unparseUrl($url),
            'nid' => $entity->id(),
          ])
          ->execute();
      }
    }
  }

  /**
   * {@inheritdoc}
   */
  public function unparseUrl($parsed_url) {
    $scheme = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : '';
    $host = isset($parsed_url['host']) ? $parsed_url['host'] : '';
    $port = isset($parsed_url['port']) ? ':' . $parsed_url['port'] : '';
    $user = isset($parsed_url['user']) ? $parsed_url['user'] : '';
    $pass = isset($parsed_url['pass']) ? ':' . $parsed_url['pass'] : '';
    $pass = ($user || $pass) ? "$pass@" : '';
    $path = isset($parsed_url['path']) ? $parsed_url['path'] : '';
    $query = isset($parsed_url['query']) ? '?' . $parsed_url['query'] : '';
    $fragment = isset($parsed_url['fragment']) ? '#' . $parsed_url['fragment'] : '';
    return "$scheme$user$pass$host$port$path$query$fragment";
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc