/** * @inheritDoc IElementType::saveElement() * * @param BaseElementModel $element * @param array $params * * @return bool */ public function saveElement(BaseElementModel $element, $params) { // Is the filename changing? if (!empty($params['filename']) && $params['filename'] != $element->filename) { // Validate the content before we do anything drastic if (!craft()->content->validateContent($element)) { return false; } $oldFilename = $element->filename; $newFilename = $params['filename']; // Rename the file $response = craft()->assets->renameFile($element, $newFilename); // Did it work? if ($response->isConflict()) { $element->addError('filename', $response->getDataItem('prompt')->message); return false; } if ($response->isError()) { $element->addError('filename', $response->errorMessage); return false; } } else { $newFilename = null; } $success = parent::saveElement($element, $params); if (!$success && $newFilename) { // Better rename it back craft()->assets->renameFile($element, $oldFilename); } return $success; }