From f492f808f4861ae9937dcaf3bf8476513ae1c091 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Fri, 16 Feb 2018 12:42:02 -0800 Subject: refactor of the DB update system. Updates are now stored individually in Zotlabs/Update/_nnnn.php and are objects; so only the pending updates need to be loaded and executed rather than all historical updates. There is one single number (DB_UPDATE_VERSION) representing the current version and it is EQUAL TO the last known update. A dummy update _1201 was created to address the difference in counting behaviour; it will be executed on the next change of DB_UPDATE_VERSION as well as the next update. The database config values are also loaded from disk on every update immediately before setting the update lock in order to reduce timing conflicts and race conditions. --- Zotlabs/Lib/DB_Upgrade.php | 134 ++++++------- Zotlabs/Module/Admin/Dbsync.php | 54 ++--- Zotlabs/Update/_1000.php | 15 ++ Zotlabs/Update/_1001.php | 27 +++ Zotlabs/Update/_1002.php | 20 ++ Zotlabs/Update/_1003.php | 15 ++ Zotlabs/Update/_1004.php | 24 +++ Zotlabs/Update/_1005.php | 13 ++ Zotlabs/Update/_1006.php | 45 +++++ Zotlabs/Update/_1007.php | 15 ++ Zotlabs/Update/_1008.php | 15 ++ Zotlabs/Update/_1009.php | 15 ++ Zotlabs/Update/_1010.php | 18 ++ Zotlabs/Update/_1011.php | 16 ++ Zotlabs/Update/_1012.php | 16 ++ Zotlabs/Update/_1013.php | 21 ++ Zotlabs/Update/_1014.php | 14 ++ Zotlabs/Update/_1015.php | 19 ++ Zotlabs/Update/_1016.php | 39 ++++ Zotlabs/Update/_1017.php | 14 ++ Zotlabs/Update/_1018.php | 16 ++ Zotlabs/Update/_1019.php | 14 ++ Zotlabs/Update/_1020.php | 14 ++ Zotlabs/Update/_1021.php | 17 ++ Zotlabs/Update/_1022.php | 14 ++ Zotlabs/Update/_1023.php | 14 ++ Zotlabs/Update/_1024.php | 15 ++ Zotlabs/Update/_1025.php | 15 ++ Zotlabs/Update/_1026.php | 16 ++ Zotlabs/Update/_1027.php | 15 ++ Zotlabs/Update/_1028.php | 15 ++ Zotlabs/Update/_1029.php | 15 ++ Zotlabs/Update/_1030.php | 29 +++ Zotlabs/Update/_1031.php | 16 ++ Zotlabs/Update/_1032.php | 21 ++ Zotlabs/Update/_1033.php | 29 +++ Zotlabs/Update/_1034.php | 20 ++ Zotlabs/Update/_1035.php | 24 +++ Zotlabs/Update/_1036.php | 16 ++ Zotlabs/Update/_1037.php | 30 +++ Zotlabs/Update/_1038.php | 17 ++ Zotlabs/Update/_1039.php | 16 ++ Zotlabs/Update/_1040.php | 16 ++ Zotlabs/Update/_1041.php | 16 ++ Zotlabs/Update/_1042.php | 16 ++ Zotlabs/Update/_1043.php | 15 ++ Zotlabs/Update/_1044.php | 15 ++ Zotlabs/Update/_1045.php | 15 ++ Zotlabs/Update/_1046.php | 15 ++ Zotlabs/Update/_1047.php | 15 ++ Zotlabs/Update/_1048.php | 29 +++ Zotlabs/Update/_1049.php | 15 ++ Zotlabs/Update/_1050.php | 15 ++ Zotlabs/Update/_1051.php | 16 ++ Zotlabs/Update/_1052.php | 14 ++ Zotlabs/Update/_1053.php | 14 ++ Zotlabs/Update/_1054.php | 14 ++ Zotlabs/Update/_1055.php | 14 ++ Zotlabs/Update/_1056.php | 15 ++ Zotlabs/Update/_1057.php | 14 ++ Zotlabs/Update/_1058.php | 19 ++ Zotlabs/Update/_1059.php | 14 ++ Zotlabs/Update/_1060.php | 24 +++ Zotlabs/Update/_1061.php | 15 ++ Zotlabs/Update/_1062.php | 34 ++++ Zotlabs/Update/_1063.php | 16 ++ Zotlabs/Update/_1064.php | 15 ++ Zotlabs/Update/_1065.php | 15 ++ Zotlabs/Update/_1066.php | 15 ++ Zotlabs/Update/_1067.php | 14 ++ Zotlabs/Update/_1068.php | 14 ++ Zotlabs/Update/_1069.php | 15 ++ Zotlabs/Update/_1070.php | 15 ++ Zotlabs/Update/_1071.php | 15 ++ Zotlabs/Update/_1072.php | 17 ++ Zotlabs/Update/_1073.php | 23 +++ Zotlabs/Update/_1074.php | 19 ++ Zotlabs/Update/_1075.php | 16 ++ Zotlabs/Update/_1076.php | 14 ++ Zotlabs/Update/_1077.php | 14 ++ Zotlabs/Update/_1078.php | 15 ++ Zotlabs/Update/_1079.php | 14 ++ Zotlabs/Update/_1080.php | 15 ++ Zotlabs/Update/_1081.php | 14 ++ Zotlabs/Update/_1082.php | 14 ++ Zotlabs/Update/_1083.php | 15 ++ Zotlabs/Update/_1084.php | 24 +++ Zotlabs/Update/_1085.php | 20 ++ Zotlabs/Update/_1086.php | 15 ++ Zotlabs/Update/_1087.php | 17 ++ Zotlabs/Update/_1088.php | 17 ++ Zotlabs/Update/_1089.php | 16 ++ Zotlabs/Update/_1090.php | 15 ++ Zotlabs/Update/_1091.php | 13 ++ Zotlabs/Update/_1092.php | 61 ++++++ Zotlabs/Update/_1093.php | 14 ++ Zotlabs/Update/_1094.php | 15 ++ Zotlabs/Update/_1095.php | 15 ++ Zotlabs/Update/_1096.php | 14 ++ Zotlabs/Update/_1097.php | 24 +++ Zotlabs/Update/_1098.php | 25 +++ Zotlabs/Update/_1099.php | 24 +++ Zotlabs/Update/_1100.php | 16 ++ Zotlabs/Update/_1101.php | 13 ++ Zotlabs/Update/_1102.php | 16 ++ Zotlabs/Update/_1103.php | 14 ++ Zotlabs/Update/_1104.php | 14 ++ Zotlabs/Update/_1105.php | 15 ++ Zotlabs/Update/_1106.php | 14 ++ Zotlabs/Update/_1107.php | 34 ++++ Zotlabs/Update/_1108.php | 17 ++ Zotlabs/Update/_1109.php | 16 ++ Zotlabs/Update/_1110.php | 17 ++ Zotlabs/Update/_1111.php | 14 ++ Zotlabs/Update/_1112.php | 29 +++ Zotlabs/Update/_1113.php | 16 ++ Zotlabs/Update/_1114.php | 15 ++ Zotlabs/Update/_1115.php | 16 ++ Zotlabs/Update/_1116.php | 12 ++ Zotlabs/Update/_1117.php | 16 ++ Zotlabs/Update/_1118.php | 16 ++ Zotlabs/Update/_1119.php | 35 ++++ Zotlabs/Update/_1120.php | 16 ++ Zotlabs/Update/_1121.php | 16 ++ Zotlabs/Update/_1122.php | 16 ++ Zotlabs/Update/_1123.php | 17 ++ Zotlabs/Update/_1124.php | 41 ++++ Zotlabs/Update/_1125.php | 16 ++ Zotlabs/Update/_1126.php | 16 ++ Zotlabs/Update/_1127.php | 16 ++ Zotlabs/Update/_1128.php | 15 ++ Zotlabs/Update/_1129.php | 14 ++ Zotlabs/Update/_1130.php | 28 +++ Zotlabs/Update/_1131.php | 20 ++ Zotlabs/Update/_1132.php | 17 ++ Zotlabs/Update/_1133.php | 38 ++++ Zotlabs/Update/_1134.php | 20 ++ Zotlabs/Update/_1135.php | 14 ++ Zotlabs/Update/_1136.php | 17 ++ Zotlabs/Update/_1137.php | 16 ++ Zotlabs/Update/_1138.php | 15 ++ Zotlabs/Update/_1139.php | 21 ++ Zotlabs/Update/_1140.php | 27 +++ Zotlabs/Update/_1141.php | 30 +++ Zotlabs/Update/_1142.php | 18 ++ Zotlabs/Update/_1143.php | 17 ++ Zotlabs/Update/_1144.php | 27 +++ Zotlabs/Update/_1145.php | 30 +++ Zotlabs/Update/_1146.php | 16 ++ Zotlabs/Update/_1147.php | 16 ++ Zotlabs/Update/_1148.php | 17 ++ Zotlabs/Update/_1149.php | 35 ++++ Zotlabs/Update/_1150.php | 28 +++ Zotlabs/Update/_1151.php | 24 +++ Zotlabs/Update/_1152.php | 57 ++++++ Zotlabs/Update/_1153.php | 18 ++ Zotlabs/Update/_1154.php | 17 ++ Zotlabs/Update/_1155.php | 17 ++ Zotlabs/Update/_1156.php | 28 +++ Zotlabs/Update/_1157.php | 17 ++ Zotlabs/Update/_1158.php | 22 +++ Zotlabs/Update/_1159.php | 25 +++ Zotlabs/Update/_1160.php | 14 ++ Zotlabs/Update/_1161.php | 43 ++++ Zotlabs/Update/_1162.php | 19 ++ Zotlabs/Update/_1163.php | 22 +++ Zotlabs/Update/_1164.php | 45 +++++ Zotlabs/Update/_1165.php | 20 ++ Zotlabs/Update/_1166.php | 15 ++ Zotlabs/Update/_1167.php | 26 +++ Zotlabs/Update/_1168.php | 23 +++ Zotlabs/Update/_1169.php | 27 +++ Zotlabs/Update/_1170.php | 21 ++ Zotlabs/Update/_1171.php | 24 +++ Zotlabs/Update/_1172.php | 29 +++ Zotlabs/Update/_1173.php | 27 +++ Zotlabs/Update/_1174.php | 32 +++ Zotlabs/Update/_1175.php | 31 +++ Zotlabs/Update/_1176.php | 19 ++ Zotlabs/Update/_1177.php | 66 +++++++ Zotlabs/Update/_1178.php | 42 ++++ Zotlabs/Update/_1179.php | 49 +++++ Zotlabs/Update/_1180.php | 32 +++ Zotlabs/Update/_1181.php | 14 ++ Zotlabs/Update/_1182.php | 17 ++ Zotlabs/Update/_1183.php | 25 +++ Zotlabs/Update/_1184.php | 16 ++ Zotlabs/Update/_1185.php | 16 ++ Zotlabs/Update/_1186.php | 18 ++ Zotlabs/Update/_1187.php | 24 +++ Zotlabs/Update/_1188.php | 18 ++ Zotlabs/Update/_1189.php | 23 +++ Zotlabs/Update/_1190.php | 17 ++ Zotlabs/Update/_1191.php | 425 ++++++++++++++++++++++++++++++++++++++++ Zotlabs/Update/_1192.php | 21 ++ Zotlabs/Update/_1193.php | 22 +++ Zotlabs/Update/_1194.php | 22 +++ Zotlabs/Update/_1195.php | 21 ++ Zotlabs/Update/_1196.php | 45 +++++ Zotlabs/Update/_1197.php | 17 ++ Zotlabs/Update/_1198.php | 24 +++ Zotlabs/Update/_1199.php | 19 ++ Zotlabs/Update/_1200.php | 20 ++ Zotlabs/Update/_1201.php | 15 ++ 204 files changed, 4585 insertions(+), 99 deletions(-) create mode 100644 Zotlabs/Update/_1000.php create mode 100644 Zotlabs/Update/_1001.php create mode 100644 Zotlabs/Update/_1002.php create mode 100644 Zotlabs/Update/_1003.php create mode 100644 Zotlabs/Update/_1004.php create mode 100644 Zotlabs/Update/_1005.php create mode 100644 Zotlabs/Update/_1006.php create mode 100644 Zotlabs/Update/_1007.php create mode 100644 Zotlabs/Update/_1008.php create mode 100644 Zotlabs/Update/_1009.php create mode 100644 Zotlabs/Update/_1010.php create mode 100644 Zotlabs/Update/_1011.php create mode 100644 Zotlabs/Update/_1012.php create mode 100644 Zotlabs/Update/_1013.php create mode 100644 Zotlabs/Update/_1014.php create mode 100644 Zotlabs/Update/_1015.php create mode 100644 Zotlabs/Update/_1016.php create mode 100644 Zotlabs/Update/_1017.php create mode 100644 Zotlabs/Update/_1018.php create mode 100644 Zotlabs/Update/_1019.php create mode 100644 Zotlabs/Update/_1020.php create mode 100644 Zotlabs/Update/_1021.php create mode 100644 Zotlabs/Update/_1022.php create mode 100644 Zotlabs/Update/_1023.php create mode 100644 Zotlabs/Update/_1024.php create mode 100644 Zotlabs/Update/_1025.php create mode 100644 Zotlabs/Update/_1026.php create mode 100644 Zotlabs/Update/_1027.php create mode 100644 Zotlabs/Update/_1028.php create mode 100644 Zotlabs/Update/_1029.php create mode 100644 Zotlabs/Update/_1030.php create mode 100644 Zotlabs/Update/_1031.php create mode 100644 Zotlabs/Update/_1032.php create mode 100644 Zotlabs/Update/_1033.php create mode 100644 Zotlabs/Update/_1034.php create mode 100644 Zotlabs/Update/_1035.php create mode 100644 Zotlabs/Update/_1036.php create mode 100644 Zotlabs/Update/_1037.php create mode 100644 Zotlabs/Update/_1038.php create mode 100644 Zotlabs/Update/_1039.php create mode 100644 Zotlabs/Update/_1040.php create mode 100644 Zotlabs/Update/_1041.php create mode 100644 Zotlabs/Update/_1042.php create mode 100644 Zotlabs/Update/_1043.php create mode 100644 Zotlabs/Update/_1044.php create mode 100644 Zotlabs/Update/_1045.php create mode 100644 Zotlabs/Update/_1046.php create mode 100644 Zotlabs/Update/_1047.php create mode 100644 Zotlabs/Update/_1048.php create mode 100644 Zotlabs/Update/_1049.php create mode 100644 Zotlabs/Update/_1050.php create mode 100644 Zotlabs/Update/_1051.php create mode 100644 Zotlabs/Update/_1052.php create mode 100644 Zotlabs/Update/_1053.php create mode 100644 Zotlabs/Update/_1054.php create mode 100644 Zotlabs/Update/_1055.php create mode 100644 Zotlabs/Update/_1056.php create mode 100644 Zotlabs/Update/_1057.php create mode 100644 Zotlabs/Update/_1058.php create mode 100644 Zotlabs/Update/_1059.php create mode 100644 Zotlabs/Update/_1060.php create mode 100644 Zotlabs/Update/_1061.php create mode 100644 Zotlabs/Update/_1062.php create mode 100644 Zotlabs/Update/_1063.php create mode 100644 Zotlabs/Update/_1064.php create mode 100644 Zotlabs/Update/_1065.php create mode 100644 Zotlabs/Update/_1066.php create mode 100644 Zotlabs/Update/_1067.php create mode 100644 Zotlabs/Update/_1068.php create mode 100644 Zotlabs/Update/_1069.php create mode 100644 Zotlabs/Update/_1070.php create mode 100644 Zotlabs/Update/_1071.php create mode 100644 Zotlabs/Update/_1072.php create mode 100644 Zotlabs/Update/_1073.php create mode 100644 Zotlabs/Update/_1074.php create mode 100644 Zotlabs/Update/_1075.php create mode 100644 Zotlabs/Update/_1076.php create mode 100644 Zotlabs/Update/_1077.php create mode 100644 Zotlabs/Update/_1078.php create mode 100644 Zotlabs/Update/_1079.php create mode 100644 Zotlabs/Update/_1080.php create mode 100644 Zotlabs/Update/_1081.php create mode 100644 Zotlabs/Update/_1082.php create mode 100644 Zotlabs/Update/_1083.php create mode 100644 Zotlabs/Update/_1084.php create mode 100644 Zotlabs/Update/_1085.php create mode 100644 Zotlabs/Update/_1086.php create mode 100644 Zotlabs/Update/_1087.php create mode 100644 Zotlabs/Update/_1088.php create mode 100644 Zotlabs/Update/_1089.php create mode 100644 Zotlabs/Update/_1090.php create mode 100644 Zotlabs/Update/_1091.php create mode 100644 Zotlabs/Update/_1092.php create mode 100644 Zotlabs/Update/_1093.php create mode 100644 Zotlabs/Update/_1094.php create mode 100644 Zotlabs/Update/_1095.php create mode 100644 Zotlabs/Update/_1096.php create mode 100644 Zotlabs/Update/_1097.php create mode 100644 Zotlabs/Update/_1098.php create mode 100644 Zotlabs/Update/_1099.php create mode 100644 Zotlabs/Update/_1100.php create mode 100644 Zotlabs/Update/_1101.php create mode 100644 Zotlabs/Update/_1102.php create mode 100644 Zotlabs/Update/_1103.php create mode 100644 Zotlabs/Update/_1104.php create mode 100644 Zotlabs/Update/_1105.php create mode 100644 Zotlabs/Update/_1106.php create mode 100644 Zotlabs/Update/_1107.php create mode 100644 Zotlabs/Update/_1108.php create mode 100644 Zotlabs/Update/_1109.php create mode 100644 Zotlabs/Update/_1110.php create mode 100644 Zotlabs/Update/_1111.php create mode 100644 Zotlabs/Update/_1112.php create mode 100644 Zotlabs/Update/_1113.php create mode 100644 Zotlabs/Update/_1114.php create mode 100644 Zotlabs/Update/_1115.php create mode 100644 Zotlabs/Update/_1116.php create mode 100644 Zotlabs/Update/_1117.php create mode 100644 Zotlabs/Update/_1118.php create mode 100644 Zotlabs/Update/_1119.php create mode 100644 Zotlabs/Update/_1120.php create mode 100644 Zotlabs/Update/_1121.php create mode 100644 Zotlabs/Update/_1122.php create mode 100644 Zotlabs/Update/_1123.php create mode 100644 Zotlabs/Update/_1124.php create mode 100644 Zotlabs/Update/_1125.php create mode 100644 Zotlabs/Update/_1126.php create mode 100644 Zotlabs/Update/_1127.php create mode 100644 Zotlabs/Update/_1128.php create mode 100644 Zotlabs/Update/_1129.php create mode 100644 Zotlabs/Update/_1130.php create mode 100644 Zotlabs/Update/_1131.php create mode 100644 Zotlabs/Update/_1132.php create mode 100644 Zotlabs/Update/_1133.php create mode 100644 Zotlabs/Update/_1134.php create mode 100644 Zotlabs/Update/_1135.php create mode 100644 Zotlabs/Update/_1136.php create mode 100644 Zotlabs/Update/_1137.php create mode 100644 Zotlabs/Update/_1138.php create mode 100644 Zotlabs/Update/_1139.php create mode 100644 Zotlabs/Update/_1140.php create mode 100644 Zotlabs/Update/_1141.php create mode 100644 Zotlabs/Update/_1142.php create mode 100644 Zotlabs/Update/_1143.php create mode 100644 Zotlabs/Update/_1144.php create mode 100644 Zotlabs/Update/_1145.php create mode 100644 Zotlabs/Update/_1146.php create mode 100644 Zotlabs/Update/_1147.php create mode 100644 Zotlabs/Update/_1148.php create mode 100644 Zotlabs/Update/_1149.php create mode 100644 Zotlabs/Update/_1150.php create mode 100644 Zotlabs/Update/_1151.php create mode 100644 Zotlabs/Update/_1152.php create mode 100644 Zotlabs/Update/_1153.php create mode 100644 Zotlabs/Update/_1154.php create mode 100644 Zotlabs/Update/_1155.php create mode 100644 Zotlabs/Update/_1156.php create mode 100644 Zotlabs/Update/_1157.php create mode 100644 Zotlabs/Update/_1158.php create mode 100644 Zotlabs/Update/_1159.php create mode 100644 Zotlabs/Update/_1160.php create mode 100644 Zotlabs/Update/_1161.php create mode 100644 Zotlabs/Update/_1162.php create mode 100644 Zotlabs/Update/_1163.php create mode 100644 Zotlabs/Update/_1164.php create mode 100644 Zotlabs/Update/_1165.php create mode 100644 Zotlabs/Update/_1166.php create mode 100644 Zotlabs/Update/_1167.php create mode 100644 Zotlabs/Update/_1168.php create mode 100644 Zotlabs/Update/_1169.php create mode 100644 Zotlabs/Update/_1170.php create mode 100644 Zotlabs/Update/_1171.php create mode 100644 Zotlabs/Update/_1172.php create mode 100644 Zotlabs/Update/_1173.php create mode 100644 Zotlabs/Update/_1174.php create mode 100644 Zotlabs/Update/_1175.php create mode 100644 Zotlabs/Update/_1176.php create mode 100644 Zotlabs/Update/_1177.php create mode 100644 Zotlabs/Update/_1178.php create mode 100644 Zotlabs/Update/_1179.php create mode 100644 Zotlabs/Update/_1180.php create mode 100644 Zotlabs/Update/_1181.php create mode 100644 Zotlabs/Update/_1182.php create mode 100644 Zotlabs/Update/_1183.php create mode 100644 Zotlabs/Update/_1184.php create mode 100644 Zotlabs/Update/_1185.php create mode 100644 Zotlabs/Update/_1186.php create mode 100644 Zotlabs/Update/_1187.php create mode 100644 Zotlabs/Update/_1188.php create mode 100644 Zotlabs/Update/_1189.php create mode 100644 Zotlabs/Update/_1190.php create mode 100644 Zotlabs/Update/_1191.php create mode 100644 Zotlabs/Update/_1192.php create mode 100644 Zotlabs/Update/_1193.php create mode 100644 Zotlabs/Update/_1194.php create mode 100644 Zotlabs/Update/_1195.php create mode 100644 Zotlabs/Update/_1196.php create mode 100644 Zotlabs/Update/_1197.php create mode 100644 Zotlabs/Update/_1198.php create mode 100644 Zotlabs/Update/_1199.php create mode 100644 Zotlabs/Update/_1200.php create mode 100644 Zotlabs/Update/_1201.php (limited to 'Zotlabs') diff --git a/Zotlabs/Lib/DB_Upgrade.php b/Zotlabs/Lib/DB_Upgrade.php index 8f0488f6f..4038a2d53 100644 --- a/Zotlabs/Lib/DB_Upgrade.php +++ b/Zotlabs/Lib/DB_Upgrade.php @@ -10,22 +10,12 @@ class DB_Upgrade { function __construct($db_revision) { - $platform_name = System::get_platform_name(); + $this->config_name = 'db_version'; + $this->func_prefix = '_'; - $update_file = 'install/' . $platform_name . '/update.php'; - if(! file_exists($update_file)) { - $update_file = 'install/update.php'; - $this->config_name = 'db_version'; - $this->func_prefix = 'update_r'; - } - else { - $this->config_name = $platform_name . '_db_version'; - $this->func_prefix = $platform_name . '_update_'; - } - - $build = get_config('system', $this->config_name, 0); + $build = get_config('system', 'db_version', 0); if(! intval($build)) - $build = set_config('system', $this->config_name, $db_revision); + $build = set_config('system', 'db_version', $db_revision); if($build == $db_revision) { // Nothing to be done. @@ -40,82 +30,78 @@ class DB_Upgrade { $current = intval($db_revision); - if(($stored < $current) && file_exists($update_file)) { + if($stored < $current) { - Config::Load('database'); + // The last update we performed was $stored. + // Start at $stored + 1 and continue until we have completed $current - // We're reporting a different version than what is currently installed. - // Run any existing update scripts to bring the database up to current. - - require_once($update_file); + for($x = $stored + 1; $x <= $current; $x ++) { + $s = '_' . $x; + $cls = '\\Zotlabs\Update\\' . $s ; + if(! class_exists($cls)) { + return; + } - // make sure that boot.php and update.php are the same release, we might be - // updating from git right this very second and the correct version of the update.php - // file may not be here yet. This can happen on a very busy site. + // There could be a lot of processes running or about to run. + // We want exactly one process to run the update command. + // So store the fact that we're taking responsibility + // after first checking to see if somebody else already has. - if($db_revision == UPDATE_VERSION) { - for($x = $stored; $x < $current; $x ++) { - $func = $this->func_prefix . $x; - if(function_exists($func)) { - // There could be a lot of processes running or about to run. - // We want exactly one process to run the update command. - // So store the fact that we're taking responsibility - // after first checking to see if somebody else already has. + // If the update fails or times-out completely you may need to + // delete the config entry to try again. - // If the update fails or times-out completely you may need to - // delete the config entry to try again. + Config::Load('database'); - if(get_config('database', $func)) - break; - set_config('database',$func, '1'); - // call the specific update + if(get_config('database', $s)) + break; + set_config('database',$s, '1'); + - $retval = $func(); - if($retval) { + $c = new $cls(); + $retval = $c->run(); - // Prevent sending hundreds of thousands of emails by creating - // a lockfile. + if($retval != UPDATE_SUCCESS) { - $lockfile = 'store/[data]/mailsent'; + // Prevent sending hundreds of thousands of emails by creating + // a lockfile. - if ((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 86400))) - return; - @unlink($lockfile); - //send the administrator an e-mail - file_put_contents($lockfile, $x); - - $r = q("select account_language from account where account_email = '%s' limit 1", - dbesc(\App::$config['system']['admin_email']) - ); - push_lang(($r) ? $r[0]['account_language'] : 'en'); + $lockfile = 'store/[data]/mailsent'; - z_mail( + if ((file_exists($lockfile)) && (filemtime($lockfile) > (time() - 86400))) + return; + @unlink($lockfile); + //send the administrator an e-mail + file_put_contents($lockfile, $x); + + $r = q("select account_language from account where account_email = '%s' limit 1", + dbesc(\App::$config['system']['admin_email']) + ); + push_lang(($r) ? $r[0]['account_language'] : 'en'); + z_mail( + [ + 'toEmail' => \App::$config['system']['admin_email'], + 'messageSubject' => sprintf( t('Update Error at %s'), z_root()), + 'textVersion' => replace_macros(get_intltext_template('update_fail_eml.tpl'), [ - 'toEmail' => \App::$config['system']['admin_email'], - 'messageSubject' => sprintf( t('Update Error at %s'), z_root()), - 'textVersion' => replace_macros(get_intltext_template('update_fail_eml.tpl'), - [ - '$sitename' => \App::$config['system']['sitename'], - '$siteurl' => z_root(), - '$update' => $x, - '$error' => sprintf( t('Update %s failed. See error logs.'), $x) - ] - ) + '$sitename' => \App::$config['system']['sitename'], + '$siteurl' => z_root(), + '$update' => $x, + '$error' => sprintf( t('Update %s failed. See error logs.'), $x) ] - ); - - //try the logger - logger('CRITICAL: Update Failed: ' . $x); - pop_lang(); - } - else { - set_config('database',$func, 'success'); - } - } + ) + ] + ); + + //try the logger + logger('CRITICAL: Update Failed: ' . $x); + pop_lang(); + } + else { + set_config('database',$s, 'success'); } - set_config('system', $this->config_name, $db_revision); } } + set_config('system', 'db_version', $db_revision); } } } \ No newline at end of file diff --git a/Zotlabs/Module/Admin/Dbsync.php b/Zotlabs/Module/Admin/Dbsync.php index cff8a2484..469af2aa5 100644 --- a/Zotlabs/Module/Admin/Dbsync.php +++ b/Zotlabs/Module/Admin/Dbsync.php @@ -7,36 +7,38 @@ namespace Zotlabs\Module\Admin; class Dbsync { - - function get() { $o = ''; if(argc() > 3 && intval(argv(3)) && argv(2) === 'mark') { - set_config('database', 'update_r' . intval(argv(3)), 'success'); - if(intval(get_config('system','db_version')) <= intval(argv(3))) - set_config('system','db_version',intval(argv(3)) + 1); + // remove the old style config if it exists + del_config('database', 'update_r' . intval(argv(3))); + set_config('database', '_' . intval(argv(3)), 'success'); + if(intval(get_config('system','db_version')) < intval(argv(3))) + set_config('system','db_version',intval(argv(3))); info( t('Update has been marked successful') . EOL); goaway(z_root() . '/admin/dbsync'); } if(argc() > 2 && intval(argv(2))) { - require_once('install/update.php'); - $func = 'update_r' . intval(argv(2)); - if(function_exists($func)) { - $retval = $func(); + $x = intval(argv(2)); + $s = '_' . $x; + $cls = '\\Zotlabs\Update\\' . $s ; + if(class_exists($cls)) { + $c = new $cls(); + $retval = $c->run(); if($retval === UPDATE_FAILED) { - $o .= sprintf( t('Executing %s failed. Check system logs.'), $func); + $o .= sprintf( t('Executing %s failed. Check system logs.'), $s); } elseif($retval === UPDATE_SUCCESS) { - $o .= sprintf( t('Update %s was successfully applied.'), $func); - set_config('database',$func, 'success'); + $o .= sprintf( t('Update %s was successfully applied.'), $s); + set_config('database',$s, 'success'); } else - $o .= sprintf( t('Update %s did not return a status. Unknown if it succeeded.'), $func); + $o .= sprintf( t('Update %s did not return a status. Unknown if it succeeded.'), $s); } else - $o .= sprintf( t('Update function %s could not be found.'), $func); + $o .= sprintf( t('Update function %s could not be found.'), $s); return $o; } @@ -45,23 +47,25 @@ class Dbsync { $r = q("select * from config where cat = 'database' "); if(count($r)) { foreach($r as $rr) { - $upd = intval(substr($rr['k'],8)); + $upd = intval(substr($rr['k'],-4)); if($rr['v'] === 'success') continue; $failed[] = $upd; } } - if(! count($failed)) - return '

' . t('No failed updates.') . '

'; - - $o = replace_macros(get_markup_template('failed_updates.tpl'),array( - '$base' => z_root(), - '$banner' => t('Failed Updates'), - '$desc' => '', - '$mark' => t('Mark success (if update was manually applied)'), - '$apply' => t('Attempt to execute this update step automatically'), - '$failed' => $failed + if(count($failed)) { + $o = replace_macros(get_markup_template('failed_updates.tpl'),array( + '$base' => z_root(), + '$banner' => t('Failed Updates'), + '$desc' => '', + '$mark' => t('Mark success (if update was manually applied)'), + '$apply' => t('Attempt to execute this update step automatically'), + '$failed' => $failed )); + } + else { + return '

' . t('No failed updates.') . '

'; + } return $o; } diff --git a/Zotlabs/Update/_1000.php b/Zotlabs/Update/_1000.php new file mode 100644 index 000000000..02787db38 --- /dev/null +++ b/Zotlabs/Update/_1000.php @@ -0,0 +1,15 @@ + 0 "); + + if($r1 && $r2 && $r3) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} + + +} \ No newline at end of file diff --git a/Zotlabs/Update/_1137.php b/Zotlabs/Update/_1137.php new file mode 100644 index 000000000..ab11fe3db --- /dev/null +++ b/Zotlabs/Update/_1137.php @@ -0,0 +1,16 @@ + Date: Sat, 17 Feb 2018 01:49:01 +0100 Subject: Refactor OAuth2Server a bit. --- Zotlabs/Identity/OAuth2Server.php | 43 +++++++++++++++---------------------- Zotlabs/Module/Authorize.php | 45 +++++++++++++++++++-------------------- Zotlabs/Module/Token.php | 9 ++++---- 3 files changed, 44 insertions(+), 53 deletions(-) (limited to 'Zotlabs') diff --git a/Zotlabs/Identity/OAuth2Server.php b/Zotlabs/Identity/OAuth2Server.php index 3d7d5efb2..cbb4748fe 100644 --- a/Zotlabs/Identity/OAuth2Server.php +++ b/Zotlabs/Identity/OAuth2Server.php @@ -2,42 +2,33 @@ namespace Zotlabs\Identity; -class OAuth2Server { +class OAuth2Server extends \OAuth2\Server { - public $server; + public function __construct(OAuth2Storage $storage, $config = []) { - public function __construct() { + if(! is_array($config)) { + $config = [ + 'use_openid_connect' => true, + 'issuer' => \Zotlabs\Lib\System::get_site_name() + ]; + } - $storage = new OAuth2Storage(\DBA::$dba->db); - - $config = [ - 'use_openid_connect' => true, - 'issuer' => \Zotlabs\Lib\System::get_site_name() - ]; - - // Pass a storage object or array of storage objects to the OAuth2 server class - $this->server = new \OAuth2\Server($storage,$config); + parent::__construct($storage, $config); // Add the "Client Credentials" grant type (it is the simplest of the grant types) - $this->server->addGrantType(new \OAuth2\GrantType\ClientCredentials($storage)); + $this->addGrantType(new \OAuth2\GrantType\ClientCredentials($storage)); // Add the "Authorization Code" grant type (this is where the oauth magic happens) - $this->server->addGrantType(new \OAuth2\GrantType\AuthorizationCode($storage)); + $this->addGrantType(new \OAuth2\GrantType\AuthorizationCode($storage)); - $keyStorage = new \OAuth2\Storage\Memory( [ - 'keys' => [ - 'public_key' => get_config('system','pubkey'), - 'private_key' => get_config('system','prvkey') + $keyStorage = new \OAuth2\Storage\Memory( [ + 'keys' => [ + 'public_key' => get_config('system', 'pubkey'), + 'private_key' => get_config('system', 'prvkey') ] ]); - $this->server->addStorage($keyStorage,'public_key'); - + $this->addStorage($keyStorage, 'public_key'); } - public function get_server() { - return $this->server; - } - - -} \ No newline at end of file +} diff --git a/Zotlabs/Module/Authorize.php b/Zotlabs/Module/Authorize.php index 7676b0855..254700b4e 100644 --- a/Zotlabs/Module/Authorize.php +++ b/Zotlabs/Module/Authorize.php @@ -2,13 +2,13 @@ namespace Zotlabs\Module; +use Zotlabs\Identity\OAuth2Storage; -class Authorize extends \Zotlabs\Web\Controller { +class Authorize extends \Zotlabs\Web\Controller { function init() { - // workaround for HTTP-auth in CGI mode if (x($_SERVER, 'REDIRECT_REMOTE_USER')) { $userpass = base64_decode(substr($_SERVER["REDIRECT_REMOTE_USER"], 6)) ; @@ -28,41 +28,40 @@ class Authorize extends \Zotlabs\Web\Controller { } } - $s = new \Zotlabs\Identity\OAuth2Server(); + $s = new \Zotlabs\Identity\OAuth2Server(new OAuth2Storage(\DBA::$dba->db)); $request = \OAuth2\Request::createFromGlobals(); $response = new \OAuth2\Response(); // validate the authorize request - if (! $s->server->validateAuthorizeRequest($request, $response)) { - $response->send(); - killme(); + if (! $s->validateAuthorizeRequest($request, $response)) { + $response->send(); + killme(); } - // display an authorization form - if (empty($_POST)) { + // display an authorization form + if (empty($_POST)) { - return ' + return '

'; - } + } - // print the authorization code if the user has authorized your client - $is_authorized = ($_POST['authorized'] === 'yes'); - $s->server->handleAuthorizeRequest($request, $response, $is_authorized, local_channel()); - if ($is_authorized) { - // this is only here so that you get to see your code in the cURL request. Otherwise, - // we'd redirect back to the client - $code = substr($response->getHttpHeader('Location'), strpos($response->getHttpHeader('Location'), 'code=')+5, 40); - echo("SUCCESS! Authorization Code: $code"); - - } + // print the authorization code if the user has authorized your client + $is_authorized = ($_POST['authorized'] === 'yes'); + $s->handleAuthorizeRequest($request, $response, $is_authorized, local_channel()); + if ($is_authorized) { + // this is only here so that you get to see your code in the cURL request. Otherwise, + // we'd redirect back to the client + $code = substr($response->getHttpHeader('Location'), strpos($response->getHttpHeader('Location'), 'code=')+5, 40); + echo("SUCCESS! Authorization Code: $code"); + } - $response->send(); - killme(); + $response->send(); + killme(); } -} \ No newline at end of file +} diff --git a/Zotlabs/Module/Token.php b/Zotlabs/Module/Token.php index 5cde58895..f7c074233 100644 --- a/Zotlabs/Module/Token.php +++ b/Zotlabs/Module/Token.php @@ -2,6 +2,8 @@ namespace Zotlabs\Module; +use Zotlabs\Identity\OAuth2Storage; + class Token extends \Zotlabs\Web\Controller { @@ -26,11 +28,10 @@ class Token extends \Zotlabs\Web\Controller { } } - - $s = new \Zotlabs\Identity\OAuth2Server(); - $s->server->handleTokenRequest(\OAuth2\Request::createFromGlobals())->send(); + $s = new \Zotlabs\Identity\OAuth2Server(new OAuth2Storage(\DBA::$dba->db)); + $s->handleTokenRequest(\OAuth2\Request::createFromGlobals())->send(); killme(); } -} \ No newline at end of file +} -- cgit v1.2.3 From 1732ffed7a3a9c1ab8811baef3a36f70a64bce7a Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Mon, 19 Feb 2018 10:59:21 +0100 Subject: backport update 1201 to the new update system and move dummy update to 1202 --- Zotlabs/Update/_1201.php | 18 +++++++++++++----- Zotlabs/Update/_1202.php | 15 +++++++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 Zotlabs/Update/_1202.php (limited to 'Zotlabs') diff --git a/Zotlabs/Update/_1201.php b/Zotlabs/Update/_1201.php index c12797377..416d35ad6 100644 --- a/Zotlabs/Update/_1201.php +++ b/Zotlabs/Update/_1201.php @@ -6,10 +6,18 @@ class _1201 { function run() { - // empty update in order to make the DB_UPDATE_VERSION equal to the current maximum update function - // rather than being one greater than the last known update - - return UPDATE_SUCCESS; + if(ACTIVE_DBTYPE == DBTYPE_MYSQL) { + $r = q("ALTER TABLE item + DROP INDEX item_thread_top, + ADD INDEX uid_item_thread_top (uid, item_thread_top), + ADD INDEX uid_item_blocked (uid, item_blocked), + ADD INDEX item_deleted_pending_remove_changed (item_deleted, item_pending_remove, changed) + "); + } + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; } -} \ No newline at end of file + +} diff --git a/Zotlabs/Update/_1202.php b/Zotlabs/Update/_1202.php new file mode 100644 index 000000000..c9ccd157b --- /dev/null +++ b/Zotlabs/Update/_1202.php @@ -0,0 +1,15 @@ + Date: Mon, 19 Feb 2018 20:23:13 +0100 Subject: updates 1201 and 1200 should return success for postgres. notifications: remove class show and session storage entry when we mark all notifications seen --- Zotlabs/Update/_1198.php | 2 +- Zotlabs/Update/_1200.php | 12 ++++++++---- Zotlabs/Update/_1201.php | 10 +++++++--- 3 files changed, 16 insertions(+), 8 deletions(-) (limited to 'Zotlabs') diff --git a/Zotlabs/Update/_1198.php b/Zotlabs/Update/_1198.php index 0713bb6ce..d188c94f6 100644 --- a/Zotlabs/Update/_1198.php +++ b/Zotlabs/Update/_1198.php @@ -21,4 +21,4 @@ function run() { } -} \ No newline at end of file +} diff --git a/Zotlabs/Update/_1200.php b/Zotlabs/Update/_1200.php index 00c742593..9f7bfb152 100644 --- a/Zotlabs/Update/_1200.php +++ b/Zotlabs/Update/_1200.php @@ -10,11 +10,15 @@ function run() { DROP INDEX item_type, ADD INDEX uid_item_type (uid, item_type) "); - } - if($r) + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + } + else { return UPDATE_SUCCESS; - return UPDATE_FAILED; + } + } -} \ No newline at end of file +} diff --git a/Zotlabs/Update/_1201.php b/Zotlabs/Update/_1201.php index 416d35ad6..920a7401e 100644 --- a/Zotlabs/Update/_1201.php +++ b/Zotlabs/Update/_1201.php @@ -13,11 +13,15 @@ class _1201 { ADD INDEX uid_item_blocked (uid, item_blocked), ADD INDEX item_deleted_pending_remove_changed (item_deleted, item_pending_remove, changed) "); - } - if($r) + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; + } + else { return UPDATE_SUCCESS; - return UPDATE_FAILED; + } + } } -- cgit v1.2.3 From 04185b05ab141cdb8b96f5fa9e4106b4a2cde732 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Mon, 19 Feb 2018 11:57:47 -0800 Subject: target zot6 deliveries with more precision to ensure we handle a very precise type of content until the mechanism is extended to other types in the future --- Zotlabs/Daemon/Notifier.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'Zotlabs') diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php index 957b859af..47db32206 100644 --- a/Zotlabs/Daemon/Notifier.php +++ b/Zotlabs/Daemon/Notifier.php @@ -640,7 +640,21 @@ class Notifier { } else { $env = (($hub_env && $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']]) ? $hub_env[$hub['hubloc_host'] . $hub['hubloc_sitekey']] : ''); - $packet = zot6_build_packet($channel,'notify',$env, json_encode($encoded_item), (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash); + + // currently zot6 delivery is only performed on normal items and not sync items or mail or anything else + // Eventually we will do this for all deliveries, but for now ensure this is precisely what we are dealing + // with before switching to zot6 as the primary zot6 handler checks for the existence of a message delivery report + // to trigger dequeue'ing + + $z6 = (($encoded_item && $encoded_item['type'] === 'activity' && (! $encoded_item['allow_cid'])) ? true : false); + if($z6) { + $packet = zot6_build_packet($channel,'notify',$env, json_encode($encoded_item), (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash); + } + else { + $packet = zot6_build_packet($channel,'notify',$env, (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash); + + } + queue_insert( [ 'hash' => $hash, -- cgit v1.2.3 From f0d68a1a250c6bd8bf5bdcce6334d5dffcba50cd Mon Sep 17 00:00:00 2001 From: zotlabs Date: Mon, 19 Feb 2018 14:13:44 -0800 Subject: fix the fix for precision --- Zotlabs/Daemon/Notifier.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Zotlabs') diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php index 47db32206..b7f2a384d 100644 --- a/Zotlabs/Daemon/Notifier.php +++ b/Zotlabs/Daemon/Notifier.php @@ -646,7 +646,7 @@ class Notifier { // with before switching to zot6 as the primary zot6 handler checks for the existence of a message delivery report // to trigger dequeue'ing - $z6 = (($encoded_item && $encoded_item['type'] === 'activity' && (! $encoded_item['allow_cid'])) ? true : false); + $z6 = (($encoded_item && $encoded_item['type'] === 'activity' && (! array_key_exists('allow_cid',$encoded_item)) ? true : false); if($z6) { $packet = zot6_build_packet($channel,'notify',$env, json_encode($encoded_item), (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash); } -- cgit v1.2.3 From 331fe92b9e5e7ecd1db0d0582278bf7b95789570 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Mon, 19 Feb 2018 14:14:45 -0800 Subject: and fix the typo --- Zotlabs/Daemon/Notifier.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Zotlabs') diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php index b7f2a384d..af561c702 100644 --- a/Zotlabs/Daemon/Notifier.php +++ b/Zotlabs/Daemon/Notifier.php @@ -646,7 +646,7 @@ class Notifier { // with before switching to zot6 as the primary zot6 handler checks for the existence of a message delivery report // to trigger dequeue'ing - $z6 = (($encoded_item && $encoded_item['type'] === 'activity' && (! array_key_exists('allow_cid',$encoded_item)) ? true : false); + $z6 = (($encoded_item && $encoded_item['type'] === 'activity' && (! array_key_exists('allow_cid',$encoded_item))) ? true : false); if($z6) { $packet = zot6_build_packet($channel,'notify',$env, json_encode($encoded_item), (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash); } -- cgit v1.2.3 From 93d4a16017b792570323db31f438a9ee3870378d Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Tue, 20 Feb 2018 10:29:22 +0100 Subject: missing file --- Zotlabs/Update/_1203.php | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Zotlabs/Update/_1203.php (limited to 'Zotlabs') diff --git a/Zotlabs/Update/_1203.php b/Zotlabs/Update/_1203.php new file mode 100644 index 000000000..2968d209d --- /dev/null +++ b/Zotlabs/Update/_1203.php @@ -0,0 +1,29 @@ + Date: Tue, 20 Feb 2018 14:41:46 -0800 Subject: copy/paste error resulting in bad behaviour --- Zotlabs/Daemon/Notifier.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Zotlabs') diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php index af561c702..fa2368a92 100644 --- a/Zotlabs/Daemon/Notifier.php +++ b/Zotlabs/Daemon/Notifier.php @@ -651,7 +651,7 @@ class Notifier { $packet = zot6_build_packet($channel,'notify',$env, json_encode($encoded_item), (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash); } else { - $packet = zot6_build_packet($channel,'notify',$env, (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash); + $packet = zot_build_packet($channel,'notify',$env, (($private) ? $hub['hubloc_sitekey'] : null), $hub['site_crypto'],$hash); } -- cgit v1.2.3