PageRenderTime 50ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/update.php

https://bitbucket.org/icarito/pmc
PHP | 194 lines | 164 code | 17 blank | 13 comment | 26 complexity | a3b8bd34da8b028a56c7b5eb0586326b MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.1
  1. <?php
  2. error_reporting(0);
  3. require("./init.php");
  4. function dircopy($srcdir, $dstdir, $breakdir)
  5. {
  6. $num = 0;
  7. if (!is_dir($dstdir))
  8. {
  9. mkdir($dstdir);
  10. }
  11. if ($curdir = opendir($srcdir))
  12. {
  13. while ($file = readdir($curdir))
  14. {
  15. if ($file != '.' && $file != '..' and $file != $breakdir)
  16. {
  17. $srcfile = $srcdir . '\\' . $file;
  18. $dstfile = $dstdir . '\\' . $file;
  19. if (is_file($srcfile))
  20. {
  21. if (copy($srcfile, $dstfile))
  22. {
  23. $num++;
  24. }
  25. }
  26. else if (is_dir($srcfile))
  27. {
  28. $num += dircopy($srcfile, $dstfile, CL_CONFIG);
  29. }
  30. }
  31. }
  32. closedir($curdir);
  33. }
  34. return $num;
  35. }
  36. $table6 = mysql_query("ALTER TABLE `user` ADD `zip` VARCHAR( 5 ) NOT NULL AFTER `lastlogin` ,
  37. ADD `gender` CHAR( 1 ) NOT NULL AFTER `zip` ,
  38. ADD `url` VARCHAR( 255 ) NOT NULL AFTER `gender`");
  39. $table7 = mysql_query("ALTER TABLE `settings` CHANGE `locale` `locale` CHAR( 6 ) NOT NULL");
  40. $table8 = mysql_query("ALTER TABLE `settings` ADD `timezone` CHAR( 80 ) NOT NULL AFTER `locale`");
  41. if ($table8)
  42. {
  43. $timezone = date_default_timezone_get();
  44. $set_timezone = mysql_query("UPDATE `settings` SET `timezone`='$timezone'");
  45. }
  46. $table9 = mysql_query("ALTER TABLE `user` CHANGE `locale` `locale` CHAR( 6 ) NOT NULL");
  47. $table16 = mysql_query("UPDATE user SET admin=5 WHERE ID = 1");
  48. $table17 = mysql_query("ALTER TABLE `messages` ADD `tags` VARCHAR( 255 ) NOT NULL AFTER `text`");
  49. $table18 = mysql_query("ALTER TABLE `user` ADD `tags` VARCHAR( 255 ) NOT NULL AFTER `country`");
  50. $table19 = mysql_query("ALTER TABLE `projectfolders` ADD `description` VARCHAR( 255 ) NOT NULL");
  51. $table21 = mysql_query("ALTER TABLE `messages` ADD `milestone` INT( 10 ) NOT NULL");
  52. $table20 = mysql_query("ALTER TABLE `settings` ADD `mailnotify` TINYINT( 1 ) NOT NULL DEFAULT '1',
  53. ADD `mailfrom` VARCHAR( 255 ) NOT NULL ,
  54. ADD `mailmethod` VARCHAR( 5 ) NOT NULL ,
  55. ADD `mailhost` VARCHAR( 255 ) NOT NULL ,
  56. ADD `mailuser` VARCHAR( 255 ) NOT NULL ,
  57. ADD `mailpass` VARCHAR( 255 ) NOT NULL");
  58. if ($table20)
  59. {
  60. $upd = mysql_query("UPDATE settings SET mailnotify=1,mailfrom='Collabtive@localhost',mailmethod='mail'");
  61. }
  62. $docopy = false;
  63. if (!file_exists(CL_ROOT . "/files/" . CL_CONFIG))
  64. {
  65. mkdir(CL_ROOT . "/files/" . CL_CONFIG, 0777);
  66. $docopy = true;
  67. }
  68. if (!file_exists(CL_ROOT . "/files/" . CL_CONFIG . "/avatar/"))
  69. {
  70. mkdir(CL_ROOT . "/files/" . CL_CONFIG . "/avatar/", 0777);
  71. }
  72. if ($docopy)
  73. {
  74. dircopy("./files/", "./files/" . CL_CONFIG . "/", CL_CONFIG);
  75. }
  76. // 0.4.8 -> 0.4.9
  77. $table21 = mysql_query("ALTER TABLE `settings` ADD `mailfromname` VARCHAR( 255 ) NOT NULL AFTER `mailfrom`");
  78. $table22 = mysql_query("ALTER TABLE `user` ADD `rate` VARCHAR( 10 ) NOT NULL");
  79. $table23 = mysql_query("ALTER TABLE `projekte` ADD `budget` FLOAT NOT NULL DEFAULT '0'");
  80. $table24 = mysql_query("ALTER TABLE `user` ADD `tel1` VARCHAR( 255 ) NOT NULL AFTER `email` , ADD `tel2` VARCHAR( 255 ) NOT NULL AFTER `tel1`");
  81. $table25 = mysql_query("ALTER TABLE `settings` ADD `dateformat` VARCHAR( 50 ) NOT NULL AFTER `timezone`");
  82. $table25 = mysql_query("ALTER TABLE `files` ADD `folder` INT( 10 ) NOT NULL");
  83. // -> 0.5
  84. mysql_query("
  85. CREATE TABLE IF NOT EXISTS `roles` (
  86. `ID` int(10) NOT NULL auto_increment,
  87. `name` varchar(255) NOT NULL,
  88. `projects` text NOT NULL,
  89. `tasks` text NOT NULL,
  90. `milestones` text NOT NULL,
  91. `messages` text NOT NULL,
  92. `files` text NOT NULL,
  93. `timetracker` text NOT NULL,
  94. `admin` text NOT NULL,
  95. PRIMARY KEY (`ID`)
  96. ) ENGINE=MyISAM;");
  97. mysql_query("
  98. CREATE TABLE IF NOT EXISTS `roles_assigned` (
  99. `ID` int(10) NOT NULL auto_increment,
  100. `user` int(10) NOT NULL,
  101. `role` int(10) NOT NULL,
  102. PRIMARY KEY (`ID`)
  103. ) ENGINE=MyISAM;");
  104. $upd = mysql_query("UPDATE settings SET dateformat='d.m.Y'");
  105. $sel = mysql_query("SELECT COUNT(*) FROM roles");
  106. $rolenum = mysql_fetch_row($sel);
  107. if ((int) $rolenum[0] < 1)
  108. {
  109. // insert default roles
  110. mysql_query("ALTER TABLE `roles` ADD `chat` TEXT AFTER `timetracker`"); // needed when updating from before 0.5
  111. $rolesobj = new roles();
  112. $adminrid = $rolesobj->add("Admin", array("add" => 1, "edit" => 1, "del" => 1 , "close" => 1), array("add" => 1, "edit" => 1, "del" => 1, "close" => 1), array("add" => 1, "edit" => 1, "del" => 1, "close" => 1), array("add" => 1, "edit" => 1, "del" => 1, "close" => 1), array("add" => 1, "edit" => 1, "del" => 1), array("add" => 1, "edit" => 1, "del" => 1, "read" => 1), array("add" => 0), array("add" => 1));
  113. $userrid = $rolesobj->add("User", array("add" => 1, "edit" => 1, "del" => 0, "close" => 0), array("add" => 1, "edit" => 1, "del" => 0), array("add" => 1, "edit" => 1, "del" => 1), array("add" => 1, "edit" => 1, "del" => 1), array("add" => 1, "edit" => 1, "del" => 1), array("add" => 1, "edit" => 1, "del" => 1, "read" => 0), array("add" => 1) , array("add" => 0));
  114. $clientrid = $rolesobj->add("Client", array("add" => 0, "edit" => 0, "del" => 0, "close" => 0), array("add" => 0, "edit" => 0, "del" => 0), array("add" => 0, "edit" => 0, "del" => 0), array("add" => 0, "edit" => 0, "del" => 0), array("add" => 0, "edit" => 0, "del" => 0), array("add" => 0, "edit" => 0, "del" => 0, "read" => 0), array("add" => 0), array("add" => 0));
  115. if (!$adminrid or !$userrid or !$clientrid)
  116. {
  117. die("failed to create initial roles");
  118. }
  119. // get all admins
  120. $admins = mysql_query("SELECT ID FROM user WHERE admin = 5");
  121. // assign all admins to the admin role
  122. while ($admin = mysql_fetch_row($admins))
  123. {
  124. $rolesobj->assign($adminrid, $admin[0]);
  125. }
  126. $users = mysql_query("SELECT ID FROM user WHERE admin = 1");
  127. while ($user = mysql_fetch_row($users))
  128. {
  129. $rolesobj->assign($userrid, $user[0]);
  130. }
  131. $clients = mysql_query("SELECT ID FROM user WHERE admin = 0");
  132. while ($client = mysql_fetch_row($clients))
  133. {
  134. $rolesobj->assign($clientrid, $client[0]);
  135. }
  136. sleep(1);
  137. }
  138. // drop the admin field, it is no longer needed
  139. mysql_query("ALTER TABLE `user` DROP `admin`");
  140. // drop the favicon field in system settings, no longer needed
  141. mysql_query("ALTER TABLE `settings` DROP `favicon`");
  142. // add new fields for rss username and pass
  143. mysql_query("ALTER TABLE `settings` ADD `rssuser` VARCHAR( 255 ) NOT NULL ,
  144. ADD `rsspass` VARCHAR( 255 ) NOT NULL");
  145. // 0.5.5
  146. mysql_query("ALTER TABLE `roles` ADD `chat` TEXT AFTER `timetracker`");
  147. mysql_query("ALTER TABLE `user` CHANGE `company` `company` VARCHAR( 256 )");
  148. //0.6
  149. mysql_query("ALTER TABLE `projectfolders` ADD `parent` INT(10) unsigned NOT NULL default '0' AFTER `ID`");
  150. mysql_query("ALTER TABLE `projectfolders` ADD `visible` text NOT NULL AFTER `description`");
  151. mysql_query("ALTER TABLE `files` ADD `visible` text NOT NULL");
  152. mysql_query("ALTER TABLE `files` ADD `seenby` text NOT NULL");
  153. mysql_query("ALTER TABLE `files` ADD `user` INT(10) NOT NULL default '0' AFTER `milestone`");
  154. mysql_query("ALTER TABLE `user` CHANGE `zip` `zip` VARCHAR( 10 )"); // overlooked with 0.5
  155. // version independent
  156. // clear templates cache
  157. $handle = opendir($template->compile_dir);
  158. while (false !== ($file = readdir($handle)))
  159. {
  160. if ($file != "." and $file != "..")
  161. {
  162. unlink(CL_ROOT . "/" . $template->compile_dir . "/" . $file);
  163. }
  164. }
  165. // optimize tables
  166. $opt1 = mysql_query("OPTIMIZE TABLE `files`");
  167. $opt2 = mysql_query("OPTIMIZE TABLE `files_attached`");
  168. $opt3 = mysql_query("OPTIMIZE TABLE `log`");
  169. $opt4 = mysql_query("OPTIMIZE TABLE `messages`");
  170. $opt5 = mysql_query("OPTIMIZE TABLE `milestones`");
  171. $opt6 = mysql_query("OPTIMIZE TABLE `milestones_assigned`");
  172. $opt7 = mysql_query("OPTIMIZE TABLE `projekte`");
  173. $opt8 = mysql_query("OPTIMIZE TABLE `projekte_assigned`");
  174. $opt8 = mysql_query("OPTIMIZE TABLE `timetracker`");
  175. $opt8 = mysql_query("OPTIMIZE TABLE `projectfolders`");
  176. $template->display("update.tpl");
  177. ?>