diff --git a/_METRICS/performance metrics.xls b/_METRICS/performance metrics.xls new file mode 100644 index 00000000000..aaf1fe32599 Binary files /dev/null and b/_METRICS/performance metrics.xls differ 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..371bec11a9b --- /dev/null +++ b/_PATCHES/PATCHES.txt @@ -0,0 +1,53 @@ +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. + + +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'" +); 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) { diff --git a/_RECIPES/RECIPES.txt b/_RECIPES/RECIPES.txt new file mode 100644 index 00000000000..2616152cfcc --- /dev/null +++ b/_RECIPES/RECIPES.txt @@ -0,0 +1,22 @@ +#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 --y --dr-locations={PATHTOREPO}/_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 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" + } +} diff --git a/_RECIPES/performance_kitchen_sink.drecipe b/_RECIPES/performance_kitchen_sink.drecipe new file mode 100644 index 00000000000..64503a26adc --- /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_bundler", + "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" + } +} 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: *