ClassOfServiceFeatures.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace ModulesGarden\Servers\ZimbraEmail\App\UI\Admin\ProductConfiguration\Pages\Sections;
  3. use ModulesGarden\Servers\ZimbraEmail\App\Enums\Size;
  4. use ModulesGarden\Servers\ZimbraEmail\App\Helpers\ZimbraManager;
  5. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Repository;
  6. use ModulesGarden\Servers\ZimbraEmail\App\Traits\LangHandler;
  7. use ModulesGarden\Servers\ZimbraEmail\App\Traits\ServerParams;
  8. use ModulesGarden\Servers\ZimbraEmail\App\Traits\ZimbraApiHandler;
  9. use ModulesGarden\Servers\ZimbraEmail\App\UI\Admin\Custom\Fields\ExtendedInputField;
  10. use ModulesGarden\Servers\ZimbraEmail\App\UI\Admin\Custom\Sections\BoxSectionExtended;
  11. use ModulesGarden\Servers\ZimbraEmail\App\UI\Admin\Custom\Sections\HalfPageCustomCosSection;
  12. use ModulesGarden\Servers\ZimbraEmail\Core\UI\Interfaces\AdminArea;
  13. use ModulesGarden\Servers\ZimbraEmail\Core\UI\Widget\Forms\Sections\BoxSection;
  14. use ModulesGarden\Servers\ZimbraEmail\Core\UI\Widget\Forms\Sections\HalfPageSection;
  15. use ModulesGarden\Servers\ZimbraEmail\Core\UI\Widget\Forms\Fields\Text;
  16. use ModulesGarden\Servers\ZimbraEmail\App\Libs\Zimbra\Components\Api\Soap\Models\ClassOfService;
  17. /**
  18. *
  19. * Created by PhpStorm.
  20. * User: Tomasz Bielecki ( tomasz.bi@modulesgarden.com )
  21. * Date: 29.08.19
  22. * Time: 08:35
  23. * Class ClassOfServiceFeatures
  24. */
  25. class ClassOfServiceFeatures extends BoxSectionExtended implements AdminArea
  26. {
  27. use LangHandler;
  28. protected $id = 'classOfServiceFeatures';
  29. protected $name = 'classOfServiceFeatures';
  30. protected $title = 'classOfServiceFeatures';
  31. public function initContent()
  32. {
  33. $this->loadCos();
  34. }
  35. /**
  36. *
  37. */
  38. public function loadCos()
  39. {
  40. $lang = $this->getLang();
  41. $left = new HalfPageCustomCosSection('left');
  42. $right = new HalfPageCustomCosSection('right');
  43. /**
  44. * api manager
  45. */
  46. $manager = new ZimbraManager();
  47. /**
  48. * repository
  49. */
  50. $repository = $manager->getApiByProduct($this->getRequestValue('id'))->soap->repository();
  51. /**
  52. * cos
  53. */
  54. $cos = $repository->cos->all();
  55. $this->cos = $cos;
  56. $pointer = 1;
  57. foreach($cos as $key => $cosModel)
  58. {
  59. /* @var $cosModel ClassOfService */
  60. $id = 'cos['.$cosModel->getId().']';
  61. $quete = $cosModel->getMbMailQuote() ;
  62. $field = new ExtendedInputField($cosModel->getId());
  63. $field->setFieldType(ExtendedInputField::TYPE_NUMBER);
  64. $field->addHtmlAttribute('min', Size::UNLIMITED);
  65. $field->setName($id);
  66. $field->setRawTitle("{$cosModel->getName()} ({$quete} MB)");
  67. $field->setRawDescription(sprintf($lang->absoluteT('Enter to limit an accounts number of %s with quota %s MB or set -1 to unlimited'),ucfirst($cosModel->getName()), $quete) );
  68. $field->setDefaultValue(Size::DEFAULT_NULL_VALUE);
  69. if($pointer %2 == 0)
  70. {
  71. $right->addField($field);
  72. }else{
  73. $left->addField($field);
  74. }
  75. $pointer++;
  76. }
  77. $this
  78. ->addSection($left)
  79. ->addSection($right);
  80. }
  81. }