/system/expressionengine/modules/pages/upd.pages.php

https://bitbucket.org/mbaily/tremain · PHP · 214 lines · 113 code · 49 blank · 52 comment · 7 complexity · 264c4fd151a778b5636d69b87018585a MD5 · raw file

  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2. /**
  3. * ExpressionEngine - by EllisLab
  4. *
  5. * @package ExpressionEngine
  6. * @author EllisLab Dev Team
  7. * @copyright Copyright (c) 2003 - 2013, EllisLab, Inc.
  8. * @license http://ellislab.com/expressionengine/user-guide/license.html
  9. * @link http://ellislab.com
  10. * @since Version 2.0
  11. * @filesource
  12. */
  13. // --------------------------------------------------------------------
  14. /**
  15. * ExpressionEngine Discussion Pages Module
  16. *
  17. * @package ExpressionEngine
  18. * @subpackage Modules
  19. * @category Modules
  20. * @author EllisLab Dev Team
  21. * @link http://ellislab.com
  22. */
  23. class Pages_upd {
  24. var $version = '2.2';
  25. function Pages_upd($switch=TRUE)
  26. {
  27. $this->EE =& get_instance();
  28. }
  29. // ----------------------------------------------------------------------
  30. function tabs()
  31. {
  32. $tabs['pages'] = array(
  33. 'pages_template_id' => array(
  34. 'visible' => TRUE,
  35. 'collapse' => FALSE,
  36. 'htmlbuttons' => TRUE,
  37. 'width' => '100%'
  38. ),
  39. 'pages_uri' => array(
  40. 'visible' => TRUE,
  41. 'collapse' => FALSE,
  42. 'htmlbuttons' => TRUE,
  43. 'width' => '100%'
  44. )
  45. );
  46. return $tabs;
  47. }
  48. // --------------------------------------------------------------------
  49. /**
  50. * Module Installer
  51. *
  52. * @access public
  53. * @return bool
  54. */
  55. function install()
  56. {
  57. $sql[] = "INSERT INTO exp_modules (module_name, module_version, has_cp_backend, has_publish_fields) VALUES ('Pages', '$this->version', 'y', 'y')";
  58. if ( ! ee()->db->field_exists('site_pages', 'exp_sites'))
  59. {
  60. $sql[] = "ALTER TABLE `exp_sites` ADD `site_pages` TEXT NOT NULL";
  61. }
  62. $sql[] = "CREATE TABLE `exp_pages_configuration` (
  63. `configuration_id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  64. `site_id` INT( 8 ) UNSIGNED NOT NULL DEFAULT '1',
  65. `configuration_name` VARCHAR( 60 ) NOT NULL ,
  66. `configuration_value` VARCHAR( 100 ) NOT NULL
  67. ) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci";
  68. foreach ($sql as $query)
  69. {
  70. ee()->db->query($query);
  71. }
  72. ee()->load->library('layout');
  73. ee()->layout->add_layout_tabs($this->tabs(), 'pages');
  74. return TRUE;
  75. }
  76. // --------------------------------------------------------------------
  77. /**
  78. * Module Uninstaller
  79. *
  80. * @access public
  81. * @return bool
  82. */
  83. function uninstall()
  84. {
  85. $query = ee()->db->query("SELECT module_id FROM exp_modules WHERE module_name = 'Pages'");
  86. $sql[] = "DELETE FROM exp_module_member_groups WHERE module_id = '".$query->row('module_id') ."'";
  87. $sql[] = "DELETE FROM exp_modules WHERE module_name = 'Pages'";
  88. $sql[] = "DELETE FROM exp_actions WHERE class = 'Pages'";
  89. $sql[] = "DELETE FROM exp_actions WHERE class = 'Pages_mcp'";
  90. $sql[] = "ALTER TABLE `exp_sites` DROP `site_pages`";
  91. $sql[] = "DROP TABLE `exp_pages_configuration`";
  92. foreach ($sql as $query)
  93. {
  94. ee()->db->query($query);
  95. }
  96. ee()->load->library('layout');
  97. ee()->layout->delete_layout_tabs($this->tabs());
  98. return TRUE;
  99. }
  100. // --------------------------------------------------------------------
  101. /**
  102. * Module Updater
  103. *
  104. * @access public
  105. * @return bool
  106. */
  107. function update($current = '')
  108. {
  109. if ($current === $this->version)
  110. {
  111. return FALSE;
  112. }
  113. if (version_compare($current, '2.1', '<'))
  114. {
  115. ee()->db->where('module_name', 'Pages');
  116. ee()->db->update('modules', array('has_publish_fields' => 'y'));
  117. }
  118. if (version_compare($current, '2.2', '<'))
  119. {
  120. $this->_do_22_update();
  121. }
  122. }
  123. // ----------------------------------------------------------------------
  124. /**
  125. * This is basically identical to the forum update script.
  126. *
  127. * @return void
  128. */
  129. private function _do_22_update()
  130. {
  131. ee()->load->library('layout');
  132. $layouts = ee()->db->get('layout_publish');
  133. if ($layouts->num_rows() === 0)
  134. {
  135. return;
  136. }
  137. $layouts = $layouts->result_array();
  138. $old_pages_fields = array(
  139. 'pages_uri',
  140. 'pages_template_id',
  141. );
  142. foreach ($layouts as &$layout)
  143. {
  144. $old_layout = unserialize($layout['field_layout']);
  145. foreach ($old_layout as $tab => &$fields)
  146. {
  147. $field_keys = array_keys($fields);
  148. foreach ($field_keys as &$key)
  149. {
  150. if (in_array($key, $old_pages_fields))
  151. {
  152. $key = 'pages__'.$key;
  153. }
  154. }
  155. $fields = array_combine($field_keys, $fields);
  156. }
  157. $layout['field_layout'] = serialize($old_layout);
  158. }
  159. ee()->db->update_batch('layout_publish', $layouts, 'layout_id');
  160. return TRUE;
  161. }
  162. }
  163. // END CLASS
  164. /* End of file upd.pages.php */
  165. /* Location: ./system/expressionengine/modules/pages/upd.pages.php */