public static function exportBlocks($theme)
 {
     // convert db data to blocks override file
     if (!empty($theme)) {
         self::_processDatabaseBlocks($theme->id);
         @mkdir(base_path() . '/resources/views/themes/' . $theme->theme . '/export');
         @mkdir(base_path() . '/resources/views/themes/' . $theme->theme . '/export/blocks');
         $blocksCsv = fopen(base_path() . '/resources/views/themes/' . $theme->theme . '/export/blocks.csv', 'w');
         $blockCategoriesCsv = fopen(base_path() . '/resources/views/themes/' . $theme->theme . '/export/blocks/categories.csv', 'w');
         $selectOptionsCsv = fopen(base_path() . '/resources/views/themes/' . $theme->theme . '/export/blocks/select_options.csv', 'w');
         $formRulesCsv = fopen(base_path() . '/resources/views/themes/' . $theme->theme . '/export/blocks/form_rules.csv', 'w');
         fputcsv($selectOptionsCsv, ['Block Name', 'Option', 'Value']);
         $blockSelectOptions = [];
         $selectOptions = BlockSelectOption::all();
         if (!$selectOptions->isEmpty()) {
             foreach ($selectOptions as $selectOption) {
                 if (!isset($blockSelectOptions[$selectOption->block_id])) {
                     $blockSelectOptions[$selectOption->block_id] = [];
                 }
                 $blockSelectOptions[$selectOption->block_id][] = [$selectOption->option, $selectOption->value];
             }
         }
         fputcsv($formRulesCsv, ['Form Template', 'Field', 'Rule']);
         $formRules = BlockFormRule::all();
         if (!$formRules->isEmpty()) {
             $formsDir = base_path() . '/resources/views/themes/' . $theme->theme . '/blocks/forms';
             if (is_dir($formsDir)) {
                 $themeForms = [];
                 foreach (scandir($formsDir) as $formTemplate) {
                     if (!in_array($formTemplate, ['.', '..'])) {
                         $formTemplateParts = explode('.', $formTemplate);
                         $themeForms[] = $formTemplateParts[0];
                     }
                 }
                 foreach ($formRules as $formRule) {
                     if (in_array($formRule->form_template, $themeForms)) {
                         fputcsv($formRulesCsv, [$formRule->form_template, $formRule->field, $formRule->rule]);
                     }
                 }
             }
         }
         fputcsv($blocksCsv, ['Block Name', 'Block Label', 'Block Note', 'Block Category', 'Block Type', 'Global (show in site-wide)', 'Global (show in pages)', 'Templates', 'Block Order']);
         $categoryIds = [];
         foreach (self::$_databaseBlocks as $blockName => $block) {
             $categoryIds[$block->category_id] = $block->category_id;
             fputcsv($blocksCsv, [$blockName, self::$_databaseBlocks[$blockName]->label, self::$_databaseBlocks[$blockName]->note, self::_getBlockCategory($block->category_id, 'name'), self::$_databaseBlocks[$blockName]->type, isset(self::$_databaseGlobalBlocks[$blockName]) && self::$_databaseGlobalBlocks[$blockName]->show_in_global ? 'yes' : 'no', isset(self::$_databaseGlobalBlocks[$blockName]) && self::$_databaseGlobalBlocks[$blockName]->show_in_pages ? 'yes' : 'no', isset(self::$_databaseBlockTemplates[$blockName]) ? implode(',', self::$_databaseBlockTemplates[$blockName]) : '', self::$_databaseBlocks[$blockName]->order]);
             if (!empty($blockSelectOptions[$block->id])) {
                 foreach ($blockSelectOptions[$block->id] as $blockSelectOption) {
                     fputcsv($selectOptionsCsv, [$block->name, $blockSelectOption[0], $blockSelectOption[1]]);
                 }
             }
         }
         fputcsv($blockCategoriesCsv, ['Block Category', 'Category Order']);
         foreach ($categoryIds as $categoryId) {
             if ($category = self::_getBlockCategory($categoryId)) {
                 fputcsv($blockCategoriesCsv, [$category->name, $category->order]);
             }
         }
         fclose($blocksCsv);
         fclose($blockCategoriesCsv);
         fclose($selectOptionsCsv);
         fclose($formRulesCsv);
     }
 }