PageRenderTime 52ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/sermon-browser/sb-includes/upgrade.php

https://github.com/Jarrod-Williams/Sermons-Browser-Plugin
PHP | 157 lines | 146 code | 3 blank | 8 comment | 19 complexity | 8b31eb6ae70a6f34c136eaeb0aceb8b2 MD5 | raw file
  1. <?php
  2. // Checks for old-style sermonbrowser options (prior to 0.43)
  3. function sb_upgrade_options () {
  4. $standard_options = array (
  5. array ('old_option' => 'sb_sermon_style_date_modified', 'new_option' => 'style_date_modified'),
  6. array ('old_option' => 'sb_sermon_db_version', 'new_option' => 'db_version'),
  7. array ('old_option' => 'sb_sermon_version', 'new_option' => 'code_version'),
  8. array ('old_option' => 'sb_podcast', 'new_option' => 'podcast_url'),
  9. array ('old_option' => 'sb_filtertype', 'new_option' => 'filter_type'),
  10. array ('old_option' => 'sb_filterhide', 'new_option' => 'filter_hide'),
  11. array ('old_option' => 'sb_widget_sermon', 'new_option' => 'sermons_widget_options'),
  12. array ('old_option' => 'sb_sermon_upload_dir', 'new_option' => 'upload_dir'),
  13. array ('old_option' => 'sb_sermon_upload_url', 'new_option' => 'upload_url'),
  14. array ('old_option' => 'sb_display_method', 'new_option' => 'display_method'),
  15. array ('old_option' => 'sb_sermons_per_page', 'new_option' => 'sermons_per_page'),
  16. array ('old_option' => 'sb_show_donate_reminder', 'new_option' => 'show_donate_reminder'),
  17. array ('old_option' => 'sb_display_method', 'new_option' => 'display_method'),
  18. );
  19. foreach ($standard_options as $option)
  20. if ($old = get_option($option['old_option'])) {
  21. sb_update_option($option['new_option'], $old);
  22. delete_option ($option['old_option']);
  23. }
  24. $base64_options = array (
  25. array ('old_option' => 'sb_sermon_single_form', 'new_option' => 'single_template'),
  26. array ('old_option' => 'sb_sermon_single_output', 'new_option' => 'single_output'),
  27. array ('old_option' => 'sb_sermon_multi_form', 'new_option' => 'search_template'),
  28. array ('old_option' => 'sb_sermon_multi_output', 'new_option' => 'search_output'),
  29. array ('old_option' => 'sb_sermon_style', 'new_option' => 'css_style'),
  30. );
  31. foreach ($base64_options as $option)
  32. if ($old = get_option($option['old_option'])) {
  33. $old = stripslashes(base64_decode($old));
  34. sb_update_option($option['new_option'], $old);
  35. delete_option ($option['old_option']);
  36. }
  37. delete_option('sb_sermon_style_output');
  38. }
  39. // Runs the version upgrade procedures (re-save templates, add options added since last db update)
  40. function sb_version_upgrade ($old_version, $new_version) {
  41. require_once(SB_INCLUDES_DIR.'/dictionary.php');
  42. $sbmf = sb_get_option('search_template');
  43. if ($sbmf)
  44. sb_update_option('search_output', strtr($sbmf, sb_search_results_dictionary()));
  45. $sbsf = sb_get_option('single_template');
  46. if ($sbsf)
  47. sb_update_option('single_output', strtr($sbsf, sb_sermon_page_dictionary()));
  48. sb_update_option('code_version', $new_version);
  49. if (sb_get_option('filter_type') == '')
  50. sb_update_option('filter_type', 'dropdown');
  51. }
  52. //Runs the database upgrade procedures (modifies database structure)
  53. function sb_database_upgrade ($old_version) {
  54. require_once(SB_INCLUDES_DIR.'/dictionary.php');
  55. require_once(SB_INCLUDES_DIR.'/admin.php');
  56. global $wpdb;
  57. $sermonUploadDir = sb_get_default('sermon_path');
  58. switch ($old_version) {
  59. case '1.0':
  60. // Also moves files from old default folder to new default folder
  61. $oldSermonPath = dirname(__FILE__)."/files/";
  62. $files = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}sb_stuff WHERE type = 'file' ORDER BY name ASC");
  63. foreach ((array)$files as $file) {
  64. @chmod(SB_ABSPATH.$oldSermonPath.$file->name, 0777);
  65. @rename(SB_ABSPATH.$oldSermonPath.$file->name, SB_ABSPATH.$sermonUploadDir.$file->name);
  66. }
  67. $table_name = $wpdb->prefix . "sb_preachers";
  68. if($wpdb->get_var("show tables like '{$table_name}'") == $table_name) {
  69. $wpdb->query("ALTER TABLE {$table_name} ADD description TEXT NOT NULL, ADD image VARCHAR(255) NOT NULL");
  70. }
  71. update_option('sb_sermon_db_version', '1.1');
  72. case '1.1':
  73. add_option('sb_sermon_style', base64_encode($defaultStyle));
  74. if(!is_dir(SB_ABSPATH.$sermonUploadDir.'images') && sb_mkdir(SB_ABSPATH.$sermonUploadDir.'images')){
  75. @chmod(SB_ABSPATH.$sermonUploadDir.'images', 0777);
  76. }
  77. update_option('sb_sermon_db_version', '1.2');
  78. case '1.2':
  79. $wpdb->query("ALTER TABLE {$wpdb->prefix}sb_stuff ADD count INT(10) NOT NULL");
  80. $wpdb->query("ALTER TABLE {$wpdb->prefix}sb_books_sermons ADD INDEX (sermon_id)");
  81. $wpdb->query("ALTER TABLE {$wpdb->prefix}sb_sermons_tags ADD INDEX (sermon_id)");
  82. update_option('sb_sermon_db_version', '1.3');
  83. case '1.3':
  84. $wpdb->query("ALTER TABLE {$wpdb->prefix}sb_series ADD page_id INT(10) NOT NULL");
  85. $wpdb->query("ALTER TABLE {$wpdb->prefix}sb_sermons ADD page_id INT(10) NOT NULL");
  86. add_option('sb_display_method', 'dynamic');
  87. add_option('sb_sermons_per_page', '10');
  88. add_option('sb_sermon_multi_output', base64_encode(strtr(base64_decode(get_option('sb_sermon_multi_form')), sb_search_results_dictionary())));
  89. add_option('sb_sermon_single_output', base64_encode(strtr(base64_decode(get_option('sb_sermon_single_form')), sb_sermon_page_dictionary())));
  90. add_option('sb_sermon_style_output', base64_encode(stripslashes(base64_decode(get_option('sb_sermon_style')))));
  91. add_option('sb_sermon_style_date_modified', strtotime('now'));
  92. update_option('sb_sermon_db_version', '1.4');
  93. case '1.4' :
  94. //Remove duplicate indexes added by a previous bug
  95. $extra_indexes = $wpdb->get_results("SELECT index_name, table_name FROM INFORMATION_SCHEMA.STATISTICS WHERE table_schema = '".DB_NAME."' AND index_name LIKE 'sermon_id_%'");
  96. if (is_array($extra_indexes))
  97. foreach ($extra_indexes as $extra_index)
  98. $wpdb->query("ALTER TABLE {$extra_index->table_name} DROP INDEX {$extra_index->index_name}");
  99. //Remove duplicate tags added by a previous bug
  100. $unique_tags = $wpdb->get_results("SELECT DISTINCT name FROM {$wpdb->prefix}sb_tags");
  101. if (is_array($unique_tags)) {
  102. foreach ($unique_tags as $tag) {
  103. $tag_ids = $wpdb->get_results("SELECT id FROM {$wpdb->prefix}sb_tags WHERE name='{$tag->name}'");
  104. if (is_array($tag_ids)) {
  105. foreach ($tag_ids as $tag_id) {
  106. $wpdb->query("UPDATE {$wpdb->prefix}sb_sermons_tags SET tag_id='{$tag_ids[0]->id}' WHERE tag_id='{$tag_id->id}'");
  107. if ($tag_ids[0]->id != $tag_id->id)
  108. $wpdb->query("DELETE FROM {$wpdb->prefix}sb_tags WHERE id='{$tag_id->id}'");
  109. }
  110. }
  111. }
  112. }
  113. sb_delete_unused_tags();
  114. $wpdb->query("ALTER TABLE {$wpdb->prefix}sb_tags CHANGE name name VARCHAR(255)");
  115. $wpdb->query("ALTER TABLE {$wpdb->prefix}sb_tags ADD UNIQUE (name)");
  116. update_option('sb_sermon_db_version', '1.5');
  117. case '1.5' :
  118. sb_upgrade_options ();
  119. $wpdb->query("ALTER TABLE {$wpdb->prefix}sb_stuff ADD duration VARCHAR (6) NOT NULL");
  120. $wpdb->query("ALTER TABLE {$wpdb->prefix}sb_sermons CHANGE date `datetime` DATETIME NOT NULL");
  121. //Populate time portion of date/time field
  122. $sermon_dates = $wpdb->get_results("SELECT id, datetime, service_id, time, override FROM {$wpdb->prefix}sb_sermons");
  123. if ($sermon_dates) {
  124. $services = $wpdb->get_results("SELECT id, time FROM {$wpdb->prefix}sb_services ORDER BY id asc");
  125. foreach ($services as $service)
  126. $service_time[$service->id] = $service->time;
  127. foreach ($sermon_dates as $sermon_date) {
  128. if ($sermon_date->override)
  129. $sermon_date->datetime = strtotime($sermon_date->time)-strtotime('00:00')+strtotime($sermon_date->datetime);
  130. else {
  131. $sermon_date->datetime = strtotime($service_time[$sermon_date->service_id])-strtotime('00:00')+strtotime($sermon_date->datetime);
  132. }
  133. $sermon_date->datetime = date ("Y-m-d H:i:s", $sermon_date->datetime);
  134. $wpdb->query("UPDATE {$wpdb->prefix}sb_sermons SET datetime = '{$sermon_date->datetime}' WHERE id={$sermon_date->id}");
  135. }
  136. }
  137. sb_update_option('import_prompt', true);
  138. sb_update_option('import_title', false);
  139. sb_update_option('import_artist', false);
  140. sb_update_option('import_album', false);
  141. sb_update_option('import_comments', false);
  142. sb_update_option('import_filename', 'none');
  143. sb_update_option('hide_no_attachments', false);
  144. sb_update_option('db_version', '1.6');
  145. case '1.6' :
  146. sb_update_option('mp3_shortcode', '[audio:%SERMONURL%]');
  147. sb_update_option('db_version', '1.7');
  148. return;
  149. default :
  150. //To-do: Remove time field from sb_sermons?
  151. update_option('sb_sermon_db_version', '1.0');
  152. }
  153. }
  154. ?>