loadNodes($request, $lang, $category); $nodes_response = $this->buildNodes($nodes, $lang, $category); $this->response = [ 'code' => $this->statusCode, 'count' => count($nodes_response), 'nodes' => $nodes_response ]; return new JsonResponse($this->response, $this->statusCode); } /* * * Response List * */ private function buildNodes(array $nodes, $lang): array { $nodes_response = []; foreach ($nodes as $node) { /* don't show node if it hasn't translation */ if ( $node->hasTranslation($lang)) { $node = $node->getTranslation($lang); $published = $node->get('status')->value; /* USER - get user name */ $uid = $node->getOwnerId(); $user = \Drupal\user\Entity\User::load($uid); $name = $user->getDisplayName(); // AUTO_ADD_CODE_BELLOW_extractor $manager = ''; if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { $manager = $node->get('manager')->value; } $manager = ''; if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { $manager = $node->get('manager')->value; } $manager = ''; if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { $manager = $node->get('manager')->value; } $manager = ''; if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { $manager = $node->get('manager')->value; } $manager = ''; if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { $manager = $node->get('manager')->value; } $manager = ''; if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { $manager = $node->get('manager')->value; } $manager = ''; if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { $manager = $node->get('manager')->value; } $manager = ''; if ($node->hasField('manager') && !$node->get('manager')->isEmpty()) { $manager = $node->get('manager')->value; } $body = ''; if ($node->hasField('body') && !$node->get('body')->isEmpty()) { $body = $node->get('body')->value; } if ($published == 1) { $nodes_response[] = [ 'id' => intval($node->id()), 'title' => $node->getTitle(), 'lang' => $node->get('langcode')->value, 'alias' => $node->get('path')->alias, 'author' => $name, // AUTO_ADD_CODE_BELLOW_response 'manager' => $manager, 'manager' => $manager, 'manager' => $manager, 'manager' => $manager, 'manager' => $manager, 'manager' => $manager, 'manager' => $manager, 'manager' => $manager, 'created' => $node->get('created')->value ]; } } } return $nodes_response; } // // FIELD_EXPLODE // /* * * Multivalue fields * */ // private function getTerms(Node $node, string $field): array { // $terms = $node->get($field)->referencedEntities(); // $response = []; // foreach ($terms as $term) { // $name = $term->getName(); // $tid = $term->id(); // $response[] = array( // 'name' => $name, // 'id' => $tid // ); // } // return $response; // } // private function getFiles(Node $node, string $field): array { // $uris = []; // foreach ($node->get($field) as $value) { // $file = \Drupal::entityTypeManager() // ->getStorage('file') // ->load($value->getValue()['target_id']); // $url = \Drupal::service('file_url_generator') // ->generateAbsoluteString($file->getFileUri()); // $uris[] = array("url" => $url); // } // return $uris; // } // private function getImages(Node $node, string $field): array { // $uris = []; // foreach ($node->get($field)->getValue() as $value) { // $file = \Drupal::entityTypeManager() // ->getStorage('file') // ->load($value['target_id']); // $url = \Drupal::service('file_url_generator') // ->generateAbsoluteString($file->getFileUri()); // $uris[] = array("url" => $url, "alt" => $value['alt']); // } // return $uris; // } /* * * get response nodes * */ private function loadNodes($request, $lang, $category) { /* build the query for nodes */ $query = \Drupal::entityTypeManager() ->getStorage('node') ->getQuery() ->accessCheck(false); /* if category exist as URL parameter, create a query condition */ if ($category != 'all'){ $query->condition(self::FIELD_CATEGORY, $category); } /* if subcategory exist as URL query, create the query condition */ if ($request->query->get('subcategory')){ $or_group = $query->orConditionGroup(); $terms = explode(',', $request->query->get('subcategory')); foreach ($terms as $term) { $or_group->condition(self::FIELD_SUBCATEGORY.'.target_id', $term); } $query->condition($or_group); } /* add pager */ $query->range($request->get('start'), $request->get('length')); /* sort results by DESC or ASC */ if ($request->get('sort')) { $sort = $request->get('sort'); if(strcasecmp($sort, 'desc') == 0 || strcasecmp($sort, 'asc') == 0){ $sort = $request->get('sort'); } else{ $sort = 'DESC'; } } else{ $sort = 'DESC'; } /* sort results by field */ if ($request->get('sortby')) { $sortby = $request->get('sortby'); if(strcasecmp($sortby, 'title') == 0 || strcasecmp($sortby, 'created') == 0){ $sortby = $request->get('sortby'); } else{ $sortby = 'created'; } } else{ $sortby = 'title'; } /* execute query to get node ids */ $nodeIds = $query ->condition('type', self::NODE_TYPE) ->sort($sortby, $sort, $lang) ->execute(); /* get nodes from ids */ $nodes=\Drupal::entityTypeManager() ->getStorage('node') ->loadMultiple($nodeIds); /* Response List */ $nodeList=[]; foreach ($nodes as $node) { $tid = $node->id(); $nodeList[$tid] = $node->hasTranslation($lang) ? $node->getTranslation($lang) : $node; $node->currentTranslation = $lang; } return $nodeList; } // \Drupal::logger('Bundle publication')->notice(''.$some_var); }