$this->query("\n\n    CREATE TABLE `application_option` (\n        `option_id` int(11) unsigned NOT NULL AUTO_INCREMENT,\n        `category_id` INT(11) UNSIGNED NOT NULL,\n        `library_id` int(11) unsigned NOT NULL,\n        `icon_id` int(11) NOT NULL,\n        `code` varchar(20) NOT NULL,\n        `name` varchar(25) NOT NULL,\n        `model` varchar(100) NOT NULL,\n        `desktop_uri` varchar(100) NOT NULL,\n        `mobile_uri` varchar(100) NOT NULL,\n        `mobile_view_uri` varchar(100) NULL DEFAULT NULL,\n        `mobile_view_uri_parameter` varchar(100) NULL DEFAULT NULL,\n        `only_once` tinyint(1) NOT NULL DEFAULT '0',\n        `is_ajax` tinyint(1) NOT NULL DEFAULT '1',\n        `position` tinyint(1) unsigned NOT NULL DEFAULT '0',\n        `social_sharing_is_available` TINYINT(1) NOT NULL DEFAULT 0,\n        PRIMARY KEY (`option_id`),\n        KEY `KEY_LIBRARY_ID` (`library_id`)\n    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\n\n");
$this->query("\n    CREATE TABLE `application_option_value` (\n        `value_id` int(11) unsigned NOT NULL AUTO_INCREMENT,\n        `app_id` INT(11) UNSIGNED NOT NULL,\n        `option_id` int(11) unsigned NOT NULL,\n        `layout_id` int(11) unsigned NOT NULL DEFAULT '1',\n        `icon_id` int(11) DEFAULT NULL,\n        `folder_id` int(11) unsigned DEFAULT NULL,\n        `folder_category_id` int(11) unsigned DEFAULT NULL,\n        `folder_category_position` int(11) unsigned DEFAULT NULL,\n        `tabbar_name` varchar(30) DEFAULT NULL,\n        `icon` varchar(255) DEFAULT NULL,\n        `background_image` varchar(255) DEFAULT NULL,\n        `is_visible` tinyint(1) NOT NULL DEFAULT '1',\n        `position` tinyint(1) unsigned NOT NULL DEFAULT '0',\n        `is_active` tinyint(1) unsigned NOT NULL DEFAULT '0',\n        `social_sharing_is_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,\n        PRIMARY KEY (`value_id`),\n        KEY `KEY_APP_ID` (`app_id`),\n        KEY `KEY_OPTION_ID` (`option_id`)\n    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\n");
$this->query("\n    CREATE TABLE IF NOT EXISTS `application_admin` (\n        `app_id` INT(11) UNSIGNED NOT NULL,\n        `admin_id` INT(11) UNSIGNED NOT NULL,\n        `is_allowed_to_add_pages` TINYINT(1) NOT NULL DEFAULT 1,\n        PRIMARY KEY (`app_id`,`admin_id`),\n        KEY `sign_id_idxfk` (`admin_id`)\n    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\n");
$this->query("\n    CREATE TABLE `application_device` (\n        `device_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,\n        `app_id` INT(11) UNSIGNED NOT NULL,\n        `type_id` TINYINT(11) UNSIGNED NOT NULL,\n        `status_id` TINYINT(11) UNSIGNED NULL DEFAULT 1,\n        `admob_id` VARCHAR(50) NULL DEFAULT NULL,\n        `admob_type` enum('banner','interstitial') NOT NULL DEFAULT 'banner',\n        `version` VARCHAR(10) NOT NULL DEFAULT '0.0.1',\n        `developer_account_username` VARCHAR(255) NULL DEFAULT NULL,\n        `developer_account_password` VARCHAR(255) NULL DEFAULT NULL,\n        `use_our_developer_account` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,\n        `store_url` VARCHAR(255) NULL DEFAULT NULL,\n        `store_pass` VARCHAR(10) NULL DEFAULT NULL,\n        `store_app_id` VARCHAR(150) NULL DEFAULT NULL,\n        `banner_store_label` VARCHAR(150) NULL DEFAULT NULL,\n        `banner_store_price` VARCHAR(150) NULL DEFAULT NULL,\n        `key_pass` VARCHAR(10) NULL DEFAULT NULL,\n        `alias` VARCHAR(50) NULL DEFAULT NULL,\n        PRIMARY KEY (`device_id`),\n        KEY `KEY_APP_ID` (`app_id`)\n    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\n");
$this->query("\n    CREATE TABLE `application_option_layout` (\n        `layout_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,\n        `code` TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,\n        `option_id` INT(11) UNSIGNED NOT NULL,\n        `name` VARCHAR(50) NOT NULL,\n        `preview` VARCHAR(255) NOT NULL,\n        `position` TINYINT(1) NOT NULL DEFAULT 1,\n        PRIMARY KEY (`layout_id`)\n    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\n");
$this->query("\n    CREATE TABLE `application_tc` (\n        `tc_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,\n        `app_id` INT(11) UNSIGNED NOT NULL,\n        `type` VARCHAR(50) NOT NULL,\n        `text` LONGTEXT NULL DEFAULT NULL,\n        `created_at` datetime NOT NULL,\n        `updated_at` datetime NOT NULL,\n        PRIMARY KEY (`tc_id`),\n        INDEX `IDX_TC_APPLICATION_APP_ID` (`app_id`),\n        UNIQUE `UNIQUE_TC_APPLICATION_APP_ID_TYPE` (`app_id`, `type`)\n    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\n");
$this->query("\n    CREATE TABLE `application_acl_option` (\n        `application_acl_option_id` int(11) unsigned NOT NULL AUTO_INCREMENT,\n        `app_id` int(11) unsigned NOT NULL,\n        `admin_id` int(11) unsigned NOT NULL,\n        `value_id` int(11) unsigned NOT NULL,\n        `resource_code` varchar(50) COLLATE utf8_unicode_ci NOT NULL,\n        PRIMARY KEY (`application_acl_option_id`),\n        KEY value_id (`value_id`)\n    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\n");
$this->query("\n    CREATE TABLE `application_option_category` (\n        `category_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,\n        `code` VARCHAR(50) NOT NULL DEFAULT 1,\n        `name` VARCHAR(50) NOT NULL,\n        `icon` VARCHAR(255) NOT NULL,\n        `position` TINYINT(1) NOT NULL DEFAULT 1,\n        `created_at` datetime NOT NULL,\n        `updated_at` datetime NOT NULL,\n        PRIMARY KEY (`category_id`)\n    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;\n");
$this->query("\n    ALTER TABLE application_acl_option\n        ADD CONSTRAINT FK_APPLICATION_ACL_OPTION_VALUE_ID\n            FOREIGN KEY (value_id) REFERENCES application_option_value (value_id) ON DELETE CASCADE ON UPDATE CASCADE;\n");
$this->query("ALTER TABLE `application` ADD `key` VARCHAR(20) NOT NULL AFTER `bundle_id`;");
$this->query("ALTER TABLE `application` ADD UNIQUE `UNIQUE_APPLICATION_KEY` (`key`);");
$this->query("\n    ALTER TABLE `application_option_value`\n        ADD FOREIGN KEY (`app_id`) REFERENCES `application` (`app_id`) ON DELETE CASCADE ON UPDATE CASCADE;\n");
$this->query("\n    ALTER TABLE `application_option_value`\n        ADD FOREIGN KEY `FK_OPTION_ID` (`option_id`) REFERENCES `application_option` (`option_id`) ON DELETE CASCADE ON UPDATE CASCADE;\n");
$this->query("\n    ALTER TABLE `application_admin`\n        ADD FOREIGN KEY `FK_APPLICATION_APP_ID` (`app_id`) REFERENCES `application` (`app_id`) ON DELETE CASCADE ON UPDATE CASCADE;\n");
$this->query("\n    ALTER TABLE `application_device`\n        ADD CONSTRAINT `APPLICATION_DEVICE_APP_ID`\n            FOREIGN KEY (`app_id`) REFERENCES `application` (`app_id`) ON DELETE CASCADE ON UPDATE CASCADE;\n");
$this->query("\n    ALTER TABLE `application_tc`\n        ADD CONSTRAINT `FK_APPLICATION_TC_APP_ID`\n            FOREIGN KEY (`app_id`) REFERENCES `application` (`app_id`) ON UPDATE CASCADE ON DELETE CASCADE;\n");
$this->query("\n    ALTER TABLE `application_option`\n        ADD CONSTRAINT `FK_APPLICATION_OPTION_CATEGORY_ID`\n            FOREIGN KEY (`category_id`) REFERENCES `application_option_category` (`category_id`) ON UPDATE CASCADE ON DELETE CASCADE;\n");
$this->query("ALTER TABLE `log` ADD FOREIGN KEY `FK_APPLICATION_APPLICATION_ID` (app_id) references `application` (`app_id`) ON UPDATE CASCADE ON DELETE CASCADE;");
$datas = array(array('name' => 'Layout 1', 'visibility' => Application_Model_Layout_Homepage::VISIBILITY_ALWAYS, 'code' => 'layout_1', 'preview' => '/customization/layout/homepage/layout_1.png', 'use_more_button' => 1, 'use_horizontal_scroll' => 0, 'number_of_displayed_icons' => 5, 'position' => "bottom", "order" => 1, "is_active" => 1), array('name' => 'Layout 2', 'visibility' => Application_Model_Layout_Homepage::VISIBILITY_HOMEPAGE, 'code' => 'layout_2', 'preview' => '/customization/layout/homepage/layout_2.png', 'use_more_button' => 1, 'use_horizontal_scroll' => 0, 'number_of_displayed_icons' => 10, 'position' => "bottom", "order" => 2, "is_active" => 1), array('name' => 'Layout 3', 'visibility' => Application_Model_Layout_Homepage::VISIBILITY_HOMEPAGE, 'code' => 'layout_3', 'preview' => '/customization/layout/homepage/layout_3.png', 'use_more_button' => 0, 'use_horizontal_scroll' => 0, 'number_of_displayed_icons' => null, 'position' => "bottom", "order" => 3, "is_active" => 1), array('name' => 'Layout 4', 'visibility' => Application_Model_Layout_Homepage::VISIBILITY_HOMEPAGE, 'code' => 'layout_4', 'preview' => '/customization/layout/homepage/layout_4.png', 'use_more_button' => 0, 'use_horizontal_scroll' => 0, 'number_of_displayed_icons' => null, 'position' => "bottom", "order" => 4, "is_active" => 1), array('name' => 'Layout 5', 'visibility' => Application_Model_Layout_Homepage::VISIBILITY_HOMEPAGE, 'code' => 'layout_5', 'preview' => '/customization/layout/homepage/layout_5.png', 'use_more_button' => 0, 'use_horizontal_scroll' => 0, 'number_of_displayed_icons' => null, 'position' => "bottom", "order" => 5, "is_active" => 1), array('name' => 'Layout 6', 'visibility' => Application_Model_Layout_Homepage::VISIBILITY_HOMEPAGE, 'code' => 'layout_6', 'preview' => '/customization/layout/homepage/layout_6.png', 'use_more_button' => 0, 'use_horizontal_scroll' => 0, 'number_of_displayed_icons' => null, 'position' => "bottom", "order" => 6, "is_active" => 1), array('name' => 'Layout 7', 'visibility' => Application_Model_Layout_Homepage::VISIBILITY_HOMEPAGE, 'code' => 'layout_7', 'preview' => '/customization/layout/homepage/layout_7.png', 'use_more_button' => 0, 'use_horizontal_scroll' => 0, 'number_of_displayed_icons' => null, 'position' => "bottom", "order" => 7, "is_active" => 1), array('name' => 'Layout 8', 'visibility' => Application_Model_Layout_Homepage::VISIBILITY_HOMEPAGE, 'code' => 'layout_8', 'preview' => '/customization/layout/homepage/layout_8.png', 'use_more_button' => 0, 'use_horizontal_scroll' => 0, 'number_of_displayed_icons' => null, 'position' => "bottom", "order" => 8, "is_active" => 0), array('name' => 'Layout 9', 'visibility' => Application_Model_Layout_Homepage::VISIBILITY_TOGGLE, 'code' => 'layout_9', 'preview' => '/customization/layout/homepage/layout_9.png', 'use_more_button' => 0, 'use_horizontal_scroll' => 0, 'number_of_displayed_icons' => null, 'position' => "left", "order" => 9, "is_active" => 1), array('name' => 'Layout 3 - Horizontal', 'visibility' => Application_Model_Layout_Homepage::VISIBILITY_HOMEPAGE, 'code' => 'layout_3_h', 'preview' => '/customization/layout/homepage/layout_3-h.png', 'use_more_button' => 0, 'use_horizontal_scroll' => 0, "number_of_displayed_icons" => 6, 'position' => "bottom", "order" => 10, "is_active" => 1), array('name' => 'Layout 4 - Horizontal', 'visibility' => Application_Model_Layout_Homepage::VISIBILITY_HOMEPAGE, 'code' => 'layout_4_h', 'preview' => '/customization/layout/homepage/layout_4-h.png', 'use_more_button' => 0, 'use_horizontal_scroll' => 1, "number_of_displayed_icons" => 6, 'position' => "bottom", "order" => 11, "is_active" => 1), array('name' => 'Layout 5 - Horizontal', 'visibility' => Application_Model_Layout_Homepage::VISIBILITY_HOMEPAGE, 'code' => 'layout_5_h', 'preview' => '/customization/layout/homepage/layout_5-h.png', 'use_more_button' => 0, 'use_horizontal_scroll' => 1, "number_of_displayed_icons" => 4, 'position' => "bottom", "order" => 12, "is_active" => 1), array('name' => 'Layout 10', 'visibility' => Application_Model_Layout_Homepage::VISIBILITY_HOMEPAGE, 'code' => 'layout_10', 'preview' => '/customization/layout/homepage/layout_10.png', 'use_more_button' => 1, 'use_horizontal_scroll' => 0, 'number_of_displayed_icons' => 5, 'position' => 'bottom', "order" => 13, "is_active" => 1));
foreach ($datas as $data) {
    $layout = new Application_Model_Layout_Homepage();
    $layout->setData($data)->save();
}
$categories = array(array("code" => "social", "name" => "Social", "icon" => "icon-share", "position" => 10), array("code" => "media", "name" => "Media", "icon" => "icon-play", "position" => 20), array("code" => "contact", "name" => "Contact", "icon" => "icon-phone", "position" => 30), array("code" => "monetization", "name" => "Monetization", "icon" => "icon-money", "position" => 40), array("code" => "customization", "name" => "Customization", "icon" => "icon-edit", "position" => 50), array("code" => "integration", "name" => "Integration", "icon" => "icon-globe", "position" => 60), array("code" => "events", "name" => "Events", "icon" => "icon-calendar", "position" => 70), array("code" => "misc", "name" => "Misc", "icon" => "icon-code", "position" => 80));
foreach ($categories as $category_data) {
    $category = new Application_Model_Option_Category();
    $category->setData($category_data)->save();
    foreach ($category_data["features"] as $feature_code) {
        $this->_db->update("application_option", array("category_id" => $category->getId()), array("code = ?" => $feature_code));
    }
}
<?php

$this->query("\n    ALTER TABLE `application_layout_homepage`\n        ADD `code` VARCHAR(10) NOT NULL AFTER `layout_id`;\n");
$layout = new Application_Model_Layout_Homepage();
$layouts = $layout->findAll();
foreach ($layouts as $key => $layout) {
    $layout->setCode("layout_" . $key)->setName("Layout " . $key)->save();
}
$layout = new Application_Model_Layout_Homepage();
$layout->setData(array('code' => 'layout_8', 'name' => 'Layout 8', 'preview' => '/customization/layout/homepage/layout_8.png', 'use_more_button' => 0, 'position' => 80))->save();