Exemple #1
0
 /**
  * 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;
 }
Exemple #2
0
 /**
  * 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;
 }