EnFrSchemaExtension.php 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908
  1. <?php
  2. namespace Drupal\enfrancais_graphql\Plugin\GraphQL\SchemaExtension;
  3. use Drupal\graphql\GraphQL\ResolverBuilder;
  4. use Drupal\graphql\GraphQL\ResolverRegistryInterface;
  5. use Drupal\graphql\GraphQL\Response\ResponseInterface;
  6. use Drupal\graphql\Plugin\GraphQL\SchemaExtension\SdlSchemaExtensionPluginBase;
  7. use Drupal\materio_graphql\GraphQL\Response\MaterioResponse;
  8. use Drupal\Core\Url;
  9. use GraphQL\Error\Error;
  10. /**
  11. * @SchemaExtension(
  12. * id = "enfr_extension",
  13. * name = "En Francais extension",
  14. * description = "En Francais extension.",
  15. * schema = "enfr"
  16. * )
  17. */
  18. class EnFrSchemaExtension extends SdlSchemaExtensionPluginBase {
  19. /**
  20. * {@inheritdoc}
  21. */
  22. public function registerResolvers(ResolverRegistryInterface $registry) {
  23. $builder = new ResolverBuilder();
  24. $this->addRouteResolver($registry, $builder);
  25. $this->addTexts($registry, $builder);
  26. $this->addTextsdepart($registry, $builder);
  27. $this->addTextref($registry, $builder);
  28. $this->addTextprod($registry, $builder);
  29. $this->addNote($registry, $builder);
  30. $this->addNoteProd($registry, $builder);
  31. $this->addCreation($registry, $builder);
  32. //
  33. $this->addFilefield($registry, $builder);
  34. //
  35. $this->addFile($registry, $builder);
  36. //
  37. $this->addDate($registry, $builder);
  38. //
  39. $this->addVideolink($registry, $builder);
  40. //
  41. $this->addImage($registry, $builder);
  42. //
  43. $this->addTaxoterm($registry, $builder);
  44. //
  45. $this->addAuteur($registry, $builder);
  46. //
  47. // $this->addNote($registry, $builder);
  48. //
  49. // $this->addSearchResult($registry, $builder);
  50. //
  51. // $this->addSample($registry, $builder);
  52. //
  53. // $this->addArticle($registry, $builder);
  54. //
  55. // $this->addThematique($registry, $builder);
  56. //
  57. // $this->addCompany($registry, $builder);
  58. //
  59. // $this->addProduct($registry, $builder);
  60. //
  61. // $this->addVariation($registry, $builder);
  62. //
  63. // $this->addPrice($registry, $builder);
  64. //
  65. // $this->addAddress($registry, $builder);
  66. //
  67. // $this->addLink($registry, $builder);
  68. //
  69. // $this->addShowroom($registry, $builder);
  70. //
  71. // $this->addThesaurus($registry, $builder);
  72. //
  73. }
  74. // ___ _
  75. // | _ \___ _ _| |_ ___
  76. // | / _ \ || | _/ -_)
  77. // |_|_\___/\_,_|\__\___|
  78. protected function addRouteResolver(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
  79. // Tell GraphQL how to resolve types of a common interface.
  80. $registry->addTypeResolver('NodeInterface', function ($value) {
  81. $path = explode('\\', get_class($value));
  82. $class = array_pop($path);
  83. if ($class === 'Node') {
  84. switch ($value->bundle()) {
  85. case 'texte': return 'Textref';
  86. case 'texte_prod': return 'Textprod';
  87. }
  88. }
  89. throw new Error('Could not resolve content type.');
  90. });
  91. $registry->addFieldResolver('Query', 'route',
  92. $builder->compose(
  93. $builder->produce('route_load')
  94. ->map('path', $builder->fromArgument('path')),
  95. $builder->produce('route_entity')
  96. ->map('url', $builder->fromParent())
  97. ));
  98. }
  99. // _____ _
  100. // |_ _|____ _| |_ ___
  101. // | |/ -_) \ / _(_-<
  102. // |_|\___/_\_\\__/__/
  103. protected function addTexts(ResolverRegistryInterface $registry, ResolverBuilder $builder){
  104. // Tell GraphQL how to resolve types of a common interface.
  105. $registry->addTypeResolver('TextInterface', function ($value) {
  106. switch ($value->bundle()) {
  107. case 'texte': return 'Textref';
  108. case 'texte_prod': return 'Textprod';
  109. }
  110. throw new Error('Could not resolve content type.');
  111. });
  112. $registry->addFieldResolver('Query', 'texts',
  113. $builder->compose(
  114. $builder->callback(function($parent, $arg){
  115. $entity_storage = \Drupal::entityTypeManager()->getStorage('node');
  116. $query = $entity_storage->getQuery()
  117. ->condition('type', ['texte', 'texte_prod'], 'IN')
  118. ->accessCheck(TRUE);
  119. $results = $query->execute();
  120. return $results;
  121. }),
  122. $builder->produce('entity_load_multiple')
  123. ->map('type', $builder->fromValue('node'))
  124. ->map('ids', $builder->fromParent())
  125. )
  126. );
  127. $registry->addFieldResolver('Query', 'texte',
  128. $builder->produce('entity_load')
  129. ->map('type', $builder->fromValue('node'))
  130. ->map('id', $builder->fromArgument('id'))
  131. );
  132. }
  133. // _____ _ ___ _
  134. // |_ _|____ _| |_ ___ | \ ___ _ __ __ _ _ _| |_
  135. // | |/ -_) \ / _(_-< | |) / -_) '_ \/ _` | '_| _|
  136. // |_|\___/_\_\\__/__/ |___/\___| .__/\__,_|_| \__|
  137. // |_|
  138. protected function addTextsdepart(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
  139. $registry->addFieldResolver('Query', 'textsdepart',
  140. $builder->compose(
  141. $builder->callback(function($parent, $arg){
  142. $entity_storage = \Drupal::entityTypeManager()->getStorage('node');
  143. $query = $entity_storage->getQuery()
  144. ->condition('type', 'texte')
  145. ->condition('field_famille', 9)
  146. ->accessCheck(TRUE);
  147. $results = $query->execute();
  148. return $results;
  149. }),
  150. $builder->produce('entity_load_multiple')
  151. ->map('type', $builder->fromValue('node'))
  152. ->map('ids', $builder->fromParent())
  153. )
  154. );
  155. }
  156. // _____ _ __
  157. // |_ _|____ _| |_ _ _ ___ / _|
  158. // | |/ -_) \ / _| '_/ -_) _|
  159. // |_|\___/_\_\\__|_| \___|_|
  160. protected function addTextref(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
  161. // $language = \Drupal::languageManager()->getCurrentLanguage()->getId();
  162. $registry->addFieldResolver('Query', 'textref',
  163. $builder->produce('entity_load')
  164. ->map('type', $builder->fromValue('node'))
  165. ->map('bundles', $builder->fromValue(['texte']))
  166. ->map('id', $builder->fromArgument('id'))
  167. );
  168. $registry->addFieldResolver('Query', 'textsref',
  169. $builder->produce('entity_load_multiple')
  170. ->map('type', $builder->fromValue('node'))
  171. ->map('ids', $builder->fromArgument('ids'))
  172. );
  173. $registry->addFieldResolver('Textref', 'id',
  174. $builder->produce('entity_id')
  175. ->map('entity', $builder->fromParent())
  176. );
  177. $registry->addFieldResolver('Textref', 'uuid',
  178. $builder->produce('entity_uuid')
  179. ->map('entity', $builder->fromParent())
  180. );
  181. $registry->addFieldResolver('Textref', 'path',
  182. $builder->compose(
  183. $builder->produce('entity_url')
  184. ->map('entity', $builder->fromParent()),
  185. $builder->produce('url_path')
  186. ->map('url', $builder->fromParent())
  187. )
  188. );
  189. $registry->addFieldResolver('Textref', 'title',
  190. $builder->compose(
  191. $builder->produce('entity_label')
  192. ->map('entity', $builder->fromParent())
  193. ));
  194. $registry->addFieldResolver('Textref', 'bundle',
  195. $builder->compose(
  196. $builder->produce('entity_bundle')
  197. ->map('entity', $builder->fromParent())
  198. ));
  199. $registry->addFieldResolver('Textref', 'texte',
  200. $builder->produce('property_path')
  201. ->map('type', $builder->fromValue('entity:node'))
  202. ->map('value', $builder->fromParent())
  203. ->map('path', $builder->fromValue('body.value'))
  204. );
  205. $registry->addFieldResolver('Textref', 'author',
  206. $builder->compose(
  207. $builder->produce('entity_owner')
  208. ->map('entity', $builder->fromParent()),
  209. $builder->produce('entity_label')
  210. ->map('entity', $builder->fromParent())
  211. ));
  212. $registry->addFieldResolver('Textref', 'text_en_rebond',
  213. $builder->compose(
  214. $builder->produce('entity_reference')
  215. ->map('entity', $builder->fromParent())
  216. ->map('field', $builder->fromValue('field_texte_en_rebond'))
  217. ));
  218. $registry->addFieldResolver('Textref', 'text_produits',
  219. $builder->compose(
  220. $builder->produce('entity_reference')
  221. ->map('entity', $builder->fromParent())
  222. ->map('field', $builder->fromValue('field_textes_produits'))
  223. ));
  224. $registry->addFieldResolver('Textref', 'images',
  225. $builder->produce('entity_reference')
  226. ->map('entity', $builder->fromParent())
  227. ->map('field', $builder->fromValue('field_images'))
  228. );
  229. $registry->addFieldResolver('Textref', 'videos',
  230. $builder->produce('property_path')
  231. ->map('type', $builder->fromValue('entity:node'))
  232. ->map('value', $builder->fromParent())
  233. ->map('path', $builder->fromValue('field_video'))
  234. );
  235. $registry->addFieldResolver('Textref', 'titre_ref',
  236. $builder->produce('property_path')
  237. ->map('type', $builder->fromValue('entity:node'))
  238. ->map('value', $builder->fromParent())
  239. ->map('path', $builder->fromValue('field_titre'))
  240. );
  241. $registry->addFieldResolver('Textref', 'tags',
  242. $builder->produce('entity_reference')
  243. ->map('entity', $builder->fromParent())
  244. ->map('field', $builder->fromValue('field_tag'))
  245. );
  246. $registry->addFieldResolver('Textref', 'familles',
  247. $builder->produce('entity_reference')
  248. ->map('entity', $builder->fromParent())
  249. ->map('field', $builder->fromValue('field_famille'))
  250. );
  251. $registry->addFieldResolver('Textref', 'degres_detrangement',
  252. $builder->produce('property_path')
  253. ->map('type', $builder->fromValue('entity:node'))
  254. ->map('value', $builder->fromParent())
  255. ->map('path', $builder->fromValue('degres_detrangement'))
  256. );
  257. $registry->addFieldResolver('Textref', 'field_titre',
  258. $builder->produce('property_path')
  259. ->map('type', $builder->fromValue('entity:node'))
  260. ->map('value', $builder->fromParent())
  261. ->map('path', $builder->fromValue('field_titre'))
  262. );
  263. $registry->addFieldResolver('Textref', 'auteurs',
  264. $builder->produce('entity_reference')
  265. ->map('entity', $builder->fromParent())
  266. ->map('field', $builder->fromValue('field_auteurs'))
  267. );
  268. $registry->addFieldResolver('Textref', 'edition',
  269. $builder->produce('entity_reference')
  270. ->map('entity', $builder->fromParent())
  271. ->map('field', $builder->fromValue('field_edition'))
  272. );
  273. $registry->addFieldResolver('Textref', 'fichiers',
  274. $builder->produce('entity_reference')
  275. ->map('entity', $builder->fromParent())
  276. ->map('field', $builder->fromValue('field_fichier'))
  277. );
  278. $registry->addFieldResolver('Textref', 'notes',
  279. $builder->produce('entity_reference_revisions')
  280. ->map('entity', $builder->fromParent())
  281. ->map('field', $builder->fromValue('field_notes'))
  282. );
  283. }
  284. // _____ _ ___ _
  285. // |_ _|____ _| |_| _ \_ _ ___ __| |
  286. // | |/ -_) \ / _| _/ '_/ _ \/ _` |
  287. // |_|\___/_\_\\__|_| |_| \___/\__,_|
  288. protected function addTextprod(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
  289. // $language = \Drupal::languageManager()->getCurrentLanguage()->getId();
  290. $registry->addFieldResolver('Query', 'textprod',
  291. $builder->produce('entity_load')
  292. ->map('type', $builder->fromValue('node'))
  293. ->map('bundles', $builder->fromValue(['texte_prod']))
  294. ->map('id', $builder->fromArgument('id'))
  295. );
  296. $registry->addFieldResolver('Query', 'textsprod',
  297. $builder->produce('entity_load_multiple')
  298. ->map('type', $builder->fromValue('node'))
  299. ->map('ids', $builder->fromArgument('ids'))
  300. );
  301. $registry->addFieldResolver('Textprod', 'id',
  302. $builder->produce('entity_id')
  303. ->map('entity', $builder->fromParent())
  304. );
  305. $registry->addFieldResolver('Textprod', 'uuid',
  306. $builder->produce('entity_uuid')
  307. ->map('entity', $builder->fromParent())
  308. );
  309. $registry->addFieldResolver('Textprod', 'path',
  310. $builder->compose(
  311. $builder->produce('entity_url')
  312. ->map('entity', $builder->fromParent()),
  313. $builder->produce('url_path')
  314. ->map('url', $builder->fromParent())
  315. )
  316. );
  317. $registry->addFieldResolver('Textprod', 'title',
  318. $builder->compose(
  319. $builder->produce('entity_label')
  320. ->map('entity', $builder->fromParent())
  321. ));
  322. $registry->addFieldResolver('Textprod', 'bundle',
  323. $builder->compose(
  324. $builder->produce('entity_bundle')
  325. ->map('entity', $builder->fromParent())
  326. ));
  327. $registry->addFieldResolver('Textprod', 'texte',
  328. $builder->produce('property_path')
  329. ->map('type', $builder->fromValue('entity:node'))
  330. ->map('value', $builder->fromParent())
  331. ->map('path', $builder->fromValue('body.value'))
  332. );
  333. $registry->addFieldResolver('Textprod', 'author',
  334. $builder->compose(
  335. $builder->produce('entity_owner')
  336. ->map('entity', $builder->fromParent()),
  337. $builder->produce('entity_label')
  338. ->map('entity', $builder->fromParent())
  339. ));
  340. $registry->addFieldResolver('Textprod', 'text_de_depart',
  341. $builder->compose(
  342. $builder->produce('entity_reference')
  343. ->map('entity', $builder->fromParent())
  344. ->map('field', $builder->fromValue('field_texte_de_depart'))
  345. ));
  346. $registry->addFieldResolver('Textprod', 'images',
  347. $builder->produce('entity_reference')
  348. ->map('entity', $builder->fromParent())
  349. ->map('field', $builder->fromValue('field_images'))
  350. );
  351. $registry->addFieldResolver('Textprod', 'videos',
  352. $builder->produce('property_path')
  353. ->map('type', $builder->fromValue('entity:node'))
  354. ->map('value', $builder->fromParent())
  355. ->map('path', $builder->fromValue('field_video'))
  356. );
  357. $registry->addFieldResolver('Textprod', 'tags',
  358. $builder->produce('entity_reference')
  359. ->map('entity', $builder->fromParent())
  360. ->map('field', $builder->fromValue('field_tag_prod'))
  361. );
  362. $registry->addFieldResolver('Textprod', 'familles',
  363. $builder->produce('entity_reference')
  364. ->map('entity', $builder->fromParent())
  365. ->map('field', $builder->fromValue('field_famille'))
  366. );
  367. $registry->addFieldResolver('Textprod', 'field_titre',
  368. $builder->produce('property_path')
  369. ->map('type', $builder->fromValue('entity:node'))
  370. ->map('value', $builder->fromParent())
  371. ->map('path', $builder->fromValue('field_titre'))
  372. );
  373. $registry->addFieldResolver('Textprod', 'auteurs',
  374. $builder->produce('entity_reference')
  375. ->map('entity', $builder->fromParent())
  376. ->map('field', $builder->fromValue('field_auteurs'))
  377. );
  378. $registry->addFieldResolver('Textprod', 'edition',
  379. $builder->produce('entity_reference')
  380. ->map('entity', $builder->fromParent())
  381. ->map('field', $builder->fromValue('field_edition'))
  382. );
  383. $registry->addFieldResolver('Textprod', 'notes',
  384. $builder->produce('entity_reference_revisions')
  385. ->map('entity', $builder->fromParent())
  386. ->map('field', $builder->fromValue('field_notes_prod'))
  387. );
  388. }
  389. // _ _ _
  390. // | \| |___| |_ ___
  391. // | .` / _ \ _/ -_)
  392. // |_|\_\___/\__\___|
  393. protected function addNote(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
  394. $registry->addFieldResolver('Noteref', 'note',
  395. $builder->produce('property_path')
  396. ->map('type', $builder->fromValue('entity:paragraph'))
  397. ->map('value', $builder->fromParent())
  398. ->map('path', $builder->fromValue('field_note.value'))
  399. );
  400. $registry->addFieldResolver('Noteref', 'numero',
  401. $builder->produce('property_path')
  402. ->map('type', $builder->fromValue('entity:paragraph'))
  403. ->map('value', $builder->fromParent())
  404. ->map('path', $builder->fromValue('field_numero.value'))
  405. );
  406. }
  407. protected function addNoteProd(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
  408. $registry->addFieldResolver('Noteprod', 'note',
  409. $builder->produce('property_path')
  410. ->map('type', $builder->fromValue('entity:paragraph'))
  411. ->map('value', $builder->fromParent())
  412. ->map('path', $builder->fromValue('field_note.value'))
  413. );
  414. $registry->addFieldResolver('Noteprod', 'numero',
  415. $builder->produce('property_path')
  416. ->map('type', $builder->fromValue('entity:paragraph'))
  417. ->map('value', $builder->fromParent())
  418. ->map('path', $builder->fromValue('field_numero.value'))
  419. );
  420. $registry->addFieldResolver('Noteprod', 'liens',
  421. $builder->produce('entity_reference')
  422. ->map('entity', $builder->fromParent())
  423. ->map('field', $builder->fromValue('field_text_lien'))
  424. );
  425. }
  426. // ___ _ _
  427. // / __|_ _ ___ __ _| |_(_)___ _ _
  428. // | (__| '_/ -_) _` | _| / _ \ ' \
  429. // \___|_| \___\__,_|\__|_\___/_||_|
  430. protected function addCreation(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
  431. $registry->addFieldResolver('Query', 'allcreations',
  432. $builder->compose(
  433. $builder->callback(function($parent, $arg){
  434. $entity_storage = \Drupal::entityTypeManager()->getStorage('node');
  435. $query = $entity_storage->getQuery()
  436. ->condition('type', ['creation'], 'IN')
  437. ->accessCheck(TRUE);
  438. $results = $query->execute();
  439. return $results;
  440. }),
  441. $builder->produce('entity_load_multiple')
  442. ->map('type', $builder->fromValue('node'))
  443. ->map('ids', $builder->fromParent())
  444. )
  445. );
  446. $registry->addFieldResolver('Query', 'creations',
  447. $builder->produce('entity_load_multiple')
  448. ->map('type', $builder->fromValue('node'))
  449. ->map('ids', $builder->fromArgument('ids'))
  450. );
  451. $registry->addFieldResolver('Query', 'creation',
  452. $builder->produce('entity_load')
  453. ->map('type', $builder->fromValue('node'))
  454. ->map('bundles', $builder->fromValue(['texte_prod']))
  455. ->map('id', $builder->fromArgument('id'))
  456. );
  457. $registry->addFieldResolver('Creation', 'id',
  458. $builder->produce('entity_id')
  459. ->map('entity', $builder->fromParent())
  460. );
  461. $registry->addFieldResolver('Creation', 'uuid',
  462. $builder->produce('entity_uuid')
  463. ->map('entity', $builder->fromParent())
  464. );
  465. $registry->addFieldResolver('Creation', 'path',
  466. $builder->compose(
  467. $builder->produce('entity_url')
  468. ->map('entity', $builder->fromParent()),
  469. $builder->produce('url_path')
  470. ->map('url', $builder->fromParent())
  471. )
  472. );
  473. $registry->addFieldResolver('Creation', 'title',
  474. $builder->compose(
  475. $builder->produce('entity_label')
  476. ->map('entity', $builder->fromParent())
  477. ));
  478. $registry->addFieldResolver('Creation', 'bundle',
  479. $builder->compose(
  480. $builder->produce('entity_bundle')
  481. ->map('entity', $builder->fromParent())
  482. ));
  483. $registry->addFieldResolver('Creation', 'description',
  484. $builder->produce('property_path')
  485. ->map('type', $builder->fromValue('entity:node'))
  486. ->map('value', $builder->fromParent())
  487. ->map('path', $builder->fromValue('body.value'))
  488. );
  489. $registry->addFieldResolver('Creation', 'author',
  490. $builder->compose(
  491. $builder->produce('entity_owner')
  492. ->map('entity', $builder->fromParent()),
  493. $builder->produce('entity_label')
  494. ->map('entity', $builder->fromParent())
  495. ));
  496. $registry->addFieldResolver('Creation', 'auteurs',
  497. $builder->produce('entity_reference')
  498. ->map('entity', $builder->fromParent())
  499. ->map('field', $builder->fromValue('field_auteurs'))
  500. );
  501. $registry->addFieldResolver('Creation', 'oeuvre',
  502. $builder->produce('property_path')
  503. ->map('type', $builder->fromValue('entity:node'))
  504. ->map('value', $builder->fromParent())
  505. ->map('path', $builder->fromValue('field_oeuvre'))
  506. );
  507. }
  508. // ___ _
  509. // | \ __ _| |_ ___
  510. // | |) / _` | _/ -_)
  511. // |___/\__,_|\__\___|
  512. protected function addDate(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
  513. $registry->addFieldResolver('Date', 'start',
  514. $builder->callback(function ($parent, $args) {
  515. return isset($parent[0]) ? $parent[0]['value'] : null;
  516. })
  517. );
  518. $registry->addFieldResolver('Date', 'end',
  519. $builder->callback(function ($parent, $args) {
  520. return isset($parent[0]) ? $parent[0]['end_value'] : null;
  521. })
  522. );
  523. }
  524. // ___ _ _ __ _ _ _
  525. // | __(_) |___ / _(_)___| |__| |
  526. // | _|| | / -_) _| / -_) / _` |
  527. // |_| |_|_\___|_| |_\___|_\__,_|
  528. protected function addFilefield(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
  529. $registry->addFieldResolver('Filefield', 'description',
  530. $builder->callback(function ($parent, $args) {
  531. return $parent['description'];
  532. })
  533. );
  534. $registry->addFieldResolver('Filefield', 'file',
  535. $builder->callback(function ($parent, $args) {
  536. return \Drupal\file\Entity\File::load($parent['target_id']);
  537. })
  538. );
  539. }
  540. // ___ _ _
  541. // | __(_) |___
  542. // | _|| | / -_)
  543. // |_| |_|_\___|
  544. protected function addFile(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
  545. $registry->addFieldResolver('File', 'url',
  546. $builder->callback(function ($parent, $args) {
  547. return $parent->createFileUrl();
  548. })
  549. );
  550. $registry->addFieldResolver('File', 'filesize',
  551. $builder->callback(function ($parent, $args) {
  552. return $parent->getSize();
  553. })
  554. );
  555. $registry->addFieldResolver('File', 'filemime',
  556. $builder->callback(function ($parent, $args) {
  557. return $parent->getMimeType();
  558. })
  559. );
  560. $registry->addFieldResolver('File', 'filename',
  561. $builder->callback(function ($parent, $args) {
  562. return $parent->getFilename();
  563. })
  564. );
  565. $registry->addFieldResolver('File', 'fid',
  566. $builder->callback(function ($parent, $args) {
  567. return $parent->id();
  568. })
  569. );
  570. $registry->addFieldResolver('File', 'uuid',
  571. $builder->callback(function ($parent, $args) {
  572. return $parent->uuid();
  573. })
  574. );
  575. }
  576. // ___
  577. // |_ _|_ __ __ _ __ _ ___
  578. // | || ' \/ _` / _` / -_)
  579. // |___|_|_|_\__,_\__, \___|
  580. // |___/
  581. protected function addImage(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
  582. $registry->addFieldResolver('Image', 'id',
  583. $builder->produce('entity_id')
  584. ->map('entity', $builder->fromParent())
  585. );
  586. $registry->addFieldResolver('Image', 'url',
  587. $builder->produce('image_url')
  588. ->map('entity', $builder->fromParent())
  589. );
  590. $registry->addFieldResolver('Image', 'alt',
  591. $builder->produce('property_path')
  592. ->map('type', $builder->fromValue('entity:node'))
  593. ->map('value', $builder->fromParent())
  594. ->map('path', $builder->fromValue('field_image.alt'))
  595. );
  596. $registry->addFieldResolver('Image', 'style_minicard',
  597. $builder->produce('image_derivative')
  598. ->map('entity', $builder->fromParent())
  599. ->map('style', $builder->fromValue('card_medium_half'))
  600. );
  601. $registry->addFieldResolver('Image', 'style_minicard_url',
  602. $builder->compose(
  603. $builder->produce('image_derivative')
  604. ->map('entity', $builder->fromParent())
  605. ->map('style', $builder->fromValue('card_medium_half')),
  606. $builder->callback(function($parent, $args){
  607. return $parent['url'];
  608. })
  609. ));
  610. $registry->addFieldResolver('Image', 'style_linkedmaterialcard',
  611. $builder->produce('image_derivative')
  612. ->map('entity', $builder->fromParent())
  613. ->map('style', $builder->fromValue('linkedmaterial_card'))
  614. );
  615. $registry->addFieldResolver('Image', 'style_linkedmaterialcard_url',
  616. $builder->compose(
  617. $builder->produce('image_derivative')
  618. ->map('entity', $builder->fromParent())
  619. ->map('style', $builder->fromValue('linkedmaterial_card')),
  620. $builder->callback(function($parent, $args){
  621. return $parent['url'];
  622. })
  623. ));
  624. $registry->addFieldResolver('Image', 'style_cardmedium',
  625. $builder->produce('image_derivative')
  626. ->map('entity', $builder->fromParent())
  627. ->map('style', $builder->fromValue('card_medium'))
  628. );
  629. $registry->addFieldResolver('Image', 'style_cardmedium_url',
  630. $builder->compose(
  631. $builder->produce('image_derivative')
  632. ->map('entity', $builder->fromParent())
  633. ->map('style', $builder->fromValue('card_medium')),
  634. $builder->callback(function($parent, $args){
  635. return $parent['url'];
  636. })
  637. ));
  638. $registry->addFieldResolver('Image', 'style_cardfull',
  639. $builder->produce('image_derivative')
  640. ->map('entity', $builder->fromParent())
  641. ->map('style', $builder->fromValue('card_full'))
  642. );
  643. $registry->addFieldResolver('Image', 'style_cardfull_url',
  644. $builder->compose(
  645. $builder->produce('image_derivative')
  646. ->map('entity', $builder->fromParent())
  647. ->map('style', $builder->fromValue('card_full')),
  648. $builder->callback(function($parent, $args){
  649. return $parent['url'];
  650. })
  651. ));
  652. $registry->addFieldResolver('Image', 'style_articlecardmedium',
  653. $builder->produce('image_derivative')
  654. ->map('entity', $builder->fromParent())
  655. ->map('style', $builder->fromValue('article_card_medium'))
  656. );
  657. $registry->addFieldResolver('Image', 'style_articlecardmedium_url',
  658. $builder->compose(
  659. $builder->produce('image_derivative')
  660. ->map('entity', $builder->fromParent())
  661. ->map('style', $builder->fromValue('article_card_medium')),
  662. $builder->callback(function($parent, $args){
  663. return $parent['url'];
  664. })
  665. ));
  666. $registry->addFieldResolver('Image', 'style_hd',
  667. $builder->produce('image_derivative')
  668. ->map('entity', $builder->fromParent())
  669. ->map('style', $builder->fromValue('hd'))
  670. );
  671. $registry->addFieldResolver('Image', 'style_hd_url',
  672. $builder->compose(
  673. $builder->produce('image_derivative')
  674. ->map('entity', $builder->fromParent())
  675. ->map('style', $builder->fromValue('hd')),
  676. $builder->callback(function($parent, $args){
  677. return $parent['url'];
  678. })
  679. ));
  680. }
  681. // __ ___ _ _ _ _
  682. // \ \ / (_)__| |___ ___| | (_)_ _ | |__
  683. // \ V /| / _` / -_) _ \ |__| | ' \| / /
  684. // \_/ |_\__,_\___\___/____|_|_||_|_\_\
  685. protected function addVideolink(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
  686. $registry->addFieldResolver('VideoLink', 'url',
  687. $builder->produce('property_path')
  688. ->map('type', $builder->fromValue('field_item:video_embed_field'))
  689. ->map('value', $builder->fromParent())
  690. ->map('path', $builder->fromValue('value'))
  691. );
  692. }
  693. // _____
  694. // |_ _|_ _ __ _
  695. // | |/ _` / _` |
  696. // |_|\__,_\__, |
  697. // |___/
  698. protected function addTaxoterm(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
  699. $registry->addFieldResolver('Query', 'tag',
  700. $builder->produce('entity_load')
  701. ->map('type', $builder->fromValue('taxonomy_term'))
  702. ->map('bundles', $builder->fromValue(['tag']))
  703. ->map('id', $builder->fromArgument('id'))
  704. );
  705. $registry->addFieldResolver('Query', 'famille',
  706. $builder->produce('entity_load')
  707. ->map('type', $builder->fromValue('taxonomy_term'))
  708. ->map('bundles', $builder->fromValue(['famille']))
  709. ->map('id', $builder->fromArgument('id'))
  710. );
  711. $registry->addFieldResolver('Query', 'tagprod',
  712. $builder->produce('entity_load')
  713. ->map('type', $builder->fromValue('taxonomy_term'))
  714. ->map('bundles', $builder->fromValue(['tag_prod']))
  715. ->map('id', $builder->fromArgument('id'))
  716. );
  717. $registry->addFieldResolver('Taxoterm', 'id',
  718. $builder->produce('entity_id')
  719. ->map('entity', $builder->fromParent())
  720. );
  721. $registry->addFieldResolver('Taxoterm', 'uuid',
  722. $builder->produce('entity_uuid')
  723. ->map('entity', $builder->fromParent())
  724. );
  725. $registry->addFieldResolver('Taxoterm', 'name',
  726. $builder->produce('entity_label')
  727. ->map('entity', $builder->fromParent())
  728. );
  729. }
  730. protected function addAuteur(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
  731. $registry->addFieldResolver('Query', 'allauteurs',
  732. $builder->compose(
  733. $builder->callback(function($parent, $arg){
  734. $entity_storage = \Drupal::entityTypeManager()->getStorage('taxonomy_term');
  735. $query = $entity_storage->getQuery()
  736. ->condition('vid', 'auteurs')
  737. ->accessCheck(TRUE);
  738. $results = $query->execute();
  739. return $results;
  740. }),
  741. $builder->produce('entity_load_multiple')
  742. ->map('type', $builder->fromValue('taxonomy_term'))
  743. ->map('ids', $builder->fromParent())
  744. )
  745. );
  746. $registry->addFieldResolver('Query', 'auteur',
  747. $builder->produce('entity_load')
  748. ->map('type', $builder->fromValue('taxonomy_term'))
  749. ->map('bundles', $builder->fromValue(['auteurs']))
  750. ->map('id', $builder->fromArgument('id'))
  751. );
  752. $registry->addFieldResolver('Auteur', 'id',
  753. $builder->produce('entity_id')
  754. ->map('entity', $builder->fromParent())
  755. );
  756. $registry->addFieldResolver('Auteur', 'uuid',
  757. $builder->produce('entity_uuid')
  758. ->map('entity', $builder->fromParent())
  759. );
  760. $registry->addFieldResolver('Auteur', 'name',
  761. $builder->produce('entity_label')
  762. ->map('entity', $builder->fromParent())
  763. );
  764. $registry->addFieldResolver('Auteur', 'first_name',
  765. $builder->produce('property_path')
  766. ->map('type', $builder->fromValue('entity:taxonomy_term'))
  767. ->map('value', $builder->fromParent())
  768. ->map('path', $builder->fromValue('field_prenom.value'))
  769. );
  770. $registry->addFieldResolver('Auteur', 'last_name',
  771. $builder->produce('property_path')
  772. ->map('type', $builder->fromValue('entity:taxonomy_term'))
  773. ->map('value', $builder->fromParent())
  774. ->map('path', $builder->fromValue('field_nom.value'))
  775. );
  776. }
  777. }