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
00029
00030
00031
00032
00033
00034
00035 class Mage_Adminhtml_Model_Giftmessage_Save extends Varien_Object
00036 {
00037 protected $_saved = false;
00038
00039
00040
00041
00042
00043
00044 public function saveAllInQuote()
00045 {
00046 $giftmessages = $this->getGiftmessages();
00047
00048
00049 foreach ($this->_getQuote()->getAllItems() as $item) {
00050 if($item->getGiftMessageId() && !in_array($item->getId(), $this->getAllowQuoteItems())) {
00051 $this->_deleteOne($item);
00052 }
00053 }
00054
00055 if (!is_array($giftmessages)) {
00056 return $this;
00057 }
00058
00059 foreach ($giftmessages as $entityId=>$giftmessage) {
00060 $this->_saveOne($entityId, $giftmessage);
00061 }
00062
00063 return $this;
00064 }
00065
00066 public function getSaved()
00067 {
00068 return $this->_saved;
00069 }
00070
00071 public function saveAllInOrder()
00072 {
00073 $giftmessages = $this->getGiftmessages();
00074
00075 if (!is_array($giftmessages)) {
00076 return $this;
00077 }
00078
00079 foreach ($giftmessages as $entityId=>$giftmessage) {
00080 $this->_saveOne($entityId, $giftmessage);
00081 }
00082
00083 return $this;
00084 }
00085
00086
00087
00088
00089
00090
00091
00092
00093 protected function _saveOne($entityId, $giftmessage) {
00094 $giftmessageModel = Mage::getModel('giftmessage/message');
00095
00096 if ($this->_getMappedType($giftmessage['type'])!='quote_item') {
00097 $entityModel = $giftmessageModel->getEntityModelByType($this->_getMappedType($giftmessage['type']));
00098 } else {
00099 $entityModel = $this->_getQuote()->getItemById($entityId);
00100 }
00101
00102
00103
00104 if ($this->_getMappedType($giftmessage['type'])=='quote') {
00105 $entityModel->setStoreId($this->_getQuote()->getStoreId());
00106 }
00107
00108 if ($this->_getMappedType($giftmessage['type'])!='quote_item') {
00109 $entityModel->load($entityId);
00110 }
00111
00112
00113 if ($entityModel->getGiftMessageId()) {
00114 $giftmessageModel->load($entityModel->getGiftMessageId());
00115 }
00116
00117 $giftmessageModel->addData($giftmessage);
00118
00119 if ($giftmessageModel->isMessageEmpty() && $giftmessageModel->getId()) {
00120
00121 $this->_deleteOne($entityModel, $giftmessageModel);
00122 $this->_saved = false;
00123 } elseif (!$giftmessageModel->isMessageEmpty()) {
00124 $giftmessageModel->save();
00125 $entityModel->setGiftMessageId($giftmessageModel->getId())
00126 ->save();
00127 $this->_saved = true;
00128 }
00129
00130 return $this;
00131 }
00132
00133
00134
00135
00136
00137
00138
00139
00140 protected function _deleteOne($entityModel, $giftmessageModel=null)
00141 {
00142 if(is_null($giftmessageModel)) {
00143 $giftmessageModel = Mage::getModel('giftmessage/message')
00144 ->load($entityModel->getGiftMessageId());
00145 }
00146 $giftmessageModel->delete();
00147 $entityModel->setGiftMessageId(0)
00148 ->save();
00149 return $this;
00150 }
00151
00152
00153
00154
00155
00156
00157
00158 public function setAllowQuoteItems($items)
00159 {
00160 $this->_getSession()->setAllowQuoteItemsGiftMessage($items);
00161 return $this;
00162 }
00163
00164
00165
00166
00167
00168
00169
00170 public function addAllowQuoteItem($item)
00171 {
00172 $items = $this->getAllowQuoteItems();
00173 if (!in_array($item, $items)) {
00174 $items[] = $item;
00175 }
00176 $this->setAllowQuoteItems($items);
00177
00178 return $this;
00179 }
00180
00181
00182
00183
00184
00185
00186 public function getAllowQuoteItems()
00187 {
00188 if(!is_array($this->_getSession()->getAllowQuoteItemsGiftMessage())) {
00189 $this->setAllowQuoteItems(array());
00190 }
00191
00192 return $this->_getSession()->getAllowQuoteItemsGiftMessage();
00193 }
00194
00195
00196
00197
00198
00199
00200 public function getAllowQuoteItemsProducts()
00201 {
00202 $result = array();
00203 foreach ($this->getAllowQuoteItems() as $itemId) {
00204 $item = $this->_getQuote()->getItemById($itemId);
00205 if(!$item) {
00206 continue;
00207 }
00208 $result[] = $item->getProduct()->getId();
00209 }
00210 return $result;
00211 }
00212
00213
00214
00215
00216
00217
00218
00219 public function getIsAllowedQuoteItem($item)
00220 {
00221 if(!in_array($item->getId(), $this->getAllowQuoteItems())) {
00222 if ($item->getGiftMessageId() && $this->isGiftMessagesAvailable($item)) {
00223 $this->addAllowQuoteItem($item->getId());
00224 return true;
00225 }
00226 return false;
00227 }
00228
00229 return true;
00230 }
00231
00232
00233
00234
00235
00236
00237
00238 public function isGiftMessagesAvailable($item)
00239 {
00240 return Mage::helper('giftmessage/message')->getIsMessagesAvailable(
00241 'item', $item, $item->getStore()
00242 );
00243 }
00244
00245
00246
00247
00248
00249
00250
00251 public function importAllowQuoteItemsFromProducts($products)
00252 {
00253 $allowedItems = $this->getAllowQuoteItems();
00254 $deleteAllowedItems = array();
00255 foreach ($products as $productId=>$data) {
00256 $product = Mage::getModel('catalog/product')
00257 ->setStore($this->_getSession()->getStore())
00258 ->load($productId);
00259 $item = $this->_getQuote()->getItemByProduct($product);
00260
00261 if(!$item) {
00262 continue;
00263 }
00264
00265 if (in_array($item->getId(), $allowedItems)
00266 && !isset($data['giftmessage'])) {
00267 $deleteAllowedItems[] = $item->getId();
00268 } elseif (!in_array($item->getId(), $allowedItems)
00269 && isset($data['giftmessage'])) {
00270 $allowedItems[] = $item->getId();
00271 }
00272
00273 }
00274
00275 $allowedItems = array_diff($allowedItems, $deleteAllowedItems);
00276
00277 $this->setAllowQuoteItems($allowedItems);
00278 return $this;
00279 }
00280
00281 public function importAllowQuoteItemsFromItems($items)
00282 {
00283 $allowedItems = $this->getAllowQuoteItems();
00284 $deleteAllowedItems = array();
00285 foreach ($items as $itemId=>$data) {
00286
00287 $item = $this->_getQuote()->getItemById($itemId);
00288
00289 if(!$item) {
00290
00291 $deleteAllowedItems[] = $itemId;
00292 continue;
00293 }
00294
00295 if (in_array($item->getId(), $allowedItems)
00296 && !isset($data['giftmessage'])) {
00297 $deleteAllowedItems[] = $item->getId();
00298 } elseif (!in_array($item->getId(), $allowedItems)
00299 && isset($data['giftmessage'])) {
00300 $allowedItems[] = $item->getId();
00301 }
00302
00303 }
00304
00305 $allowedItems = array_diff($allowedItems, $deleteAllowedItems);
00306 $this->setAllowQuoteItems($allowedItems);
00307 return $this;
00308 }
00309
00310
00311
00312
00313
00314
00315
00316 protected function _getMappedType($type)
00317 {
00318 $map = array(
00319 'main' => 'quote',
00320 'item' => 'quote_item',
00321 'order' => 'order',
00322 'order_item' => 'order_item'
00323 );
00324
00325 if (isset($map[$type])) {
00326 return $map[$type];
00327 }
00328
00329 return null;
00330 }
00331
00332
00333
00334
00335
00336
00337 protected function _getSession()
00338 {
00339 return Mage::getSingleton('adminhtml/session_quote');
00340 }
00341
00342
00343
00344
00345
00346
00347 protected function _getQuote()
00348 {
00349 return $this->_getSession()->getQuote();
00350 }
00351
00352 }