diff --git a/services.module b/services.module index ef61beaa372c0c4e5a7fe389865181a56b9f7a86..adb3e35a555810489bd7a00c0e17b82e8c398b1f 100644 --- a/services.module +++ b/services.module @@ -675,6 +675,12 @@ function services_get_all($include_resources = TRUE, $reset = FALSE) { $cache_key = 'services:methods'. ($include_resources?'_with_resources':''); if (!$reset && ($cache = cache_get($cache_key)) && isset($cache->data)) { + // This code is copied from this D7 patch http://drupal.org/node/718636 + // and is required because under certain caching circumstances, cache_get + // does not unserialize the data it returns. + if (!is_array($cache->data)) { + $cache->data = unserialize($cache->data); + } return $cache->data; } else { diff --git a/services/file_service/file_service.inc b/services/file_service/file_service.inc index 07a09f109540fd65f388d7f644e5c0089bc052bb..ba2254e43a93a91f37010b22a3566895d93d68cd 100644 --- a/services/file_service/file_service.inc +++ b/services/file_service/file_service.inc @@ -85,7 +85,11 @@ function file_service_save($file) { // Update file object as necessary $file->filepath = file_destination(file_create_path($file->filepath), FILE_EXISTS_RENAME); - $file->filename = file_munge_filename(trim(basename($file->filepath), '.'), $extensions, TRUE); + // If filename has not been specified extract it from filepath. + if ((!isset($file->filename)) || (empty($file->filename))) { + $file->filename = trim(basename($file->filepath), '.'); + } + $file->filename = file_munge_filename($file->filename, $extensions, TRUE); $file->filemime = file_get_mimetype($file->filename); // Rename potentially executable files, to help prevent exploits.