private function extractUsedBubbleItems($content, array &$items = array()) { $matches = array(); $data = PsConstJs::BUBBLE_LOADER_FOLDING_DATA; $pattern = "/data-{$data}=\"(.+?)\"/si"; preg_match_all($pattern, $content, $matches); $uniques = array_diff(array_unique(array_get_value(1, $matches, array())), array_keys($items)); //Сначала соберём все баблы foreach ($uniques as $unique) { $bubble = PsBubble::extractFoldedEntityBubbleDiv($unique); if ($bubble) { $items[$unique] = $bubble; } } //Соберём баблы, вложенные в другие баблы foreach ($uniques as $unique) { $this->extractUsedBubbleItems($items[$unique], $items); } }
protected function executeImpl(ArrayAdapter $params) { return new AjaxSuccess(PsBubble::extractFoldedEntityBubbleDiv($params->str('unique'))); }