A fork of potaka/bbcode to handle future maintenance
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
1.8KB

  1. <?php
  2. namespace Knockout\BbCode;
  3. use Knockout\BbCode\Tag\Bold;
  4. use Knockout\BbCode\Tag\Underline;
  5. use Knockout\BbCode\Tag\Italic;
  6. use Knockout\BbCode\Tag\Link;
  7. use Knockout\BbCode\Tag\ImgTag;
  8. use Knockout\BbCode\Tag\YoutubeTag;
  9. /**
  10. * Create different BbCode configurations
  11. *
  12. * @author po_taka <angel.koilov@gmail.com>
  13. */
  14. class Factory
  15. {
  16. /**
  17. * Create fully configured BbCode
  18. *
  19. * @return BbCode
  20. */
  21. public function getFullBbCode() : BbCode
  22. {
  23. $bbcode = new BbCode();
  24. $bold = new Bold();
  25. $bbcode->addTag($bold);
  26. $underline = new Underline();
  27. $bbcode->addTag($underline);
  28. $italic = new Italic();
  29. $bbcode->addTag($italic);
  30. $link = new Link;
  31. $bbcode->addTag($link);
  32. $img = new ImgTag();
  33. $bbcode->addTag($img);
  34. $unknownTag = new Tag\UnknownSimpleType();
  35. $bbcode->addTag($unknownTag);
  36. $youtubeTag = new YoutubeTag();
  37. $bbcode->addTag($youtubeTag);
  38. $tags = [
  39. $bold,
  40. $underline,
  41. $italic,
  42. $link,
  43. $unknownTag,
  44. $img,
  45. $youtubeTag,
  46. ];
  47. // link allowed
  48. $bbcode->addAllowedChildTag($link, $bold);
  49. $bbcode->addAllowedChildTag($link, $italic);
  50. $bbcode->addAllowedChildTag($link, $underline);
  51. $bbcode->addAllowedChildTag($link, $unknownTag);
  52. $bbcode->addAllowedChildTag($link, $img);
  53. $tagsAllowingAnyChild = [
  54. $bold,
  55. $italic,
  56. $underline,
  57. $unknownTag,
  58. ];
  59. foreach ($tagsAllowingAnyChild as $tagAllowingAnyTag) {
  60. foreach ($tags as $tag) {
  61. $bbcode->addAllowedChildTag($tagAllowingAnyTag, $tag);
  62. }
  63. }
  64. return $bbcode;
  65. }
  66. }