1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
26:
27:
28: 29: 30: 31: 32: 33: 34:
35: class Mage_Downloadable_Model_Resource_Sample extends Mage_Core_Model_Resource_Db_Abstract
36: {
37: 38: 39: 40:
41: protected function _construct()
42: {
43: $this->_init('downloadable/sample', 'sample_id');
44: }
45:
46: 47: 48: 49: 50: 51:
52: public function saveItemTitle($sampleObject)
53: {
54: $writeAdapter = $this->_getWriteAdapter();
55: $sampleTitleTable = $this->getTable('downloadable/sample_title');
56: $bind = array(
57: ':sample_id' => $sampleObject->getId(),
58: ':store_id' => (int)$sampleObject->getStoreId()
59: );
60: $select = $writeAdapter->select()
61: ->from($sampleTitleTable)
62: ->where('sample_id=:sample_id AND store_id=:store_id');
63: if ($writeAdapter->fetchOne($select, $bind)) {
64: $where = array(
65: 'sample_id = ?' => $sampleObject->getId(),
66: 'store_id = ?' => (int)$sampleObject->getStoreId()
67: );
68: if ($sampleObject->getUseDefaultTitle()) {
69: $writeAdapter->delete(
70: $sampleTitleTable, $where);
71: } else {
72: $writeAdapter->update(
73: $sampleTitleTable,
74: array('title' => $sampleObject->getTitle()), $where);
75: }
76: } else {
77: if (!$sampleObject->getUseDefaultTitle()) {
78: $writeAdapter->insert(
79: $sampleTitleTable,
80: array(
81: 'sample_id' => $sampleObject->getId(),
82: 'store_id' => (int)$sampleObject->getStoreId(),
83: 'title' => $sampleObject->getTitle(),
84: ));
85: }
86: }
87: return $this;
88: }
89:
90: 91: 92: 93: 94: 95:
96: public function deleteItems($items)
97: {
98:
99: $writeAdapter = $this->_getWriteAdapter();
100: $where = '';
101: if ($items instanceof Mage_Downloadable_Model_Sample) {
102: $where = array('sample_id = ?' => $items->getId());
103: } else {
104: $where = array('sample_id in (?)' => $items);
105: }
106: if ($where) {
107: $writeAdapter->delete(
108: $this->getMainTable(), $where);
109: $writeAdapter->delete(
110: $this->getTable('downloadable/sample_title'), $where);
111: }
112: return $this;
113: }
114:
115: 116: 117: 118: 119: 120: 121:
122: public function getSearchableData($productId, $storeId)
123: {
124: $adapter = $this->_getReadAdapter();
125: $ifNullDefaultTitle = $adapter->getIfNullSql('st.title', 'd.title');
126: $select = $adapter->select()
127: ->from(array('m' => $this->getMainTable()), null)
128: ->join(
129: array('d' => $this->getTable('downloadable/sample_title')),
130: 'd.sample_id=m.sample_id AND d.store_id=0',
131: array())
132: ->joinLeft(
133: array('st' => $this->getTable('downloadable/sample_title')),
134: 'st.sample_id=m.sample_id AND st.store_id=:store_id',
135: array('title' => $ifNullDefaultTitle))
136: ->where('m.product_id=:product_id', $productId);
137: $bind = array(
138: ':store_id' => (int)$storeId,
139: ':product_id' => $productId
140: );
141:
142: return $adapter->fetchCol($select, $bind);
143: }
144: }
145: