content_export_yaml-8.x-2.9/modules/manager_content_export_yaml/src/DBManager.php

modules/manager_content_export_yaml/src/DBManager.php
<?php
/**
 * Created by PhpStorm.
 * User: ringier
 * Date: 1/11/17
 * Time: 1:51 PM
 */

namespace Drupal\content_export_yaml;

use Drupal\content_export_yaml\ManageExport;

class DBManager extends ManageExport {

    protected $database;

    public function __construct()
    {
        $this->database = \Drupal::database();
    }

    public function is_exist($id, $entity , $bundle)
    {
        return $this->database->select('content_export_yaml', 'n')
             ->fields('n', array('number', 'entity_id', 'entity_type', 'bundle'))
            ->condition('bundle', $bundle, '=')
            ->condition('entity_type', $entity, '=')
            ->condition('entity_id', $id, '=')
            ->range(0, 1)
            ->execute()
            ->fetchAllAssoc('number');


    }


    public function delete_by_id($id)
    {
        return $this->database->delete('content_export_yaml')
            ->condition('entity_id', $id)
            ->execute();
    }
    public function delete_by_file($file)
    {
        return $this->database->delete('content_export_yaml')
          ->condition('file', $file)
          ->execute();
    }
    public function insert($fields)
    {
        $return_value = NULL;
        try {
            $return_value = $this->database->insert('content_export_yaml')
                ->fields($fields)
                ->execute();
        } catch (Exception $e) {
            \Drupal::messenger()->addMessage(t('db_insert failed. Message = %message, query= %query', array('%message' => $e->getMessage(), '%query' => $e->query_string)), 'error');
        }
        return $return_value;
    }

  function load_exported_all() {
    $config = \Drupal::config('content_export_yaml.contentexportsetting');
    $themes_str = $config->get('path_export_content_folder');
    $items = [];
    if ($themes_str) {
      $result = $this->listFolderFiles(DRUPAL_ROOT . $themes_str);
      foreach ($result as $key => $item_entity_type) {
        foreach ($item_entity_type as $key => $item_bundle) {
          foreach ($item_bundle as $key => $item) {
            $items[] = $item;
            if(is_array($item)&&!empty($item) && isset($item['entity'])){
              $entity_object = $item['entity'] ;
              if(is_object($entity_object)){
              $entity = $entity_object->getEntityTypeId();
              $dbstatus = $this->is_exist($entity_object->id(),$entity,$entity_object->bundle());
              if(empty($dbstatus)){
                $fields = array(
                  'entity_id'=> $entity_object->id() ,
                  'entity_type' => $entity,
                  'bundle' => $entity_object->bundle(),
                  'label' => $entity_object->label(),
                  'file' => $item['path']
                );
                $this->insert($fields);
              }
              }
            }
          }
        }
      }
    }
    return $items;
  }
  function importByFilePath($file) {
    $parsed = new Parser();
    $path_file = DRUPAL_ROOT . $file;
    $status = 0;
    if (file_exists($path_file)) {
      $item_yaml = file_get_contents($path_file, FILE_USE_INCLUDE_PATH);
      $item_object = $parsed->parse($item_yaml, SymfonyYaml::PARSE_OBJECT);
      if (is_object($item_object)) {
        $new_item = $item_object->createDuplicate();
        $status = $new_item->save();
        if ($status == 1) {
          $entity_type = $new_item->getEntityTypeId();
          $type = $new_item->bundle();
          $id = $new_item->id();
          $this->export($id, $entity_type, $type);
          $this->delete($file);
        }
      }
    }
    return $status;
  }

  function is_exist_node($id,$bundle,$entity){
    $bundle_label = \Drupal::entityTypeManager()->getDefinition($entity)->getKey('bundle');
    $id_label = \Drupal::entityTypeManager()->getDefinition($entity)->getKey('id');
    return \Drupal::entityTypeManager()
      ->getStorage($entity)
      ->loadByProperties([
        $id_label => $id,
        $bundle_label => $bundle
      ]);
  }


} 

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

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