From af0ce6015f0bc4fb3b986b1f6d22a3c6558b5072 Mon Sep 17 00:00:00 2001 From: btopro Date: Mon, 20 Oct 2014 09:00:32 -0400 Subject: [PATCH 01/12] patches to apply and review performance gains --- ...-92-block_cache_node_grant_bypass-d7.patch | 59 +++ .../D7-2263365-17a-module_implements.patch | 121 +++++++ _PATCHES/PATCHES.txt | 11 + ...-1710656-3-skip-hidden-menu-items-D7.patch | 16 + .../drupal-2193149-3-cache_field-lock.patch | 82 +++++ .../drupal-2222635-26-rename-truncate.patch | 55 +++ ...2289493-3-image_get_info-filesize-D7.patch | 15 + ...2336521-33-mysqli-async-cache_set-D7.patch | 338 ++++++++++++++++++ ...upal-261148-65-menu_get_ancestors-D7.patch | 24 ++ 9 files changed, 721 insertions(+) create mode 100644 _PATCHES/1930960-92-block_cache_node_grant_bypass-d7.patch create mode 100644 _PATCHES/D7-2263365-17a-module_implements.patch create mode 100644 _PATCHES/PATCHES.txt create mode 100644 _PATCHES/drupal-1710656-3-skip-hidden-menu-items-D7.patch create mode 100644 _PATCHES/drupal-2193149-3-cache_field-lock.patch create mode 100644 _PATCHES/drupal-2222635-26-rename-truncate.patch create mode 100644 _PATCHES/drupal-2289493-3-image_get_info-filesize-D7.patch create mode 100644 _PATCHES/drupal-2336521-33-mysqli-async-cache_set-D7.patch create mode 100644 _PATCHES/drupal-261148-65-menu_get_ancestors-D7.patch diff --git a/_PATCHES/1930960-92-block_cache_node_grant_bypass-d7.patch b/_PATCHES/1930960-92-block_cache_node_grant_bypass-d7.patch new file mode 100644 index 00000000000..a8b0a497bf5 --- /dev/null +++ b/_PATCHES/1930960-92-block_cache_node_grant_bypass-d7.patch @@ -0,0 +1,59 @@ +diff --git a/modules/block/block.module b/modules/block/block.module +index 2977ca8..b6a7332 100644 +--- a/modules/block/block.module ++++ b/modules/block/block.module +@@ -848,10 +848,19 @@ function block_block_list_alter(&$blocks) { + * An array of visible blocks as expected by drupal_render(). + */ + function _block_render_blocks($region_blocks) { +- // Block caching is not compatible with node access modules. We also +- // preserve the submission of forms in blocks, by fetching from cache only ++ $cacheable = TRUE; ++ ++ // We preserve the submission of forms in blocks, by fetching from cache only + // if the request method is 'GET' (or 'HEAD'). +- $cacheable = !count(module_implements('node_grants')) && ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'HEAD'); ++ if ($_SERVER['REQUEST_METHOD'] != 'GET' && $_SERVER['REQUEST_METHOD'] != 'HEAD') { ++ $cacheable = FALSE; ++ } ++ // Block caching is not usually compatible with node access modules, so by ++ // default it is disabled when node access modules exist. However, it can be ++ // allowed by using the variable 'block_cache_bypass_node_grants'. ++ elseif (!variable_get('block_cache_bypass_node_grants', FALSE) && count(module_implements('node_grants'))) { ++ $cacheable = FALSE; ++ } + + // Proceed to loop over all blocks in order to compute their respective cache + // identifiers; this allows us to do one single cache_get_multiple() call +@@ -1054,7 +1063,7 @@ function block_menu_delete($menu) { + * Implements hook_form_FORM_ID_alter(). + */ + function block_form_system_performance_settings_alter(&$form, &$form_state) { +- $disabled = count(module_implements('node_grants')); ++ $disabled = (!variable_get('block_cache_bypass_node_grants', FALSE) && count(module_implements('node_grants'))); + $form['caching']['block_cache'] = array( + '#type' => 'checkbox', + '#title' => t('Cache blocks'), +diff --git a/sites/default/default.settings.php b/sites/default/default.settings.php +index 580cc38..e296b09 100644 +--- a/sites/default/default.settings.php ++++ b/sites/default/default.settings.php +@@ -433,6 +433,18 @@ ini_set('session.cookie_lifetime', 2000000); + # $conf['js_gzip_compression'] = FALSE; + + /** ++ * Block caching: ++ * ++ * Block caching may not be compatible with node access modules depending on ++ * how the original block cache policy is defined by the module that provides ++ * the block. By default, Drupal therefore disables block caching when one or ++ * more modules implement hook_node_grants(). If you consider block caching to ++ * be safe on your site and want to bypass this restriction, uncomment the line ++ * below. ++ */ ++# $conf['block_cache_bypass_node_grants'] = TRUE; ++ ++/** + * String overrides: + * + * To override specific strings on your site with or without enabling the Locale diff --git a/_PATCHES/D7-2263365-17a-module_implements.patch b/_PATCHES/D7-2263365-17a-module_implements.patch new file mode 100644 index 00000000000..90395c40b4b --- /dev/null +++ b/_PATCHES/D7-2263365-17a-module_implements.patch @@ -0,0 +1,121 @@ +diff --git a/includes/module.inc b/includes/module.inc +index fe2a980..0c06609 100644 +--- a/includes/module.inc ++++ b/includes/module.inc +@@ -676,17 +676,21 @@ function module_hook($module, $hook) { + /** + * Determines which modules are implementing a hook. + * +- * @param $hook ++ * Lazy-loaded include files specified with "group" via hook_hook_info() or ++ * hook_module_implements_alter() will be automatically included as part of ++ * module_implements(*, *, FALSE). ++ * ++ * @param string $hook + * The name of the hook (e.g. "help" or "menu"). +- * @param $sort ++ * @param bool $sort + * By default, modules are ordered by weight and filename, settings this option + * to TRUE, module list will be ordered by module name. +- * @param $reset ++ * @param bool $reset + * For internal use only: Whether to force the stored list of hook + * implementations to be regenerated (such as after enabling a new module, + * before processing hook_enable). + * +- * @return ++ * @return string[]|null + * An array with the names of the modules which are implementing this hook. + * + * @see module_implements_write_cache() +@@ -696,8 +700,10 @@ function module_implements($hook, $sort = FALSE, $reset = FALSE) { + static $drupal_static_fast; + if (!isset($drupal_static_fast)) { + $drupal_static_fast['implementations'] = &drupal_static(__FUNCTION__); ++ $drupal_static_fast['verified'] = &drupal_static(__FUNCTION__ . ':verified'); + } + $implementations = &$drupal_static_fast['implementations']; ++ $verified = &$drupal_static_fast['verified']; + + // We maintain a persistent cache of hook implementations in addition to the + // static cache to avoid looping through every module and every hook on each +@@ -711,14 +717,18 @@ function module_implements($hook, $sort = FALSE, $reset = FALSE) { + // per request. + if ($reset) { + $implementations = array(); ++ $verified = array(); + cache_set('module_implements', array(), 'cache_bootstrap'); + drupal_static_reset('module_hook_info'); + drupal_static_reset('drupal_alter'); + cache_clear_all('hook_info', 'cache_bootstrap'); +- return; ++ return NULL; + } + + // Fetch implementations from cache. ++ // This happens on the first call to module_implements(*, *, FALSE) during a ++ // request, but also when $implementations have been reset, e.g. after ++ // module_enable(). + if (empty($implementations)) { + $implementations = cache_get('module_implements', 'cache_bootstrap'); + if ($implementations === FALSE) { +@@ -727,12 +737,17 @@ function module_implements($hook, $sort = FALSE, $reset = FALSE) { + else { + $implementations = $implementations->data; + } ++ // Forget all previously "verified" hooks, in case that $implementations ++ // were cleared via drupal_static_reset('module_implements') instead of ++ // module_implements(*, *, TRUE). ++ $verified = array(); + } + + if (!isset($implementations[$hook])) { + // The hook is not cached, so ensure that whether or not it has + // implementations, that the cache is updated at the end of the request. + $implementations['#write_cache'] = TRUE; ++ // Discover implementations for this hook. + $hook_info = module_hook_info(); + $implementations[$hook] = array(); + $list = module_list(FALSE, FALSE, $sort); +@@ -744,13 +759,31 @@ function module_implements($hook, $sort = FALSE, $reset = FALSE) { + $implementations[$hook][$module] = $include_file ? $hook_info[$hook]['group'] : FALSE; + } + } +- // Allow modules to change the weight of specific implementations but avoid ++ // Allow modules to change the weight of specific implementations, but avoid + // an infinite loop. + if ($hook != 'module_implements_alter') { ++ // Remember the implementations before hook_module_implements_alter(). ++ $implementations_before = $implementations[$hook]; + drupal_alter('module_implements', $implementations[$hook], $hook); ++ // Verify implementations that were added or modified. ++ foreach (array_diff_assoc($implementations[$hook], $implementations_before) as $module => $group) { ++ // If drupal_alter('module_implements') changed or added a $group, the ++ // respective file needs to be included. ++ if ($group) { ++ module_load_include('inc', $module, "$module.$group"); ++ } ++ // If a new implementation was added, verify that the function exists. ++ if (!function_exists($module . '_' . $hook)) { ++ unset($implementations[$hook][$module]); ++ } ++ } + } ++ // Implementations for this hook are now "verified" ++ $verified[$hook] = TRUE; + } +- else { ++ elseif (!isset($verified[$hook])) { ++ // Implementations for this hook were in the cache, but they are not ++ // "verified" yet. + foreach ($implementations[$hook] as $module => $group) { + // If this hook implementation is stored in a lazy-loaded file, so include + // that file first. +@@ -769,6 +802,7 @@ function module_implements($hook, $sort = FALSE, $reset = FALSE) { + $implementations['#write_cache'] = TRUE; + } + } ++ $verified[$hook] = TRUE; + } + + return array_keys($implementations[$hook]); diff --git a/_PATCHES/PATCHES.txt b/_PATCHES/PATCHES.txt new file mode 100644 index 00000000000..d9b69f45458 --- /dev/null +++ b/_PATCHES/PATCHES.txt @@ -0,0 +1,11 @@ +DON’T HACK CORE!!!! + +You’re right, you shouldn’t. That’s why these patches are documented changes +to Drupal core. These changes are all around performance boosting Drupal core + +These performance patches should have 0 implication other then speed. +They have been selected based on community recommendations by experts and have +been A/B comparison tested to highlight that they are indeed speeding up Drupal +over it’s stock version. + +Presserflow is a fork of Pressflow D7, a performance optimized Drupal core. \ No newline at end of file diff --git a/_PATCHES/drupal-1710656-3-skip-hidden-menu-items-D7.patch b/_PATCHES/drupal-1710656-3-skip-hidden-menu-items-D7.patch new file mode 100644 index 00000000000..d16baf0e3cc --- /dev/null +++ b/_PATCHES/drupal-1710656-3-skip-hidden-menu-items-D7.patch @@ -0,0 +1,16 @@ +diff --git a/includes/menu.inc b/includes/menu.inc +index b25a374..666b880 100644 +--- a/includes/menu.inc ++++ b/includes/menu.inc +@@ -1505,6 +1505,11 @@ function _menu_tree_check_access(&$tree) { + $new_tree = array(); + foreach ($tree as $key => $v) { + $item = &$tree[$key]['link']; ++ // Do not load hidden menu items if not in active breadcrumb trail and ++ // user can't administer the menu. ++ if (!empty($item['hidden']) && empty($item['in_active_trail']) && !user_access('administer menu')) { ++ continue; ++ } + _menu_link_translate($item); + if ($item['access'] || ($item['in_active_trail'] && strpos($item['href'], '%') !== FALSE)) { + if ($tree[$key]['below']) { diff --git a/_PATCHES/drupal-2193149-3-cache_field-lock.patch b/_PATCHES/drupal-2193149-3-cache_field-lock.patch new file mode 100644 index 00000000000..b45c1deda7e --- /dev/null +++ b/_PATCHES/drupal-2193149-3-cache_field-lock.patch @@ -0,0 +1,82 @@ +diff --git a/modules/field/field.info.class.inc b/modules/field/field.info.class.inc +index 3b89898..f4f1f63 100644 +--- a/modules/field/field.info.class.inc ++++ b/modules/field/field.info.class.inc +@@ -146,7 +146,10 @@ class FieldInfo { + + // Save in "static" and persistent caches. + $this->fieldMap = $map; +- cache_set('field_info:field_map', $map, 'cache_field'); ++ if (lock_acquire('field_info:field_map')) { ++ cache_set('field_info:field_map', $map, 'cache_field'); ++ lock_release('field_info:field_map'); ++ } + + return $map; + } +@@ -174,7 +177,10 @@ class FieldInfo { + } + + // Store in persistent cache. +- cache_set('field_info:fields', $this->fieldsById, 'cache_field'); ++ if (lock_acquire('field_info:fields')) { ++ cache_set('field_info:fields', $this->fieldsById, 'cache_field'); ++ lock_release('field_info:fields'); ++ } + } + + // Fill the name/ID map. +@@ -231,7 +237,10 @@ class FieldInfo { + } + + // Store in persistent cache. +- cache_set('field_info:instances', $this->bundleInstances, 'cache_field'); ++ if (lock_acquire('field_info:instances')) { ++ cache_set('field_info:instances', $this->bundleInstances, 'cache_field'); ++ lock_release('field_info:instances'); ++ } + } + + $this->loadedAllInstances = TRUE; +@@ -419,7 +428,11 @@ class FieldInfo { + foreach ($instances as $instance) { + $cache['fields'][] = $this->fieldsById[$instance['field_id']]; + } +- cache_set("field_info:bundle:$entity_type:$bundle", $cache, 'cache_field'); ++ ++ if (lock_acquire("field_info:bundle:$entity_type:$bundle")) { ++ cache_set("field_info:bundle:$entity_type:$bundle", $cache, 'cache_field'); ++ lock_release("field_info:bundle:$entity_type:$bundle"); ++ } + + return $instances; + } +@@ -460,7 +473,10 @@ class FieldInfo { + + // Store in the 'static' and persistent caches. + $this->bundleExtraFields[$entity_type][$bundle] = $info; +- cache_set("field_info:bundle_extra:$entity_type:$bundle", $info, 'cache_field'); ++ if (lock_acquire("field_info:bundle_extra:$entity_type:$bundle")) { ++ cache_set("field_info:bundle_extra:$entity_type:$bundle", $info, 'cache_field'); ++ lock_release("field_info:bundle_extra:$entity_type:$bundle"); ++ } + + return $this->bundleExtraFields[$entity_type][$bundle]; + } +diff --git a/modules/field/field.info.inc b/modules/field/field.info.inc +index 02b3c9c..dea2fd4 100644 +--- a/modules/field/field.info.inc ++++ b/modules/field/field.info.inc +@@ -223,7 +223,11 @@ function _field_info_collate_types($reset = FALSE) { + } + drupal_alter('field_storage_info', $info['storage types']); + +- cache_set("field_info_types:$langcode", $info, 'cache_field'); ++ // Set the cache if we can acquire a lock. ++ if (lock_acquire("field_info_types:$langcode")) { ++ cache_set("field_info_types:$langcode", $info, 'cache_field'); ++ lock_release("field_info_types:$langcode"); ++ } + } + } + diff --git a/_PATCHES/drupal-2222635-26-rename-truncate.patch b/_PATCHES/drupal-2222635-26-rename-truncate.patch new file mode 100644 index 00000000000..136e83fcbd9 --- /dev/null +++ b/_PATCHES/drupal-2222635-26-rename-truncate.patch @@ -0,0 +1,55 @@ +diff --git a/includes/database/query.inc b/includes/database/query.inc +index 8af91c2..9e73b4c 100644 +--- a/includes/database/query.inc ++++ b/includes/database/query.inc +@@ -930,6 +930,38 @@ class TruncateQuery extends Query { + * Return value is dependent on the database type. + */ + public function execute() { ++ // Keep track of the tables that will be truncated. ++ $tables_to_truncate = &drupal_static('TruncateQuery::execute'); ++ ++ // NoOp if table is empty. ++ $table_name = $this->connection->escapeTable($this->table); ++ $query = db_select($table_name); ++ $query->addExpression('COUNT(*)'); ++ $count = $query->execute()->fetchField(); ++ if ($count == 0) { ++ return $this; ++ } ++ ++ // Renaming tables is a lot faster than truncate. Rename and then Truncate ++ // at the end of the request if not in a transaction. ++ if (!$this->connection->inTransaction()) { ++ // Make sure truncated table exists before trying to use it. ++ db_query('CREATE TABLE IF NOT EXISTS {' . $table_name . '__truncated_table} LIKE {' . $table_name . '};'); ++ ++ // Remove any values from the *__truncated_table if needed. ++ $query = db_select($table_name . '__truncated_table'); ++ $query->addExpression('COUNT(*)'); ++ $count = $query->execute()->fetchField(); ++ if ($count > 0) { ++ db_query('TRUNCATE {' . $table_name . '__truncated_table}'); ++ } ++ ++ // Run TRUNCATE at the end of this request. ++ if (empty($tables_to_truncate[$table_name . '__truncated_table'])) { ++ $tables_to_truncate[$table_name . '__truncated_table'] = TRUE; ++ drupal_register_shutdown_function('db_query', 'TRUNCATE {' . $table_name . '__truncated_table}'); ++ } ++ } + return $this->connection->query((string) $this, array(), $this->queryOptions); + } + +@@ -952,7 +984,10 @@ class TruncateQuery extends Query { + return $comments . 'DELETE FROM {' . $this->connection->escapeTable($this->table) . '}'; + } + else { +- return $comments . 'TRUNCATE {' . $this->connection->escapeTable($this->table) . '} '; ++ $table_name = $this->connection->escapeTable($this->table); ++ // Use rename so the truncate happens at the end of this request. ++ $sql = $comments . 'RENAME TABLE {' . $table_name . '} TO {' . $table_name . '__temp_table}, {' . $table_name . '__truncated_table} TO {' . $table_name . '}, {' . $table_name . '__temp_table} TO {' . $table_name . '__truncated_table} ; '; ++ return $sql; + } + } + } diff --git a/_PATCHES/drupal-2289493-3-image_get_info-filesize-D7.patch b/_PATCHES/drupal-2289493-3-image_get_info-filesize-D7.patch new file mode 100644 index 00000000000..12a2b501236 --- /dev/null +++ b/_PATCHES/drupal-2289493-3-image_get_info-filesize-D7.patch @@ -0,0 +1,15 @@ +diff --git a/includes/image.inc b/includes/image.inc +index e30a338..ed9ac79 100644 +--- a/includes/image.inc ++++ b/includes/image.inc +@@ -135,7 +135,9 @@ function image_get_info($filepath, $toolkit = FALSE) { + $image->source = $filepath; + $image->toolkit = $toolkit; + $details = image_toolkit_invoke('get_info', $image); +- if (isset($details) && is_array($details)) { ++ // Allow setting the file_size key manually in the image toolkit to ++ // prevent filesize() from being called for performance reasons. ++ if (isset($details) && is_array($details) && !isset($details['file_size'])) { + $details['file_size'] = filesize($filepath); + } + } diff --git a/_PATCHES/drupal-2336521-33-mysqli-async-cache_set-D7.patch b/_PATCHES/drupal-2336521-33-mysqli-async-cache_set-D7.patch new file mode 100644 index 00000000000..53daed6be7b --- /dev/null +++ b/_PATCHES/drupal-2336521-33-mysqli-async-cache_set-D7.patch @@ -0,0 +1,338 @@ +diff --git a/includes/cache.inc b/includes/cache.inc +index 207bf66..cf80f1a 100644 +--- a/includes/cache.inc ++++ b/includes/cache.inc +@@ -345,7 +345,37 @@ class DrupalDatabaseCache implements DrupalCacheInterface { + // is used here only due to the performance overhead we would incur + // otherwise. When serving an uncached page, the overhead of using + // db_select() is a much smaller proportion of the request. +- $result = db_query('SELECT cid, data, created, expire, serialized FROM {' . db_escape_table($this->bin) . '} WHERE cid IN (:cids)', array(':cids' => $cids)); ++ if (function_exists('drupal_mysqli_get_object')) { ++ $mysqli = drupal_mysqli_get_object(FALSE, $this->bin, $cids); ++ } ++ if (!empty($mysqli)) { ++ // Build query. ++ $escaped_table = db_escape_table($this->bin); ++ $query = "SELECT cid, data, created, expire, serialized FROM {{$escaped_table}}"; ++ $query = Database::getConnection()->prefixTables($query); ++ foreach ($cids as $cid) { ++ $escaped_cids[] = $mysqli->real_escape_string($cid); ++ } ++ $escaped_cids = "'" . implode("', '", $escaped_cids) . "'"; ++ $query .= " WHERE cid IN ({$escaped_cids})"; ++ // Run query. ++ $results = $mysqli->query($query); ++ ++ // Convert to an object to mirror db_query. ++ $result = array(); ++ if (!empty($results) && is_object($results) && method_exists($results, 'fetch_object')) { ++ while ($obj = $results->fetch_object()) { ++ $result[] = $obj; ++ } ++ } ++ $result = (object) $result; ++ if (!empty($results)) { ++ $results->close(); ++ } ++ } ++ else { ++ $result = db_query('SELECT cid, data, created, expire, serialized FROM {' . db_escape_table($this->bin) . '} WHERE cid IN (:cids)', array(':cids' => $cids)); ++ } + $cache = array(); + foreach ($result as $item) { + $item = $this->prepareItem($item); +@@ -460,10 +490,27 @@ class DrupalDatabaseCache implements DrupalCacheInterface { + } + + try { +- db_merge($this->bin) +- ->key(array('cid' => $cid)) +- ->fields($fields) +- ->execute(); ++ if (function_exists('drupal_mysqli_get_object')) { ++ $mysqli = drupal_mysqli_get_object(TRUE, $this->bin, array($cid)); ++ } ++ if (empty($mysqli)) { ++ db_merge($this->bin) ++ ->key(array('cid' => $cid)) ++ ->fields($fields) ++ ->execute(); ++ } ++ else { ++ // Build query. ++ $escaped_table = db_escape_table($this->bin); ++ $escaped_cid = $mysqli->real_escape_string($cid); ++ $escaped_data = $mysqli->real_escape_string($fields['data']); ++ $query = "INSERT INTO {{$escaped_table}}"; ++ $query = Database::getConnection()->prefixTables($query); ++ $query .= " (cid, serialized, created, expire, data) VALUES ('$escaped_cid', '{$fields['serialized']}', '{$fields['created']}', '{$fields['expire']}', '$escaped_data')"; ++ $query .= " ON DUPLICATE KEY UPDATE serialized = '{$fields['serialized']}', created = '{$fields['created']}', expire = '{$fields['expire']}', data = '$escaped_data'"; ++ // Run query. ++ $results = $mysqli->query($query, MYSQLI_ASYNC); ++ } + } + catch (Exception $e) { + // The database may not be available, so we'll ignore cache_set requests. +diff --git a/includes/database/mysql/database.inc b/includes/database/mysql/database.inc +index 4907a39..fda5f46 100644 +--- a/includes/database/mysql/database.inc ++++ b/includes/database/mysql/database.inc +@@ -6,6 +6,258 @@ + */ + + /** ++ * Return a mysqli object that is ready to be used. ++ * ++ * @param bool $create_new_connection ++ * If FALSE, it will not create a new connection (cache_get). ++ * @param string $table ++ * Database table name. ++ * @param array $cids ++ * An array of cache IDs. ++ * ++ * @return mysqli ++ * returns a mysqli object on success or FALSE on failure. ++ */ ++function drupal_mysqli_get_object($create_new_connection = TRUE, $table = '', array $cids = array()) { ++ // Bail out if not mysql that is async capable. ++ $mysqli = FALSE; ++ if ( !function_exists('mysqli_init') ++ || !defined('MYSQLI_ASYNC') ++ || Database::getConnection()->databaseType() !== 'mysql' ++ ) { ++ return $mysqli; ++ } ++ ++ // Use the advanced drupal_static() pattern for $db_info. ++ static $db_info; ++ if (!isset($db_info)) { ++ $db_info = &drupal_static(__FUNCTION__); ++ ++ // 'var' stores variables about the mysql database. ++ if (!isset($db_info['var'])) { ++ $db_info['var'] = db_query("SELECT @@global.max_connections AS max_connections, @@global.wait_timeout AS wait_timeout")->fetchAssoc(); ++ // Limit total DB connections to 90 or 80% of the max; whatever is smaller. ++ $db_info['var']['max_connections'] = floor(min(90, $db_info['var']['max_connections'] * 0.8)); ++ // Set wait timeout to 90 seconds or the current value; whatever is smaller. ++ $db_info['var']['wait_timeout'] = min(90, $db_info['var']['wait_timeout']); ++ $db_info['var']['connect_timeout'] = 2; ++ $db_info['var']['innodb_lock_wait_timeout'] = 2; ++ } ++ ++ // 'connection' stores the info needed to make a new connection to mysql. ++ if (!isset($db_info['connection'])) { ++ // Use default connection info. ++ $connection_info = Database::getConnectionInfo(); ++ $db_info['connection'] = reset($connection_info); ++ if (empty($db_info['connection']['port'])) { ++ $db_info['connection']['port'] = NULL; ++ } ++ else { ++ $db_info['connection']['port'] = (int)$db_info['connection']['port']; ++ } ++ if (empty($db_info['connection']['unix_socket'])) { ++ $db_info['connection']['unix_socket'] = NULL; ++ } ++ if (empty($db_info['connection']['password'])) { ++ $db_info['connection']['password'] = NULL; ++ } ++ } ++ ++ // 'pool' stores a collection of open mysql connections. ++ if (!isset($db_info['pool'])) { ++ $db_info['pool'] = array(); ++ } ++ } ++ ++ // Make sure a table/cid pair is used by the same connection in order to avoid ++ // record level deadlocks. ++ if (empty($create_new_connection) && !empty($db_info['pool']) && !empty($table) && !empty($cids)) { ++ $match = FALSE; ++ foreach ($db_info['pool'] as $values) { ++ // Match the table. ++ if ($table == $values[1]) { ++ // Match the cache id. ++ $intersect = array_intersect($cids, $values[2]); ++ if (!empty($intersect)) { ++ // Wait for the query to finish. ++ @$values[0]->reap_async_query(); ++ $match = $values[0]; ++ } ++ } ++ } ++ if (!empty($match)) { ++ drupal_mysqli_ping($match, $db_info, $table, $cids); ++ return $match; ++ } ++ } ++ ++ // Try to reuse an old connection. ++ if (!empty($db_info['pool'])) { ++ $mysqli_pool = array(); ++ foreach ($db_info['pool'] as $values) { ++ $mysqli_pool[] = $values[0]; ++ } ++ $links = $errors = $reject = $mysqli_pool; ++ $ready = @mysqli_poll($links, $errors, $reject, 0, 1); ++ if (!empty($reject)) { ++ // A non async connection is ready; use the first one. ++ $mysqli = reset($reject); ++ drupal_mysqli_ping($mysqli, $db_info, $table, $cids); ++ return $mysqli; ++ } ++ if (!empty($links)) { ++ // An async connection is ready; use the first one. ++ $mysqli = reset($links); ++ @$mysqli->reap_async_query(); ++ drupal_mysqli_ping($mysqli, $db_info, $table, $cids); ++ return $mysqli; ++ } ++ ++ // All current connections are in use. ++ if (count($db_info['pool']) < 6) { ++ // Create a new DB connection. ++ $mysqli = drupal_mysqli_new_connection($db_info); ++ if (!empty($mysqli)) { ++ $db_info['pool'][$mysqli->thread_id] = array($mysqli, $table, $cids); ++ } ++ return $mysqli; ++ } ++ else { ++ // Wait for a db connection to be ready. ++ $ready = FALSE; ++ while (!$ready) { ++ $mysqli_pool = array(); ++ foreach ($db_info['pool'] as $values) { ++ $mysqli_pool[] = $values[0]; ++ } ++ $links = $errors = $reject = $mysqli_pool; ++ $ready = @mysqli_poll($links, $errors, $reject, 0, 5000); ++ if (!$ready && !empty($reject)) { ++ $ready = TRUE; ++ } ++ } ++ if (!empty($reject)) { ++ // A non async connection is ready; use the first one. ++ $mysqli = reset($reject); ++ drupal_mysqli_ping($mysqli, $db_info, $table, $cids); ++ return $mysqli; ++ } ++ if (!empty($links)) { ++ // An async connection is ready; use the first one. ++ $mysqli = reset($links); ++ @$mysqli->reap_async_query(); ++ drupal_mysqli_ping($mysqli, $db_info, $table, $cids); ++ return $mysqli; ++ } ++ } ++ } ++ ++ if (empty($db_info['pool']) && $create_new_connection) { ++ $mysqli = drupal_mysqli_new_connection($db_info); ++ if (!empty($mysqli)) { ++ $db_info['pool'][$mysqli->thread_id] = array($mysqli, $table, $cids); ++ } ++ } ++ return $mysqli; ++} ++ ++/** ++ * Create a new MySQLi connection. ++ * ++ * @param array $db_info ++ * static var from 'drupal_mysqli_get_object'. ++ * ++ * @return mysqli ++ * returns a mysqli object on success or FALSE on failure. ++ */ ++function drupal_mysqli_new_connection(array $db_info) { ++ // Get Threads_connected, max_connections, & wait_timeout from the DB. ++ $db_info['var'] += db_query("SHOW STATUS WHERE Variable_name LIKE 'Threads_connected'")->fetchAllKeyed(); ++ $db_info['var'] = array_change_key_case($db_info['var'], CASE_LOWER); ++ if ($db_info['var']['threads_connected'] >= $db_info['var']['max_connections']) { ++ // Bail out if the DB has a lot of connections currently. ++ return FALSE; ++ } ++ ++ // Create new MySQL connection. ++ $mysqli = new mysqli(); ++ $mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, $db_info['var']['connect_timeout']); ++ @$mysqli->real_connect($db_info['connection']['host'], $db_info['connection']['username'], $db_info['connection']['password'], $db_info['connection']['database'], $db_info['connection']['port'], $db_info['connection']['unix_socket']); ++ ++ if (empty($mysqli) || !empty($mysqli->connect_errno) || empty($mysqli->host_info)) { ++ // Bail out if the DB didn't connect. ++ return FALSE; ++ } ++ if (!empty($mysqli)) { ++ // Get connection ready for usage. ++ $mysqli->set_charset('utf8'); ++ if (!isset($db_info['connection']['init_commands'])) { ++ $db_info['connection']['init_commands'] = array(); ++ } ++ $db_info['connection']['init_commands'] += array( ++ 'sql_mode' => "SET sql_mode = 'ANSI,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER'", ++ 'isolation' => "SET SESSION tx_isolation='READ-UNCOMMITTED'", ++ 'wait_timeout' => 'SET SESSION wait_timeout = ' . $db_info['var']['wait_timeout'], ++ 'innodb_lock' => 'SET SESSION innodb_lock_wait_timeout = ' . $db_info['var']['innodb_lock_wait_timeout'], ++ ); ++ foreach ($db_info['connection']['init_commands'] as $query) { ++ $good = $mysqli->query($query); ++ if (empty($good)) { ++ // Bail out if the these queries failed. ++ return FALSE; ++ } ++ } ++ } ++ // Make sure all async queries finish before php is killed. ++ // Using a nested register_shutdown_function makes sure this is executed last. ++ register_shutdown_function('register_shutdown_function', 'drupal_mysqli_close', $mysqli); ++ return $mysqli; ++} ++ ++/** ++ * Reconnect to the MySQL database if the connection has been lost. ++ * ++ * Will also record the table and cache ID used. ++ * ++ * @param mysqli $mysqli ++ * mysqlnd connection object. Passed by reference. ++ * @param array $db_info ++ * static var from 'drupal_mysqli_get_object'. Passed by reference. ++ * @param string $table ++ * table name. ++ * @param array $cids ++ * An array of cache IDs. ++ */ ++function drupal_mysqli_ping(mysqli &$mysqli, array &$db_info, $table, array $cids) { ++ $timeout_check = max(1, $db_info['var']['wait_timeout'] - 5); ++ $timer = ceil(timer_read('page') / 1000); ++ if ($timer > $timeout_check) { ++ if (empty($mysqli) || !@$mysqli->ping()) { ++ unset($db_info['pool'][$mysqli->thread_id]); ++ $mysqli = drupal_mysqli_new_connection($db_info); ++ if (empty($mysqli) || !@$mysqli->ping()) { ++ $mysqli = FALSE; ++ } ++ } ++ } ++ if (!empty($mysqli)) { ++ $db_info['pool'][$mysqli->thread_id] = array($mysqli, $table, $cids); ++ } ++} ++ ++/** ++ * Wait for the result from an async query and then unset the connection. ++ * ++ * @param mysqli $mysqli ++ * mysqlnd connection object. Passed by reference. ++ */ ++function drupal_mysqli_close(mysqli &$mysqli) { ++ @$mysqli->reap_async_query(); ++ unset($mysqli); ++ $mysqli = FALSE; ++} ++ ++/** + * @addtogroup database + * @{ + */ diff --git a/_PATCHES/drupal-261148-65-menu_get_ancestors-D7.patch b/_PATCHES/drupal-261148-65-menu_get_ancestors-D7.patch new file mode 100644 index 00000000000..329bf72ba00 --- /dev/null +++ b/_PATCHES/drupal-261148-65-menu_get_ancestors-D7.patch @@ -0,0 +1,24 @@ +diff --git a/includes/menu.inc b/includes/menu.inc +index fa5a71e..dbb1d70 100644 +--- a/includes/menu.inc ++++ b/includes/menu.inc +@@ -322,12 +322,14 @@ function menu_get_ancestors($parts) { + $length = $number_parts - 1; + $end = (1 << $number_parts) - 1; + $masks = variable_get('menu_masks'); +- // If the optimized menu_masks array is not available use brute force to get +- // the correct $ancestors and $placeholders returned. Do not use this as the +- // default value of the menu_masks variable to avoid building such a big +- // array. ++ // If the optimized menu_masks array is not available, try every character ++ // position to see if that matches up with a wildcard, slash, or the original ++ // value in order to get the correct $ancestors and $placeholders returned. ++ // Do not use this as the default value of the menu_masks variable to avoid ++ // building such a big array. Currently the maximum value for $end is 511 ++ // (2^9) - 1. 9 comes from the MENU_MAX_PARTS constant. + if (!$masks) { +- $masks = range(511, 1); ++ $masks = range($end, 1); + } + // Only examine patterns that actually exist as router items (the masks). + foreach ($masks as $i) { From 0a97b43f38ba441672612c30a3906219e6121e1c Mon Sep 17 00:00:00 2001 From: btopro Date: Mon, 20 Oct 2014 09:41:47 -0400 Subject: [PATCH 02/12] presserflow patches from issue queues --- includes/cache.inc | 57 +++++- includes/database/mysql/database.inc | 252 +++++++++++++++++++++++++++ includes/database/query.inc | 37 +++- includes/image.inc | 4 +- includes/menu.inc | 17 +- includes/module.inc | 48 ++++- modules/block/block.module | 17 +- modules/field/field.info.class.inc | 26 ++- modules/field/field.info.inc | 6 +- sites/default/default.settings.php | 12 ++ 10 files changed, 447 insertions(+), 29 deletions(-) diff --git a/includes/cache.inc b/includes/cache.inc index 09f4d753f96..ffe4925e747 100644 --- a/includes/cache.inc +++ b/includes/cache.inc @@ -341,7 +341,37 @@ class DrupalDatabaseCache implements DrupalCacheInterface { // is used here only due to the performance overhead we would incur // otherwise. When serving an uncached page, the overhead of using // db_select() is a much smaller proportion of the request. - $result = db_query('SELECT cid, data, created, expire, serialized FROM {' . db_escape_table($this->bin) . '} WHERE cid IN (:cids)', array(':cids' => $cids)); + if (function_exists('drupal_mysqli_get_object')) { + $mysqli = drupal_mysqli_get_object(FALSE, $this->bin, $cids); + } + if (!empty($mysqli)) { + // Build query. + $escaped_table = db_escape_table($this->bin); + $query = "SELECT cid, data, created, expire, serialized FROM {{$escaped_table}}"; + $query = Database::getConnection()->prefixTables($query); + foreach ($cids as $cid) { + $escaped_cids[] = $mysqli->real_escape_string($cid); + } + $escaped_cids = "'" . implode("', '", $escaped_cids) . "'"; + $query .= " WHERE cid IN ({$escaped_cids})"; + // Run query. + $results = $mysqli->query($query); + + // Convert to an object to mirror db_query. + $result = array(); + if (!empty($results) && is_object($results) && method_exists($results, 'fetch_object')) { + while ($obj = $results->fetch_object()) { + $result[] = $obj; + } + } + $result = (object) $result; + if (!empty($results)) { + $results->close(); + } + } + else { + $result = db_query('SELECT cid, data, created, expire, serialized FROM {' . db_escape_table($this->bin) . '} WHERE cid IN (:cids)', array(':cids' => $cids)); + } $cache = array(); foreach ($result as $item) { $item = $this->prepareItem($item); @@ -456,10 +486,27 @@ class DrupalDatabaseCache implements DrupalCacheInterface { } try { - db_merge($this->bin) - ->key(array('cid' => $cid)) - ->fields($fields) - ->execute(); + if (function_exists('drupal_mysqli_get_object')) { + $mysqli = drupal_mysqli_get_object(TRUE, $this->bin, array($cid)); + } + if (empty($mysqli)) { + db_merge($this->bin) + ->key(array('cid' => $cid)) + ->fields($fields) + ->execute(); + } + else { + // Build query. + $escaped_table = db_escape_table($this->bin); + $escaped_cid = $mysqli->real_escape_string($cid); + $escaped_data = $mysqli->real_escape_string($fields['data']); + $query = "INSERT INTO {{$escaped_table}}"; + $query = Database::getConnection()->prefixTables($query); + $query .= " (cid, serialized, created, expire, data) VALUES ('$escaped_cid', '{$fields['serialized']}', '{$fields['created']}', '{$fields['expire']}', '$escaped_data')"; + $query .= " ON DUPLICATE KEY UPDATE serialized = '{$fields['serialized']}', created = '{$fields['created']}', expire = '{$fields['expire']}', data = '$escaped_data'"; + // Run query. + $results = $mysqli->query($query, MYSQLI_ASYNC); + } } catch (Exception $e) { // The database may not be available, so we'll ignore cache_set requests. diff --git a/includes/database/mysql/database.inc b/includes/database/mysql/database.inc index 4907a39dda7..fda5f46354c 100644 --- a/includes/database/mysql/database.inc +++ b/includes/database/mysql/database.inc @@ -5,6 +5,258 @@ * Database interface code for MySQL database servers. */ +/** + * Return a mysqli object that is ready to be used. + * + * @param bool $create_new_connection + * If FALSE, it will not create a new connection (cache_get). + * @param string $table + * Database table name. + * @param array $cids + * An array of cache IDs. + * + * @return mysqli + * returns a mysqli object on success or FALSE on failure. + */ +function drupal_mysqli_get_object($create_new_connection = TRUE, $table = '', array $cids = array()) { + // Bail out if not mysql that is async capable. + $mysqli = FALSE; + if ( !function_exists('mysqli_init') + || !defined('MYSQLI_ASYNC') + || Database::getConnection()->databaseType() !== 'mysql' + ) { + return $mysqli; + } + + // Use the advanced drupal_static() pattern for $db_info. + static $db_info; + if (!isset($db_info)) { + $db_info = &drupal_static(__FUNCTION__); + + // 'var' stores variables about the mysql database. + if (!isset($db_info['var'])) { + $db_info['var'] = db_query("SELECT @@global.max_connections AS max_connections, @@global.wait_timeout AS wait_timeout")->fetchAssoc(); + // Limit total DB connections to 90 or 80% of the max; whatever is smaller. + $db_info['var']['max_connections'] = floor(min(90, $db_info['var']['max_connections'] * 0.8)); + // Set wait timeout to 90 seconds or the current value; whatever is smaller. + $db_info['var']['wait_timeout'] = min(90, $db_info['var']['wait_timeout']); + $db_info['var']['connect_timeout'] = 2; + $db_info['var']['innodb_lock_wait_timeout'] = 2; + } + + // 'connection' stores the info needed to make a new connection to mysql. + if (!isset($db_info['connection'])) { + // Use default connection info. + $connection_info = Database::getConnectionInfo(); + $db_info['connection'] = reset($connection_info); + if (empty($db_info['connection']['port'])) { + $db_info['connection']['port'] = NULL; + } + else { + $db_info['connection']['port'] = (int)$db_info['connection']['port']; + } + if (empty($db_info['connection']['unix_socket'])) { + $db_info['connection']['unix_socket'] = NULL; + } + if (empty($db_info['connection']['password'])) { + $db_info['connection']['password'] = NULL; + } + } + + // 'pool' stores a collection of open mysql connections. + if (!isset($db_info['pool'])) { + $db_info['pool'] = array(); + } + } + + // Make sure a table/cid pair is used by the same connection in order to avoid + // record level deadlocks. + if (empty($create_new_connection) && !empty($db_info['pool']) && !empty($table) && !empty($cids)) { + $match = FALSE; + foreach ($db_info['pool'] as $values) { + // Match the table. + if ($table == $values[1]) { + // Match the cache id. + $intersect = array_intersect($cids, $values[2]); + if (!empty($intersect)) { + // Wait for the query to finish. + @$values[0]->reap_async_query(); + $match = $values[0]; + } + } + } + if (!empty($match)) { + drupal_mysqli_ping($match, $db_info, $table, $cids); + return $match; + } + } + + // Try to reuse an old connection. + if (!empty($db_info['pool'])) { + $mysqli_pool = array(); + foreach ($db_info['pool'] as $values) { + $mysqli_pool[] = $values[0]; + } + $links = $errors = $reject = $mysqli_pool; + $ready = @mysqli_poll($links, $errors, $reject, 0, 1); + if (!empty($reject)) { + // A non async connection is ready; use the first one. + $mysqli = reset($reject); + drupal_mysqli_ping($mysqli, $db_info, $table, $cids); + return $mysqli; + } + if (!empty($links)) { + // An async connection is ready; use the first one. + $mysqli = reset($links); + @$mysqli->reap_async_query(); + drupal_mysqli_ping($mysqli, $db_info, $table, $cids); + return $mysqli; + } + + // All current connections are in use. + if (count($db_info['pool']) < 6) { + // Create a new DB connection. + $mysqli = drupal_mysqli_new_connection($db_info); + if (!empty($mysqli)) { + $db_info['pool'][$mysqli->thread_id] = array($mysqli, $table, $cids); + } + return $mysqli; + } + else { + // Wait for a db connection to be ready. + $ready = FALSE; + while (!$ready) { + $mysqli_pool = array(); + foreach ($db_info['pool'] as $values) { + $mysqli_pool[] = $values[0]; + } + $links = $errors = $reject = $mysqli_pool; + $ready = @mysqli_poll($links, $errors, $reject, 0, 5000); + if (!$ready && !empty($reject)) { + $ready = TRUE; + } + } + if (!empty($reject)) { + // A non async connection is ready; use the first one. + $mysqli = reset($reject); + drupal_mysqli_ping($mysqli, $db_info, $table, $cids); + return $mysqli; + } + if (!empty($links)) { + // An async connection is ready; use the first one. + $mysqli = reset($links); + @$mysqli->reap_async_query(); + drupal_mysqli_ping($mysqli, $db_info, $table, $cids); + return $mysqli; + } + } + } + + if (empty($db_info['pool']) && $create_new_connection) { + $mysqli = drupal_mysqli_new_connection($db_info); + if (!empty($mysqli)) { + $db_info['pool'][$mysqli->thread_id] = array($mysqli, $table, $cids); + } + } + return $mysqli; +} + +/** + * Create a new MySQLi connection. + * + * @param array $db_info + * static var from 'drupal_mysqli_get_object'. + * + * @return mysqli + * returns a mysqli object on success or FALSE on failure. + */ +function drupal_mysqli_new_connection(array $db_info) { + // Get Threads_connected, max_connections, & wait_timeout from the DB. + $db_info['var'] += db_query("SHOW STATUS WHERE Variable_name LIKE 'Threads_connected'")->fetchAllKeyed(); + $db_info['var'] = array_change_key_case($db_info['var'], CASE_LOWER); + if ($db_info['var']['threads_connected'] >= $db_info['var']['max_connections']) { + // Bail out if the DB has a lot of connections currently. + return FALSE; + } + + // Create new MySQL connection. + $mysqli = new mysqli(); + $mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, $db_info['var']['connect_timeout']); + @$mysqli->real_connect($db_info['connection']['host'], $db_info['connection']['username'], $db_info['connection']['password'], $db_info['connection']['database'], $db_info['connection']['port'], $db_info['connection']['unix_socket']); + + if (empty($mysqli) || !empty($mysqli->connect_errno) || empty($mysqli->host_info)) { + // Bail out if the DB didn't connect. + return FALSE; + } + if (!empty($mysqli)) { + // Get connection ready for usage. + $mysqli->set_charset('utf8'); + if (!isset($db_info['connection']['init_commands'])) { + $db_info['connection']['init_commands'] = array(); + } + $db_info['connection']['init_commands'] += array( + 'sql_mode' => "SET sql_mode = 'ANSI,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER'", + 'isolation' => "SET SESSION tx_isolation='READ-UNCOMMITTED'", + 'wait_timeout' => 'SET SESSION wait_timeout = ' . $db_info['var']['wait_timeout'], + 'innodb_lock' => 'SET SESSION innodb_lock_wait_timeout = ' . $db_info['var']['innodb_lock_wait_timeout'], + ); + foreach ($db_info['connection']['init_commands'] as $query) { + $good = $mysqli->query($query); + if (empty($good)) { + // Bail out if the these queries failed. + return FALSE; + } + } + } + // Make sure all async queries finish before php is killed. + // Using a nested register_shutdown_function makes sure this is executed last. + register_shutdown_function('register_shutdown_function', 'drupal_mysqli_close', $mysqli); + return $mysqli; +} + +/** + * Reconnect to the MySQL database if the connection has been lost. + * + * Will also record the table and cache ID used. + * + * @param mysqli $mysqli + * mysqlnd connection object. Passed by reference. + * @param array $db_info + * static var from 'drupal_mysqli_get_object'. Passed by reference. + * @param string $table + * table name. + * @param array $cids + * An array of cache IDs. + */ +function drupal_mysqli_ping(mysqli &$mysqli, array &$db_info, $table, array $cids) { + $timeout_check = max(1, $db_info['var']['wait_timeout'] - 5); + $timer = ceil(timer_read('page') / 1000); + if ($timer > $timeout_check) { + if (empty($mysqli) || !@$mysqli->ping()) { + unset($db_info['pool'][$mysqli->thread_id]); + $mysqli = drupal_mysqli_new_connection($db_info); + if (empty($mysqli) || !@$mysqli->ping()) { + $mysqli = FALSE; + } + } + } + if (!empty($mysqli)) { + $db_info['pool'][$mysqli->thread_id] = array($mysqli, $table, $cids); + } +} + +/** + * Wait for the result from an async query and then unset the connection. + * + * @param mysqli $mysqli + * mysqlnd connection object. Passed by reference. + */ +function drupal_mysqli_close(mysqli &$mysqli) { + @$mysqli->reap_async_query(); + unset($mysqli); + $mysqli = FALSE; +} + /** * @addtogroup database * @{ diff --git a/includes/database/query.inc b/includes/database/query.inc index 8af91c2d7ae..9e73b4cfb8c 100644 --- a/includes/database/query.inc +++ b/includes/database/query.inc @@ -930,6 +930,38 @@ class TruncateQuery extends Query { * Return value is dependent on the database type. */ public function execute() { + // Keep track of the tables that will be truncated. + $tables_to_truncate = &drupal_static('TruncateQuery::execute'); + + // NoOp if table is empty. + $table_name = $this->connection->escapeTable($this->table); + $query = db_select($table_name); + $query->addExpression('COUNT(*)'); + $count = $query->execute()->fetchField(); + if ($count == 0) { + return $this; + } + + // Renaming tables is a lot faster than truncate. Rename and then Truncate + // at the end of the request if not in a transaction. + if (!$this->connection->inTransaction()) { + // Make sure truncated table exists before trying to use it. + db_query('CREATE TABLE IF NOT EXISTS {' . $table_name . '__truncated_table} LIKE {' . $table_name . '};'); + + // Remove any values from the *__truncated_table if needed. + $query = db_select($table_name . '__truncated_table'); + $query->addExpression('COUNT(*)'); + $count = $query->execute()->fetchField(); + if ($count > 0) { + db_query('TRUNCATE {' . $table_name . '__truncated_table}'); + } + + // Run TRUNCATE at the end of this request. + if (empty($tables_to_truncate[$table_name . '__truncated_table'])) { + $tables_to_truncate[$table_name . '__truncated_table'] = TRUE; + drupal_register_shutdown_function('db_query', 'TRUNCATE {' . $table_name . '__truncated_table}'); + } + } return $this->connection->query((string) $this, array(), $this->queryOptions); } @@ -952,7 +984,10 @@ class TruncateQuery extends Query { return $comments . 'DELETE FROM {' . $this->connection->escapeTable($this->table) . '}'; } else { - return $comments . 'TRUNCATE {' . $this->connection->escapeTable($this->table) . '} '; + $table_name = $this->connection->escapeTable($this->table); + // Use rename so the truncate happens at the end of this request. + $sql = $comments . 'RENAME TABLE {' . $table_name . '} TO {' . $table_name . '__temp_table}, {' . $table_name . '__truncated_table} TO {' . $table_name . '}, {' . $table_name . '__temp_table} TO {' . $table_name . '__truncated_table} ; '; + return $sql; } } } diff --git a/includes/image.inc b/includes/image.inc index e30a3385538..ed9ac79a288 100644 --- a/includes/image.inc +++ b/includes/image.inc @@ -135,7 +135,9 @@ function image_get_info($filepath, $toolkit = FALSE) { $image->source = $filepath; $image->toolkit = $toolkit; $details = image_toolkit_invoke('get_info', $image); - if (isset($details) && is_array($details)) { + // Allow setting the file_size key manually in the image toolkit to + // prevent filesize() from being called for performance reasons. + if (isset($details) && is_array($details) && !isset($details['file_size'])) { $details['file_size'] = filesize($filepath); } } diff --git a/includes/menu.inc b/includes/menu.inc index fa5a71e73f5..0bcfff41617 100644 --- a/includes/menu.inc +++ b/includes/menu.inc @@ -322,12 +322,14 @@ function menu_get_ancestors($parts) { $length = $number_parts - 1; $end = (1 << $number_parts) - 1; $masks = variable_get('menu_masks'); - // If the optimized menu_masks array is not available use brute force to get - // the correct $ancestors and $placeholders returned. Do not use this as the - // default value of the menu_masks variable to avoid building such a big - // array. + // If the optimized menu_masks array is not available, try every character + // position to see if that matches up with a wildcard, slash, or the original + // value in order to get the correct $ancestors and $placeholders returned. + // Do not use this as the default value of the menu_masks variable to avoid + // building such a big array. Currently the maximum value for $end is 511 + // (2^9) - 1. 9 comes from the MENU_MAX_PARTS constant. if (!$masks) { - $masks = range(511, 1); + $masks = range($end, 1); } // Only examine patterns that actually exist as router items (the masks). foreach ($masks as $i) { @@ -1509,6 +1511,11 @@ function _menu_tree_check_access(&$tree) { $new_tree = array(); foreach ($tree as $key => $v) { $item = &$tree[$key]['link']; + // Do not load hidden menu items if not in active breadcrumb trail and + // user can't administer the menu. + if (!empty($item['hidden']) && empty($item['in_active_trail']) && !user_access('administer menu')) { + continue; + } _menu_link_translate($item); if ($item['access'] || ($item['in_active_trail'] && strpos($item['href'], '%') !== FALSE)) { if ($tree[$key]['below']) { diff --git a/includes/module.inc b/includes/module.inc index fe2a9805ef6..0c06609e3dd 100644 --- a/includes/module.inc +++ b/includes/module.inc @@ -676,17 +676,21 @@ function module_hook($module, $hook) { /** * Determines which modules are implementing a hook. * - * @param $hook + * Lazy-loaded include files specified with "group" via hook_hook_info() or + * hook_module_implements_alter() will be automatically included as part of + * module_implements(*, *, FALSE). + * + * @param string $hook * The name of the hook (e.g. "help" or "menu"). - * @param $sort + * @param bool $sort * By default, modules are ordered by weight and filename, settings this option * to TRUE, module list will be ordered by module name. - * @param $reset + * @param bool $reset * For internal use only: Whether to force the stored list of hook * implementations to be regenerated (such as after enabling a new module, * before processing hook_enable). * - * @return + * @return string[]|null * An array with the names of the modules which are implementing this hook. * * @see module_implements_write_cache() @@ -696,8 +700,10 @@ function module_implements($hook, $sort = FALSE, $reset = FALSE) { static $drupal_static_fast; if (!isset($drupal_static_fast)) { $drupal_static_fast['implementations'] = &drupal_static(__FUNCTION__); + $drupal_static_fast['verified'] = &drupal_static(__FUNCTION__ . ':verified'); } $implementations = &$drupal_static_fast['implementations']; + $verified = &$drupal_static_fast['verified']; // We maintain a persistent cache of hook implementations in addition to the // static cache to avoid looping through every module and every hook on each @@ -711,14 +717,18 @@ function module_implements($hook, $sort = FALSE, $reset = FALSE) { // per request. if ($reset) { $implementations = array(); + $verified = array(); cache_set('module_implements', array(), 'cache_bootstrap'); drupal_static_reset('module_hook_info'); drupal_static_reset('drupal_alter'); cache_clear_all('hook_info', 'cache_bootstrap'); - return; + return NULL; } // Fetch implementations from cache. + // This happens on the first call to module_implements(*, *, FALSE) during a + // request, but also when $implementations have been reset, e.g. after + // module_enable(). if (empty($implementations)) { $implementations = cache_get('module_implements', 'cache_bootstrap'); if ($implementations === FALSE) { @@ -727,12 +737,17 @@ function module_implements($hook, $sort = FALSE, $reset = FALSE) { else { $implementations = $implementations->data; } + // Forget all previously "verified" hooks, in case that $implementations + // were cleared via drupal_static_reset('module_implements') instead of + // module_implements(*, *, TRUE). + $verified = array(); } if (!isset($implementations[$hook])) { // The hook is not cached, so ensure that whether or not it has // implementations, that the cache is updated at the end of the request. $implementations['#write_cache'] = TRUE; + // Discover implementations for this hook. $hook_info = module_hook_info(); $implementations[$hook] = array(); $list = module_list(FALSE, FALSE, $sort); @@ -744,13 +759,31 @@ function module_implements($hook, $sort = FALSE, $reset = FALSE) { $implementations[$hook][$module] = $include_file ? $hook_info[$hook]['group'] : FALSE; } } - // Allow modules to change the weight of specific implementations but avoid + // Allow modules to change the weight of specific implementations, but avoid // an infinite loop. if ($hook != 'module_implements_alter') { + // Remember the implementations before hook_module_implements_alter(). + $implementations_before = $implementations[$hook]; drupal_alter('module_implements', $implementations[$hook], $hook); + // Verify implementations that were added or modified. + foreach (array_diff_assoc($implementations[$hook], $implementations_before) as $module => $group) { + // If drupal_alter('module_implements') changed or added a $group, the + // respective file needs to be included. + if ($group) { + module_load_include('inc', $module, "$module.$group"); + } + // If a new implementation was added, verify that the function exists. + if (!function_exists($module . '_' . $hook)) { + unset($implementations[$hook][$module]); + } + } } + // Implementations for this hook are now "verified" + $verified[$hook] = TRUE; } - else { + elseif (!isset($verified[$hook])) { + // Implementations for this hook were in the cache, but they are not + // "verified" yet. foreach ($implementations[$hook] as $module => $group) { // If this hook implementation is stored in a lazy-loaded file, so include // that file first. @@ -769,6 +802,7 @@ function module_implements($hook, $sort = FALSE, $reset = FALSE) { $implementations['#write_cache'] = TRUE; } } + $verified[$hook] = TRUE; } return array_keys($implementations[$hook]); diff --git a/modules/block/block.module b/modules/block/block.module index 2977ca88f11..b6a733267cf 100644 --- a/modules/block/block.module +++ b/modules/block/block.module @@ -848,10 +848,19 @@ function block_block_list_alter(&$blocks) { * An array of visible blocks as expected by drupal_render(). */ function _block_render_blocks($region_blocks) { - // Block caching is not compatible with node access modules. We also - // preserve the submission of forms in blocks, by fetching from cache only + $cacheable = TRUE; + + // We preserve the submission of forms in blocks, by fetching from cache only // if the request method is 'GET' (or 'HEAD'). - $cacheable = !count(module_implements('node_grants')) && ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'HEAD'); + if ($_SERVER['REQUEST_METHOD'] != 'GET' && $_SERVER['REQUEST_METHOD'] != 'HEAD') { + $cacheable = FALSE; + } + // Block caching is not usually compatible with node access modules, so by + // default it is disabled when node access modules exist. However, it can be + // allowed by using the variable 'block_cache_bypass_node_grants'. + elseif (!variable_get('block_cache_bypass_node_grants', FALSE) && count(module_implements('node_grants'))) { + $cacheable = FALSE; + } // Proceed to loop over all blocks in order to compute their respective cache // identifiers; this allows us to do one single cache_get_multiple() call @@ -1054,7 +1063,7 @@ function block_menu_delete($menu) { * Implements hook_form_FORM_ID_alter(). */ function block_form_system_performance_settings_alter(&$form, &$form_state) { - $disabled = count(module_implements('node_grants')); + $disabled = (!variable_get('block_cache_bypass_node_grants', FALSE) && count(module_implements('node_grants'))); $form['caching']['block_cache'] = array( '#type' => 'checkbox', '#title' => t('Cache blocks'), diff --git a/modules/field/field.info.class.inc b/modules/field/field.info.class.inc index 3b89898fba8..f4f1f6300a6 100644 --- a/modules/field/field.info.class.inc +++ b/modules/field/field.info.class.inc @@ -146,7 +146,10 @@ class FieldInfo { // Save in "static" and persistent caches. $this->fieldMap = $map; - cache_set('field_info:field_map', $map, 'cache_field'); + if (lock_acquire('field_info:field_map')) { + cache_set('field_info:field_map', $map, 'cache_field'); + lock_release('field_info:field_map'); + } return $map; } @@ -174,7 +177,10 @@ class FieldInfo { } // Store in persistent cache. - cache_set('field_info:fields', $this->fieldsById, 'cache_field'); + if (lock_acquire('field_info:fields')) { + cache_set('field_info:fields', $this->fieldsById, 'cache_field'); + lock_release('field_info:fields'); + } } // Fill the name/ID map. @@ -231,7 +237,10 @@ class FieldInfo { } // Store in persistent cache. - cache_set('field_info:instances', $this->bundleInstances, 'cache_field'); + if (lock_acquire('field_info:instances')) { + cache_set('field_info:instances', $this->bundleInstances, 'cache_field'); + lock_release('field_info:instances'); + } } $this->loadedAllInstances = TRUE; @@ -419,7 +428,11 @@ class FieldInfo { foreach ($instances as $instance) { $cache['fields'][] = $this->fieldsById[$instance['field_id']]; } - cache_set("field_info:bundle:$entity_type:$bundle", $cache, 'cache_field'); + + if (lock_acquire("field_info:bundle:$entity_type:$bundle")) { + cache_set("field_info:bundle:$entity_type:$bundle", $cache, 'cache_field'); + lock_release("field_info:bundle:$entity_type:$bundle"); + } return $instances; } @@ -460,7 +473,10 @@ class FieldInfo { // Store in the 'static' and persistent caches. $this->bundleExtraFields[$entity_type][$bundle] = $info; - cache_set("field_info:bundle_extra:$entity_type:$bundle", $info, 'cache_field'); + if (lock_acquire("field_info:bundle_extra:$entity_type:$bundle")) { + cache_set("field_info:bundle_extra:$entity_type:$bundle", $info, 'cache_field'); + lock_release("field_info:bundle_extra:$entity_type:$bundle"); + } return $this->bundleExtraFields[$entity_type][$bundle]; } diff --git a/modules/field/field.info.inc b/modules/field/field.info.inc index 02b3c9ca460..dea2fd4fb92 100644 --- a/modules/field/field.info.inc +++ b/modules/field/field.info.inc @@ -223,7 +223,11 @@ function _field_info_collate_types($reset = FALSE) { } drupal_alter('field_storage_info', $info['storage types']); - cache_set("field_info_types:$langcode", $info, 'cache_field'); + // Set the cache if we can acquire a lock. + if (lock_acquire("field_info_types:$langcode")) { + cache_set("field_info_types:$langcode", $info, 'cache_field'); + lock_release("field_info_types:$langcode"); + } } } diff --git a/sites/default/default.settings.php b/sites/default/default.settings.php index 279dd695a80..0d080955ee9 100644 --- a/sites/default/default.settings.php +++ b/sites/default/default.settings.php @@ -432,6 +432,18 @@ # $conf['css_gzip_compression'] = FALSE; # $conf['js_gzip_compression'] = FALSE; +/** + * Block caching: + * + * Block caching may not be compatible with node access modules depending on + * how the original block cache policy is defined by the module that provides + * the block. By default, Drupal therefore disables block caching when one or + * more modules implement hook_node_grants(). If you consider block caching to + * be safe on your site and want to bypass this restriction, uncomment the line + * below. + */ +# $conf['block_cache_bypass_node_grants'] = TRUE; + /** * String overrides: * From ac05a312131b0b79f12d59cf50b4f618ac6b705d Mon Sep 17 00:00:00 2001 From: btopro Date: Mon, 20 Oct 2014 13:55:43 -0400 Subject: [PATCH 03/12] recipe to apply the performance measures automatically --- _RECIPES/performance_kitchen_sink.drecipe | 177 ++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 _RECIPES/performance_kitchen_sink.drecipe diff --git a/_RECIPES/performance_kitchen_sink.drecipe b/_RECIPES/performance_kitchen_sink.drecipe new file mode 100644 index 00000000000..6b291b184c7 --- /dev/null +++ b/_RECIPES/performance_kitchen_sink.drecipe @@ -0,0 +1,177 @@ +{ + "name": "Performance Kitchen Sink", + "drush_recipes_api": "1.0", + "weight": "0", + "core": "7", + "recipe": [ + { + "command": "dl", + "arguments": [ + "advagg", + "httprl", + "entitycache", + "imageinfo_cache", + "apc" + ] + }, + { + "command": "en", + "arguments": [ + "advagg", + "advagg_bundlerr", + "advagg_mod", + "httprl", + "entitycache", + "imageinfo_cache", + "apc" + ], + "options": { + "y": true + } + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_cache_level\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_combine_css_media\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_css_fix_type\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_enabled\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_gzip\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_ie_css_selector_limiter\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_ie_css_selector_limiter_value\\\", '4095');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_js_fix_type\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_adjust_sort_browsers\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_adjust_sort_external\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_adjust_sort_inline\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_head_extract\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_preprocess\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_inline_settings\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_adjust_sort_browsers\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_adjust_sort_external\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_adjust_sort_inline\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_footer\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_footer_inline_alter\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_use_httprl\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"block_cache\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"drupal_http_request_function\\\", 'httprl_override_core');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"httprl_background_callback\\\", 1);\"" + ] + } + ], + "metadata": { + "type": "add-on", + "version": "1.0", + "author": "btopro", + "description": "Kitchen sink of performance optimizations from btopro's testing" + } +} From 3106372e0754b9c27f3eef7647c19b286b9c9001 Mon Sep 17 00:00:00 2001 From: btopro Date: Mon, 20 Oct 2014 13:58:35 -0400 Subject: [PATCH 04/12] description of usage for drecipes --- _RECIPES/RECIPES.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 _RECIPES/RECIPES.txt diff --git a/_RECIPES/RECIPES.txt b/_RECIPES/RECIPES.txt new file mode 100644 index 00000000000..c2ef60a5b51 --- /dev/null +++ b/_RECIPES/RECIPES.txt @@ -0,0 +1,10 @@ +What are Recipes? + +Recipes are a series of drush commands that act as one. It is a format that allows for +drush call chaining and other utilities. Learn more at https://www.drupal.org/project/drush_recipes + +How to use + +Run the following: + +drush dl drush_recipes | drush cc drush | drush cook performance_kitchen_sink —-dr_location={PATHTOPRESSERFLOW}/_RECIPES —y \ No newline at end of file From 3890cf3eefb566ba9bda04e96030bd0337b844aa Mon Sep 17 00:00:00 2001 From: btopro Date: Mon, 20 Oct 2014 14:01:13 -0400 Subject: [PATCH 05/12] tweaks to recipe --- _RECIPES/RECIPES.txt | 2 +- _RECIPES/performance_kitchen_sink.drecipe | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_RECIPES/RECIPES.txt b/_RECIPES/RECIPES.txt index c2ef60a5b51..9ee3b6bd4d2 100644 --- a/_RECIPES/RECIPES.txt +++ b/_RECIPES/RECIPES.txt @@ -7,4 +7,4 @@ How to use Run the following: -drush dl drush_recipes | drush cc drush | drush cook performance_kitchen_sink —-dr_location={PATHTOPRESSERFLOW}/_RECIPES —y \ No newline at end of file +drush dl drush_recipes | drush cc drush | drush —y cook performance_kitchen_sink —-dr_locations={PATHTOPRESSERFLOW}/_RECIPES \ No newline at end of file diff --git a/_RECIPES/performance_kitchen_sink.drecipe b/_RECIPES/performance_kitchen_sink.drecipe index 6b291b184c7..64503a26adc 100644 --- a/_RECIPES/performance_kitchen_sink.drecipe +++ b/_RECIPES/performance_kitchen_sink.drecipe @@ -18,7 +18,7 @@ "command": "en", "arguments": [ "advagg", - "advagg_bundlerr", + "advagg_bundler", "advagg_mod", "httprl", "entitycache", From 267de27e72f6a1d6245f9b5e5e0ff34f1b650dde Mon Sep 17 00:00:00 2001 From: btopro Date: Mon, 20 Oct 2014 14:02:44 -0400 Subject: [PATCH 06/12] syntax tested --- _RECIPES/RECIPES.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_RECIPES/RECIPES.txt b/_RECIPES/RECIPES.txt index 9ee3b6bd4d2..4af69dfa286 100644 --- a/_RECIPES/RECIPES.txt +++ b/_RECIPES/RECIPES.txt @@ -7,4 +7,4 @@ How to use Run the following: -drush dl drush_recipes | drush cc drush | drush —y cook performance_kitchen_sink —-dr_locations={PATHTOPRESSERFLOW}/_RECIPES \ No newline at end of file +drush dl drush_recipes && drush cc drush && drush —y cook performance_kitchen_sink —-dr_locations={PATHTOPRESSERFLOW}/_RECIPES \ No newline at end of file From c3ea298a12af843cd5b5ead1f28a14e26409b618 Mon Sep 17 00:00:00 2001 From: btopro Date: Mon, 20 Oct 2014 14:11:43 -0400 Subject: [PATCH 07/12] bad character --- _RECIPES/RECIPES.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_RECIPES/RECIPES.txt b/_RECIPES/RECIPES.txt index 4af69dfa286..1673f37a1a2 100644 --- a/_RECIPES/RECIPES.txt +++ b/_RECIPES/RECIPES.txt @@ -7,4 +7,4 @@ How to use Run the following: -drush dl drush_recipes && drush cc drush && drush —y cook performance_kitchen_sink —-dr_locations={PATHTOPRESSERFLOW}/_RECIPES \ No newline at end of file +drush dl drush_recipes && drush cc drush && drush --y cook performance_kitchen_sink --dr-locations={PATHTOPRESSERFLOW}/_RECIPES From 2ff96f2d5170b8692accf4a01af4d43b82b43918 Mon Sep 17 00:00:00 2001 From: btopro Date: Mon, 20 Oct 2014 15:20:11 -0400 Subject: [PATCH 08/12] performance findings --- _METRICS/performance metrics.xlsx | Bin 0 -> 22276 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 _METRICS/performance metrics.xlsx diff --git a/_METRICS/performance metrics.xlsx b/_METRICS/performance metrics.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bd3c0d76a9cbd32864698df38c8e40ac23a116df GIT binary patch literal 22276 zcmeEs^M55>w`XkIcE>rfJ9au&2PZZ=wrxA<*iJgOZ95&?o;>e6^SLu~?|*P_{jks3 zb!zR}yXuRxR+XX*I0Oa=6bK9m2nZ>NqzQq687K${3M2>!ItUDywur5bld+AHo{F2D zvExrhS8FShd( zr~%$Th+$5Tmv>J5HV51{$3aGzyV>Yls(gpn#5LfP8{L26$MFw1dd04r(6 zp}`FRf1AJ9iR~SBlanyorpk0`dplld^uLvaMY7}Wc9~y2Sx-O-EXiZDqLv8%JP7WZ zg*t!F7s|T+dn}OQ{YAsiPjC>$|A(N8p7K2pU#OG);vf7MLG>JrtsI#c|7rh+nE#F0 z_Ac(~0&`5DJgsz! z?W|MhUuv_X=TtWN&@XON{cE zQCePG6c7si9k(FLI!CxgfQ<~Od_L%aumsgum0_c zM%R`|7{yZkWRX{enWTrbt8=x>pq$&AZ0(LBKY|=G`HxS0eB^+<@~($dt@87fUeDI`L@(Aa(vd}x#)B=$Og z!7Nen*p$6Xj;LlH{pU$i8yBfs`s$u_TUbLU%j`;<_4eq}2Bn} z<&i~wXYF3QcCAcdaoQmlV63TW&gYku{%4`}GN1hz`9j6<*RRN5(D*{o|BanUr4gGo zW|R)>BSDn*u|%3Nb_5x}Q%H724B?dham7Tj)CeJ^B>()+Y*f`|TK8jf4u`)Tob?^} zjo-I|ZfDccOd~MJ4O%J-|0F)GEh*Ox4nvz*6jh*7dSel7soHK?L7!GBEb5{Hm^=He zVK#zMrnK|Y^p@puN&t)ISR_u^yS&sI=h~$HYJo+^;bv5b*}PWkpLaEKvGqo?MHpp{@OpfzBvClsa1-mxcaxKe3#G zr0z2gIz&1f`&M*Z2A5F|lW_WhUNs)&e(8^o@gYQ+r64}kzlaKO-f}pULkA_yEqMDc zr>fsbi-?U0SJ4hnjp5D@*P%(7tU)vY+9Iqq#Z%~D`k=P@Xm0FuC-CII#i-&xS784=_GIlzc+;Lx6lJ+u*xOx@09zsl*upHqF#;;uH6<=}{eqjA z070w}zPtfi1?K@4xjI$(goPW?h=XkT){k}uotRH69hr-YW;qSJ@{x8cE;RZ6VX^kK zdr!6nwU~^oz4K>Z`S71Yj(Bb$SkrsKk?U0r?*FB|N`w#5-a>$Y#KVJtVEp^8JDM3d z7#k@&Ihfm+I{qUYk!n9}*ThjgnWjH$P*CO}Rc4&i0d`i9HfIgOgll%0Ap)4xoAK>0 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�?ID7asg#+1OQePaO6xNH0md=#YuB~4{tK@3BLX#B1-F@!|A>)6&1?(K;?f2*9(U9z}VPDXR=V$10!1Q;_li100KZXw*UYD literal 0 HcmV?d00001 From 40e5d0916a57e39b197fe6140b6962cdd50547aa Mon Sep 17 00:00:00 2001 From: btopro Date: Mon, 20 Oct 2014 15:40:36 -0400 Subject: [PATCH 09/12] documented the APC / kitchen sink optimizations --- _PATCHES/PATCHES.txt | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/_PATCHES/PATCHES.txt b/_PATCHES/PATCHES.txt index d9b69f45458..371bec11a9b 100644 --- a/_PATCHES/PATCHES.txt +++ b/_PATCHES/PATCHES.txt @@ -8,4 +8,46 @@ They have been selected based on community recommendations by experts and have been A/B comparison tested to highlight that they are indeed speeding up Drupal over it’s stock version. -Presserflow is a fork of Pressflow D7, a performance optimized Drupal core. \ No newline at end of file +Presserflow is a fork of Pressflow D7, a performance optimized Drupal core. + + +Kitchensink / APC +(applies https://www.drupal.org/node/1650930#comment-8437127 and other cache bin management techniques) +APC and Kitchensink metrics in this test use the following additions to standard settings.php in order to better utilize cache bin management in memory. +appended in settings.php + +$conf['cache_prefix'] = 'dd1'; +#$conf['apc_show_debug'] = TRUE; +$conf['cache_backends'][] = 'sites/all/modules/apc/drupal_apc_cache.inc'; +# APC as default container, others are targetted per bin +$conf['cache_default_class'] = 'DrupalAPCCache'; +# APC as default, so these can be commented out +$conf['cache_class_cache'] = 'DrupalAPCCache'; +$conf['cache_class_cache_admin_menu'] = 'DrupalAPCCache'; +$conf['cache_class_cache_block'] = 'DrupalAPCCache'; +$conf['cache_class_cache_bootstrap'] = 'DrupalAPCCache'; +$conf['cache_class_cache_entity_file'] = 'DrupalAPCCache'; +$conf['cache_class_cache_entity_og_membership'] = 'DrupalAPCCache'; +$conf['cache_class_cache_entity_og_membership_type'] = 'DrupalAPCCache'; +$conf['cache_class_cache_field'] = 'DrupalAPCCache'; +$conf['cache_class_cache_menu'] = 'DrupalAPCCache'; +$conf['cache_class_cache_libraries'] = 'DrupalAPCCache'; +$conf['cache_class_cache_token'] = 'DrupalAPCCache'; +$conf['cache_class_cache_views'] = 'DrupalAPCCache'; +$conf['cache_class_cache_path_breadcrumbs'] = 'DrupalAPCCache'; +$conf['cache_class_cache_path'] = 'DrupalAPCCache'; + +# Default DB for the ones that change too frequently and are small +#$conf['cache_default_class'] = 'DrupalDatabaseCache'; +# THIS MUST BE SERVED FROM DB FOR STABILITY +$conf['cache_class_cache_cis_connector'] = 'DrupalDatabaseCache'; +$conf['cache_class_cache_drupal_org_user_data'] = 'DrupalDatabaseCache'; +$conf['cache_class_cache_form'] = 'DrupalDatabaseCache'; + +// this is assuming all databases using this file operate off of default +// this should always be true of ELMSLN connected systems but just be aware +// of this in case your doing any prefixing or crazy stuff like connecting to +// multiple databases +$databases['default']['default']['init_commands'] = array( + 'isolation' => "SET SESSION tx_isolation='READ-COMMITTED'" +); From 0c92b8517de2bba3f90a6a2a1f77c75b12f80aaf Mon Sep 17 00:00:00 2001 From: btopro Date: Mon, 20 Oct 2014 16:53:25 -0400 Subject: [PATCH 10/12] nonmac version of XLS --- _METRICS/performance metrics.xls | Bin 0 -> 22555 bytes _METRICS/performance metrics.xlsx | Bin 22276 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 _METRICS/performance metrics.xls delete mode 100644 _METRICS/performance metrics.xlsx diff --git a/_METRICS/performance metrics.xls b/_METRICS/performance metrics.xls new file mode 100644 index 0000000000000000000000000000000000000000..aaf1fe3259919f852de5c2d6f337b2504d96dcf1 GIT binary patch literal 22555 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 z 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 literal 0 HcmV?d00001 diff --git a/_METRICS/performance metrics.xlsx b/_METRICS/performance metrics.xlsx deleted file mode 100644 index bd3c0d76a9cbd32864698df38c8e40ac23a116df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22276 zcmeEs^M55>w`XkIcE>rfJ9au&2PZZ=wrxA<*iJgOZ95&?o;>e6^SLu~?|*P_{jks3 zb!zR}yXuRxR+XX*I0Oa=6bK9m2nZ>NqzQq687K${3M2>!ItUDywur5bld+AHo{F2D zvExrhS8FShd( zr~%$Th+$5Tmv>J5HV51{$3aGzyV>Yls(gpn#5LfP8{L26$MFw1dd04r(6 zp}`FRf1AJ9iR~SBlanyorpk0`dplld^uLvaMY7}Wc9~y2Sx-O-EXiZDqLv8%JP7WZ zg*t!F7s|T+dn}OQ{YAsiPjC>$|A(N8p7K2pU#OG);vf7MLG>JrtsI#c|7rh+nE#F0 z_Ac(~0&`5DJgsz! z?W|MhUuv_X=TtWN&@XON{cE zQCePG6c7si9k(FLI!CxgfQ<~Od_L%aumsgum0_c zM%R`|7{yZkWRX{enWTrbt8=x>pq$&AZ0(LBKY|=G`HxS0eB^+<@~($dt@87fUeDI`L@(Aa(vd}x#)B=$Og z!7Nen*p$6Xj;LlH{pU$i8yBfs`s$u_TUbLU%j`;<_4eq}2Bn} z<&i~wXYF3QcCAcdaoQmlV63TW&gYku{%4`}GN1hz`9j6<*RRN5(D*{o|BanUr4gGo zW|R)>BSDn*u|%3Nb_5x}Q%H724B?dham7Tj)CeJ^B>()+Y*f`|TK8jf4u`)Tob?^} zjo-I|ZfDccOd~MJ4O%J-|0F)GEh*Ox4nvz*6jh*7dSel7soHK?L7!GBEb5{Hm^=He zVK#zMrnK|Y^p@puN&t)ISR_u^yS&sI=h~$HYJo+^;bv5b*}PWkpLaEKvGqo?MHpp{@OpfzBvClsa1-mxcaxKe3#G zr0z2gIz&1f`&M*Z2A5F|lW_WhUNs)&e(8^o@gYQ+r64}kzlaKO-f}pULkA_yEqMDc zr>fsbi-?U0SJ4hnjp5D@*P%(7tU)vY+9Iqq#Z%~D`k=P@Xm0FuC-CII#i-&xS784=_GIlzc+;Lx6lJ+u*xOx@09zsl*upHqF#;;uH6<=}{eqjA z070w}zPtfi1?K@4xjI$(goPW?h=XkT){k}uotRH69hr-YW;qSJ@{x8cE;RZ6VX^kK zdr!6nwU~^oz4K>Z`S71Yj(Bb$SkrsKk?U0r?*FB|N`w#5-a>$Y#KVJtVEp^8JDM3d z7#k@&Ihfm+I{qUYk!n9}*ThjgnWjH$P*CO}Rc4&i0d`i9HfIgOgll%0Ap)4xoAK>0 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�?ID7asg#+1OQePaO6xNH0md=#YuB~4{tK@3BLX#B1-F@!|A>)6&1?(K;?f2*9(U9z}VPDXR=V$10!1Q;_li100KZXw*UYD From dfa733d7dc673ef984826829fafe5dbf200adb32 Mon Sep 17 00:00:00 2001 From: btopro Date: Tue, 21 Oct 2014 09:31:52 -0400 Subject: [PATCH 11/12] DDT exports of each website --- _RECIPES/dd1.drecipe | 692 +++++++++++++++++++++++ _RECIPES/dd2.drecipe | 1035 ++++++++++++++++++++++++++++++++++ _RECIPES/dd3.drecipe | 1259 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 2986 insertions(+) create mode 100644 _RECIPES/dd1.drecipe create mode 100644 _RECIPES/dd2.drecipe create mode 100644 _RECIPES/dd3.drecipe diff --git a/_RECIPES/dd1.drecipe b/_RECIPES/dd1.drecipe new file mode 100644 index 00000000000..83661623027 --- /dev/null +++ b/_RECIPES/dd1.drecipe @@ -0,0 +1,692 @@ +{ + "name": "DD1 website", + "drush_recipes_api": "1.0", + "weight": "0", + "core": "7", + "recipe": [ + { + "command": "en", + "arguments": [ + "block", + "admin_devel", + "advagg", + "advagg_bundler", + "advagg_mod", + "backports", + "bulk_export", + "coffee", + "context", + "contextual", + "ctools", + "defaultconfig", + "devel_generate", + "drupal_org_user_data", + "ds_ui", + "eck", + "elmslnorg_doud", + "entity", + "entity_modified", + "eva", + "fences", + "field", + "field_collection", + "field_collection_fieldset", + "field_collection_table", + "field_sql_storage", + "field_ui", + "file", + "filter", + "image", + "imageinfo_cache", + "jquery_update", + "libraries", + "list", + "machine_name", + "menu", + "module_filter", + "node", + "number", + "options", + "paranoia", + "profiler_builder", + "registry_autoload", + "render_cache", + "render_cache_block", + "render_cache_comment", + "render_cache_context", + "render_cache_ds", + "render_cache_entity", + "render_cache_node", + "render_cache_page", + "render_cache_views", + "seckit", + "simplehtmldom", + "slack", + "system", + "text", + "update", + "user", + "views_data_export", + "views_ui", + "ds", + "field_group", + "views", + "features", + "admin_menu", + "admin_menu_toolbar", + "minimal", + "bartik", + "bootstrap", + "dblog", + "httprl", + "devel" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"additional_settings__active_tab_things\\\", 'edit-submission');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_display\\\", 'plid');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_show_all\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_cache_level\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_combine_css_media\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_core_groups\\\", false);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_cron_frequency\\\", '86400');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_css_fix_type\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_enabled\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_gzip\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_ie_css_selector_limiter\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_ie_css_selector_limiter_value\\\", '4095');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_js_fix_type\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_adjust_sort_browsers\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_adjust_sort_external\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_adjust_sort_inline\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_defer\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_head_extract\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_preprocess\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_inline_pages\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_inline_settings\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_adjust_sort_browsers\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_adjust_sort_external\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_adjust_sort_inline\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_async\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_async_shim\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_defer\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_footer\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_footer_inline_alter\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_head_extract\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_preprocess\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_remove_unused\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_unified_multisite_dir\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_remove_missing_files_from_db_time\\\", '1209600');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_remove_old_unused_aggregates_time\\\", '3888000');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_use_httprl\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"anonymous\\\", 'Guest');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"block_cache\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"cache_flush_cache_drupal_org_user_data\\\", 1413809609);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"contact_default_status\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"context_block_rebuild_needed\\\", true);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_default_timezone\\\", 'America\/New_York');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"default_nodes_main\\\", '10');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_api_url\\\", 'api.drupal.org');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_error_handlers\\\", array (\n 1 =\u003e '1',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_execution\\\", '5');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_krumo_skin\\\", 'default');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_memory\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_page_alter\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_query_display\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_query_sort\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_raw_names\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_rebuild_theme_registry\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_redirect_page\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_use_uncompressed_jquery\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_xhprof_directory\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_xhprof_enabled\\\", false);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_xhprof_url\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"dev_timer\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"display_cache_node_things_default\\\", array (\n 'default' =\u003e \n array (\n 'use' =\u003e '1',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n 'body' =\u003e \n array (\n 'override' =\u003e '2',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n 'field_drush_recipes_api' =\u003e \n array (\n 'override' =\u003e '2',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"display_cache_variables\\\", array (\n 0 =\u003e 'display_cache_node_things_default',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"drupal_http_request_function\\\", 'httprl_override_core');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"drupal_stale_file_threshold\\\", '2592000');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"eck_clear_caches\\\", false);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"entitycache_enabled\\\", true);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"entity_cache_tables_created\\\", array (\n 'field_collection' =\u003e \n array (\n 0 =\u003e 'cache_entity_field_collection_item',\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"error_level\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"features_ignored_orphans\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"features_semaphore\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"field_bundle_settings_node__things\\\", array (\n 'view_modes' =\u003e \n array (\n 'teaser' =\u003e \n array (\n 'custom_settings' =\u003e true,\n ),\n 'full' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'rss' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'revision' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n ),\n 'extra_fields' =\u003e \n array (\n 'form' =\u003e \n array (\n 'title' =\u003e \n array (\n 'weight' =\u003e '-5',\n ),\n ),\n 'display' =\u003e \n array (\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"filter_fallback_format\\\", 'plain_text');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"httprl_background_callback\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"httprl_connect_timeout\\\", '5');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"httprl_dns_timeout\\\", '5');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"httprl_global_timeout\\\", '120');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"httprl_server_addr\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"httprl_timeout\\\", '30');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"httprl_ttfb_timeout\\\", '20');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"jquery_update_compression_type\\\", 'min');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"jquery_update_jquery_admin_version\\\", '1.5');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"jquery_update_jquery_cdn\\\", 'none');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"jquery_update_jquery_version\\\", '1.5');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"menu_expanded\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"menu_options_things\\\", array (\n 0 =\u003e 'devel',\n 1 =\u003e 'features',\n 2 =\u003e 'main-menu',\n 3 =\u003e 'management',\n 4 =\u003e 'navigation',\n 5 =\u003e 'user-menu',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"menu_parent_things\\\", 'main-menu:0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"module_filter_recent_modules\\\", array (\n 'advagg_bundler' =\u003e 1413817964,\n 'advagg_mod' =\u003e 1413817964,\n 'advagg' =\u003e 1413817964,\n 'expire' =\u003e 1413817964,\n 'eck_entitycache' =\u003e 1413817964,\n 'rc_site' =\u003e 1413817964,\n 'render_cache_block' =\u003e 1413828793,\n 'render_cache_page' =\u003e 1413828793,\n 'render_cache' =\u003e 1413828793,\n 'imageinfo_cache' =\u003e 1413818183,\n 'display_cache' =\u003e 1413827252,\n 'render_cache_entity' =\u003e 1413828793,\n 'render_cache_comment' =\u003e 1413828793,\n 'render_cache_context' =\u003e 1413828793,\n 'render_cache_ds' =\u003e 1413828793,\n 'render_cache_node' =\u003e 1413828793,\n 'render_cache_views' =\u003e 1413828793,\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"node_options_things\\\", array (\n 0 =\u003e 'status',\n 1 =\u003e 'promote',\n 2 =\u003e 'sticky',\n 3 =\u003e 'revision',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"node_preview_things\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"node_submitted_things\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"path_alias_whitelist\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"save_continue_things\\\", 'Save and add fields');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"site_403\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"site_404\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"site_frontpage\\\", 'drupal_org_user_data');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"theme_default\\\", 'bartik');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_email_verification\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_register\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"views_defaults\\\", array (\n 'frontpage' =\u003e false,\n));\"" + ] + }, + { + "command": "en", + "arguments": [ + "drush_recipes_entity" + ] + }, + { + "command": "en", + "arguments": [ + "drush_recipes_service" + ] + } + ], + "metadata": { + "type": "testing", + "description": "Blueprint of dd1.btopro.net", + "version": "0.0", + "author": "btopro" + } +} diff --git a/_RECIPES/dd2.drecipe b/_RECIPES/dd2.drecipe new file mode 100644 index 00000000000..38c17aff665 --- /dev/null +++ b/_RECIPES/dd2.drecipe @@ -0,0 +1,1035 @@ +{ + "name": "DD2 website", + "drush_recipes_api": "1.0", + "weight": "0", + "core": "7", + "recipe": [ + { + "command": "en", + "arguments": [ + "strongarm", + "block", + "advagg", + "advagg_bundler", + "advagg_mod", + "atjs", + "chain_menu_access", + "cis_connector", + "cis_section", + "codefilter", + "context", + "ctools", + "date", + "date_api", + "date_popup", + "date_views", + "defaultconfig", + "devel_generate", + "devel_node_access", + "diff", + "elements", + "entity", + "entityreference", + "entityreference_prepopulate", + "entity_modified", + "entity_quote", + "entity_token", + "features_override", + "field", + "field_sql_storage", + "field_ui", + "file", + "filter", + "flag", + "harmony_access", + "harmony_access_og", + "harmony_atjs", + "harmony_core", + "harmony_default_permissions", + "harmony_forum_access", + "harmony_search", + "image", + "imageinfo_cache", + "inline_entity_form", + "jquery_update", + "libraries", + "link", + "list", + "machine_name", + "markdown", + "menu", + "module_filter", + "node", + "number", + "og", + "og_access", + "og_context", + "og_field_access", + "og_ui", + "options", + "options_element", + "path", + "placeholder", + "profiler_builder", + "registry_autoload", + "render_cache", + "render_cache_block", + "render_cache_comment", + "render_cache_context", + "render_cache_entity", + "render_cache_node", + "render_cache_page", + "render_cache_views", + "search_api", + "short_scale_formatter", + "taxonomy", + "taxonomy_display", + "text", + "token", + "transliteration", + "update", + "user", + "uuid", + "viewfield", + "views_bulk_operations", + "views_load_more", + "views_ui", + "wysiwyg_filter", + "field_group", + "nodeformcols", + "pathauto", + "prepopulate", + "views", + "features", + "admin_menu", + "better_formats", + "admin_menu_toolbar", + "minimal", + "bartik", + "zurb_foundation", + "dblog", + "httprl", + "system", + "devel" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_cache_client\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_components\\\", array (\n 'admin_menu.icon' =\u003e true,\n 'admin_menu.menu' =\u003e true,\n 'admin_menu.search' =\u003e true,\n 'admin_menu.users' =\u003e true,\n 'admin_menu.account' =\u003e true,\n 'shortcut.links' =\u003e false,\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_devel_modules_skip\\\", array (\n 'admin_devel' =\u003e 0,\n 'context_ui' =\u003e 0,\n 'devel' =\u003e 0,\n 'devel_node_access' =\u003e 0,\n 'field_ui' =\u003e 0,\n 'views_ui' =\u003e 0,\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_display\\\", 'plid');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_margin_top\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_position_fixed\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_show_all\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_tweak_modules\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_tweak_permissions\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_tweak_tabs\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_theme\\\", 'rubik');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_cache_level\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_combine_css_media\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_core_groups\\\", false);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_cron_frequency\\\", '86400');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_css_fix_type\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_enabled\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_gzip\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_ie_css_selector_limiter\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_ie_css_selector_limiter_value\\\", '4095');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_js_fix_type\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_adjust_sort_browsers\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_adjust_sort_external\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_adjust_sort_inline\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_defer\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_head_extract\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_preprocess\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_inline_pages\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_inline_settings\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_adjust_sort_browsers\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_adjust_sort_external\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_adjust_sort_inline\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_async\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_async_shim\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_defer\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_footer\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_footer_inline_alter\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_head_extract\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_preprocess\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_remove_unused\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_unified_multisite_dir\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_remove_missing_files_from_db_time\\\", '1209600');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_remove_old_unused_aggregates_time\\\", '3888000');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_use_httprl\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advanced__active_tab\\\", 'edit-plugins');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"anonymous\\\", 'Anonymous');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"block_cache\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"clone_menu_links\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"clone_method\\\", 'prepopulate');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"clone_nodes_without_confirm\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"clone_reset_section\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"clone_use_node_type_name\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"comment_anonymous_section\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"comment_default_mode_section\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"comment_default_per_page_section\\\", '50');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"comment_form_location_section\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"comment_preview_section\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"comment_section\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"comment_subject_field_section\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"context_block_rebuild_needed\\\", true);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_api_version\\\", '7.2');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_default_timezone\\\", 'America\/New_York');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_views_day_format_without_year\\\", 'l, F j');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_views_day_format_with_year\\\", 'l, F j, Y');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_views_month_format_without_year\\\", 'F');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_views_month_format_with_year\\\", 'F Y');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_views_week_format_without_year\\\", 'F j');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_views_week_format_with_year\\\", 'F j, Y');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"default_nodes_main\\\", '10');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_api_url\\\", 'api.drupal.org');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_error_handlers\\\", array (\n 1 =\u003e '1',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_execution\\\", '5');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_krumo_skin\\\", 'default');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_memory\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_node_access_debug_mode\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_node_access_user_ajax\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_page_alter\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_query_display\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_query_sort\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_raw_names\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_rebuild_theme_registry\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_redirect_page\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_use_uncompressed_jquery\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_xhprof_directory\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_xhprof_enabled\\\", false);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_xhprof_url\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"dev_timer\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"display_cache_harmony_post_harmony_post_default\\\", array (\n 'default' =\u003e \n array (\n 'use' =\u003e '1',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n 'field_harmony_text' =\u003e \n array (\n 'override' =\u003e '2',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"display_cache_node_section_default\\\", array (\n 'default' =\u003e \n array (\n 'use' =\u003e '1',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n 'field_section_id' =\u003e \n array (\n 'override' =\u003e '2',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n 'field_cis_active' =\u003e \n array (\n 'override' =\u003e '2',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"display_cache_variables\\\", array (\n 0 =\u003e 'display_cache_harmony_post_harmony_post_default',\n 1 =\u003e 'display_cache_node_section_default',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"drupal_stale_file_threshold\\\", '2592000');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"entitycache_enabled\\\", true);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"entityreference:base-tables\\\", array (\n 'flagging' =\u003e \n array (\n 0 =\u003e 'flagging',\n 1 =\u003e 'flagging_id',\n ),\n 'harmony_thread' =\u003e \n array (\n 0 =\u003e 'harmony_thread',\n 1 =\u003e 'thread_id',\n ),\n 'harmony_thread_type' =\u003e \n array (\n 0 =\u003e 'harmony_thread_type',\n 1 =\u003e 'id',\n ),\n 'harmony_post' =\u003e \n array (\n 0 =\u003e 'harmony_post',\n 1 =\u003e 'post_id',\n ),\n 'node' =\u003e \n array (\n 0 =\u003e 'node',\n 1 =\u003e 'nid',\n ),\n 'og_membership_type' =\u003e \n array (\n 0 =\u003e 'og_membership_type',\n 1 =\u003e 'id',\n ),\n 'og_membership' =\u003e \n array (\n 0 =\u003e 'og_membership',\n 1 =\u003e 'id',\n ),\n 'search_api_server' =\u003e \n array (\n 0 =\u003e 'search_api_server',\n 1 =\u003e 'id',\n ),\n 'search_api_index' =\u003e \n array (\n 0 =\u003e 'search_api_index',\n 1 =\u003e 'id',\n ),\n 'file' =\u003e \n array (\n 0 =\u003e 'file_managed',\n 1 =\u003e 'fid',\n ),\n 'taxonomy_term' =\u003e \n array (\n 0 =\u003e 'taxonomy_term_data',\n 1 =\u003e 'tid',\n ),\n 'taxonomy_vocabulary' =\u003e \n array (\n 0 =\u003e 'taxonomy_vocabulary',\n 1 =\u003e 'vid',\n ),\n 'user' =\u003e \n array (\n 0 =\u003e 'users',\n 1 =\u003e 'uid',\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"entity_cache_tables_created\\\", NULL);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"features_ignored_orphans\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"features_semaphore\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"field_bundle_settings_harmony_post__harmony_post\\\", array (\n 'view_modes' =\u003e \n array (\n 'full' =\u003e \n array (\n 'custom_settings' =\u003e true,\n ),\n 'inline_reply' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'diff_standard' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'token' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n ),\n 'extra_fields' =\u003e \n array (\n 'form' =\u003e \n array (\n ),\n 'display' =\u003e \n array (\n 'harmony_core_post_revision_display_log' =\u003e \n array (\n 'default' =\u003e \n array (\n 'weight' =\u003e '5',\n 'visible' =\u003e true,\n ),\n ),\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"field_bundle_settings_node__section\\\", array (\n 'view_modes' =\u003e \n array (\n 'teaser' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'full' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'rss' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'token' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'diff_standard' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n ),\n 'extra_fields' =\u003e \n array (\n 'form' =\u003e \n array (\n 'title' =\u003e \n array (\n 'weight' =\u003e '-5',\n ),\n ),\n 'display' =\u003e \n array (\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"field_bundle_settings_taxonomy_term__harmony_category\\\", array (\n 'view_modes' =\u003e \n array (\n 'full' =\u003e \n array (\n 'custom_settings' =\u003e true,\n ),\n 'diff_standard' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'token' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n ),\n 'extra_fields' =\u003e \n array (\n 'form' =\u003e \n array (\n 'metatags' =\u003e \n array (\n 'weight' =\u003e '6',\n ),\n 'path' =\u003e \n array (\n 'weight' =\u003e '5',\n ),\n 'name' =\u003e \n array (\n 'weight' =\u003e '0',\n ),\n 'description' =\u003e \n array (\n 'weight' =\u003e '1',\n ),\n ),\n 'display' =\u003e \n array (\n 'description' =\u003e \n array (\n 'default' =\u003e \n array (\n 'weight' =\u003e '0',\n 'visible' =\u003e true,\n ),\n 'full' =\u003e \n array (\n 'weight' =\u003e '0',\n 'visible' =\u003e true,\n ),\n ),\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"field_bundle_settings_user__user\\\", array (\n 'view_modes' =\u003e \n array (\n ),\n 'extra_fields' =\u003e \n array (\n 'form' =\u003e \n array (\n ),\n 'display' =\u003e \n array (\n 'summary' =\u003e \n array (\n 'harmony_user_post_profile' =\u003e \n array (\n 'weight' =\u003e '2',\n 'visible' =\u003e false,\n ),\n ),\n 'name' =\u003e \n array (\n 'harmony_user_post_profile' =\u003e \n array (\n 'weight' =\u003e '11',\n 'visible' =\u003e true,\n ),\n ),\n 'user_picture' =\u003e \n array (\n 'harmony_user_post_profile' =\u003e \n array (\n 'weight' =\u003e '10',\n 'visible' =\u003e true,\n ),\n ),\n 'username' =\u003e \n array (\n 'harmony_user_post_profile' =\u003e \n array (\n 'weight' =\u003e '11',\n 'visible' =\u003e true,\n ),\n ),\n 'harmony_core_user_name' =\u003e \n array (\n 'harmony_user_post_profile' =\u003e \n array (\n 'weight' =\u003e '11',\n 'visible' =\u003e true,\n ),\n ),\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"filter_fallback_format\\\", 'plain_text');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"harmony_core_bundle__open_discussion__reply_as_new_thread\\\", '2');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"harmony_core_bundle__open_discussion__show_anon_reply_links\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"imageinfo_cache_disable_on_demand_generation\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"imageinfo_cache_getimagesize\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"imageinfo_cache_use_httprl\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"jquery_update_compression_type\\\", 'min');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"jquery_update_jquery_admin_version\\\", 'default');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"jquery_update_jquery_cdn\\\", 'google');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"jquery_update_jquery_version\\\", '1.8');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"lti_tool_provider_og_group_mapping\\\", array (\n 'context_id' =\u003e 'field_section_id',\n 'context_label' =\u003e 'none',\n 'context_title' =\u003e 'title',\n 'context_type' =\u003e 'none',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"lti_tool_provider_og_group_mapping_bundle\\\", 'node:section');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"lti_tool_provider_og_group_role_array\\\", array (\n 'Learner' =\u003e '2',\n 'Instructor' =\u003e '2',\n 'ContentDeveloper' =\u003e '2',\n 'Member' =\u003e '2',\n 'Manager' =\u003e '2',\n 'Mentor' =\u003e '2',\n 'Administrator' =\u003e '2',\n 'TeachingAssistant' =\u003e '2',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"lti_tool_provider_og_provision_groups\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"menu_expanded\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"menu_options_section\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"menu_parent_section\\\", 'main-menu:0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"module_filter_recent_modules\\\", array (\n 'apc' =\u003e 1413817797,\n 'entitycache' =\u003e 1413817797,\n 'advagg_bundler' =\u003e 1413817993,\n 'advagg_mod' =\u003e 1413817993,\n 'advagg' =\u003e 1413817993,\n 'imageinfo_cache' =\u003e 1413818162,\n 'display_cache' =\u003e 1413827615,\n 'render_cache' =\u003e 1413827496,\n 'render_cache_block' =\u003e 1413827496,\n 'render_cache_entity' =\u003e 1413827496,\n 'render_cache_page' =\u003e 1413827496,\n 'render_cache_comment' =\u003e 1413827496,\n 'render_cache_node' =\u003e 1413827496,\n 'render_cache_views' =\u003e 1413827496,\n 'render_cache_context' =\u003e 1413827615,\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"node_admin_theme\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"node_options_section\\\", array (\n 0 =\u003e 'status',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"node_preview_section\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"node_submitted_section\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_blog_pattern\\\", 'blogs\/[user:name]');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_forum_pattern\\\", '[term:vocabulary]\/[term:name]');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_harmony_core_pattern\\\", 'thread\/[harmony_thread:thread-id]\/[harmony_thread:title]');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_node_pattern\\\", 'content\/[node:title]');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_punctuation_hyphen\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_taxonomy_term_harmony_category_pattern\\\", 'category\/[term:parents:join-path]\/[term:name]');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_taxonomy_term_pattern\\\", '[term:vocabulary]\/[term:name]');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_user_pattern\\\", 'users\/[user:name]');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"path_alias_whitelist\\\", array (\n 'node' =\u003e true,\n 'taxonomy' =\u003e true,\n 'thread' =\u003e true,\n 'user' =\u003e true,\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"site_403\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"site_404\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"site_frontpage\\\", 'forum');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"theme_default\\\", 'bartik');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"theme_zurb_foundation_settings\\\", array (\n 'toggle_logo' =\u003e 1,\n 'toggle_name' =\u003e 1,\n 'toggle_slogan' =\u003e 1,\n 'toggle_node_user_picture' =\u003e 1,\n 'toggle_comment_user_picture' =\u003e 1,\n 'toggle_comment_user_verification' =\u003e 1,\n 'toggle_favicon' =\u003e 1,\n 'toggle_main_menu' =\u003e 1,\n 'toggle_secondary_menu' =\u003e 1,\n 'default_logo' =\u003e 1,\n 'logo_path' =\u003e '',\n 'logo_upload' =\u003e '',\n 'default_favicon' =\u003e 1,\n 'favicon_path' =\u003e '',\n 'favicon_upload' =\u003e '',\n 'zurb_foundation_top_bar_enable' =\u003e '1',\n 'zurb_foundation_top_bar_grid' =\u003e 1,\n 'zurb_foundation_top_bar_sticky' =\u003e 1,\n 'zurb_foundation_top_bar_scrolltop' =\u003e 1,\n 'zurb_foundation_top_bar_is_hover' =\u003e 1,\n 'zurb_foundation_top_bar_menu_text' =\u003e 'Menu',\n 'zurb_foundation_top_bar_custom_back_text' =\u003e 1,\n 'zurb_foundation_top_bar_back_text' =\u003e 'Back',\n 'zurb_foundation_tooltip_enable' =\u003e 1,\n 'zurb_foundation_tooltip_position' =\u003e 'tip-top',\n 'zurb_foundation_tooltip_mode' =\u003e 'text',\n 'zurb_foundation_tooltip_text' =\u003e 'More information?',\n 'zurb_foundation_tooltip_touch' =\u003e 0,\n 'zurb_foundation_disable_core_css' =\u003e 0,\n 'zurb_foundation_html_tags' =\u003e 1,\n 'zurb_foundation_messages_modal' =\u003e 0,\n 'zurb_foundation_pager_center' =\u003e 1,\n 'zurb_foundation__active_tab' =\u003e 'edit-topbar',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"transliteration_file_lowercase\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"transliteration_file_uploads\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"transliteration_file_uploads_display_name\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_cancel_method\\\", 'user_cancel_block');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_email_verification\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_mail_status_blocked_notify\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_mail_status_canceled_notify\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_pictures\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_default\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_dimensions\\\", '85x85');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_file_size\\\", '30');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_guidelines\\\", 'Nothing stupid please');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_path\\\", 'pictures');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_style\\\", 'harmony-32-32');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_register\\\", '2');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_signatures\\\", 0);\"" + ] + } + ], + "metadata": { + "type": "testing", + "description": "Blueprint of dd2.btopro.net", + "version": "0.0", + "author": "btopro" + } +} diff --git a/_RECIPES/dd3.drecipe b/_RECIPES/dd3.drecipe new file mode 100644 index 00000000000..8dc65270842 --- /dev/null +++ b/_RECIPES/dd3.drecipe @@ -0,0 +1,1259 @@ +{ + "name": "DD3 website", + "drush_recipes_api": "1.0", + "weight": "0", + "core": "7", + "recipe": [ + { + "command": "en", + "arguments": [ + "strongarm", + "block", + "accessibility", + "accessibility_wysiwyg", + "admin_devel", + "advagg", + "advagg_bundler", + "advagg_mod", + "backports", + "classy_panel_styles", + "context", + "cps_example", + "ctools", + "date", + "date_api", + "date_popup", + "date_views", + "defaultconfig", + "devel_generate", + "devel_node_access", + "entity", + "entityreference", + "entity_modified", + "facetapi", + "fape", + "field", + "fieldable_panels_panes", + "field_sql_storage", + "field_ui", + "file", + "file_entity", + "filter", + "image", + "imageinfo_cache", + "imce", + "imce_wysiwyg", + "jquery_update", + "libraries", + "link", + "list", + "media", + "media_internet", + "media_vimeo", + "media_youtube", + "menu", + "menu_block", + "module_filter", + "node", + "number", + "options", + "options_element", + "panels", + "panels_breadcrumbs", + "panels_ipe", + "panopoly_admin", + "panopoly_core", + "panopoly_images", + "panopoly_magic", + "panopoly_pages", + "panopoly_search", + "panopoly_theme", + "panopoly_users", + "panopoly_widgets", + "paranoia", + "path", + "pm_existing_pages", + "profiler_builder", + "registry_autoload", + "render_cache", + "render_cache_block", + "render_cache_entity", + "render_cache_node", + "render_cache_views", + "save_draft", + "search", + "search_api", + "search_api_db", + "search_api_facetapi", + "search_api_solr", + "search_api_views", + "seckit", + "simple_gmap", + "tablefield", + "taxonomy", + "text", + "textbook", + "textbook_editor", + "token", + "transliteration", + "typogrify", + "update", + "user", + "user_picture_field", + "uuid", + "video_filter", + "views_autocomplete_filters", + "views_bulk_operations", + "views_content", + "wysiwyg", + "ckeditor_link", + "ds", + "field_group", + "pathauto", + "views", + "panels_node", + "admin_views", + "features", + "manualcrop", + "panelizer", + "page_manager", + "admin_menu", + "admin_menu_toolbar", + "minimal", + "bartik", + "dblog", + "httprl", + "system", + "devel" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"additional_settings__active_tab_panopoly_page\\\", 'edit-submission');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"additional_settings__active_tab_thing\\\", 'edit-submission');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_cache_client\\\", false);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_display\\\", 'plid');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"admin_menu_show_all\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_cache_level\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_combine_css_media\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_core_groups\\\", false);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_cron_frequency\\\", '86400');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_css_fix_type\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_enabled\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_gzip\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_ie_css_selector_limiter\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_ie_css_selector_limiter_value\\\", '4095');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_js_fix_type\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_adjust_sort_browsers\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_adjust_sort_external\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_adjust_sort_inline\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_defer\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_head_extract\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_css_preprocess\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_inline_pages\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_inline_settings\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_adjust_sort_browsers\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_adjust_sort_external\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_adjust_sort_inline\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_async\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_async_shim\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_defer\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_footer\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_footer_inline_alter\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_head_extract\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_preprocess\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_js_remove_unused\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_mod_unified_multisite_dir\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_remove_missing_files_from_db_time\\\", '1209600');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_remove_old_unused_aggregates_time\\\", '3888000');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"advagg_use_httprl\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"anonymous\\\", 'Guest');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"block_cache\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"ckeditor_link_autocomplete_menus\\\", array (\n '- any -' =\u003e '- any -',\n 'devel' =\u003e 0,\n 'features' =\u003e 0,\n 'main-menu' =\u003e 0,\n 'management' =\u003e 0,\n 'navigation' =\u003e 0,\n 'user-menu' =\u003e 0,\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"ckeditor_link_autocomplete_node_types\\\", array (\n '- any -' =\u003e '- any -',\n 'certificate' =\u003e 0,\n 'page' =\u003e 0,\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"ckeditor_link_autocomplete_vocabularies\\\", array (\n '- any -' =\u003e '- any -',\n 1 =\u003e 0,\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"ckeditor_link_type_name\\\", 'Internal link');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"ckeditor_link_type_selected\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"classy_panel_styles__base_region_style\\\", 'panels_default_style_render_region');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"classy_panel_styles__css_path\\\", 'sites\/dd3\/modules\/2208431\/cps_example\/styles\/css\/classy_panel_styles.css');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"classy_panel_styles__editor_styling\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"contact_default_status\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"context_block_rebuild_needed\\\", true);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"ctools_content_all_views\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_api_version\\\", '7.2');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_default_timezone\\\", 'America\/New_York');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_views_day_format_without_year\\\", 'l, F j');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_views_day_format_with_year\\\", 'l, F j, Y');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_views_month_format_without_year\\\", 'F');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_views_month_format_with_year\\\", 'F Y');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_views_week_format_without_year\\\", 'F j');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"date_views_week_format_with_year\\\", 'F j, Y');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_api_url\\\", 'api.drupal.org');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_error_handlers\\\", array (\n 1 =\u003e '1',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_execution\\\", '5');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_krumo_skin\\\", 'orange');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_memory\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_node_access_debug_mode\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_node_access_user_ajax\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_page_alter\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_query_display\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_query_sort\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_raw_names\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_rebuild_theme_registry\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_redirect_page\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_use_uncompressed_jquery\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_xhprof_directory\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_xhprof_enabled\\\", false);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"devel_xhprof_url\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"dev_timer\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"display_cache_node_panopoly_page_default\\\", array (\n 'default' =\u003e \n array (\n 'use' =\u003e '1',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n 'field_featured_image' =\u003e \n array (\n 'override' =\u003e '2',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n 'body' =\u003e \n array (\n 'override' =\u003e '2',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n 'field_featured_status' =\u003e \n array (\n 'override' =\u003e '2',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n 'field_featured_categories' =\u003e \n array (\n 'override' =\u003e '2',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"display_cache_node_thing_default\\\", array (\n 'default' =\u003e \n array (\n 'use' =\u003e '1',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n 'body' =\u003e \n array (\n 'override' =\u003e '2',\n 'page_granularity' =\u003e '0',\n 'user_granularity' =\u003e '1',\n 'granularity' =\u003e '1',\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"display_cache_variables\\\", array (\n 0 =\u003e 'display_cache_node_thing_default',\n 1 =\u003e 'display_cache_node_panopoly_page_default',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"drupal_stale_file_threshold\\\", '2592000');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"entitycache_enabled\\\", true);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"entityreference:base-tables\\\", array (\n 'accessibility_test' =\u003e \n array (\n 0 =\u003e 'accessibility_test',\n 1 =\u003e 'test_id',\n ),\n 'fieldable_panels_pane' =\u003e \n array (\n 0 =\u003e 'fieldable_panels_panes',\n 1 =\u003e 'fpid',\n ),\n 'node' =\u003e \n array (\n 0 =\u003e 'node',\n 1 =\u003e 'nid',\n ),\n 'search_api_server' =\u003e \n array (\n 0 =\u003e 'search_api_server',\n 1 =\u003e 'id',\n ),\n 'search_api_index' =\u003e \n array (\n 0 =\u003e 'search_api_index',\n 1 =\u003e 'id',\n ),\n 'file' =\u003e \n array (\n 0 =\u003e 'file_managed',\n 1 =\u003e 'fid',\n ),\n 'taxonomy_term' =\u003e \n array (\n 0 =\u003e 'taxonomy_term_data',\n 1 =\u003e 'tid',\n ),\n 'taxonomy_vocabulary' =\u003e \n array (\n 0 =\u003e 'taxonomy_vocabulary',\n 1 =\u003e 'vid',\n ),\n 'user' =\u003e \n array (\n 0 =\u003e 'users',\n 1 =\u003e 'uid',\n ),\n 'wysiwyg_profile' =\u003e \n array (\n 0 =\u003e 'wysiwyg',\n 1 =\u003e 'format',\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"entity_cache_tables_created\\\", NULL);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"error_level\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"facetapi:block_cache:search_api@database_node_index\\\", -1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"facetapi:block_cache:search_api@node_index\\\", -1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"features_ignored_orphans\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"features_semaphore\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"field_bundle_settings_accessibility_test__accessibility_test\\\", array (\n 'view_modes' =\u003e \n array (\n 'popup' =\u003e \n array (\n 'custom_settings' =\u003e true,\n ),\n 'full' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n ),\n 'extra_fields' =\u003e \n array (\n 'form' =\u003e \n array (\n ),\n 'display' =\u003e \n array (\n 'quail_name' =\u003e \n array (\n 'default' =\u003e \n array (\n 'weight' =\u003e '3',\n 'visible' =\u003e false,\n ),\n 'popup' =\u003e \n array (\n 'weight' =\u003e '3',\n 'visible' =\u003e false,\n ),\n ),\n 'severity' =\u003e \n array (\n 'default' =\u003e \n array (\n 'weight' =\u003e '2',\n 'visible' =\u003e false,\n ),\n 'popup' =\u003e \n array (\n 'weight' =\u003e '2',\n 'visible' =\u003e false,\n ),\n ),\n 'status' =\u003e \n array (\n 'default' =\u003e \n array (\n 'weight' =\u003e '1',\n 'visible' =\u003e false,\n ),\n 'popup' =\u003e \n array (\n 'weight' =\u003e '1',\n 'visible' =\u003e false,\n ),\n ),\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"field_bundle_settings_file__audio\\\", array (\n 'view_modes' =\u003e \n array (\n ),\n 'extra_fields' =\u003e \n array (\n 'form' =\u003e \n array (\n ),\n 'display' =\u003e \n array (\n 'file' =\u003e \n array (\n 'media_small' =\u003e \n array (\n 'weight' =\u003e 0,\n 'visible' =\u003e false,\n ),\n ),\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"field_bundle_settings_file__default\\\", array (\n 'view_modes' =\u003e \n array (\n ),\n 'extra_fields' =\u003e \n array (\n 'form' =\u003e \n array (\n ),\n 'display' =\u003e \n array (\n 'file' =\u003e \n array (\n 'media_small' =\u003e \n array (\n 'weight' =\u003e 0,\n 'visible' =\u003e false,\n ),\n ),\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"field_bundle_settings_file__image\\\", array (\n 'view_modes' =\u003e \n array (\n ),\n 'extra_fields' =\u003e \n array (\n 'form' =\u003e \n array (\n ),\n 'display' =\u003e \n array (\n 'file' =\u003e \n array (\n 'media_small' =\u003e \n array (\n 'weight' =\u003e 0,\n 'visible' =\u003e false,\n ),\n ),\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"field_bundle_settings_file__video\\\", array (\n 'view_modes' =\u003e \n array (\n ),\n 'extra_fields' =\u003e \n array (\n 'form' =\u003e \n array (\n ),\n 'display' =\u003e \n array (\n 'file' =\u003e \n array (\n 'media_small' =\u003e \n array (\n 'weight' =\u003e 0,\n 'visible' =\u003e false,\n ),\n ),\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"field_bundle_settings_node__panopoly_page\\\", array (\n 'view_modes' =\u003e \n array (\n 'teaser' =\u003e \n array (\n 'custom_settings' =\u003e true,\n ),\n 'search_result' =\u003e \n array (\n 'custom_settings' =\u003e true,\n ),\n 'featured' =\u003e \n array (\n 'custom_settings' =\u003e true,\n ),\n 'full' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'rss' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'search_index' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'token' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n ),\n 'extra_fields' =\u003e \n array (\n 'form' =\u003e \n array (\n 'title' =\u003e \n array (\n 'weight' =\u003e '0',\n ),\n 'path' =\u003e \n array (\n 'weight' =\u003e '5',\n ),\n ),\n 'display' =\u003e \n array (\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"field_bundle_settings_node__thing\\\", array (\n 'view_modes' =\u003e \n array (\n 'teaser' =\u003e \n array (\n 'custom_settings' =\u003e true,\n ),\n 'featured' =\u003e \n array (\n 'custom_settings' =\u003e true,\n ),\n 'full' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'rss' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'search_index' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'search_result' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n 'token' =\u003e \n array (\n 'custom_settings' =\u003e false,\n ),\n ),\n 'extra_fields' =\u003e \n array (\n 'form' =\u003e \n array (\n ),\n 'display' =\u003e \n array (\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"filter_fallback_format\\\", 'plain_text');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"imageinfo_cache_disable_on_demand_generation\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"imageinfo_cache_field_basic_image_image\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"imageinfo_cache_field_featured_image\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"imageinfo_cache_field_user_picture\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"imageinfo_cache_field_video_file\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"imageinfo_cache_getimagesize\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"imageinfo_cache_use_httprl\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"imce_profiles\\\", array (\n 1 =\u003e \n array (\n 'name' =\u003e 'User-1',\n 'usertab' =\u003e 1,\n 'filesize' =\u003e 0,\n 'quota' =\u003e 0,\n 'tuquota' =\u003e 0,\n 'extensions' =\u003e '*',\n 'dimensions' =\u003e '1200x1200',\n 'filenum' =\u003e 0,\n 'directories' =\u003e \n array (\n 0 =\u003e \n array (\n 'name' =\u003e '.',\n 'subnav' =\u003e 1,\n 'browse' =\u003e 1,\n 'upload' =\u003e 1,\n 'thumb' =\u003e 1,\n 'delete' =\u003e 1,\n 'resize' =\u003e 1,\n ),\n ),\n 'thumbnails' =\u003e \n array (\n 0 =\u003e \n array (\n 'name' =\u003e 'Small',\n 'dimensions' =\u003e '90x90',\n 'prefix' =\u003e 'small_',\n 'suffix' =\u003e '',\n ),\n 1 =\u003e \n array (\n 'name' =\u003e 'Medium',\n 'dimensions' =\u003e '120x120',\n 'prefix' =\u003e 'medium_',\n 'suffix' =\u003e '',\n ),\n 2 =\u003e \n array (\n 'name' =\u003e 'Large',\n 'dimensions' =\u003e '180x180',\n 'prefix' =\u003e 'large_',\n 'suffix' =\u003e '',\n ),\n ),\n ),\n 2 =\u003e \n array (\n 'name' =\u003e 'Sample profile',\n 'usertab' =\u003e 1,\n 'filesize' =\u003e 1,\n 'quota' =\u003e 2,\n 'tuquota' =\u003e 0,\n 'extensions' =\u003e 'gif png jpg jpeg',\n 'dimensions' =\u003e '800x600',\n 'filenum' =\u003e 1,\n 'directories' =\u003e \n array (\n 0 =\u003e \n array (\n 'name' =\u003e 'u%uid',\n 'subnav' =\u003e 0,\n 'browse' =\u003e 1,\n 'upload' =\u003e 1,\n 'thumb' =\u003e 1,\n 'delete' =\u003e 0,\n 'resize' =\u003e 0,\n ),\n ),\n 'thumbnails' =\u003e \n array (\n 0 =\u003e \n array (\n 'name' =\u003e 'Thumb',\n 'dimensions' =\u003e '90x90',\n 'prefix' =\u003e 'thumb_',\n 'suffix' =\u003e '',\n ),\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"jquery_update_jquery_version\\\", '1.7');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"manualcrop\\\", array (\n 'cache_control' =\u003e 1,\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"manualcrop_cache_control\\\", true);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"menu_expanded\\\", array (\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"menu_options_panopoly_page\\\", array (\n 0 =\u003e 'main-menu',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"menu_options_thing\\\", array (\n 0 =\u003e 'main-menu',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"menu_parent_panopoly_page\\\", 'main-menu:0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"menu_parent_thing\\\", 'main-menu:0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"module_filter_recent_modules\\\", array (\n 'httprl' =\u003e 1413817746,\n 'imageinfo_cache' =\u003e 1413818213,\n 'display_cache' =\u003e 1413829204,\n 'render_cache' =\u003e 1413829204,\n 'render_cache_block' =\u003e 1413829204,\n 'render_cache_entity' =\u003e 1413829204,\n 'render_cache_page' =\u003e 1413829279,\n 'render_cache_comment' =\u003e 1413829373,\n 'render_cache_context' =\u003e 1413829373,\n 'render_cache_ds' =\u003e 1413829279,\n 'render_cache_node' =\u003e 1413829442,\n 'render_cache_views' =\u003e 1413829442,\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"node_options_panopoly_page\\\", array (\n 0 =\u003e 'status',\n 1 =\u003e 'promote',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"node_options_thing\\\", array (\n 0 =\u003e 'status',\n 1 =\u003e 'promote',\n 2 =\u003e 'revision',\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"node_preview_panopoly_page\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"node_preview_thing\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"node_submitted_panopoly_page\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"node_submitted_thing\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"page_manager_node_edit_disabled\\\", false);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"page_manager_node_view_disabled\\\", true);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"page_manager_term_view_disabled\\\", false);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"page_manager_user_view_disabled\\\", false);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_defaults_fieldable_panels_pane_basic_file\\\", array (\n 'status' =\u003e 0,\n 'view modes' =\u003e \n array (\n 'default' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'full' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'token' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_defaults_fieldable_panels_pane_fieldable_panels_pane\\\", array (\n 'status' =\u003e 0,\n 'view modes' =\u003e \n array (\n 'default' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'full' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'token' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_defaults_fieldable_panels_pane_image\\\", array (\n 'status' =\u003e 0,\n 'view modes' =\u003e \n array (\n 'default' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'full' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'token' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_defaults_fieldable_panels_pane_map\\\", array (\n 'status' =\u003e 0,\n 'view modes' =\u003e \n array (\n 'default' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'full' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'token' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_defaults_fieldable_panels_pane_quick_links\\\", array (\n 'status' =\u003e 0,\n 'view modes' =\u003e \n array (\n 'default' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'full' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'token' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_defaults_fieldable_panels_pane_spotlight\\\", array (\n 'status' =\u003e 0,\n 'view modes' =\u003e \n array (\n 'default' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'full' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'token' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_defaults_fieldable_panels_pane_table\\\", array (\n 'status' =\u003e 0,\n 'view modes' =\u003e \n array (\n 'default' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'full' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'token' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_defaults_fieldable_panels_pane_text\\\", array (\n 'status' =\u003e 0,\n 'view modes' =\u003e \n array (\n 'default' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'full' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'token' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_defaults_fieldable_panels_pane_video\\\", array (\n 'status' =\u003e 0,\n 'view modes' =\u003e \n array (\n 'default' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'full' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'token' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_defaults_node_panopoly_page\\\", array (\n 'status' =\u003e 0,\n 'view modes' =\u003e \n array (\n 'page_manager' =\u003e \n array (\n 'status' =\u003e 1,\n 'default' =\u003e 1,\n 'choice' =\u003e 0,\n ),\n 'default' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 1,\n 'choice' =\u003e 0,\n ),\n 'teaser' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 1,\n 'choice' =\u003e 0,\n ),\n 'search_result' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'featured' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 1,\n 'choice' =\u003e 0,\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_defaults_node_thing\\\", array (\n 'status' =\u003e 1,\n 'view modes' =\u003e \n array (\n 'page_manager' =\u003e \n array (\n 'status' =\u003e 1,\n 'default' =\u003e 1,\n 'choice' =\u003e 1,\n ),\n 'default' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'teaser' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'featured' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_defaults_taxonomy_term_panopoly_categories\\\", array (\n 'status' =\u003e 0,\n 'view modes' =\u003e \n array (\n 'page_manager' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'default' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'full' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'featured' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'token' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_defaults_user_user\\\", array (\n 'status' =\u003e 0,\n 'view modes' =\u003e \n array (\n 'page_manager' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'default' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n 'featured' =\u003e \n array (\n 'status' =\u003e 0,\n 'default' =\u003e 0,\n 'choice' =\u003e 0,\n ),\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_node:panopoly_page_allowed_layouts_default\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_node:panopoly_page_allowed_types_default\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_node:thing_allowed_layouts\\\", 'O:22:\"panels_allowed_layouts\":4:{s:9:\"allow_new\";b:1;s:11:\"module_name\";s:20:\"panelizer_node:thing\";s:23:\"allowed_layout_settings\";a:41:{s:8:\"flexible\";b:0;s:17:\"flexible:sdffgsfd\";b:0;s:14:\"twocol_stacked\";b:0;s:17:\"threecol_25_50_25\";b:0;s:6:\"twocol\";b:0;s:25:\"threecol_33_34_33_stacked\";b:0;s:6:\"onecol\";b:0;s:25:\"threecol_25_50_25_stacked\";b:0;s:13:\"twocol_bricks\";b:0;s:17:\"threecol_33_34_33\";b:0;s:5:\"rolph\";b:0;s:9:\"sanderson\";b:0;s:8:\"mccoppin\";b:0;s:16:\"bartlett_flipped\";b:0;s:4:\"webb\";b:0;s:6:\"boxton\";b:1;s:12:\"sutro_double\";b:1;s:7:\"hewston\";b:0;s:8:\"bartlett\";b:0;s:6:\"bryant\";b:0;s:4:\"pond\";b:1;s:15:\"brenham_flipped\";b:0;s:4:\"burr\";b:0;s:5:\"brown\";b:1;s:5:\"sutro\";b:1;s:15:\"moscone_flipped\";b:1;s:14:\"taylor_flipped\";b:0;s:5:\"geary\";b:0;s:6:\"phelan\";b:0;s:12:\"webb_flipped\";b:0;s:6:\"harris\";b:0;s:17:\"sanderson_flipped\";b:0;s:13:\"selby_flipped\";b:0;s:15:\"hewston_flipped\";b:0;s:12:\"burr_flipped\";b:0;s:6:\"whelan\";b:0;s:7:\"brenham\";b:1;s:7:\"moscone\";b:1;s:22:\"bryant_flipped_flipped\";b:1;s:5:\"selby\";b:0;s:6:\"taylor\";b:0;}s:10:\"form_state\";N;}');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_node:thing_allowed_layouts_default\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_node:thing_allowed_types\\\", array (\n 'vocabulary_terms-vocabulary_terms' =\u003e 'vocabulary_terms-vocabulary_terms',\n 'form-form' =\u003e 'form-form',\n 'term_description-term_description' =\u003e 'term_description-term_description',\n 'term_list-term_list' =\u003e 'term_list-term_list',\n 'user_signature-user_signature' =\u003e 'user_signature-user_signature',\n 'user_profile-user_profile' =\u003e 'user_profile-user_profile',\n 'user_picture-user_picture' =\u003e 'user_picture-user_picture',\n 'node_body-node_body' =\u003e 'node_body-node_body',\n 'node_title-node_title' =\u003e 'node_title-node_title',\n 'node_terms-node_terms' =\u003e 'node_terms-node_terms',\n 'node_type_desc-node_type_desc' =\u003e 'node_type_desc-node_type_desc',\n 'node_author-node_author' =\u003e 'node_author-node_author',\n 'node_updated-node_updated' =\u003e 'node_updated-node_updated',\n 'node_created-node_created' =\u003e 'node_created-node_created',\n 'node_content-node_content' =\u003e 'node_content-node_content',\n 'node_links-node_links' =\u003e 'node_links-node_links',\n 'node_attachments-node_attachments' =\u003e 'node_attachments-node_attachments',\n 'page_actions-page_actions' =\u003e 'page_actions-page_actions',\n 'page_help-page_help' =\u003e 'page_help-page_help',\n 'page_secondary_links-page_secondary_links' =\u003e 'page_secondary_links-page_secondary_links',\n 'page_logo-page_logo' =\u003e 'page_logo-page_logo',\n 'page_primary_links-page_primary_links' =\u003e 'page_primary_links-page_primary_links',\n 'page_slogan-page_slogan' =\u003e 'page_slogan-page_slogan',\n 'page_messages-page_messages' =\u003e 'page_messages-page_messages',\n 'page_breadcrumb-page_breadcrumb' =\u003e 'page_breadcrumb-page_breadcrumb',\n 'page_site_name-page_site_name' =\u003e 'page_site_name-page_site_name',\n 'page_feed_icons-page_feed_icons' =\u003e 'page_feed_icons-page_feed_icons',\n 'page_title-page_title' =\u003e 'page_title-page_title',\n 'page_tabs-page_tabs' =\u003e 'page_tabs-page_tabs',\n 'search_result-search_result' =\u003e 'search_result-search_result',\n 'search_form-search_form' =\u003e 'search_form-search_form',\n 'node-node' =\u003e 'node-node',\n 'node_form_path-node_form_path' =\u003e 'node_form_path-node_form_path',\n 'node_form_publishing-node_form_publishing' =\u003e 'node_form_publishing-node_form_publishing',\n 'node_form_buttons-node_form_buttons' =\u003e 'node_form_buttons-node_form_buttons',\n 'node_form_author-node_form_author' =\u003e 'node_form_author-node_form_author',\n 'node_form_title-node_form_title' =\u003e 'node_form_title-node_form_title',\n 'node_form_log-node_form_log' =\u003e 'node_form_log-node_form_log',\n 'node_form_language-node_form_language' =\u003e 'node_form_language-node_form_language',\n 'node_form_menu-node_form_menu' =\u003e 'node_form_menu-node_form_menu',\n 'file_display-file_display' =\u003e 'file_display-file_display',\n 'file_content-file_content' =\u003e 'file_content-file_content',\n 'reusable_widgets-reusable_widgets' =\u003e 'reusable_widgets-reusable_widgets',\n 'general_widgets-general_widgets' =\u003e 'general_widgets-general_widgets',\n 'content-content' =\u003e 'content-content',\n 'taxonomy-taxonomy' =\u003e 'taxonomy-taxonomy',\n 'overridden_page_templates-overridden_page_templates' =\u003e 'overridden_page_templates-overridden_page_templates',\n 'theme-theme' =\u003e 'theme-theme',\n 'users-users' =\u003e 'users-users',\n 'general_panes-general_panes' =\u003e 'general_panes-general_panes',\n 'panels_layouts-panels_layouts' =\u003e 'panels_layouts-panels_layouts',\n 'landing_pages-landing_pages' =\u003e 'landing_pages-landing_pages',\n 'menus-menus' =\u003e 'menus-menus',\n 'facet-facet' =\u003e 'facet-facet',\n 'search_current-search_current' =\u003e 'search_current-search_current',\n 'search_box-search_box' =\u003e 'search_box-search_box',\n 'pm_existing_pages-pm_existing_pages' =\u003e 'pm_existing_pages-pm_existing_pages',\n 'views_empty-views_empty' =\u003e 'views_empty-views_empty',\n 'views_row-views_row' =\u003e 'views_row-views_row',\n 'views_pager-views_pager' =\u003e 'views_pager-views_pager',\n 'views_feed-views_feed' =\u003e 'views_feed-views_feed',\n 'views_header-views_header' =\u003e 'views_header-views_header',\n 'views_exposed-views_exposed' =\u003e 'views_exposed-views_exposed',\n 'views_attachments-views_attachments' =\u003e 'views_attachments-views_attachments',\n 'views_view-views_view' =\u003e 'views_view-views_view',\n 'views_footer-views_footer' =\u003e 'views_footer-views_footer',\n 'panelizer_form_default-panelizer_form_default' =\u003e 'panelizer_form_default-panelizer_form_default',\n 'custom-custom' =\u003e 'custom-custom',\n 'entity_form_field-accessibility_test:error_description' =\u003e 0,\n 'entity_form_field-fieldable_panels_pane:field_quick_links_links' =\u003e 0,\n 'entity_form_field-fieldable_panels_pane:field_basic_file_file' =\u003e 0,\n 'entity_form_field-fieldable_panels_pane:field_basic_file_text' =\u003e 0,\n 'entity_form_field-fieldable_panels_pane:field_basic_image_caption' =\u003e 0,\n 'entity_form_field-fieldable_panels_pane:field_basic_image_image' =\u003e 0,\n 'entity_form_field-fieldable_panels_pane:field_basic_text_text' =\u003e 0,\n 'entity_form_field-fieldable_panels_pane:field_map_address' =\u003e 0,\n 'entity_form_field-fieldable_panels_pane:field_map_information' =\u003e 0,\n 'entity_form_field-fieldable_panels_pane:field_basic_table_table' =\u003e 0,\n 'entity_form_field-fieldable_panels_pane:field_video_file' =\u003e 0,\n 'entity_form_field-fieldable_panels_pane:field_basic_spotlight_items' =\u003e 0,\n 'entity_form_field-node:body' =\u003e 0,\n 'entity_form_field-node:field_featured_image' =\u003e 0,\n 'entity_form_field-node:field_featured_categories' =\u003e 0,\n 'entity_form_field-node:field_featured_status' =\u003e 0,\n 'entity_form_field-file:field_file_image_alt_text' =\u003e 0,\n 'entity_form_field-file:field_file_image_title_text' =\u003e 0,\n 'entity_form_field-taxonomy_term:field_featured_image' =\u003e 0,\n 'entity_form_field-user:field_user_about' =\u003e 0,\n 'entity_form_field-user:field_user_picture' =\u003e 0,\n 'token-node:source' =\u003e 'token-node:source',\n 'token-node:log' =\u003e 'token-node:log',\n 'token-node:content-type' =\u003e 'token-node:content-type',\n 'token-node:menu-link' =\u003e 'token-node:menu-link',\n 'token-node:nid' =\u003e 'token-node:nid',\n 'token-node:vid' =\u003e 'token-node:vid',\n 'token-node:title' =\u003e 'token-node:title',\n 'token-node:body' =\u003e 'token-node:body',\n 'token-node:summary' =\u003e 'token-node:summary',\n 'token-node:language' =\u003e 'token-node:language',\n 'token-node:url' =\u003e 'token-node:url',\n 'token-node:edit-url' =\u003e 'token-node:edit-url',\n 'token-node:created' =\u003e 'token-node:created',\n 'token-node:changed' =\u003e 'token-node:changed',\n 'token-node:author' =\u003e 'token-node:author',\n 'token-node:uuid' =\u003e 'token-node:uuid',\n 'token-node:vuuid' =\u003e 'token-node:vuuid',\n 'token-node:original' =\u003e 'token-node:original',\n 'token-node:field_featured_image' =\u003e 'token-node:field_featured_image',\n 'token-node:field_featured_categories' =\u003e 'token-node:field_featured_categories',\n 'token-node:field_featured_status' =\u003e 'token-node:field_featured_status',\n 'token-content-type:name' =\u003e 'token-content-type:name',\n 'token-content-type:machine-name' =\u003e 'token-content-type:machine-name',\n 'token-content-type:description' =\u003e 'token-content-type:description',\n 'token-content-type:node-count' =\u003e 'token-content-type:node-count',\n 'token-content-type:edit-url' =\u003e 'token-content-type:edit-url',\n 'token-term:edit-url' =\u003e 'token-term:edit-url',\n 'token-term:parents' =\u003e 'token-term:parents',\n 'token-term:root' =\u003e 'token-term:root',\n 'token-term:tid' =\u003e 'token-term:tid',\n 'token-term:name' =\u003e 'token-term:name',\n 'token-term:description' =\u003e 'token-term:description',\n 'token-term:node-count' =\u003e 'token-term:node-count',\n 'token-term:url' =\u003e 'token-term:url',\n 'token-term:vocabulary' =\u003e 'token-term:vocabulary',\n 'token-term:parent' =\u003e 'token-term:parent',\n 'token-term:uuid' =\u003e 'token-term:uuid',\n 'token-term:original' =\u003e 'token-term:original',\n 'token-term:field_featured_image' =\u003e 'token-term:field_featured_image',\n 'token-vocabulary:machine-name' =\u003e 'token-vocabulary:machine-name',\n 'token-vocabulary:edit-url' =\u003e 'token-vocabulary:edit-url',\n 'token-vocabulary:vid' =\u003e 'token-vocabulary:vid',\n 'token-vocabulary:name' =\u003e 'token-vocabulary:name',\n 'token-vocabulary:description' =\u003e 'token-vocabulary:description',\n 'token-vocabulary:node-count' =\u003e 'token-vocabulary:node-count',\n 'token-vocabulary:term-count' =\u003e 'token-vocabulary:term-count',\n 'token-vocabulary:original' =\u003e 'token-vocabulary:original',\n 'token-file:basename' =\u003e 'token-file:basename',\n 'token-file:extension' =\u003e 'token-file:extension',\n 'token-file:size-raw' =\u003e 'token-file:size-raw',\n 'token-file:type' =\u003e 'token-file:type',\n 'token-file:download-url' =\u003e 'token-file:download-url',\n 'token-file:fid' =\u003e 'token-file:fid',\n 'token-file:name' =\u003e 'token-file:name',\n 'token-file:path' =\u003e 'token-file:path',\n 'token-file:mime' =\u003e 'token-file:mime',\n 'token-file:size' =\u003e 'token-file:size',\n 'token-file:url' =\u003e 'token-file:url',\n 'token-file:timestamp' =\u003e 'token-file:timestamp',\n 'token-file:owner' =\u003e 'token-file:owner',\n 'token-file:uuid' =\u003e 'token-file:uuid',\n 'token-file:original' =\u003e 'token-file:original',\n 'token-file:field_file_image_alt_text' =\u003e 'token-file:field_file_image_alt_text',\n 'token-file:field_file_image_title_text' =\u003e 'token-file:field_file_image_title_text',\n 'token-user:cancel-url' =\u003e 'token-user:cancel-url',\n 'token-user:one-time-login-url' =\u003e 'token-user:one-time-login-url',\n 'token-user:roles' =\u003e 'token-user:roles',\n 'token-user:uid' =\u003e 'token-user:uid',\n 'token-user:name' =\u003e 'token-user:name',\n 'token-user:mail' =\u003e 'token-user:mail',\n 'token-user:url' =\u003e 'token-user:url',\n 'token-user:edit-url' =\u003e 'token-user:edit-url',\n 'token-user:last-login' =\u003e 'token-user:last-login',\n 'token-user:created' =\u003e 'token-user:created',\n 'token-user:uuid' =\u003e 'token-user:uuid',\n 'token-user:original' =\u003e 'token-user:original',\n 'token-user:field_user_about' =\u003e 'token-user:field_user_about',\n 'token-user:field_user_picture' =\u003e 'token-user:field_user_picture',\n 'token-current-user:ip-address' =\u003e 'token-current-user:ip-address',\n 'token-menu-link:mlid' =\u003e 'token-menu-link:mlid',\n 'token-menu-link:title' =\u003e 'token-menu-link:title',\n 'token-menu-link:url' =\u003e 'token-menu-link:url',\n 'token-menu-link:parent' =\u003e 'token-menu-link:parent',\n 'token-menu-link:parents' =\u003e 'token-menu-link:parents',\n 'token-menu-link:root' =\u003e 'token-menu-link:root',\n 'token-menu-link:menu' =\u003e 'token-menu-link:menu',\n 'token-menu-link:edit-url' =\u003e 'token-menu-link:edit-url',\n 'token-current-page:title' =\u003e 'token-current-page:title',\n 'token-current-page:url' =\u003e 'token-current-page:url',\n 'token-current-page:page-number' =\u003e 'token-current-page:page-number',\n 'token-current-page:query' =\u003e 'token-current-page:query',\n 'token-url:path' =\u003e 'token-url:path',\n 'token-url:relative' =\u003e 'token-url:relative',\n 'token-url:absolute' =\u003e 'token-url:absolute',\n 'token-url:brief' =\u003e 'token-url:brief',\n 'token-url:unaliased' =\u003e 'token-url:unaliased',\n 'token-url:args' =\u003e 'token-url:args',\n 'token-array:first' =\u003e 'token-array:first',\n 'token-array:last' =\u003e 'token-array:last',\n 'token-array:count' =\u003e 'token-array:count',\n 'token-array:reversed' =\u003e 'token-array:reversed',\n 'token-array:keys' =\u003e 'token-array:keys',\n 'token-array:join' =\u003e 'token-array:join',\n 'token-array:value' =\u003e 'token-array:value',\n 'token-array:join-path' =\u003e 'token-array:join-path',\n 'token-random:number' =\u003e 'token-random:number',\n 'token-random:hash' =\u003e 'token-random:hash',\n 'token-date-field-value:date' =\u003e 'token-date-field-value:date',\n 'token-date-field-value:to-date' =\u003e 'token-date-field-value:to-date',\n 'token-facetapi_results:keys' =\u003e 'token-facetapi_results:keys',\n 'token-facetapi_results:page-number' =\u003e 'token-facetapi_results:page-number',\n 'token-facetapi_results:page-limit' =\u003e 'token-facetapi_results:page-limit',\n 'token-facetapi_results:page-total' =\u003e 'token-facetapi_results:page-total',\n 'token-facetapi_results:offset' =\u003e 'token-facetapi_results:offset',\n 'token-facetapi_results:start-count' =\u003e 'token-facetapi_results:start-count',\n 'token-facetapi_results:end-count' =\u003e 'token-facetapi_results:end-count',\n 'token-facetapi_results:result-count' =\u003e 'token-facetapi_results:result-count',\n 'token-facetapi_results:search-path' =\u003e 'token-facetapi_results:search-path',\n 'token-facetapi_active:active-value' =\u003e 'token-facetapi_active:active-value',\n 'token-facetapi_active:active-value-raw' =\u003e 'token-facetapi_active:active-value-raw',\n 'token-facetapi_active:active-pos' =\u003e 'token-facetapi_active:active-pos',\n 'token-facetapi_active:facet-label' =\u003e 'token-facetapi_active:facet-label',\n 'token-facetapi_active:facet-name' =\u003e 'token-facetapi_active:facet-name',\n 'token-facetapi_facet:facet-label' =\u003e 'token-facetapi_facet:facet-label',\n 'token-facetapi_facet:facet-name' =\u003e 'token-facetapi_facet:facet-name',\n 'token-file-type:name' =\u003e 'token-file-type:name',\n 'token-file-type:machine-name' =\u003e 'token-file-type:machine-name',\n 'token-file-type:count' =\u003e 'token-file-type:count',\n 'token-file-type:edit-url' =\u003e 'token-file-type:edit-url',\n 'token-menu:name' =\u003e 'token-menu:name',\n 'token-menu:machine-name' =\u003e 'token-menu:machine-name',\n 'token-menu:description' =\u003e 'token-menu:description',\n 'token-menu:menu-link-count' =\u003e 'token-menu:menu-link-count',\n 'token-menu:edit-url' =\u003e 'token-menu:edit-url',\n 'token-site:name' =\u003e 'token-site:name',\n 'token-site:slogan' =\u003e 'token-site:slogan',\n 'token-site:mail' =\u003e 'token-site:mail',\n 'token-site:url' =\u003e 'token-site:url',\n 'token-site:url-brief' =\u003e 'token-site:url-brief',\n 'token-site:login-url' =\u003e 'token-site:login-url',\n 'token-date:short' =\u003e 'token-date:short',\n 'token-date:medium' =\u003e 'token-date:medium',\n 'token-date:long' =\u003e 'token-date:long',\n 'token-date:custom' =\u003e 'token-date:custom',\n 'token-date:since' =\u003e 'token-date:since',\n 'token-date:raw' =\u003e 'token-date:raw',\n 'token-date:panopoly_time' =\u003e 'token-date:panopoly_time',\n 'token-date:panopoly_day' =\u003e 'token-date:panopoly_day',\n 'token-view:name' =\u003e 'token-view:name',\n 'token-view:description' =\u003e 'token-view:description',\n 'token-view:machine-name' =\u003e 'token-view:machine-name',\n 'token-view:title' =\u003e 'token-view:title',\n 'token-view:url' =\u003e 'token-view:url',\n 'block-facetapi-1Cpx6naJU4Y3YvKVc0vcLK7Yo0ahaN0l' =\u003e 0,\n 'block-facetapi-fA1pg0Ubd1zgx1mvzHkFUGaNoMb4Gs0s' =\u003e 0,\n 'block-facetapi-Shb0Q1vWgCArrHrjHszTyhl2jaEhIjzW' =\u003e 0,\n 'block-node-syndicate' =\u003e 0,\n 'block-node-recent' =\u003e 0,\n 'block-search-form' =\u003e 0,\n 'block-system-powered-by' =\u003e 0,\n 'block-system-help' =\u003e 0,\n 'block-system-navigation' =\u003e 0,\n 'block-system-management' =\u003e 0,\n 'block-system-user-menu' =\u003e 0,\n 'block-system-main-menu' =\u003e 0,\n 'block-user-login' =\u003e 0,\n 'block-user-new' =\u003e 0,\n 'block-user-online' =\u003e 0,\n 'entity_field-accessibility_test:error_description' =\u003e 'entity_field-accessibility_test:error_description',\n 'entity_field-fieldable_panels_pane:field_quick_links_links' =\u003e 'entity_field-fieldable_panels_pane:field_quick_links_links',\n 'entity_field-fieldable_panels_pane:field_basic_file_file' =\u003e 'entity_field-fieldable_panels_pane:field_basic_file_file',\n 'entity_field-fieldable_panels_pane:field_basic_file_text' =\u003e 'entity_field-fieldable_panels_pane:field_basic_file_text',\n 'entity_field-fieldable_panels_pane:field_basic_image_caption' =\u003e 'entity_field-fieldable_panels_pane:field_basic_image_caption',\n 'entity_field-fieldable_panels_pane:field_basic_image_image' =\u003e 'entity_field-fieldable_panels_pane:field_basic_image_image',\n 'entity_field-fieldable_panels_pane:field_basic_text_text' =\u003e 'entity_field-fieldable_panels_pane:field_basic_text_text',\n 'entity_field-fieldable_panels_pane:field_map_address' =\u003e 'entity_field-fieldable_panels_pane:field_map_address',\n 'entity_field-fieldable_panels_pane:field_map_information' =\u003e 'entity_field-fieldable_panels_pane:field_map_information',\n 'entity_field-fieldable_panels_pane:field_basic_table_table' =\u003e 'entity_field-fieldable_panels_pane:field_basic_table_table',\n 'entity_field-fieldable_panels_pane:field_video_file' =\u003e 'entity_field-fieldable_panels_pane:field_video_file',\n 'entity_field-fieldable_panels_pane:field_basic_spotlight_items' =\u003e 'entity_field-fieldable_panels_pane:field_basic_spotlight_items',\n 'entity_field-node:body' =\u003e 'entity_field-node:body',\n 'entity_field-node:field_featured_image' =\u003e 'entity_field-node:field_featured_image',\n 'entity_field-node:field_featured_categories' =\u003e 'entity_field-node:field_featured_categories',\n 'entity_field-node:field_featured_status' =\u003e 'entity_field-node:field_featured_status',\n 'entity_field-file:field_file_image_alt_text' =\u003e 'entity_field-file:field_file_image_alt_text',\n 'entity_field-file:field_file_image_title_text' =\u003e 'entity_field-file:field_file_image_title_text',\n 'entity_field-taxonomy_term:field_featured_image' =\u003e 'entity_field-taxonomy_term:field_featured_image',\n 'entity_field-user:field_user_about' =\u003e 'entity_field-user:field_user_about',\n 'entity_field-user:field_user_picture' =\u003e 'entity_field-user:field_user_picture',\n 'entity_field_extra-accessibility_test:quail_name' =\u003e 0,\n 'entity_field_extra-accessibility_test:severity' =\u003e 0,\n 'entity_field_extra-accessibility_test:status' =\u003e 0,\n 'entity_field_extra-fieldable_panels_pane:title' =\u003e 0,\n 'entity_field_extra-file:file' =\u003e 0,\n 'entity_field_extra-taxonomy_term:description' =\u003e 0,\n 'entity_field_extra-user:summary' =\u003e 0,\n 'entity_view-node' =\u003e 'entity_view-node',\n 'entity_view-accessibility_test' =\u003e 0,\n 'entity_view-fieldable_panels_pane' =\u003e 0,\n 'entity_view-search_api_server' =\u003e 0,\n 'entity_view-search_api_index' =\u003e 0,\n 'entity_view-file' =\u003e 0,\n 'entity_view-taxonomy_term' =\u003e 0,\n 'entity_view-user' =\u003e 0,\n 'fieldable_panels_pane-fieldable_panels_pane' =\u003e 0,\n 'fieldable_panels_pane-quick_links' =\u003e 0,\n 'fieldable_panels_pane-basic_file' =\u003e 0,\n 'fieldable_panels_pane-image' =\u003e 0,\n 'fieldable_panels_pane-text' =\u003e 0,\n 'fieldable_panels_pane-map' =\u003e 0,\n 'fieldable_panels_pane-table' =\u003e 0,\n 'fieldable_panels_pane-video' =\u003e 0,\n 'fieldable_panels_pane-spotlight' =\u003e 0,\n 'menu_tree-_active' =\u003e 0,\n 'menu_tree-main-menu' =\u003e 0,\n 'menu_tree-management' =\u003e 0,\n 'menu_tree-navigation' =\u003e 0,\n 'menu_tree-user-menu' =\u003e 0,\n 'views_panes-panopoly_widgets_general_content-list_of_content' =\u003e 'views_panes-panopoly_widgets_general_content-list_of_content',\n 'views_panes-panopoly_widgets_general_content-piece_of_content' =\u003e 'views_panes-panopoly_widgets_general_content-piece_of_content',\n 'views_panes-panopoly_taxonomy-taxonomy_content' =\u003e 0,\n 'views_panes-panopoly_database_search-search_database_results' =\u003e 0,\n 'views_panes-panopoly_search-search_solr_results' =\u003e 0,\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_node:thing_allowed_types_default\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_node:thing_default\\\", array (\n 'custom' =\u003e 'custom',\n 'entity_view' =\u003e 'entity_view',\n 'views_panes' =\u003e 'views_panes',\n 'other' =\u003e 'other',\n 'entity_form_field' =\u003e 0,\n 'token' =\u003e 0,\n 'block' =\u003e 0,\n 'entity_field' =\u003e 0,\n 'entity_field_extra' =\u003e 0,\n 'fieldable_panels_pane' =\u003e 0,\n 'menu_tree' =\u003e 0,\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_taxonomy_term:panopoly_categories_allowed_layouts_default\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_taxonomy_term:panopoly_categories_allowed_types_default\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_user:user_allowed_layouts_default\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panelizer_user:user_allowed_types_default\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panopoly_admin_advanced_plugins\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panopoly_admin_front_page_and_sticky\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panopoly_admin_link_description\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panopoly_admin_machine_name\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panopoly_core_breadcrumb_title\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panopoly_users_login_destination\\\", '\u003cfront\u003e');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"panopoly_users_remove_tabs\\\", '1');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_blog_pattern\\\", 'blogs\/[user:name]');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_file_pattern\\\", 'file\/[file:name]');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_forum_pattern\\\", '[term:vocabulary]\/[term:name]');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_node_pattern\\\", 'content\/[node:title]');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_punctuation_hyphen\\\", 1);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_taxonomy_term_pattern\\\", '[term:vocabulary]\/[term:name]');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pathauto_user_pattern\\\", 'users\/[user:name]');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"path_alias_whitelist\\\", array (\n 'media' =\u003e true,\n 'node' =\u003e true,\n 'user' =\u003e true,\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pm_existing_pages_disabled_user_login\\\", false);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pm_existing_pages_disabled_user_password\\\", false);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"pm_existing_pages_disabled_user_register\\\", false);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"save_continue_panopoly_page\\\", 'Save and add fields');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"search_active_modules\\\", array (\n 'node' =\u003e 'node',\n 'user' =\u003e 0,\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"search_api_facets_search_ids\\\", array (\n 'node_index' =\u003e \n array (\n 'search_api_views:panopoly_search:search_solr_results' =\u003e 'search_api_views:panopoly_search:search_solr_results',\n 'search_api_views:panopoly_search:page_1' =\u003e 'search_api_views:panopoly_search:page_1',\n ),\n 'database_node_index' =\u003e \n array (\n 'search_api_views:panopoly_database_search:default' =\u003e 'search_api_views:panopoly_database_search:default',\n 'search_api_views:panopoly_database_search:panel_pane_1' =\u003e 'search_api_views:panopoly_database_search:panel_pane_1',\n 'search_api_views:panopoly_database_search:search_database_results' =\u003e 'search_api_views:panopoly_database_search:search_database_results',\n 'search_api_views:panopoly_database_search:page_1' =\u003e 'search_api_views:panopoly_database_search:page_1',\n ),\n));\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"search_api_solr_last_optimize\\\", 1413810499);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"theme_default\\\", 'bartik');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_cancel_method\\\", 'user_cancel_block');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_email_verification\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_mail_status_blocked_notify\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_mail_status_canceled_notify\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_pictures\\\", 0);\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_default\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_dimensions\\\", '85x85');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_field_source_bundle\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_field_source_entity\\\", 'user');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_field_source_field\\\", 'field_user_picture');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_file_size\\\", '30');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_guidelines\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_path\\\", 'pictures');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_picture_style\\\", '');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_register\\\", '0');\"" + ] + }, + { + "command": "ev", + "arguments": [ + "\"variable_set(\\\"user_signatures\\\", 0);\"" + ] + } + ], + "metadata": { + "type": "testing", + "description": "Blueprint of dd3.btopro.net", + "version": "0.0", + "author": "btopro" + } +} From 1f3fb4ff0e73e9a55371140dc1a50d7e4f17e10e Mon Sep 17 00:00:00 2001 From: btopro Date: Tue, 21 Oct 2014 09:34:12 -0400 Subject: [PATCH 12/12] updated instructions for deploying sites as dd1,2 or 3 --- _RECIPES/RECIPES.txt | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/_RECIPES/RECIPES.txt b/_RECIPES/RECIPES.txt index 1673f37a1a2..2616152cfcc 100644 --- a/_RECIPES/RECIPES.txt +++ b/_RECIPES/RECIPES.txt @@ -1,10 +1,22 @@ -What are Recipes? +#What are Recipes? -Recipes are a series of drush commands that act as one. It is a format that allows for -drush call chaining and other utilities. Learn more at https://www.drupal.org/project/drush_recipes +#Recipes are a series of drush commands that act as one. It is a format that allows for drush call chaining and other utilities. Learn more at https://www.drupal.org/project/drush_recipes -How to use +#How to use +#Run the following: -Run the following: +drush dl drush_recipes +drush cc drush +drush cook performance_kitchen_sink --y --dr-locations={PATHTOREPO}/_RECIPES -drush dl drush_recipes && drush cc drush && drush --y cook performance_kitchen_sink --dr-locations={PATHTOPRESSERFLOW}/_RECIPES +#To create site like dd1 +drush si minimal --y +drush cook dd1 --y --dr-locations={PATHTOREPO}/_RECIPES + +#To create site like dd2 +drush si minimal --y +drush cook dd2 --y --dr-locations={PATHTOREPO}/_RECIPES + +#To create site like dd3 +drush si minimal --y +drush cook dd3 --y --dr-locations={PATHTOREPO}/_RECIPES