コード例 #1
0
 /**
  * Check that the directory exists and is writable, creating it if needed.
  *
  * @throws
  *  \ModuleBuilder\Exception
  */
 function prepareDirectory($directory)
 {
     // Because we may have an absolute path whose base folders are not writable
     // we can't use the standard recursive D6 pattern.
     $pieces = explode('/', $directory);
     // Work up through the folder's parentage until we find a directory that exists.
     // (Or in other words, backwards in the array of pieces.)
     $length = count($pieces);
     for ($i = 0; $i < $length; $i++) {
         //print $pieces[$length - $i];
         $slice = array_slice($pieces, 0, $length - $i);
         $path_slice = implode('/', $slice);
         if (file_exists($path_slice)) {
             $status = file_check_directory($path_slice, FILE_CREATE_DIRECTORY);
             break;
         }
     }
     // If we go right the way along to the base and still can't create a directory...
     if ($i == $length) {
         throw new \ModuleBuilder\Exception("The directory {$path_slice} cannot be created or is not writable.");
     }
     // print "status: $status for $path_slice - i: $i\n";
     // Now work back down (or in other words, along the array of pieces).
     for ($j = $length - $i; $j < $length; $j++) {
         $slice[] = $pieces[$j];
         $path_slice = implode('/', $slice);
         //print "$path_slice\n";
         $status = file_check_directory($path_slice, FILE_CREATE_DIRECTORY);
     }
     if (!$status) {
         throw new \ModuleBuilder\Exception("The hooks directory cannot be created or is not writable.");
     }
 }
コード例 #2
0
 /**
  * 'upload_zip' upload field must refer to a zip file containing 
  *   all files for the pubnode (may be at top-level or inside a subdirectory)
  */
 public function import(&$form_state, $docid = NULL)
 {
     $validators = array('file_validate_extensions' => array('zip'), 'file_validate_size' => array(100000000, 0));
     if ($file = file_save_upload($this->fieldname, $validators, file_directory_temp(), FILE_EXISTS_REPLACE)) {
         $zip = new ZipArchive();
         if ($zip->open($file->filepath) !== TRUE) {
             form_set_error(t("Cannot open !file", array("!file" => $file->filename)), 'error');
             return FALSE;
         }
         // else
         if (empty($docid)) {
             $docid = $this->hashFile($file->filepath);
         }
         $pubpath = $this->constructPubPath($docid);
         //drupal_set_message("PUBPATH: " . $pubpath);
         file_check_directory($pubpath, FILE_CREATE_DIRECTORY);
         $zip->extractTo($pubpath);
         drupal_set_message(t("Extracted !num files to directory !dir", array('!num' => $zip->numFiles, '!dir' => $pubpath)));
         $zip->close();
         $this->pubpath = $pubpath;
         return TRUE;
     }
     // else validations failed and error message will be set by upload function
     return FALSE;
 }
コード例 #3
0
ファイル: theme-settings.php プロジェクト: szczym/tutturu
/**
 * Implementation of hook_settings() for themes.
 */
function singular_settings($settings)
{
    // Add js & css
    drupal_add_css('misc/farbtastic/farbtastic.css', 'module', 'all', FALSE);
    drupal_add_js('misc/farbtastic/farbtastic.js');
    drupal_add_js(drupal_get_path('theme', 'singular') . '/js/settings.js');
    drupal_add_css(drupal_get_path('theme', 'singular') . '/css/settings.css');
    file_check_directory(file_directory_path(), FILE_CREATE_DIRECTORY, 'file_directory_path');
    // Check for a new uploaded logo, and use that instead.
    if ($file = file_save_upload('background_file', array('file_validate_is_image' => array()))) {
        $parts = pathinfo($file->filename);
        $filename = 'singular_background.' . $parts['extension'];
        if (file_copy($file, $filename, FILE_EXISTS_REPLACE)) {
            $settings['background_path'] = $file->filepath;
        }
    }
    $form = array();
    $form['layout'] = array('#title' => t('Layout'), '#type' => 'select', '#options' => array('fixed' => t('Fixed width'), 'fluid' => t('Fluid width')), '#default_value' => !empty($settings['layout']) ? $settings['layout'] : 'fixed');
    $form['messages'] = array('#type' => 'fieldset', '#tree' => FALSE, '#title' => t('Autoclose messages'), '#descriptions' => t('Select the message types to close automatically after a few seconds.'));
    $form['messages']['autoclose'] = array('#type' => 'checkboxes', '#options' => array('status' => t('Status'), 'warning' => t('Warning'), 'error' => t('Error')), '#default_value' => !empty($settings['autoclose']) ? $settings['autoclose'] : array('status'));
    $form['style'] = array('#title' => t('Styles'), '#type' => 'select', '#options' => singular_get_styles(), '#default_value' => !empty($settings['style']) ? $settings['style'] : 'sea');
    $form['custom'] = array('#tree' => FALSE, '#type' => 'fieldset', '#attributes' => array('class' => $form['style']['#default_value'] == 'custom' ? 'singular-custom-settings' : 'singular-custom-settings hidden'));
    $form['custom']['background_file'] = array('#type' => 'file', '#title' => t('Background image'), '#maxlength' => 40);
    if (!empty($settings['background_path'])) {
        $form['custom']['background_preview'] = array('#type' => 'markup', '#value' => !empty($settings['background_path']) ? theme('image', $settings['background_path'], NULL, NULL, array('width' => '100'), FALSE) : '');
    }
    $form['custom']['background_path'] = array('#type' => 'value', '#value' => !empty($settings['background_path']) ? $settings['background_path'] : '');
    $form['custom']['background_color'] = array('#title' => t('Background color'), '#type' => 'textfield', '#size' => '7', '#maxlength' => '7', '#default_value' => !empty($settings['background_color']) ? $settings['background_color'] : '#888888', '#suffix' => '<div id="singular-colorpicker"></div>');
    $form['custom']['background_repeat'] = array('#title' => t('Tile'), '#type' => 'select', '#options' => array('no-repeat' => t('Don\'t tile'), 'repeat-x' => t('Horizontal'), 'repeat-y' => t('Vertical'), 'repeat' => t('Both')), '#default_value' => !empty($settings['background_repeat']) ? $settings['background_repeat'] : 'no-repeat');
    return $form;
}
コード例 #4
0
 public function import(&$form_state, $docid = NULL)
 {
     $url = $form_state['values'][$this->fieldname];
     if (empty($url)) {
         return FALSE;
     }
     $response = drupal_http_request($url);
     // drupal_set_message("URL request ($url) returned status code $response->code.");
     if ($response->code != 200) {
         drupal_set_message("URL request ({$url}) returned unexpected status code {$response->code}.", 'error');
         return FALSE;
     }
     // else
     $content = $response->data;
     if (empty($docid)) {
         $docid = hash($this->hashAlgorithm, $content);
     }
     $pubpath = $this->constructPubPath($docid);
     file_check_directory($pubpath, FILE_CREATE_DIRECTORY);
     $savename = $this->savename;
     if (empty($savename)) {
         $savename = preg_replace('{[\\#\\?].*\\Z}', '', $url);
         $savename = preg_replace('{\\.([^.])+\\Z}', '\\#$1', $savename);
         $savename = preg_replace('/[^a-zA-Z0-9_\\#-]/', '_', $savename);
         $savename = preg_replace('/\\#/', '.', $savename);
     }
     $destfile = "{$pubpath}/{$savename}";
     file_save_data($content, $destfile, FILE_EXISTS_REPLACE);
     drupal_set_message(t("Saved !num bytes to file !file", array('!num' => strlen($content), '!file' => $destfile)));
     $this->pubpath = $pubpath;
     $this->docpath = $savename;
     return TRUE;
 }
コード例 #5
0
ファイル: template.php プロジェクト: upei/drupal6-cms
function sunshine_build_css_cache($css_files)
{
    $data = '';
    // Create the css/ within the files folder.
    $csspath = file_create_path('css');
    $orgpath = drupal_get_path('theme', 'sunshine') . '/css/';
    file_check_directory($csspath, FILE_CREATE_DIRECTORY);
    // Build aggregate CSS file.
    foreach ($css_files as $key => $file) {
        $contents = drupal_load_stylesheet($orgpath . $file, TRUE);
        // Return the path to where this CSS file originated from.
        $base = base_path() . $orgpath;
        _drupal_build_css_path(NULL, $base);
        // Prefix all paths within this CSS file, ignoring external and absolute paths.
        $data .= preg_replace_callback('/url\\([\'"]?(?![a-z]+:|\\/+)([^\'")]+)[\'"]?\\)/i', '_drupal_build_css_path', $contents);
    }
    // Per the W3C specification at http://www.w3.org/TR/REC-CSS2/cascade.html#at-import,
    // @import rules must proceed any other style, so we move those to the top.
    $regexp = '/@import[^;]+;/i';
    preg_match_all($regexp, $data, $matches);
    $data = preg_replace($regexp, '', $data);
    $data = implode('', $matches[0]) . $data;
    $checksum = md5($data);
    $filename_cache = 'sunshine.cache.css';
    // Create the CSS file.
    if (!file_exists($csspath . '/' . $filename_cache) || md5(file_get_contents($csspath . '/' . $filename_cache)) != $checksum) {
        // drupal_set_message('Sunshine CSS cache has been rebuilt.');
        file_save_data($data, $csspath . '/' . $filename_cache, FILE_EXISTS_REPLACE);
    }
    return $csspath . '/' . $filename_cache;
}
コード例 #6
0
function _ad_blueprint_write_css()
{
    // Set the location of the custom.css file
    $file_path = file_directory_path() . '/ad_blueprint/custom.css';
    // If the directory doesn't exist, create it
    file_check_directory(dirname($file_path), FILE_CREATE_DIRECTORY);
    // Generate the CSS
    $file_contents = _ad_blueprint_build_css();
    $output = '<div class="description">' . t('This CSS is generated by the settings chosen above and placed in the files directory: ' . l($file_path, $file_path) . '. The file is generated each time this page (and only this page) is loaded. <strong class="marker">Make sure to refresh your page to see the changes</strong>') . '</div>';
    file_save_data($file_contents, $file_path, FILE_EXISTS_REPLACE);
    return $output;
}
コード例 #7
0
 /**
  * Generates a random database prefix and runs the install scripts on the prefixed database.
  * After installation many caches are flushed and the internal browser is setup so that the page
  * requests will run on the new prefix. A temporary files directory is created with the same name
  * as the database prefix.
  *
  * @param ... List modules to enable.
  */
 function setUp()
 {
     global $db_prefix, $simpletest_ua_key;
     if ($simpletest_ua_key) {
         $this->db_prefix_original = $db_prefix;
         $clean_url_original = variable_get('clean_url', 0);
         $db_prefix = 'simpletest' . mt_rand(1000, 1000000);
         include_once './includes/install.inc';
         drupal_install_system();
         $modules = array_unique(array_merge(func_get_args(), drupal_verify_profile('default', 'en')));
         drupal_install_modules($modules);
         $this->_modules = drupal_map_assoc($modules);
         $this->_modules['system'] = 'system';
         $task = 'profile';
         default_profile_tasks($task, '');
         menu_rebuild();
         actions_synchronize();
         _drupal_flush_css_js();
         variable_set('install_profile', 'default');
         variable_set('install_task', 'profile-finished');
         variable_set('clean_url', $clean_url_original);
         // Use temporary files directory with the same prefix as database.
         $this->original_file_directory = file_directory_path();
         variable_set('file_directory_path', file_directory_path() . '/' . $db_prefix);
         file_check_directory(file_directory_path(), TRUE);
         // Create the files directory.
     }
     parent::setUp();
 }
コード例 #8
0
 /**
  * Generates a random database prefix, runs the install scripts on the
  * prefixed database and enable the specified modules. After installation
  * many caches are flushed and the internal browser is setup so that the
  * page requests will run on the new prefix. A temporary files directory
  * is created with the same name as the database prefix.
  *
  * @param ...
  *   List of modules to enable for the duration of the test.
  */
 protected function setUp()
 {
     global $db_prefix;
     // Store necessary current values before switching to prefixed database.
     $this->originalPrefix = $db_prefix;
     $clean_url_original = variable_get('clean_url', 0);
     // Generate temporary prefixed database to ensure that tests have a clean starting point.
     $db_prefix = Database::getActiveConnection()->prefixTables('{simpletest' . mt_rand(1000, 1000000) . '}');
     include_once DRUPAL_ROOT . '/includes/install.inc';
     drupal_install_system();
     $this->preloadRegistry();
     // Add the specified modules to the list of modules in the default profile.
     $args = func_get_args();
     $modules = array_unique(array_merge(drupal_get_profile_modules('default', 'en'), $args));
     drupal_install_modules($modules);
     // Because the schema is static cached, we need to flush
     // it between each run.  If we don't, then it will contain
     // stale data for the previous run's database prefix and all
     // calls to it will fail.
     drupal_get_schema(NULL, TRUE);
     // Run default profile tasks.
     $task = 'profile';
     default_profile_tasks($task, '');
     // Rebuild caches.
     actions_synchronize();
     _drupal_flush_css_js();
     $this->refreshVariables();
     $this->checkPermissions(array(), TRUE);
     // Restore necessary variables.
     variable_set('install_profile', 'default');
     variable_set('install_task', 'profile-finished');
     variable_set('clean_url', $clean_url_original);
     variable_set('site_mail', '*****@*****.**');
     // Use temporary files directory with the same prefix as database.
     $this->originalFileDirectory = file_directory_path();
     variable_set('file_directory_path', file_directory_path() . '/' . $db_prefix);
     $directory = file_directory_path();
     file_check_directory($directory, FILE_CREATE_DIRECTORY);
     // Create the files directory.
 }
コード例 #9
0
/**
 * Prepare a CCK field array for use with Devel Generate.
 *
 * @return
 *   A keyed array with keys defined as necessary for the $field array passed
 *   to your modules implementation of Devel Generates hook_content_generate().
 */
function hook_custom_formatters_field_prepare()
{
    file_check_directory($path = file_directory_path() . '/._tmp.custom_formatters', TRUE);
    return array('widget' => array('file_extensions' => 'jpg png', 'file_path' => '._tmp.custom_formatters'));
}
コード例 #10
0
ファイル: banner-img.php プロジェクト: hiob1989/m4Music
<?php

require_once '../../includes/bootstrap.inc';
require_once '../../includes/common.inc';
require_once '../../includes/module.inc';
$file_types = array('gif' => 'image/gif', 'jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'png' => 'image/png');
/**
 * randomly select an image from the current directory and return it
 */
$cached = 0;
$origin = '';
if (module_exists('imagecache')) {
    $directory = base_path() . '/' . file_directory_path() . '/banners/';
    $origin = $directory;
    file_check_directory($directory, FILE_CREATE_DIRECTORY);
    $presetname = 'm4music_banner_image';
    $preset = imagecache_preset_by_name($presetname);
    while (FALSE !== ($file = readdir($directory))) {
        if (preg_match($regex, $file)) {
            $cached = 1;
        }
    }
    if (!$cached) {
        $directory = opendir("./banners/");
        $origin = "./banners/";
    } else {
        $directory = opendir($origin);
    }
} else {
    $directory = opendir("./banners/");
    $origin = "./banners/";
コード例 #11
0
 /**
  * Generates a random database prefix, runs the install scripts on the
  * prefixed database and enable the specified modules. After installation
  * many caches are flushed and the internal browser is setup so that the
  * page requests will run on the new prefix. A temporary files directory
  * is created with the same name as the database prefix.
  *
  * @param ...
  *   List of modules to enable for the duration of the test.
  */
 protected function setUp()
 {
     global $db_prefix, $user, $language;
     // Store necessary current values before switching to prefixed database.
     $this->originalLanguage = $language;
     $this->originalLanguageDefault = variable_get('language_default');
     $this->originalPrefix = $db_prefix;
     $this->originalFileDirectory = file_directory_path();
     $clean_url_original = variable_get('clean_url', 0);
     // Generate temporary prefixed database to ensure that tests have a clean starting point.
     $db_prefix = Database::getConnection()->prefixTables('{simpletest' . mt_rand(1000, 1000000) . '}');
     include_once DRUPAL_ROOT . '/includes/install.inc';
     drupal_install_system();
     $this->preloadRegistry();
     // Add the specified modules to the list of modules in the default profile.
     // Install the modules specified by the default profile.
     $core_modules = drupal_get_profile_modules('default', 'en');
     drupal_install_modules($core_modules, TRUE);
     node_type_clear();
     // Install additional modules one at a time in order to make sure that the
     // list of modules is updated between each module's installation.
     $modules = func_get_args();
     foreach ($modules as $module) {
         drupal_install_modules(array($module), TRUE);
     }
     // Because the schema is static cached, we need to flush
     // it between each run. If we don't, then it will contain
     // stale data for the previous run's database prefix and all
     // calls to it will fail.
     drupal_get_schema(NULL, TRUE);
     // Run default profile tasks.
     $task = 'profile';
     default_profile_tasks($task, '');
     // Rebuild caches.
     node_types_rebuild();
     actions_synchronize();
     _drupal_flush_css_js();
     $this->refreshVariables();
     $this->checkPermissions(array(), TRUE);
     // Log in with a clean $user.
     $this->originalUser = $user;
     drupal_save_session(FALSE);
     $user = user_load(1);
     // Restore necessary variables.
     variable_set('install_profile', 'default');
     variable_set('install_task', 'profile-finished');
     variable_set('clean_url', $clean_url_original);
     variable_set('site_mail', '*****@*****.**');
     // Set up English language.
     unset($GLOBALS['conf']['language_default']);
     $language = language_default();
     // Make sure our drupal_mail_wrapper function is called instead of the
     // default mail handler.
     variable_set('smtp_library', drupal_get_path('module', 'simpletest') . '/drupal_web_test_case.php');
     // Use temporary files directory with the same prefix as database.
     variable_set('file_directory_path', $this->originalFileDirectory . '/' . $db_prefix);
     $directory = file_directory_path();
     // Create the files directory.
     file_check_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
     set_time_limit($this->timeLimit);
 }
コード例 #12
0
 /**
  * Generates a random database prefix, runs the install scripts on the
  * prefixed database and enable the specified modules. After installation
  * many caches are flushed and the internal browser is setup so that the
  * page requests will run on the new prefix. A temporary files directory
  * is created with the same name as the database prefix.
  *
  * @param ...
  *   List of modules to enable for the duration of the test.
  */
 protected function setUp()
 {
     global $db_prefix, $user, $language;
     // Store necessary current values before switching to prefixed database.
     $this->originalLanguage = $language;
     //    $this->originalLanguageDefault = variable_get('language_default');
     $this->originalPrefix = $db_prefix;
     $this->originalFileDirectory = file_directory_path();
     //    $this->originalProfile = drupal_get_profile();
     $clean_url_original = variable_get('clean_url', 0);
     // Must reset locale here, since schema calls t(). (Drupal 6)
     if (module_exists('locale')) {
         $language = (object) array('language' => 'en', 'name' => 'English', 'native' => 'English', 'direction' => 0, 'enabled' => 1, 'plurals' => 0, 'formula' => '', 'domain' => '', 'prefix' => '', 'weight' => 0, 'javascript' => '');
         locale(NULL, NULL, TRUE);
     }
     // Generate temporary prefixed database to ensure that tests have a clean starting point.
     //    $db_prefix_new = Database::getConnection()->prefixTables('{simpletest' . mt_rand(1000, 1000000) . '}');
     $db_prefix_new = $db_prefix . 'simpletest' . mt_rand(1000, 1000000);
     // Workaround to insure we init the theme layer before going into prefixed
     // environment. (Drupal 6)
     $this->pass(t('Starting run with db_prefix %prefix', array('%prefix' => $db_prefix_new)), 'System');
     //    db_update('simpletest_test_id')
     //      ->fields(array('last_prefix' => $db_prefix_new))
     //      ->condition('test_id', $this->testId)
     //      ->execute();
     db_query("UPDATE {simpletest_test_id}\n              SET last_prefix = '%s'\n              WHERE test_id = %d", $db_prefix_new, $this->testId);
     $db_prefix = $db_prefix_new;
     // Create test directory ahead of installation so fatal errors and debug
     // information can be logged during installation process.
     $directory = $this->originalFileDirectory . '/simpletest/' . substr($db_prefix, 10);
     //    file_prepare_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
     file_check_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
     // Log fatal errors.
     ini_set('log_errors', 1);
     ini_set('error_log', $directory . '/error.log');
     //    include_once DRUPAL_ROOT . '/includes/install.inc';
     include_once './includes/install.inc';
     drupal_install_system();
     //    $this->preloadRegistry();
     //    // Include the default profile
     //    variable_set('install_profile', 'default');
     //    $profile_details = install_profile_info('default', 'en');
     // Add the specified modules to the list of modules in the default profile.
     // Install the modules specified by the default profile.
     //    drupal_install_modules($profile_details['dependencies'], TRUE);
     drupal_install_modules(drupal_verify_profile('default', 'en'));
     //    node_type_clear();
     // Install additional modules one at a time in order to make sure that the
     // list of modules is updated between each module's installation.
     $modules = func_get_args();
     foreach ($modules as $module) {
         //      drupal_install_modules(array($module), TRUE);
         drupal_install_modules(array($module));
     }
     // Because the schema is static cached, we need to flush
     // it between each run. If we don't, then it will contain
     // stale data for the previous run's database prefix and all
     // calls to it will fail.
     drupal_get_schema(NULL, TRUE);
     // Run default profile tasks.
     //    $install_state = array();
     //    drupal_install_modules(array('default'), TRUE);
     $task = 'profile';
     default_profile_tasks($task, '');
     // Rebuild caches.
     //    node_types_rebuild();
     actions_synchronize();
     _drupal_flush_css_js();
     $this->refreshVariables();
     $this->checkPermissions(array(), TRUE);
     user_access(NULL, NULL, TRUE);
     // Drupal 6.
     // Log in with a clean $user.
     $this->originalUser = $user;
     //    drupal_save_session(FALSE);
     //    $user = user_load(1);
     session_save_session(FALSE);
     $user = user_load(array('uid' => 1));
     // Restore necessary variables.
     variable_set('install_profile', 'default');
     //    variable_set('install_task', 'done');
     variable_set('install_task', 'profile-finished');
     variable_set('clean_url', $clean_url_original);
     variable_set('site_mail', '*****@*****.**');
     //    // Set up English language.
     //    unset($GLOBALS['conf']['language_default']);
     //    $language = language_default();
     // Use the test mail class instead of the default mail handler class.
     //    variable_set('mail_sending_system', array('default-system' => 'TestingMailSystem'));
     variable_set('smtp_library', drupal_get_path('module', 'simpletest') . '/simpletest.mail.inc');
     // Use temporary files directory with the same prefix as the database.
     //    $public_files_directory  = $this->originalFileDirectory . '/' . $db_prefix;
     //    $private_files_directory = $public_files_directory . '/private';
     $directory = $this->originalFileDirectory . '/' . $db_prefix;
     // Set path variables
     //    variable_set('file_public_path', $public_files_directory);
     //    variable_set('file_private_path', $private_files_directory);
     variable_set('file_directory_path', $directory);
     // Create the directories
     //    $directory = file_directory_path('public');
     //    file_prepare_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
     //    file_prepare_directory($private_files_directory, FILE_CREATE_DIRECTORY);
     file_check_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
     //    drupal_set_time_limit($this->timeLimit);
     set_time_limit($this->timeLimit);
 }
コード例 #13
0
 /**
  * Generates a random database prefix, runs the install scripts on the
  * prefixed database and enable the specified modules. After installation
  * many caches are flushed and the internal browser is setup so that the
  * page requests will run on the new prefix. A temporary files directory
  * is created with the same name as the database prefix.
  *
  * @param ...
  *   List of modules to enable for the duration of the test.
  */
 protected function setUp()
 {
     global $db_prefix, $user, $language;
     // $language (Drupal 6).
     // Store necessary current values before switching to prefixed database.
     $this->originalPrefix = $db_prefix;
     $clean_url_original = variable_get('clean_url', 0);
     // Must reset locale here, since schema calls t().  (Drupal 6)
     if (module_exists('locale')) {
         $language = (object) array('language' => 'en', 'name' => 'English', 'native' => 'English', 'direction' => 0, 'enabled' => 1, 'plurals' => 0, 'formula' => '', 'domain' => '', 'prefix' => '', 'weight' => 0, 'javascript' => '');
         locale(NULL, NULL, TRUE);
     }
     // Generate temporary prefixed database to ensure that tests have a clean starting point.
     //    $db_prefix = Database::getConnection()->prefixTables('{simpletest' . mt_rand(1000, 1000000) . '}');
     $db_prefix = 'simpletest' . mt_rand(1000, 1000000);
     //    include_once DRUPAL_ROOT . '/includes/install.inc';
     include_once './includes/install.inc';
     drupal_install_system();
     //    $this->preloadRegistry();
     // Add the specified modules to the list of modules in the default profile.
     $args = func_get_args();
     //    $modules = array_unique(array_merge(drupal_get_profile_modules('default', 'en'), $args));
     $modules = array_unique(array_merge(drupal_verify_profile('default', 'en'), $args));
     //    drupal_install_modules($modules, TRUE);
     drupal_install_modules($modules);
     // Because the schema is static cached, we need to flush
     // it between each run. If we don't, then it will contain
     // stale data for the previous run's database prefix and all
     // calls to it will fail.
     drupal_get_schema(NULL, TRUE);
     // Run default profile tasks.
     $task = 'profile';
     default_profile_tasks($task, '');
     // Rebuild caches.
     actions_synchronize();
     _drupal_flush_css_js();
     $this->refreshVariables();
     $this->checkPermissions(array(), TRUE);
     user_access(NULL, NULL, TRUE);
     // Drupal 6.
     // Log in with a clean $user.
     $this->originalUser = $user;
     //    drupal_save_session(FALSE);
     //    $user = user_load(1);
     session_save_session(FALSE);
     $user = user_load(array('uid' => 1));
     // Restore necessary variables.
     variable_set('install_profile', 'default');
     variable_set('install_task', 'profile-finished');
     variable_set('clean_url', $clean_url_original);
     variable_set('site_mail', '*****@*****.**');
     // Use temporary files directory with the same prefix as database.
     $this->originalFileDirectory = file_directory_path();
     variable_set('file_directory_path', file_directory_path() . '/' . $db_prefix);
     $directory = file_directory_path();
     // Create the files directory.
     file_check_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
     set_time_limit($this->timeLimit);
 }
コード例 #14
0
ファイル: drupal_i18n_test_case.php プロジェクト: rvilar/i18n
 /**
  * Generates a random database prefix, runs the install scripts on the
  * prefixed database and enable the specified modules. After installation
  * many caches are flushed and the internal browser is setup so that the
  * page requests will run on the new prefix. A temporary files directory
  * is created with the same name as the database prefix.
  *
  * @param ...
  *   List of modules to enable for the duration of the test.
  */
 function setUp()
 {
     global $db_prefix, $user, $language;
     // $language (Drupal 6).
     global $install_locale;
     // Store necessary current values before switching to prefixed database.
     $this->db_prefix_original = $db_prefix;
     $clean_url_original = variable_get('clean_url', 0);
     // Generate temporary prefixed database to ensure that tests have a clean starting point.
     $db_prefix = 'simpletest' . mt_rand(1000, 1000000);
     include_once './includes/install.inc';
     drupal_install_system();
     // Add the specified modules to the list of modules in the default profile.
     $args = func_get_args();
     // Add language and basic i18n modules
     $install_locale = $this->install_locale;
     $i18n_modules = array('locale', 'translation', 'i18n', 'i18n_test');
     $modules = array_unique(array_merge(drupal_verify_profile('default', $this->install_locale), $args, $i18n_modules));
     drupal_install_modules($modules);
     // Install locale
     if ($this->install_locale != 'en') {
         $this->addLanguage($this->install_locale, TRUE);
     }
     // Run default profile tasks.
     $task = 'profile';
     default_profile_tasks($task, '');
     // Rebuild caches.
     actions_synchronize();
     _drupal_flush_css_js();
     $this->refreshVariables();
     $this->checkPermissions(array(), TRUE);
     user_access(NULL, NULL, TRUE);
     // Drupal 6.
     // Log in with a clean $user.
     $this->originalUser = $user;
     //    drupal_save_session(FALSE);
     //    $user = user_load(1);
     session_save_session(FALSE);
     $user = user_load(1);
     // Restore necessary variables.
     variable_set('install_profile', 'default');
     variable_set('install_task', 'profile-finished');
     variable_set('clean_url', $clean_url_original);
     variable_set('site_mail', '*****@*****.**');
     // Use temporary files directory with the same prefix as database.
     $this->originalFileDirectory = file_directory_path();
     variable_set('file_directory_path', file_directory_path() . '/' . $db_prefix);
     $directory = file_directory_path();
     // Create the files directory.
     file_check_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
     drupal_set_time_limit($this->timeLimit);
     // Some more includes
     require_once 'includes/language.inc';
     // Refresh theme
     $this->initTheme();
     // Set path languages so we can retrieve pages in different languages
     variable_set('language_negotiation', LANGUAGE_NEGOTIATION_PATH);
 }
コード例 #15
0
ファイル: mniblogpub.php プロジェクト: freighthouse/code
/**
 * Moves a PDF file to the appropriate location
 *
 * @param string $filename
 */
function move_pdf($filename)
{
    global $mniblogpub_props;
    // Get all our names and directories
    $full_src = $mniblogpub_props["mniblogpub.shared"]["bloghome"] . "/pdfs/" . $filename;
    $orig_src = $full_src;
    $dst_dir = file_directory_path() . "/" . $mniblogpub_props["mniblogpub.php"]["dir.pdf.drupal"];
    $full_dst = $dst_dir . "/" . $filename;
    $dir_perms = !is_dir($dst_dir);
    // Check our path
    $p = file_create_path($dst_dir);
    if (!file_check_directory($p, FILE_CREATE_DIRECTORY)) {
        if (!file_check_directory($p, FILE_MODIFY_PERMISSIONS)) {
            print "ERROR: Could create pdfs directory at: " . $dst_dir . "\n";
            exit(5);
        }
    }
    if ($dir_perms) {
        if (!chgrp($dst_dir, "www-data")) {
            print "WARN: Could not change dir to www-data group. " . $dst_dir . "\n";
        }
        if (!chmod($dst_dir, 0775)) {
            print "WARN: Could not change permissions for dir. " . $dst_dir . "\n";
        }
    }
    // Error Checking
    if (!file_copy($full_src, $full_dst, FILE_EXISTS_REPLACE)) {
        print "ERROR: Could not move file " . $full_src . "\n";
        exit(5);
    }
    if (!file_exists($full_dst)) {
        print "ERROR: File not actually moved. " . $full_src . "\n";
        exit(5);
    }
    if (!chgrp($full_dst, "www-data")) {
        print "WARN: Could not change file to www-data group. " . $full_dst . "\n";
    }
    if (!chmod($full_dst, 0664)) {
        print "WARN: Could not change permissions for file. " . $full_dst . "\n";
    }
    $details = stat($full_dst);
    $file = new stdClass();
    $file->filename = basename($full_dst);
    $file->filepath = $full_dst;
    $file->filemime = file_get_mimetype($full_dst);
    $file->filesize = $details['size'];
    $file->filesource = basename($full_dst);
    $file->uid = $mniblogpub_props["mniblogpub.php"]["user.use"] == 1 ? $mniblogpub_props["mniblogpub.php"]["user.id"] : 1;
    $file->status = FILE_STATUS_PERMANENT;
    $file->timestamp = time();
    $file->list = 1;
    $file->new = true;
    drupal_write_record('files', $file);
    if ($file != null && $file) {
        if (!unlink($orig_src)) {
            // !!! NOTE:
            // I don't think it's necessary to exit out here. I'm
            // commenting this out for now. If it causes errors later,
            // come back here. -Gerg
            // print "ERROR: Could not remove src file at: " . $orig_src;
            // exit(5);
            print "WARN: Could not remove src file at: " . $orig_src . "\n";
        }
    } else {
        print "ERROR: Error saving file object in Drupal. " . $full_src . "\n";
        exit(5);
    }
    file_set_status($file, 1);
    return $file;
}
コード例 #16
0
ファイル: coder_format.php プロジェクト: NeformatDev/v2
/**
 * Checks path to see if it is a directory, or a dir/file.
 *
 * @param $path A string containing a file path. This will be set to the
 *   directory's path.
 * @return If the directory is not in a Drupal writable directory, FALSE is
 *   returned. Otherwise, the base name of the path is returned.
 */
function file_check_path(&$path)
{
    // Check if path is a directory.
    // coder_format uses file_check_path() to check for files only. 26/01/2008 sun
    // Check if path is a possible dir/file.
    $filename = basename($path);
    $path = dirname($path);
    if (file_check_directory($path)) {
        return $filename;
    }
    return FALSE;
}
コード例 #17
0
 /**
  * Installs Atrium instead of Drupal
  * 
  * Generates a random database prefix, runs the install scripts on the
  * prefixed database and enable the specified modules. After installation
  * many caches are flushed and the internal browser is setup so that the
  * page requests will run on the new prefix. A temporary files directory
  * is created with the same name as the database prefix.
  *
  * @param ...
  *   List of modules to enable for the duration of the test.
  */
 protected function setUp()
 {
     global $db_prefix, $user, $language, $profile, $install_locale;
     // $language (Drupal 6).
     // Store necessary current values before switching to prefixed database.
     $this->originalPrefix = $db_prefix;
     $this->originalLanguage = clone $language;
     $clean_url_original = variable_get('clean_url', 0);
     // Must reset locale here, since schema calls t().  (Drupal 6)
     if (module_exists('locale')) {
         $language = (object) array('language' => 'en', 'name' => 'English', 'native' => 'English', 'direction' => 0, 'enabled' => 1, 'plurals' => 0, 'formula' => '', 'domain' => '', 'prefix' => '', 'weight' => 0, 'javascript' => '');
         locale(NULL, NULL, TRUE);
     }
     // Generate temporary prefixed database to ensure that tests have a clean starting point.
     //    $db_prefix = Database::getConnection()->prefixTables('{simpletest' . mt_rand(1000, 1000000) . '}');
     $db_prefix = 'simpletest' . mt_rand(1000, 1000000);
     $install_locale = $this->install_locale;
     $profile = $this->install_profile;
     //    include_once DRUPAL_ROOT . '/includes/install.inc';
     include_once './includes/install.inc';
     drupal_install_system();
     //    $this->preloadRegistry();
     // Set up theme system for the maintenance page.
     // Otherwise we have trouble: https://ds.openatrium.com/dsi/node/18426#comment-38118
     // @todo simpletest module patch
     drupal_maintenance_theme();
     // Add the specified modules to the list of modules in the default profile.
     $args = func_get_args();
     //    $modules = array_unique(array_merge(drupal_get_profile_modules('default', 'en'), $args));
     $modules = array_unique(array_merge(drupal_verify_profile($this->install_profile, $this->install_locale), $args));
     //    drupal_install_modules($modules, TRUE);
     drupal_install_modules($modules);
     // Because the schema is static cached, we need to flush
     // it between each run. If we don't, then it will contain
     // stale data for the previous run's database prefix and all
     // calls to it will fail.
     drupal_get_schema(NULL, TRUE);
     if ($this->install_profile == 'openatrium') {
         // Download and import translation if needed
         if ($this->install_locale != 'en') {
             $this->installLanguage($this->install_locale);
         }
         // Install more modules
         $modules = _openatrium_atrium_modules();
         drupal_install_modules($modules);
         // Configure intranet
         // $profile_tasks = $this->install_profile . '_profile_tasks';
         _openatrium_intranet_configure();
         _openatrium_intranet_configure_check();
         variable_set('atrium_install', 1);
         // Clear views cache before rebuilding menu tree. Requires patch
         // [patch_here] to Views, as new modules have been included and
         // default views need to be re-detected.
         module_exists('views') ? views_get_all_views(TRUE) : TRUE;
         menu_rebuild();
     }
     _drupal_flush_css_js();
     $this->refreshVariables();
     $this->checkPermissions(array(), TRUE);
     user_access(NULL, NULL, TRUE);
     // Drupal 6.
     // Log in with a clean $user.
     $this->originalUser = $user;
     //    drupal_save_session(FALSE);
     //    $user = user_load(1);
     session_save_session(FALSE);
     $user = user_load(array('uid' => 1));
     // Restore necessary variables.
     variable_set('install_profile', $this->install_profile);
     variable_set('install_task', 'profile-finished');
     variable_set('clean_url', $clean_url_original);
     variable_set('site_mail', '*****@*****.**');
     // Use temporary files directory with the same prefix as database.
     $this->originalFileDirectory = file_directory_path();
     variable_set('file_directory_path', file_directory_path() . '/' . $db_prefix);
     $directory = file_directory_path();
     // Create the files directory.
     file_check_directory($directory, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
     set_time_limit($this->timeLimit);
 }
コード例 #18
0
$issue->changed = $issue->created;
$issue->format = 5;
// Markdown, allows filtered HTML, as well.
$issue->comment = 2;
// Allow comments, otherwise they're invisible!
if ($private) {
    $issue->private = 1;
}
node_save($issue);
$nid = $issue->nid;
if ($validation || $configcheck || $collected) {
    // Process attachments
    $issue_dir = variable_get('project_directory_issues', 'issues');
    $dest = file_directory_path() . '/' . $issue_dir;
    // Drupal's standard files path
    if (!file_check_directory($dest)) {
        echo "<br>Error processing attachments.  Event has been logged and an administrator notified.\n";
        error_log("Attachment directory {$dest} does not exist or is not writable.");
        exit;
    }
    foreach (array($validation, $configcheck, $collected) as $attachment) {
        if (empty($attachment)) {
            continue;
        }
        // Generate a randomish unique file name
        $file_id = $nid . "_" . time() . posix_getpid() . ++$acount;
        // Save the file and put the path into $file
        $file = file_save_data($attachment, "{$dest}/{$file_id}", $replace = FILE_EXISTS_RENAME);
        // Make it a node in Drupal
        // Get the file size
        $details = stat($file);