/** * @param array $categorisedBlocks * @param array $blockContents * @param int $pageId * @return array */ public static function getTabs($categorisedBlocks, $blockContents, $pageId = 0) { $tabHeaders = []; $tabContents = []; foreach ($categorisedBlocks as $categoryId => $categoryBlocks) { $category = BlockCategory::preload($categoryId); $tabIndex = $category->order; while (!empty($tabHeaders[$tabIndex])) { $tabIndex++; } $tabHeaders[$tabIndex] = $category->name; $tabContents[$tabIndex] = ''; foreach ($categoryBlocks as $blockId => $block) { /** @var Block $block */ $blockContent = isset($blockContents[$blockId][Language::current()]) ? $blockContents[$blockId][Language::current()]->content : ''; $tabContents[$tabIndex] .= $block->setPageId($pageId)->getTypeObject()->edit($blockContent); } } return [$tabHeaders, $tabContents]; }
private function _categoryList() { $blockCategoryNames = []; $blockCategories = BlockCategory::orderBy('order')->get(); foreach ($blockCategories as $blockCategory) { $blockCategoryNames[$blockCategory->id] = $blockCategory->name; } return $blockCategoryNames; }
/** * @param $categoryName * @return mixed */ protected function _getBlockCategoryIdFromName($categoryName) { if (!isset($this->blockCategoryIds)) { foreach (BlockCategory::all() as $category) { $this->blockCategoryIds[trim(strtolower($category->name))] = $category; } $categoryCsv = base_path('resources/views/themes/' . $this->theme . '/import/blocks/categories.csv'); if (file_exists($categoryCsv) && ($fileHandle = fopen($categoryCsv, 'r')) !== false) { $row = 0; while (($data = fgetcsv($fileHandle)) !== false) { if ($row++ == 0 && $data[0] == 'Block Category') { continue; } if (!empty($data[0])) { list($name, $order) = $data; if (empty($this->blockCategoryIds[trim(strtolower($name))])) { $newBlockCategory = new BlockCategory(); $newBlockCategory->name = trim($name); $newBlockCategory->order = $order; $newBlockCategory->save(); $this->blockCategoryIds[trim(strtolower($name))] = $newBlockCategory; } else { $this->blockCategoryIds[trim(strtolower($name))]->order = $order; $this->blockCategoryIds[trim(strtolower($name))]->save(); } } } fclose($fileHandle); } } if (empty($this->blockCategoryIds[trim(strtolower($categoryName))])) { $newBlockCategory = new BlockCategory(); $newBlockCategory->name = trim($categoryName); $newBlockCategory->order = 0; $newBlockCategory->save(); $this->blockCategoryIds[trim(strtolower($categoryName))] = $newBlockCategory; } return $this->blockCategoryIds[trim(strtolower($categoryName))]->id; }
private static function _categoryGuess($block, $type = '') { if (!isset(self::$_guessedCategoryIds)) { $findKeys = ['main' => ['main'], 'banner' => ['banner', 'carousel'], 'seo' => ['seo'], 'footer' => ['foot'], 'header' => ['head']]; self::$_guessedCategoryIds = []; $first = true; foreach (BlockCategory::all() as $category) { if ($first) { $first = false; $keys['main'] = $category->id; } foreach ($findKeys as $key => $matches) { foreach ($matches as $match) { if (stristr($category->name, $match)) { self::$_guessedCategoryIds[$key] = $category->id; } } } } } else { $findKeys = []; } if ($type == 'repeater') { $findKeys[str_plural(str_replace('_', ' ', $block))] = [$block]; } if (!empty($findKeys)) { $order = 0; foreach ($findKeys as $key => $matches) { $order += 10; if (!isset(self::$_guessedCategoryIds[$key])) { $newBlockCategory = new BlockCategory(); $newBlockCategory->name = ucwords($key); $newBlockCategory->order = $key == 'seo' ? 100 : $order; $newBlockCategory->save(); self::$_guessedCategoryIds[$key] = $newBlockCategory->id; } } } $categoryFound = self::$_guessedCategoryIds['main']; $categoriesArr = []; $categoriesArr[self::$_guessedCategoryIds['seo']] = ['meta']; $categoriesArr[self::$_guessedCategoryIds['header']] = ['header_html', 'head', 'logo', 'phone']; $categoriesArr[self::$_guessedCategoryIds['footer']] = ['footer_html', 'foot', 'address', 'email', 'copyright']; $categoriesArr[self::$_guessedCategoryIds['banner']] = ['banner', 'carousel']; foreach ($categoriesArr as $_guessedCategoryIds => $matches) { foreach ($matches as $match) { if (stristr($block, $match)) { $categoryFound = $_guessedCategoryIds; } } } return $categoryFound; }