コード例 #1
0
ファイル: controller.php プロジェクト: Janoinen/vivid_store
 public function upgrade()
 {
     $pkg = Package::getByHandle('vivid_store');
     if (version_compare($pkg->getPackageVersion(), '2.1', '<')) {
         Installer::renameDatabaseTables($pkg);
         Installer::refreshDatabase($pkg);
         /** Version 1.1 ***********************************************/
         /**************************************************************/
         /*
          * 1. Installs new payment method: Invoice
          *
          */
         $invoicePM = PaymentMethod::getByHandle('invoice');
         if (!is_object($invoicePM)) {
             PaymentMethod::add('invoice', 'Invoice', $pkg);
         }
         /** Version 2.0 ***********************************************/
         /**************************************************************/
         /*
          * 1. Installs new PageType: store_product
          * 2. Installs a parent page to publish products under
          * 3. Install Product block
          * 4. Set pagetype defaults
          * 5. Give default for measurement units
          * 6. Install a fileset for digital downloads
          * 7. Install product attributes
          *
          */
         /*
          * 1. Installs new PageType: store_product
          */
         $this->installStoreProductPageType($pkg);
         /*
          * 2. Installs a parent page to publish products under
          */
         //first check and make sure the config isn't set.
         $publishTarget = Config::get('vividstore.productPublishTarget');
         if ($publishTarget < 1 || empty($publishTarget)) {
             //if not, install the proudct detail page if needed.
             $productParentPage = Page::getByPath('/product-detail');
             if ($productParentPage->isError()) {
                 $home = Page::getByID(HOME_CID);
                 $pageType = PageType::getByHandle('page');
                 $pageTemplate = PageTemplate::getByHandle('full');
                 $productParentPage = $home->add($pageType, array('cName' => t('Product Detail'), 'cHandle' => 'product-detail', 'pkgID' => $pkg->pkgID), $pageTemplate);
                 Page::getByPath('/product-detail')->setAttribute('exclude_nav', 1);
             }
             //set the config to publish under the new page.
             Config::save('vividstore.productPublishTarget', $productParentPage->getCollectionID());
         }
         /*
          * 3. Install Product Block
          */
         $productBlock = BlockType::getByHandle("vivid_product");
         if (!is_object($productBlock)) {
             BlockType::installBlockTypeFromPackage('vivid_product', $pkg);
         }
         /*
          * 3. Install Product PageType Defaults
          */
         $pageType = PageType::getByHandle('store_product');
         $template = $pageType->getPageTypeDefaultPageTemplateObject();
         $pageObj = $pageType->getPageTypePageTemplateDefaultPageObject($template);
         $bt = BlockType::getByHandle('vivid_product');
         $blocks = $pageObj->getBlocks('Main');
         if ($blocks[0] && $blocks[0]->getBlockTypeHandle() == "content") {
             $blocks[0]->deleteBlock();
         }
         if (count($blocks) < 1) {
             $data = array('productLocation' => 'page', 'showProductName' => 1, 'showProductDescription' => 1, 'showProductDetails' => 1, 'showProductPrice' => 1, 'showImage' => 1, 'showCartButton' => 1, 'showGroups' => 1);
             $pageObj->addBlock($bt, 'Main', $data);
         }
         /*
          * 5. Measurement Units.
          */
         $sizeUnits = Config::get('vividstore.sizeUnit');
         if (empty($sizeUnits)) {
             Config::save('vividstore.sizeUnit', 'in');
         }
         $weightUnits = Config::get('vividstore.weightUnit');
         if (empty($weightUnits)) {
             Config::save('vividstore.weightUnit', 'lb');
         }
         /*
          * 6. Fileset for digital downloads
          */
         $fs = FileSet::getByName('Digital Downloads');
         if (!is_object($fs)) {
             FileSet::add("Digital Downloads");
         }
         /*
          * 7. Product Attributes page
          */
         $attrPage = Page::getByPath('/dashboard/store/products/attributes');
         if (!is_object($attrPage) || $attrPage->isError()) {
             SinglePage::add('/dashboard/store/products/attributes', $pkg);
         }
         /*
          *  Add email order attribute
          */
         $text = AttributeType::getByHandle('text');
         $oakc = AttributeKeyCategory::getByHandle('store_order');
         $orderCustSet = AttributeSet::getByHandle('order_customer');
         $email = StoreOrderKey::getByHandle('email');
         if (!is_object($email)) {
             StoreOrderKey::add($text, array('akHandle' => 'email', 'akName' => t('Email')), $pkg)->setAttributeSet($orderCustSet);
         }
         // convert legacy config items to current config storage
         // applies for version 2.1.1 and below
         $db = Database::get();
         $configitems = $db->GetAll("SELECT * FROM Config WHERE configGroup='vividstore'");
         if (!empty($configitems)) {
             foreach ($configitems as $config) {
                 Config::save('vividstore.' . $config['configItem'], $config['configValue']);
             }
             $db->Execute("DELETE FROM Config WHERE configGroup='vividstore'");
         }
     }
     Installer::addOrderStatusesToDatabase($pkg);
     $paypalPM = PaymentMethod::getByHandle('paypal_standard');
     if (!is_object($paypalPM)) {
         PaymentMethod::add('paypal_standard', 'PayPal Standard', $pkg);
     }
     $co = Config::get('vividstore.cartOverlay');
     if (empty($co)) {
         Config::save('vividstore.cartOverlay', false);
     }
     parent::upgrade();
 }