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 class Mage_Core_Model_Mysql4_Store extends Mage_Core_Model_Mysql4_Abstract
00029 {
00030 protected function _construct()
00031 {
00032 $this->_init('core/store', 'store_id');
00033 }
00034
00035
00036
00037
00038
00039
00040 protected function _initUniqueFields()
00041 {
00042 $this->_uniqueFields = array(array(
00043 'field' => 'code',
00044 'title' => Mage::helper('core')->__('Store with the same code')
00045 ));
00046 return $this;
00047 }
00048
00049 protected function _beforeSave(Mage_Core_Model_Abstract $model)
00050 {
00051 if(!preg_match('/^[a-z]+[a-z0-9_]*$/',$model->getCode())) {
00052 Mage::throwException(
00053 Mage::helper('core')->__('Store code should contain only letters (a-z), numbers (0-9) or underscore(_), first character should be a letter'));
00054 }
00055
00056 return $this;
00057 }
00058
00059 protected function _afterSave(Mage_Core_Model_Abstract $object)
00060 {
00061 parent::_afterSave($object);
00062 $this->_updateGroupDefaultStore($object->getGroupId(), $object->getId());
00063 $this->_changeGroup($object);
00064
00065 return $this;
00066 }
00067
00068 protected function _afterDelete(Mage_Core_Model_Abstract $model)
00069 {
00070 $this->_getWriteAdapter()->delete(
00071 $this->getTable('core/config_data'),
00072 $this->_getWriteAdapter()->quoteInto("scope = 'stores' AND scope_id = ?", $model->getStoreId())
00073 );
00074 return $this;
00075 }
00076
00077 protected function _updateGroupDefaultStore($groupId, $store_id)
00078 {
00079 $write = $this->_getWriteAdapter();
00080 $cnt = $write->fetchOne($write->select()
00081 ->from($this->getTable('core/store'), array('count'=>'COUNT(*)'))
00082 ->where($write->quoteInto('group_id=?', $groupId)),
00083 'count');
00084 if ($cnt == 1) {
00085 $write->update($this->getTable('core/store_group'),
00086 array('default_store_id' => $store_id),
00087 $write->quoteInto('group_id=?', $groupId)
00088 );
00089 }
00090 return $this;
00091 }
00092
00093 protected function _changeGroup(Mage_Core_Model_Abstract $model) {
00094 if ($model->getOriginalGroupId() && $model->getGroupId() != $model->getOriginalGroupId()) {
00095 $write = $this->_getWriteAdapter();
00096 $storeId = $write->fetchOne($write->select()
00097 ->from($this->getTable('core/store_group'), 'default_store_id')
00098 ->where($write->quoteInto('group_id=?', $model->getOriginalGroupId())),
00099 'default_store_id'
00100 );
00101 if ($storeId == $model->getId()) {
00102 $write->update($this->getTable('core/store_group'),
00103 array('default_store_id'=>0),
00104 $write->quoteInto('group_id=?', $model->getOriginalGroupId()));
00105 }
00106 }
00107 return $this;
00108 }
00109
00110 protected function _getLoadSelect($field, $value, $object)
00111 {
00112 $select = $this->_getReadAdapter()->select()
00113 ->from($this->getMainTable())
00114 ->where($field.'=?', $value)
00115 ->order('sort_order ASC');
00116
00117 return $select;
00118 }
00119 }