ConfigurableOptions.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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 option model
  49. */
  50. $configurableOptions = new \ThurData\Servers\KerioEmail\App\Services\ConfigurableOptions\ConfigurableOptions($productId);
  51. /**
  52. * build co to show
  53. */
  54. ConfigurableOptionsBuilder::buildAll($configurableOptions, $options->getConfigurableOptions());
  55. /**
  56. *
  57. */
  58. $fields = $configurableOptions->show();
  59. /**
  60. *
  61. * add additional elements,
  62. * resolve none full line issue (#156)
  63. */
  64. $limit = count($fields) % 3;
  65. if($limit > 0)
  66. {
  67. while($limit < 3)
  68. {
  69. $fields['emptyFields'.$limit] = '-1';
  70. $limit++;
  71. }
  72. }
  73. return $fields;
  74. }
  75. }