EnFrSchemaExtension.php 36 KB

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