From 625cf954e8ec39faf4cb5e517729de92a64e07ed Mon Sep 17 00:00:00 2001 From: webchick Date: Fri, 11 Nov 2011 20:41:16 -0800 Subject: Issue #1006714 by Steven Jones, chx, mr.baileys, xjm, carlos8f: Fixed drupal_get_path() doesn't work for profiles. --- includes/bootstrap.inc | 5 +++++ modules/simpletest/tests/bootstrap.test | 12 +++++++++++- scripts/test.script | 4 ++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 scripts/test.script diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc index 78f54de04..0a18d22bd 100644 --- a/includes/bootstrap.inc +++ b/includes/bootstrap.inc @@ -828,6 +828,11 @@ function drupal_get_filename($type, $name, $filename = NULL) { // drupal_static(). static $files = array(), $dirs = array(); + // Profiles are a special case: they have a fixed location and naming. + if ($type == 'profile') { + $profile_filename = "profiles/$name/$name.profile"; + $files[$type][$name] = file_exists($profile_filename) ? $profile_filename : FALSE; + } if (!isset($files[$type])) { $files[$type] = array(); } diff --git a/modules/simpletest/tests/bootstrap.test b/modules/simpletest/tests/bootstrap.test index cb4fe8e2a..014fc9488 100644 --- a/modules/simpletest/tests/bootstrap.test +++ b/modules/simpletest/tests/bootstrap.test @@ -350,8 +350,18 @@ class BootstrapGetFilenameTestCase extends DrupalUnitTestCase { // Retrieving the location of a theme engine. $this->assertIdentical(drupal_get_filename('theme_engine', 'phptemplate'), 'themes/engines/phptemplate/phptemplate.engine', t('Retrieve theme engine location.')); - // Retrieving a file that is definitely not stored in the database. + // Retrieving the location of a profile. Profiles are a special case with + // a fixed location and naming. $this->assertIdentical(drupal_get_filename('profile', 'standard'), 'profiles/standard/standard.profile', t('Retrieve install profile location.')); + + // When a file is not found in the database cache, drupal_get_filename() + // searches several locations on the filesystem, including the DRUPAL_ROOT + // directory. We use the '.script' extension below because this is a + // non-existent filetype that will definitely not exist in the database. + // Since there is already a scripts directory, drupal_get_filename() will + // automatically check there for 'script' files, just as it does for (e.g.) + // 'module' files in modules. + $this->assertIdentical(drupal_get_filename('script', 'test'), 'scripts/test.script', t('Retrieve test script location.')); } } diff --git a/scripts/test.script b/scripts/test.script new file mode 100644 index 000000000..a45f3f0c6 --- /dev/null +++ b/scripts/test.script @@ -0,0 +1,4 @@ +This file is for testing purposes only. + +It is used to test the functionality of drupal_get_filename(). See +BootstrapGetFilenameTestCase::testDrupalGetFilename() for more information. -- cgit v1.2.3