1919use Bukashk0zzz \YmlGenerator \Model \Offer \OfferInterface ;
2020use Bukashk0zzz \YmlGenerator \Model \Offer \OfferOutlet ;
2121use Bukashk0zzz \YmlGenerator \Model \Offer \OfferParam ;
22+ use Bukashk0zzz \YmlGenerator \Model \Set ;
2223use Bukashk0zzz \YmlGenerator \Model \ShopInfo ;
2324
2425/**
@@ -74,10 +75,11 @@ public function __construct($settings = null)
7475 * @param iterable $categories
7576 * @param iterable $offers
7677 * @param iterable $deliveries
78+ * @param iterable $sets
7779 *
7880 * @return bool
7981 */
80- public function generate (ShopInfo $ shopInfo , iterable $ currencies , iterable $ categories , iterable $ offers , iterable $ deliveries = [])
82+ public function generate (ShopInfo $ shopInfo , iterable $ currencies , iterable $ categories , iterable $ offers , iterable $ deliveries = [], iterable $ sets = [] )
8183 {
8284 try {
8385 $ this ->addHeader ();
@@ -86,6 +88,10 @@ public function generate(ShopInfo $shopInfo, iterable $currencies, iterable $cat
8688 $ this ->addCurrencies ($ currencies );
8789 $ this ->addCategories ($ categories );
8890
91+ if (\count ($ sets ) !== 0 ) {
92+ $ this ->addSets ($ sets );
93+ }
94+
8995 if (\count ($ deliveries ) !== 0 ) {
9096 $ this ->addDeliveries ($ deliveries );
9197 }
@@ -156,6 +162,25 @@ protected function addCurrency(Currency $currency)
156162 $ this ->writer ->endElement ();
157163 }
158164
165+ /**
166+ * @param Set $set
167+ */
168+ protected function addSet (Set $ set )
169+ {
170+ $ this ->writer ->startElement ('set ' );
171+ $ this ->writer ->writeAttribute ('id ' , $ set ->getId ());
172+
173+ if ($ set ->getName () !== null ) {
174+ $ this ->writer ->writeElement ('name ' , $ set ->getName ());
175+ }
176+
177+ if ($ set ->getUrl () !== null ) {
178+ $ this ->writer ->writeElement ('url ' , $ set ->getUrl ());
179+ }
180+
181+ $ this ->writer ->fullEndElement ();
182+ }
183+
159184 /**
160185 * @param Category $category
161186 */
@@ -245,6 +270,25 @@ private function addCurrencies(iterable $currencies)
245270 $ this ->writer ->fullEndElement ();
246271 }
247272
273+ /**
274+ * Adds <sets> element.
275+ *
276+ * @param iterable $sets
277+ */
278+ private function addSets (iterable $ sets )
279+ {
280+ $ this ->writer ->startElement ('sets ' );
281+
282+ /** @var Set $set */
283+ foreach ($ sets as $ set ) {
284+ if ($ set instanceof Set) {
285+ $ this ->addSet ($ set );
286+ }
287+ }
288+
289+ $ this ->writer ->fullEndElement ();
290+ }
291+
248292 /**
249293 * Adds <categories> element. (See https://yandex.ru/support/webmaster/goods-prices/technical-requirements.xml#categories)
250294 *
0 commit comments