run.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. $executionStart = microtime(true);
  3. $em = include 'em.php';
  4. /**
  5. * initialized in em.php
  6. *
  7. * Gedmo\Translatable\TranslationListener
  8. */
  9. $translatable;
  10. $repository = $em->getRepository('Entity\Category');
  11. $food = $repository->findOneByTitle('Food');
  12. if (!$food) {
  13. // lets create some categories
  14. $food = new Entity\Category;
  15. $food->setTitle('Food');
  16. $fruits = new Entity\Category;
  17. $fruits->setParent($food);
  18. $fruits->setTitle('Fruits');
  19. $apple = new Entity\Category;
  20. $apple->setParent($fruits);
  21. $apple->setTitle('Apple');
  22. $milk = new Entity\Category;
  23. $milk->setParent($food);
  24. $milk->setTitle('Milk');
  25. $em->persist($food);
  26. $em->persist($milk);
  27. $em->persist($fruits);
  28. $em->persist($apple);
  29. $em->flush();
  30. // translate into LT
  31. $translatable->setTranslatableLocale('lt');
  32. $food->setTitle('Maistas');
  33. $fruits->setTitle('Vaisiai');
  34. $apple->setTitle('Obuolys');
  35. $milk->setTitle('Pienas');
  36. $em->persist($food);
  37. $em->persist($milk);
  38. $em->persist($fruits);
  39. $em->persist($apple);
  40. $em->flush();
  41. // set locale back to en
  42. $translatable->setTranslatableLocale('en');
  43. }
  44. // builds tree
  45. $build = function ($nodes) use (&$build, $repository) {
  46. $result = '';
  47. foreach ($nodes as $node) {
  48. $result .= str_repeat("-", $node->getLevel())
  49. . $node->getTitle()
  50. . '('.$node->getSlug().')'
  51. . PHP_EOL
  52. ;
  53. if ($repository->childCount($node, false)) {
  54. $result .= $build($repository->children($node, true));
  55. }
  56. }
  57. return $result;
  58. };
  59. $nodes = $repository->getRootNodes();
  60. echo $build($nodes).PHP_EOL.PHP_EOL;
  61. // change locale
  62. $translatable->setTranslatableLocale('lt');
  63. $nodes = $repository->getRootNodes(); // reload in diferent locale
  64. echo $build($nodes).PHP_EOL.PHP_EOL;
  65. $ms = round(microtime(true) - $executionStart, 4) * 1000;
  66. echo "Execution took: {$ms} ms";