Added capability to add an attachment to time.php on first submit.
[timetracker.git] / dbinstall.php
index 063f202..20819ae 100644 (file)
@@ -47,6 +47,25 @@ function ttExecute($sql) {
     print "Successful update.<br>\n";
 }
 
+// ttGenerateKeys - generates keys for groups that do not have them.
+function ttGenerateKeys() {
+  $mdb2 = getConnection();
+  $sql = "select id from tt_groups where group_key is null and status = 1";
+  $res = $mdb2->query($sql);
+  if (is_a($res, 'PEAR_Error')) die($res->getMessage());
+
+  $numGroups = 0;
+  while ($val = $res->fetchRow()) {
+    $group_id = $val['id'];
+    $group_key = $mdb2->quote(ttRandomString());
+    $sql = "update tt_groups set group_key = $group_key where id = $group_id";
+    $affected = $mdb2->exec($sql);
+    if (is_a($affected, 'PEAR_Error')) die($affected->getMessage());
+    $numGroups++;
+  }
+  print "<br>Generated keys for $numGroups groups.<br>\n";
+}
+
 if ($request->isGet()) {
   echo('<h2>Environment Checks</h2>');
 
@@ -72,12 +91,15 @@ if ($request->isGet()) {
     echo('WEB-INF/config.php file exists.<br>');
 
     // Config file must start with the PHP opening tag. We are checking this because
-    // a Unicode editor may insert a byte order mark (BOM) before it. This is not good as it will
-    // spit white space before output in some situations such as in PDF reports.
+    // a Unicode editor may insert a byte order mark (BOM) before it.
+    // This is not good as it is printed as unintentional white space in output.
+    // Consequences:
+    //   1) PHP redirects may stop working, depending on server settings.
+    //   2) PDF reports will become unusable (cannot open files).
     $file = fopen(APP_DIR.'/WEB-INF/config.php', 'r');
     $line = fgets($file);
     if (strcmp("<?php\n", $line) !== 0 && strcmp("<?php\r\n", $line) !== 0) {
-      echo('<font color="red">Error: WEB-INF/config.php file does not start with PHP opening tag.</font><br>');
+      echo('<font color="red">Error: WEB-INF/config.php file does not start with a PHP opening tag.</font>  See <a href="https://www.anuko.com/lp/tt_33.htm" target="_blank">explanation</a>.<br>');
     }
     fclose($file);
   } else {
@@ -1133,10 +1155,11 @@ if ($_POST) {
     ttExecute("UPDATE `tt_site_config` SET param_value = '1.18.60', modified = now() where param_name = 'version_db' and param_value = '1.18.59'");
     ttExecute("ALTER TABLE `tt_groups` ADD `group_key` varchar(32) AFTER `org_id`");
     ttExecute("UPDATE `tt_site_config` SET param_value = '1.18.61', modified = now() where param_name = 'version_db' and param_value = '1.18.60'");
+
+    ttGenerateKeys();
 }
 
   if ($_POST["cleanup"]) {
-
     $mdb2 = getConnection();
     $inactive_orgs = ttOrgHelper::getInactiveOrgs();
 
@@ -1170,6 +1193,7 @@ if ($_POST) {
     ttExecute("OPTIMIZE TABLE tt_user_project_binds");
     ttExecute("OPTIMIZE TABLE tt_users");
     ttExecute("OPTIMIZE TABLE tt_roles");
+    ttExecute("OPTIMIZE TABLE tt_files");
   }
 
   print "Done.<br>\n";