datetime_range-filter-values.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. <?php
  2. // @codingStandardsIgnoreFile
  3. /**
  4. * @file
  5. * Contains database additions to drupal-8.bare.standard.php.gz for testing the
  6. * upgrade path of https://www.drupal.org/node/2786577.
  7. */
  8. use Drupal\Core\Database\Database;
  9. use Drupal\Core\Serialization\Yaml;
  10. $connection = Database::getConnection();
  11. // Configuration for an datetime_range field storage.
  12. $field_storage_datetime_range = Yaml::decode(file_get_contents(__DIR__ . '/field.storage.node.field_range.yml'));
  13. // Configuration for a datetime_range field on 'page' node bundle.
  14. $field_datetime_range = Yaml::decode(file_get_contents(__DIR__ . '/field.field.node.page.field_range.yml'));
  15. // Configuration for a View using datetime_range plugins.
  16. $views_datetime_range = Yaml::decode(file_get_contents(__DIR__ . '/views.view.test_datetime_range_filter_values.yml'));
  17. // Update core.entity_form_display.node.page.default
  18. $data = $connection->select('config')
  19. ->fields('config', ['data'])
  20. ->condition('collection', '')
  21. ->condition('name', 'core.entity_form_display.node.page.default')
  22. ->execute()
  23. ->fetchField();
  24. $data = unserialize($data);
  25. $data['dependencies']['config'][] = 'field.field.' . $field_datetime_range['id'];
  26. $data['dependencies']['module'][] = 'datetime_range';
  27. $data['content'][$field_datetime_range['field_name']] = array(
  28. "weight"=> 27,
  29. "settings" => array(),
  30. "third_party_settings" => array(),
  31. "type" => "daterange_default",
  32. "region" => "content"
  33. );
  34. $connection->update('config')
  35. ->fields([
  36. 'data' => serialize($data),
  37. ])
  38. ->condition('collection', '')
  39. ->condition('name', 'core.entity_form_display.node.page.default')
  40. ->execute();
  41. // Update core.entity_view_display.node.page.default
  42. $data = $connection->select('config')
  43. ->fields('config', ['data'])
  44. ->condition('collection', '')
  45. ->condition('name', 'core.entity_view_display.node.page.default')
  46. ->execute()
  47. ->fetchField();
  48. $data = unserialize($data);
  49. $data['dependencies']['config'][] = 'field.field.' . $field_datetime_range['id'];
  50. $data['dependencies']['module'][] = 'datetime_range';
  51. $data['content'][$field_datetime_range['field_name']] = array(
  52. "weight"=> 102,
  53. "label"=> "above",
  54. "settings" => array("separator"=> "-", "format_type" => "medium", "timezone_override" => ""),
  55. "third_party_settings" => array(),
  56. "type" => "daterange_default",
  57. "region" => "content"
  58. );
  59. $connection->update('config')
  60. ->fields([
  61. 'data' => serialize($data),
  62. ])
  63. ->condition('collection', '')
  64. ->condition('name', 'core.entity_view_display.node.page.default')
  65. ->execute();
  66. $connection->insert('config')
  67. ->fields(array(
  68. 'collection',
  69. 'name',
  70. 'data',
  71. ))
  72. ->values(array(
  73. 'collection' => '',
  74. 'name' => 'field.field.' . $field_datetime_range['id'],
  75. 'data' => serialize($field_datetime_range),
  76. ))
  77. ->values(array(
  78. 'collection' => '',
  79. 'name' => 'field.storage.' . $field_storage_datetime_range['id'],
  80. 'data' => serialize($field_storage_datetime_range),
  81. ))
  82. ->values(array(
  83. 'collection' => '',
  84. 'name' => 'views.view.' . $views_datetime_range['id'],
  85. 'data' => serialize($views_datetime_range),
  86. ))
  87. ->execute();
  88. // Update core.extension.
  89. $extensions = $connection->select('config')
  90. ->fields('config', ['data'])
  91. ->condition('collection', '')
  92. ->condition('name', 'core.extension')
  93. ->execute()
  94. ->fetchField();
  95. $extensions = unserialize($extensions);
  96. $extensions['module']['datetime_range'] = 0;
  97. $connection->update('config')
  98. ->fields([
  99. 'data' => serialize($extensions),
  100. ])
  101. ->condition('collection', '')
  102. ->condition('name', 'core.extension')
  103. ->execute();
  104. $connection->insert('key_value')
  105. ->fields(array(
  106. 'collection',
  107. 'name',
  108. 'value',
  109. ))
  110. ->values(array(
  111. 'collection' => 'config.entity.key_store.field_config',
  112. 'name' => 'uuid:87dc4221-8d56-4112-8a7f-7a855ac35d08',
  113. 'value' => 'a:1:{i:0;s:33:"field.field.' . $field_datetime_range['id'] . '";}',
  114. ))
  115. ->values(array(
  116. 'collection' => 'config.entity.key_store.field_storage_config',
  117. 'name' => 'uuid:2190ad8c-39dd-4eb1-b189-1bfc0c244a40',
  118. 'value' => 'a:1:{i:0;s:30:"field.storage.' . $field_storage_datetime_range['id'] . '";}',
  119. ))
  120. ->values(array(
  121. 'collection' => 'config.entity.key_store.view',
  122. 'name' => 'uuid:d20760b6-7cc4-4844-ae04-96da7225a46f',
  123. 'value' => 'a:1:{i:0;s:44:"views.view.' . $views_datetime_range['id'] . '";}',
  124. ))
  125. ->values(array(
  126. 'collection' => 'entity.storage_schema.sql',
  127. 'name' => 'node.field_schema_data.field_range',
  128. 'value' => 'a:2:{s:17:"node__field_range";a:4:{s:11:"description";s:40:"Data storage for node field field_range.";s:6:"fields";a:8:{s:6:"bundle";a:5:{s:4:"type";s:13:"varchar_ascii";s:6:"length";i:128;s:8:"not null";b:1;s:7:"default";s:0:"";s:11:"description";s:88:"The field instance bundle to which this row belongs, used when deleting a field instance";}s:7:"deleted";a:5:{s:4:"type";s:3:"int";s:4:"size";s:4:"tiny";s:8:"not null";b:1;s:7:"default";i:0;s:11:"description";s:60:"A boolean indicating whether this data item has been deleted";}s:9:"entity_id";a:4:{s:4:"type";s:3:"int";s:8:"unsigned";b:1;s:8:"not null";b:1;s:11:"description";s:38:"The entity id this data is attached to";}s:11:"revision_id";a:4:{s:4:"type";s:3:"int";s:8:"unsigned";b:1;s:8:"not null";b:1;s:11:"description";s:47:"The entity revision id this data is attached to";}s:8:"langcode";a:5:{s:4:"type";s:13:"varchar_ascii";s:6:"length";i:32;s:8:"not null";b:1;s:7:"default";s:0:"";s:11:"description";s:37:"The language code for this data item.";}s:5:"delta";a:4:{s:4:"type";s:3:"int";s:8:"unsigned";b:1;s:8:"not null";b:1;s:11:"description";s:67:"The sequence number for this data item, used for multi-value fields";}s:17:"field_range_value";a:4:{s:11:"description";s:21:"The start date value.";s:4:"type";s:7:"varchar";s:6:"length";i:20;s:8:"not null";b:1;}s:21:"field_range_end_value";a:4:{s:11:"description";s:19:"The end date value.";s:4:"type";s:7:"varchar";s:6:"length";i:20;s:8:"not null";b:1;}}s:11:"primary key";a:4:{i:0;s:9:"entity_id";i:1;s:7:"deleted";i:2;s:5:"delta";i:3;s:8:"langcode";}s:7:"indexes";a:4:{s:6:"bundle";a:1:{i:0;s:6:"bundle";}s:11:"revision_id";a:1:{i:0;s:11:"revision_id";}s:17:"field_range_value";a:1:{i:0;s:17:"field_range_value";}s:21:"field_range_end_value";a:1:{i:0;s:21:"field_range_end_value";}}}s:26:"node_revision__field_range";a:4:{s:11:"description";s:52:"Revision archive storage for node field field_range.";s:6:"fields";a:8:{s:6:"bundle";a:5:{s:4:"type";s:13:"varchar_ascii";s:6:"length";i:128;s:8:"not null";b:1;s:7:"default";s:0:"";s:11:"description";s:88:"The field instance bundle to which this row belongs, used when deleting a field instance";}s:7:"deleted";a:5:{s:4:"type";s:3:"int";s:4:"size";s:4:"tiny";s:8:"not null";b:1;s:7:"default";i:0;s:11:"description";s:60:"A boolean indicating whether this data item has been deleted";}s:9:"entity_id";a:4:{s:4:"type";s:3:"int";s:8:"unsigned";b:1;s:8:"not null";b:1;s:11:"description";s:38:"The entity id this data is attached to";}s:11:"revision_id";a:4:{s:4:"type";s:3:"int";s:8:"unsigned";b:1;s:8:"not null";b:1;s:11:"description";s:47:"The entity revision id this data is attached to";}s:8:"langcode";a:5:{s:4:"type";s:13:"varchar_ascii";s:6:"length";i:32;s:8:"not null";b:1;s:7:"default";s:0:"";s:11:"description";s:37:"The language code for this data item.";}s:5:"delta";a:4:{s:4:"type";s:3:"int";s:8:"unsigned";b:1;s:8:"not null";b:1;s:11:"description";s:67:"The sequence number for this data item, used for multi-value fields";}s:17:"field_range_value";a:4:{s:11:"description";s:21:"The start date value.";s:4:"type";s:7:"varchar";s:6:"length";i:20;s:8:"not null";b:1;}s:21:"field_range_end_value";a:4:{s:11:"description";s:19:"The end date value.";s:4:"type";s:7:"varchar";s:6:"length";i:20;s:8:"not null";b:1;}}s:11:"primary key";a:5:{i:0;s:9:"entity_id";i:1;s:11:"revision_id";i:2;s:7:"deleted";i:3;s:5:"delta";i:4;s:8:"langcode";}s:7:"indexes";a:4:{s:6:"bundle";a:1:{i:0;s:6:"bundle";}s:11:"revision_id";a:1:{i:0;s:11:"revision_id";}s:17:"field_range_value";a:1:{i:0;s:17:"field_range_value";}s:21:"field_range_end_value";a:1:{i:0;s:21:"field_range_end_value";}}}}',
  129. ))
  130. ->values(array(
  131. 'collection' => 'system.schema',
  132. 'name' => 'datetime_range',
  133. 'value' => 'i:8000;',
  134. ))
  135. ->execute();
  136. // Update entity.definitions.bundle_field_map
  137. $value = $connection->select('key_value')
  138. ->fields('key_value', ['value'])
  139. ->condition('collection', 'entity.definitions.bundle_field_map')
  140. ->condition('name', 'node')
  141. ->execute()
  142. ->fetchField();
  143. $value = unserialize($value);
  144. $value["field_range"] = array("type" => "daterange", "bundles" => array("page" => "page"));
  145. $connection->update('key_value')
  146. ->fields([
  147. 'value' => serialize($value),
  148. ])
  149. ->condition('collection', 'entity.definitions.bundle_field_map')
  150. ->condition('name', 'node')
  151. ->execute();
  152. // Update system.module.files
  153. $files = $connection->select('key_value')
  154. ->fields('key_value', ['value'])
  155. ->condition('collection', 'state')
  156. ->condition('name', 'system.module.files')
  157. ->execute()
  158. ->fetchField();
  159. $files = unserialize($files);
  160. $files["datetime_range"] = "core/modules/datetime_range/datetime_range.info.yml";
  161. $connection->update('key_value')
  162. ->fields([
  163. 'value' => serialize($files),
  164. ])
  165. ->condition('collection', 'state')
  166. ->condition('name', 'system.module.files')
  167. ->execute();
  168. $connection->schema()->createTable('node__field_range', array(
  169. 'fields' => array(
  170. 'bundle' => array(
  171. 'type' => 'varchar_ascii',
  172. 'not null' => TRUE,
  173. 'length' => '128',
  174. 'default' => '',
  175. ),
  176. 'deleted' => array(
  177. 'type' => 'int',
  178. 'not null' => TRUE,
  179. 'size' => 'tiny',
  180. 'default' => '0',
  181. ),
  182. 'entity_id' => array(
  183. 'type' => 'int',
  184. 'not null' => TRUE,
  185. 'size' => 'normal',
  186. 'unsigned' => TRUE,
  187. ),
  188. 'revision_id' => array(
  189. 'type' => 'int',
  190. 'not null' => TRUE,
  191. 'size' => 'normal',
  192. 'unsigned' => TRUE,
  193. ),
  194. 'langcode' => array(
  195. 'type' => 'varchar_ascii',
  196. 'not null' => TRUE,
  197. 'length' => '32',
  198. 'default' => '',
  199. ),
  200. 'delta' => array(
  201. 'type' => 'int',
  202. 'not null' => TRUE,
  203. 'size' => 'normal',
  204. 'unsigned' => TRUE,
  205. ),
  206. 'field_range_value' => array(
  207. 'type' => 'varchar',
  208. 'not null' => TRUE,
  209. 'length' => '20',
  210. ),
  211. 'field_range_end_value' => array(
  212. 'type' => 'varchar',
  213. 'not null' => TRUE,
  214. 'length' => '20',
  215. ),
  216. ),
  217. 'primary key' => array(
  218. 'entity_id',
  219. 'deleted',
  220. 'delta',
  221. 'langcode',
  222. ),
  223. 'indexes' => array(
  224. 'bundle' => array(
  225. 'bundle',
  226. ),
  227. 'revision_id' => array(
  228. 'revision_id',
  229. ),
  230. 'field_range_value' => array(
  231. 'field_range_value',
  232. ),
  233. 'field_range_end_value' => array(
  234. 'field_range_end_value',
  235. ),
  236. ),
  237. 'mysql_character_set' => 'utf8mb4',
  238. ));
  239. $connection->schema()->createTable('node_revision__field_range', array(
  240. 'fields' => array(
  241. 'bundle' => array(
  242. 'type' => 'varchar_ascii',
  243. 'not null' => TRUE,
  244. 'length' => '128',
  245. 'default' => '',
  246. ),
  247. 'deleted' => array(
  248. 'type' => 'int',
  249. 'not null' => TRUE,
  250. 'size' => 'tiny',
  251. 'default' => '0',
  252. ),
  253. 'entity_id' => array(
  254. 'type' => 'int',
  255. 'not null' => TRUE,
  256. 'size' => 'normal',
  257. 'unsigned' => TRUE,
  258. ),
  259. 'revision_id' => array(
  260. 'type' => 'int',
  261. 'not null' => TRUE,
  262. 'size' => 'normal',
  263. 'unsigned' => TRUE,
  264. ),
  265. 'langcode' => array(
  266. 'type' => 'varchar_ascii',
  267. 'not null' => TRUE,
  268. 'length' => '32',
  269. 'default' => '',
  270. ),
  271. 'delta' => array(
  272. 'type' => 'int',
  273. 'not null' => TRUE,
  274. 'size' => 'normal',
  275. 'unsigned' => TRUE,
  276. ),
  277. 'field_range_value' => array(
  278. 'type' => 'varchar',
  279. 'not null' => TRUE,
  280. 'length' => '20',
  281. ),
  282. 'field_range_end_value' => array(
  283. 'type' => 'varchar',
  284. 'not null' => TRUE,
  285. 'length' => '20',
  286. ),
  287. ),
  288. 'primary key' => array(
  289. 'entity_id',
  290. 'revision_id',
  291. 'deleted',
  292. 'delta',
  293. 'langcode',
  294. ),
  295. 'indexes' => array(
  296. 'bundle' => array(
  297. 'bundle',
  298. ),
  299. 'revision_id' => array(
  300. 'revision_id',
  301. ),
  302. 'field_range_value' => array(
  303. 'field_range_value',
  304. ),
  305. 'field_range_end_value' => array(
  306. 'field_range_end_value',
  307. ),
  308. ),
  309. 'mysql_character_set' => 'utf8mb4',
  310. ));