/** * onAfterSave method. Hook for chidlren model to save extra data. * * @param array $data The data passed to the save function. * @param JTable $table The table object. * * @return boolean */ protected function onAfterSave(&$data, $table) { // Image if ($image = $this->getState('image')) { K2HelperImages::update('user', $image, $table); } // Clean up any temporary files K2HelperImages::purge('user'); return true; }
/** * onAfterSave method. * * @return void */ protected function onAfterSave(&$data, $table) { // Image if ($image = $this->getState('image')) { K2HelperImages::update('item', $image, $table); } // Tags if (isset($data['tags'])) { $tags = json_decode($data['tags']); $model = K2Model::getInstance('Tags', 'K2Model'); $itemId = $this->getState('id'); $model->deleteItemTags($itemId); foreach ($tags as $tag) { $model->tagItem($tag->id, $itemId); } } // Galleries if ($galleries = $this->getState('galleries')) { K2HelperGalleries::update($galleries, $table); } // Media if ($media = $this->getState('media')) { K2HelperMedia::update($media, $table); } // Attachments if ($attachments = $this->getState('attachments')) { K2HelperAttachments::update($attachments, $table); } // Clean up temporary uploads K2HelperImages::purge('item'); K2HelperGalleries::purge(); K2HelperMedia::purge(); K2HelperAttachments::purge(); // Handle statistics $statistics = K2Model::getInstance('Statistics', 'K2Model'); if ($this->getState('isNew')) { // Create item entry in statistics $statistics->createItemEntry($table->id); $statistics->increaseUserItemsCounter($table->created_by); } else { if ($this->getState('owner.changed')) { $statistics->decreaseUserItemsCounter($this->getState('owner')); $statistics->increaseUserItemsCounter($table->created_by); } } // Handle revisions if ($preSaveRevisionDataHash = $this->getState('preSaveRevisionDataHash')) { // Compute new version data hash $model = K2Model::getInstance('Revisions'); $revisionData = $model->buildRevisionData($table); $afterSaveRevisionDataHash = $model->computeDataHash($revisionData); if ($preSaveRevisionDataHash != $afterSaveRevisionDataHash) { $input = array(); $input['itemId'] = $table->id; $input['data'] = json_encode($revisionData); $input['hash'] = $afterSaveRevisionDataHash; $input['notes'] = $data['notes']; $model->setState('data', $input); $model->save($input); } } // Handle associations if (JLanguageAssociations::isEnabled() && isset($data['associations'])) { // Get associations input $associations = $data['associations']; // Sanitize array with empty values foreach ($associations as $languageTag => $itemId) { if (empty($itemId)) { unset($associations[$languageTag]); } } // Ensure that the item does not have associations when it's language is set to "All" if ($table->language == '*' && !empty($associations)) { $associations = array(); } // Add current item to associations $associations[$table->language] = $table->id; // Deleting old association for affected items $db = JFactory::getDbo(); $query = $db->getQuery(true)->delete($db->quoteName('#__associations'))->where($db->quoteName('context') . ' = ' . $db->quote('com_k2.item'))->where($db->quoteName('id') . ' IN (' . implode(',', $associations) . ')'); $db->setQuery($query); $db->execute(); if ($table->language != '*' && count($associations)) { // Adding new association for these items $key = md5(json_encode($associations)); $query->clear()->insert($db->quoteName('#__associations')); foreach ($associations as $id) { $query->values((int) $id . ',' . $db->quote('com_k2.item') . ',' . $db->quote($key)); } $db->setQuery($query); $db->execute(); } } // K2 After Save plugin event . We trigger it here beacuse it is applied only to items ( like in v2 ) $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('k2'); if (!$this->getState('patch')) { $isNew = $this->getState('isNew'); $dispatcher->trigger('onAfterK2Save', array(&$table, $isNew)); } return true; }
/** * onAfterSave method. Hook for chidlren model to save extra data. * * @param array $data The data passed to the save function. * @param JTable $table The table object. * * @return boolean */ protected function onAfterSave(&$data, $table) { // Image if ($image = $this->getState('image')) { K2HelperImages::update('category', $image, $table); } // Clean up any temporary files K2HelperImages::purge('category'); // Handle trash action if ($this->getState('trash')) { // Trash all subcategories and items $categories = $this->getTable(); $tree = $categories->getTree($table->id); foreach ($tree as $category) { if ($category->id != $table->id) { $subcategory = $this->getTable(); $subcategory->load($category->id); $subcategory->state = -1; $subcategory->store(); } $this->trashItems($category->id); } } if (!$table->rebuildPath($table->id)) { $this->setError($table->getError()); return false; } if (!$table->rebuild($table->id, $table->lft, $table->level, $table->path)) { $this->setError($table->getError()); return false; } // Handle associations if (JLanguageAssociations::isEnabled() && isset($data['associations'])) { // Get associations input $associations = $data['associations']; // Sanitize array with empty values foreach ($associations as $languageTag => $itemId) { if (empty($itemId)) { unset($associations[$languageTag]); } } // Ensure that the item does not have associations when it's language is set to "All" if ($table->language == '*' && !empty($associations)) { $associations = array(); } // Add current item to associations $associations[$table->language] = $table->id; // Deleting old association for affected items $db = JFactory::getDbo(); $query = $db->getQuery(true)->delete($db->quoteName('#__associations'))->where($db->quoteName('context') . ' = ' . $db->quote('com_k2.category'))->where($db->quoteName('id') . ' IN (' . implode(',', $associations) . ')'); $db->setQuery($query); $db->execute(); if ($table->language != '*' && count($associations)) { // Adding new association for these items $key = md5(json_encode($associations)); $query->clear()->insert($db->quoteName('#__associations')); foreach ($associations as $id) { $query->values((int) $id . ',' . $db->quote('com_k2.category') . ',' . $db->quote($key)); } $db->setQuery($query); $db->execute(); } } return true; }