00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 $installer = $this;
00029
00030
00031 $installer->startSetup();
00032
00033 $purgeFk = array(
00034 $installer->getTable('tag/relation') => array(
00035 'product_id', 'tag_id', 'customer_id', 'store_id'
00036 ),
00037 $installer->getTable('tag/summary') => array(
00038 'tag_id'
00039 ),
00040 );
00041 $purgeIndex = array(
00042 array(
00043 $installer->getTable('tag/relation'),
00044 array('product_id')
00045 ),
00046 array(
00047 $installer->getTable('tag/relation'),
00048 array('tag_id')
00049 ),
00050 array(
00051 $installer->getTable('tag/relation'),
00052 array('customer_id')
00053 ),
00054 array(
00055 $installer->getTable('tag/relation'),
00056 array('store_id')
00057 ),
00058 array(
00059 $installer->getTable('tag/summary'),
00060 array('tag_id')
00061 ),
00062 );
00063 foreach ($purgeFk as $tableName => $columns) {
00064 $foreignKeys = $installer->getConnection()->getForeignKeys($tableName);
00065 foreach ($foreignKeys as $fkProp) {
00066 if (in_array($fkProp['COLUMN_NAME'], $columns)) {
00067 $installer->getConnection()
00068 ->dropForeignKey($tableName, $fkProp['FK_NAME']);
00069 }
00070 }
00071 }
00072
00073 foreach ($purgeIndex as $prop) {
00074 list($tableName, $columns) = $prop;
00075 $indexList = $installer->getConnection()->getIndexList($tableName);
00076 foreach ($indexList as $indexProp) {
00077 if ($columns === $indexProp['COLUMNS_LIST']) {
00078 $installer->getConnection()->dropKey($tableName, $indexProp['KEY_NAME']);
00079 }
00080 }
00081 }
00082
00083 $installer->getConnection()->addKey($installer->getTable('tag/relation'),
00084 'IDX_PRODUCT', 'product_id');
00085 $installer->getConnection()->addKey($installer->getTable('tag/relation'),
00086 'IDX_TAG', 'tag_id');
00087 $installer->getConnection()->addKey($installer->getTable('tag/relation'),
00088 'IDX_CUSTOMER', 'customer_id');
00089 $installer->getConnection()->addKey($installer->getTable('tag/relation'),
00090 'IDX_STORE', 'store_id');
00091 $installer->getConnection()->addKey($installer->getTable('tag/summary'),
00092 'IDX_TAG', 'tag_id');
00093
00094 $installer->getConnection()->addConstraint('FK_TAG_RELATION_PRODUCT',
00095 $installer->getTable('tag/relation'), 'product_id',
00096 $installer->getTable('catalog/product'), 'entity_id',
00097 'CASCADE', 'CASCADE', true);
00098 $installer->getConnection()->addConstraint('FK_TAG_RELATION_TAG',
00099 $installer->getTable('tag/relation'), 'tag_id',
00100 $installer->getTable('tag/tag'), 'tag_id',
00101 'CASCADE', 'CASCADE', true);
00102 $installer->getConnection()->addConstraint('FK_TAG_RELATION_CUSTOMER',
00103 $installer->getTable('tag/relation'), 'customer_id',
00104 $installer->getTable('customer/entity'), 'entity_id',
00105 'CASCADE', 'CASCADE', true);
00106 $installer->getConnection()->addConstraint('FK_TAG_RELATION_STORE',
00107 $installer->getTable('tag/relation'), 'store_id',
00108 $installer->getTable('core/store'), 'store_id',
00109 'CASCADE', 'CASCADE', true);
00110 $installer->getConnection()->addConstraint('FK_TAG_SUMMARY_TAG',
00111 $installer->getTable('tag/summary'), 'tag_id',
00112 $installer->getTable('tag/tag'), 'tag_id',
00113 'CASCADE', 'CASCADE', true);
00114 $installer->endSetup();