ConfigurableOptions.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\App\UI\Admin\ProductConfiguration\Pages\Sections;
  3. use ThurData\Servers\KerioEmail\App\Enums\ProductParams;
  4. use ThurData\Servers\KerioEmail\App\Libs\Product\ProductManager;
  5. use ThurData\Servers\KerioEmail\App\Services\ConfigurableOptions\Strategy\ConfigOptionsType;
  6. use ThurData\Servers\KerioEmail\App\UI\Admin\Custom\Sections\BoxSectionExtended;
  7. use ThurData\Servers\KerioEmail\App\UI\Admin\ProductConfiguration\Buttons\CreateConfigurableOptionsBaseModalButton;
  8. use ThurData\Servers\KerioEmail\App\UI\Admin\ProductConfiguration\Helper\ConfigurableOptionsBuilder;
  9. use ThurData\Servers\KerioEmail\App\Traits\KerioApiHandler;
  10. use ThurData\Servers\KerioEmail\App\UI\Admin\ProductConfiguration\Providers\ConfigurableOptionManager;
  11. use ThurData\Servers\KerioEmail\Core\UI\Interfaces\AdminArea;
  12. use ThurData\Servers\KerioEmail\Core\UI\Widget\Forms\Sections\BoxSection;
  13. /**
  14. *
  15. * Created by PhpStorm.
  16. * User: ThurData
  17. * Date: 29.08.19
  18. * Time: 08:32
  19. * Class ConfigurableOptionsSection
  20. */
  21. class ConfigurableOptions extends BoxSectionExtended implements AdminArea
  22. {
  23. protected $id = 'configurableOptions';
  24. protected $name = 'configurableOptions';
  25. protected $title = 'configurableOptions';
  26. use KerioApiHandler;
  27. public function initContent()
  28. {
  29. $this->addButton(new CreateConfigurableOptionsBaseModalButton());
  30. }
  31. /**
  32. * @return array
  33. * @throws \Exception
  34. */
  35. public function getOptions()
  36. {
  37. /**
  38. * product id
  39. */
  40. $productId = $this->getRequestValue('id');
  41. /**
  42. * product manager
  43. */
  44. $productManager = new ProductManager();
  45. $productManager
  46. ->loadById($productId);
  47. /**
  48. * config options strategy
  49. */
  50. $options = new ConfigOptionsType();
  51. $options->setProductId($productId);
  52. $options->load();
  53. /**
  54. * config option model
  55. */
  56. $configurableOptions = new \ThurData\Servers\KerioEmail\App\Services\ConfigurableOptions\ConfigurableOptions($productId);
  57. /**
  58. * build co to show
  59. */
  60. ConfigurableOptionsBuilder::buildAll($configurableOptions, $options->getConfigurableOptions());
  61. /**
  62. *
  63. */
  64. $fields = $configurableOptions->show();
  65. /**
  66. *
  67. * add additional elements,
  68. * resolve none full line issue (#156)
  69. */
  70. $limit = count($fields) % 3;
  71. if($limit > 0)
  72. {
  73. while($limit < 3)
  74. {
  75. $fields['emptyFields'.$limit] = '-1';
  76. $limit++;
  77. }
  78. }
  79. return $fields;
  80. }
  81. }