123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- <?php
- use Drupal\node\Entity\Node;
- use Drupal\node\Entity;
- use Drupal\taxonomy\Entity\Term;
- function zone_data_run() {
- $boutiquesUpdated = array();
- $storeList = normalizeChars(file_get_contents('public://geojson/halte.dat'));
- $storesArr = explode(PHP_EOL, $storeList);
- $file = normalizeChars(file_get_contents('public://geojson/quartier6.json'));
- $matchedStores = 0;
- $matchedNodes = 0;
- $storesNotFound = array();
- $nodesNotFound = array();
- $createdZones = array();
- if (!empty($geojson = json_decode($file))) {
- $numFeatures = count($geojson->features);
- // usort($geojson->features, "featureCompare");
- $x = 0;
- foreach ($storesArr as $store) {
- $match = false;
- foreach ($geojson->features as $feature) {
- if (isset($feature->properties->name)) {
- $name = $feature->properties->name;
- if (trim(strtolower($store)) === trim(strtolower($feature->properties->name))) {
- $match = true;
- $matchedStores++;
- $nQuery = db_query('SELECT nid FROM node_field_data WHERE title LIKE :title AND type = :type AND langcode = :langcode', array(
- ':title' => $store,
- ':type' => 'boutique',
- ':langcode' => 'en',
- ))->fetchField();
- if ($nQuery > 0) {
- $featureData = json_encode($feature->geometry);
- $matchedNodes++;
- $term = \Drupal\taxonomy\Entity\Term::create([
- 'name' => 'AD' . $x,
- 'vid' => 'zone',
- ])->save();
- if ($term) {
- $tidQ = array_values(\Drupal::entityQuery('taxonomy_term')
- ->condition('vid', 'zone')
- ->condition('name', 'AD' . $x)
- ->execute());
- }
- if ($tidQ != null && is_array($tidQ) && count($tidQ) > 0) {
- $zoneNodeSaveAttempt = null;
- if (isset($feature->properties->level)) {
- $zoneNode = Node::create([
- 'type' => 'zone',
- 'body' => $name,
- 'title' => 'AD' . $x,
- 'field_sector_code' => 55,
- 'field_feature_data' => $featureData,
- 'field_zone_code' => $tidQ[0],
- 'field_levels' => $feature->properties->level,
- ]);
- }
- $zoneNodeSaveAttempt = $zoneNode->save();
- if ($zoneNodeSaveAttempt === 1 || $zoneNodeSaveAttempt === 2) {
- $createdZones[] = $name;
- $boutiqueNode = Drupal\node\Entity\Node::load($nQuery);
- $boutiqueNode->field_zone_code = $tidQ[0];
- $boutiqueNodeSaveAttempt = $boutiqueNode->save();
- if ($boutiqueNodeSaveAttempt === 1 || $boutiqueNodeSaveAttempt === 2) {
- $boutiquesUpdated[] = $name;
- }
- }
- } else {
- $errMsg = 'zone term was not created for: ' . $store;
- \Drupal::logger('zone_data')->error($errMsg);
- }
- } else {
- $nodesNotFound[] = $store;
- }
- }
- }
- }
- if ($match == false) {
- $storesNotFound[] = $store;
- $logStr = '';
- foreach ($storesNotFound as $storeName) {
- $logStr .= $storeName . ', ';
- }
- $logStr = substr($logStr, -2);
- $errMsgAll = 'The following stores did not have zones created for them: ' . $logStr;
- \Drupal::logger('zone_data')->error($errMsgAll);
- }
- $x++;
- }
- }
- $name = 'test';
- return $createdZones;
- // return $term;
- }
- function normalizeChars($s) {
- $replace = array(
- 'Ă'=>'A', 'Ą'=>'A', 'À'=>'A', 'Ã'=>'A', 'Á'=>'A', 'Æ'=>'A', 'Â'=>'A', 'Å'=>'A', 'Ä'=>'Ae',
- 'È'=>'E', 'Ę'=>'E', 'É'=>'E', 'Ë'=>'E', 'Ê'=>'E',
- 'İ'=>'I', 'Ï'=>'I', 'Î'=>'I', 'Í'=>'I', 'Ì'=>'I',
- 'Ù'=>'U', 'Û'=>'U', 'Ú'=>'U', 'Ü'=>'Ue',
- 'â'=>'a', 'ǎ'=>'a', 'ą'=>'a', 'á'=>'a', 'ă'=>'a', 'ã'=>'a', 'Ǎ'=>'a', 'а'=>'a', 'А'=>'a', 'å'=>'a', 'à'=>'a', 'א'=>'a', 'Ǻ'=>'a', 'Ā'=>'a', 'ǻ'=>'a', 'ā'=>'a', 'ä'=>'ae', 'æ'=>'ae', 'Ǽ'=>'ae', 'ǽ'=>'ae',
- 'ĉ'=>'c', 'Ĉ'=>'c', 'Ċ'=>'c', 'ć'=>'c', 'ç'=>'c', 'ц'=>'c', 'צ'=>'c', 'ċ'=>'c', 'Ц'=>'c', 'Č'=>'c', 'č'=>'c', 'Ч'=>'ch', 'ч'=>'ch',
- 'є'=>'e', 'ע'=>'e', 'е'=>'e', 'Е'=>'e', 'Ə'=>'e', 'ę'=>'e', 'ĕ'=>'e', 'ē'=>'e', 'Ē'=>'e', 'Ė'=>'e', 'ė'=>'e', 'ě'=>'e', 'Ě'=>'e', 'Є'=>'e', 'Ĕ'=>'e', 'ê'=>'e', 'ə'=>'e', 'è'=>'e', 'ë'=>'e', 'é'=>'e',
- 'î'=>'i', 'ï'=>'i', 'í'=>'i', 'ì'=>'i', 'į'=>'i', 'ĭ'=>'i', 'ı'=>'i', 'Ĭ'=>'i', 'И'=>'i', 'ĩ'=>'i', 'ǐ'=>'i', 'Ĩ'=>'i', 'Ǐ'=>'i', 'и'=>'i', 'Į'=>'i', 'י'=>'i', 'Ї'=>'i', 'Ī'=>'i', 'І'=>'i', 'ї'=>'i', 'і'=>'i', 'ī'=>'i', 'ij'=>'ij', 'IJ'=>'ij',
- 'о'=>'o', 'О'=>'o', 'ő'=>'o', 'õ'=>'o', 'ô'=>'o', 'Ő'=>'o', 'ŏ'=>'o', 'Ŏ'=>'o', 'Ō'=>'o', 'ō'=>'o', 'ø'=>'o', 'ǿ'=>'o', 'ǒ'=>'o', 'ò'=>'o', 'Ǿ'=>'o', 'Ǒ'=>'o', 'ơ'=>'o', 'ó'=>'o', 'Ơ'=>'o', 'œ'=>'oe', 'Œ'=>'oe', 'ö'=>'oe',
- 'ū'=>'u', 'у'=>'u', 'Ũ'=>'u', 'ũ'=>'u', 'Ư'=>'u', 'ư'=>'u', 'Ū'=>'u', 'Ǔ'=>'u', 'ų'=>'u', 'Ų'=>'u', 'ŭ'=>'u', 'Ŭ'=>'u', 'Ů'=>'u', 'ů'=>'u', 'ű'=>'u', 'Ű'=>'u', 'Ǖ'=>'u', 'ǔ'=>'u', 'Ǜ'=>'u', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'У'=>'u', 'ǚ'=>'u', 'ǜ'=>'u', 'Ǚ'=>'u', 'Ǘ'=>'u', 'ǖ'=>'u', 'ǘ'=>'u', 'ü'=>'ue',
- );
- return strtr($s, $replace);
- }
|