PageRenderTime 45ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/install.php

https://bitbucket.org/icarito/pmc
PHP | 429 lines | 372 code | 33 blank | 24 comment | 14 complexity | c348ad45c4bd23c6b1de21bf5e3aab2c MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.1
  1. <?php
  2. error_reporting(0);
  3. // Check if directory templates_c exists and is writable
  4. if (!file_exists("./templates_c") or !is_writable("./templates_c"))
  5. {
  6. die("Required folder templates_c does not exist or is not writable. <br>Please create the folder or make it writable in order to proceed.");
  7. }
  8. require("./init.php");
  9. $action = getArrayVal($_GET, "action");
  10. $locale = getArrayVal($_GET, "locale");
  11. if (!empty($locale))
  12. {
  13. $_SESSION['userlocale'] = $locale;
  14. }
  15. else
  16. {
  17. $locale = $_SESSION['userlocale'];
  18. }
  19. if (empty($locale))
  20. {
  21. $locale = "en";
  22. }
  23. $template->assign("locale", $locale);
  24. $template->config_dir = "./language/$locale/";
  25. $template->template_dir = "./templates/standard/";
  26. if (!$action)
  27. {
  28. //check if required directories are writable
  29. $configfilechk = is_writable(CL_ROOT . "/config/" . CL_CONFIG . "/config.php");
  30. $filesdir = is_writable(CL_ROOT . "/files/");
  31. $templatesdir = is_writable(CL_ROOT . "/templates_c/");
  32. $phpver = phpversion();
  33. $template->assign("phpver", $phpver);
  34. $template->assign("configfile", $configfilechk);
  35. $template->assign("filesdir", $filesdir);
  36. $template->assign("templatesdir", $templatesdir);
  37. $template->display("install1.tpl");
  38. } elseif ($action == "step2")
  39. {
  40. $db_host = $_POST['db_host'];
  41. $db_name = $_POST['db_name'];
  42. $db_user = $_POST['db_user'];
  43. $db_pass = $_POST['db_pass'];
  44. //write db login data to config file
  45. $file = fopen(CL_ROOT . "/config/" . CL_CONFIG . "/config.php", "w+");
  46. $str = "<?php
  47. \$db_host = '$db_host';\n
  48. \$db_name = '$db_name';\n
  49. \$db_user = '$db_user';\n
  50. \$db_pass = '$db_pass';\n
  51. ?>";
  52. $put = fwrite($file, "$str");
  53. if ($put)
  54. {
  55. @chmod(CL_ROOT . "/config/" . CL_CONFIG . "/config.php", 0755);
  56. }
  57. // connect database.
  58. $db = new datenbank();
  59. $conn = $db->connect($db_name, $db_user, $db_pass, $db_host);
  60. if (!($conn))
  61. {
  62. $template->assign("errortext", "Database connection could not be established. <br>Please check if database exists and check if login credentials are correct.");
  63. $template->display("error.tpl");
  64. die();
  65. }
  66. //Create MySQL Tables
  67. $table1 = mysql_query("CREATE TABLE `company` (
  68. `ID` int(10) NOT NULL auto_increment,
  69. `name` varchar(255) NOT NULL default '',
  70. `email` varchar(255) NOT NULL default '',
  71. `phone` varchar(255) NOT NULL default '',
  72. `address1` varchar(255) NOT NULL default '',
  73. `address2` varchar(255) NOT NULL default '',
  74. `state` varchar(255) NOT NULL default '',
  75. `country` varchar(255) NOT NULL default '',
  76. `logo` varchar(255) NOT NULL default '',
  77. PRIMARY KEY (`ID`),
  78. KEY `name` (`name`)
  79. ) TYPE=MyISAM");
  80. $table2 = mysql_query("CREATE TABLE `company_assigned` (
  81. `ID` int(10) NOT NULL auto_increment,
  82. `user` int(10) NOT NULL default '0',
  83. `company` int(10) NOT NULL default '0',
  84. PRIMARY KEY (`ID`),
  85. KEY `company` (`company`),
  86. KEY `user` (`user`)
  87. ) TYPE=MyISAM");
  88. $table3 = mysql_query("CREATE TABLE `files` (
  89. `ID` int(10) NOT NULL auto_increment,
  90. `name` varchar(255) NOT NULL default '',
  91. `desc` varchar(255) NOT NULL default '',
  92. `project` int(10) NOT NULL default '0',
  93. `milestone` int(10) NOT NULL default '0',
  94. `user` int(10) NOT NULL default '0',
  95. `tags` varchar(255) NOT NULL default '',
  96. `added` varchar(255) NOT NULL default '',
  97. `datei` varchar(255) NOT NULL default '',
  98. `type` varchar(50) NOT NULL default '',
  99. `title` varchar(255) NOT NULL default '',
  100. `folder` int(10) NOT NULL,
  101. `visible` text NOT NULL,
  102. `seenby` text NOT NULL,
  103. PRIMARY KEY (`ID`),
  104. KEY `name` (`name`),
  105. KEY `datei` (`datei`),
  106. KEY `added` (`added`),
  107. KEY `project` (`project`),
  108. KEY `tags` (`tags`)
  109. ) ENGINE=MyISAM");
  110. $table4 = mysql_query("CREATE TABLE `log` (
  111. `ID` int(10) NOT NULL auto_increment,
  112. `user` int(10) NOT NULL default '0',
  113. `username` varchar(255) NOT NULL default '',
  114. `name` varchar(255) NOT NULL default '',
  115. `type` varchar(255) NOT NULL default '',
  116. `action` int(1) NOT NULL default '0',
  117. `project` int(10) NOT NULL default '0',
  118. `datum` varchar(255) NOT NULL default '',
  119. PRIMARY KEY (`ID`),
  120. KEY `datum` (`datum`),
  121. KEY `type` (`type`),
  122. KEY `action` (`action`),
  123. FULLTEXT KEY `username` (`username`),
  124. FULLTEXT KEY `name` (`name`)
  125. ) TYPE=MyISAM");
  126. $table5 = mysql_query("CREATE TABLE `messages` (
  127. `ID` int(10) NOT NULL auto_increment,
  128. `project` int(10) NOT NULL default '0',
  129. `title` varchar(255) NOT NULL default '',
  130. `text` text NOT NULL,
  131. `tags` varchar(255) NOT NULL,
  132. `posted` varchar(255) NOT NULL default '',
  133. `user` int(10) NOT NULL default '0',
  134. `username` varchar(255) NOT NULL default '',
  135. `replyto` int(11) NOT NULL default '0',
  136. `milestone` int(10) NOT NULL,
  137. PRIMARY KEY (`ID`),
  138. KEY `project` (`project`),
  139. KEY `user` (`user`),
  140. KEY `replyto` (`replyto`),
  141. KEY `tags` (`tags`)
  142. ) ENGINE=MyISAM");
  143. $table6 = mysql_query("CREATE TABLE `milestones` (
  144. `ID` int(10) NOT NULL auto_increment,
  145. `project` int(10) NOT NULL default '0',
  146. `name` varchar(255) NOT NULL default '',
  147. `desc` text NOT NULL,
  148. `start` varchar(255) NOT NULL default '',
  149. `end` varchar(255) NOT NULL default '',
  150. `status` tinyint(1) NOT NULL default '0',
  151. PRIMARY KEY (`ID`),
  152. KEY `name` (`name`),
  153. KEY `end` (`end`),
  154. KEY `project` (`project`)
  155. ) TYPE=MyISAM;
  156. ");
  157. $table7 = mysql_query("CREATE TABLE `milestones_assigned` (
  158. `ID` int(10) NOT NULL auto_increment,
  159. `user` int(10) NOT NULL default '0',
  160. `milestone` int(10) NOT NULL default '0',
  161. PRIMARY KEY (`ID`),
  162. KEY `user` (`user`),
  163. KEY `milestone` (`milestone`)
  164. ) TYPE=MyISAM");
  165. $table8 = mysql_query("CREATE TABLE `projekte` (
  166. `ID` int(10) NOT NULL auto_increment,
  167. `name` varchar(255) NOT NULL default '',
  168. `desc` text NOT NULL,
  169. `start` varchar(255) NOT NULL default '',
  170. `end` varchar(255) NOT NULL default '',
  171. `status` tinyint(1) NOT NULL default '0',
  172. `budget` float NOT NULL default '0',
  173. PRIMARY KEY (`ID`),
  174. KEY `status` (`status`)
  175. ) ENGINE=MyISAM");
  176. $table9 = mysql_query("CREATE TABLE `projekte_assigned` (
  177. `ID` int(10) NOT NULL auto_increment,
  178. `user` int(10) NOT NULL default '0',
  179. `projekt` int(10) NOT NULL default '0',
  180. PRIMARY KEY (`ID`),
  181. KEY `user` (`user`),
  182. KEY `projekt` (`projekt`)
  183. ) TYPE=MyISAM");
  184. $table10 = mysql_query("CREATE TABLE `settings` (
  185. `ID` tinyint(1) default '0',
  186. `name` varchar(255) default '',
  187. `subtitle` varchar(255) default '',
  188. `locale` varchar(6) default '',
  189. `timezone` varchar(60) ,
  190. `dateformat` varchar(50) ,
  191. `template` varchar(255) default '',
  192. `mailnotify` tinyint(1) default '1',
  193. `mailfrom` varchar(255) ,
  194. `mailfromname` varchar(255) ,
  195. `mailmethod` varchar(5) ,
  196. `mailhost` varchar(255) ,
  197. `mailuser` varchar(255) ,
  198. `mailpass` varchar(255) ,
  199. `rssuser` varchar(255) ,
  200. `rsspass` varchar(255) ,
  201. KEY `ID` (`ID`),
  202. KEY `name` (`name`),
  203. KEY `subtitle` (`subtitle`),
  204. KEY `locale` (`locale`),
  205. KEY `template` (`template`)
  206. ) ENGINE=MyISAM");
  207. $table11 = mysql_query("CREATE TABLE `tasklist` (
  208. `ID` int(10) NOT NULL auto_increment,
  209. `project` int(10) NOT NULL default '0',
  210. `name` varchar(255) NOT NULL default '',
  211. `desc` text NOT NULL,
  212. `start` varchar(255) NOT NULL default '',
  213. `status` tinyint(1) NOT NULL default '0',
  214. `access` tinyint(4) NOT NULL default '0',
  215. `milestone` int(10) NOT NULL default '0',
  216. PRIMARY KEY (`ID`),
  217. KEY `status` (`status`),
  218. KEY `milestone` (`milestone`)
  219. ) TYPE=MyISAM");
  220. $table12 = mysql_query("CREATE TABLE `tasks` (
  221. `ID` int(10) NOT NULL auto_increment,
  222. `start` varchar(255) NOT NULL default '',
  223. `end` varchar(255) NOT NULL default '',
  224. `title` varchar(255) NOT NULL default '',
  225. `text` text NOT NULL,
  226. `liste` int(10) NOT NULL default '0',
  227. `status` tinyint(1) NOT NULL default '0',
  228. `project` int(10) NOT NULL default '0',
  229. PRIMARY KEY (`ID`),
  230. KEY `liste` (`liste`),
  231. KEY `status` (`status`),
  232. KEY `end` (`end`)
  233. ) TYPE=MyISAM");
  234. $table13 = mysql_query("CREATE TABLE `tasks_assigned` (
  235. `ID` int(10) NOT NULL auto_increment,
  236. `user` int(10) NOT NULL default '0',
  237. `task` int(10) NOT NULL default '0',
  238. PRIMARY KEY (`ID`),
  239. KEY `user` (`user`),
  240. KEY `task` (`task`)
  241. ) TYPE=MyISAM");
  242. $table14 = mysql_query("
  243. CREATE TABLE `user` (
  244. `ID` int(10) auto_increment,
  245. `name` varchar(255) default '',
  246. `email` varchar(255) default '',
  247. `tel1` varchar(255),
  248. `tel2` varchar(255) ,
  249. `pass` varchar(255) default '',
  250. `company` varchar(255) default '',
  251. `lastlogin` varchar(255) default '',
  252. `zip` varchar(10) ,
  253. `gender` char(1) default '',
  254. `url` varchar(255) default '',
  255. `adress` varchar(255) default '',
  256. `adress2` varchar(255) default '',
  257. `state` varchar(255) default '',
  258. `country` varchar(255) default '',
  259. `tags` varchar(255) default '',
  260. `locale` varchar(6) default '',
  261. `avatar` varchar(255) default '',
  262. `rate` varchar(10) ,
  263. PRIMARY KEY (`ID`),
  264. UNIQUE KEY `name` (`name`),
  265. KEY `pass` (`pass`),
  266. KEY `locale` (`locale`)
  267. ) ENGINE=MyISAM");
  268. $table15 = mysql_query("CREATE TABLE `chat` (
  269. `ID` int(10) NOT NULL auto_increment,
  270. `time` varchar(255) NOT NULL default '',
  271. `ufrom` varchar(255) NOT NULL default '',
  272. `ufrom_id` int(10) NOT NULL default '0',
  273. `userto` varchar(255) NOT NULL default '',
  274. `userto_id` int(10) NOT NULL default '0',
  275. `text` varchar(255) NOT NULL default '',
  276. PRIMARY KEY (`ID`)
  277. ) TYPE=MyISAM");
  278. $table16 = mysql_query("CREATE TABLE `files_attached` (
  279. `ID` int(10) unsigned NOT NULL auto_increment,
  280. `file` int(10) unsigned NOT NULL default '0',
  281. `message` int(10) unsigned NOT NULL default '0',
  282. PRIMARY KEY (`ID`),
  283. KEY `file` (`file`,`message`)
  284. ) TYPE=MyISAM;");
  285. $table17 = mysql_query("CREATE TABLE `timetracker` (
  286. `ID` int(10) NOT NULL auto_increment,
  287. `user` int(10) NOT NULL default '0',
  288. `project` int(10) NOT NULL default '0',
  289. `task` int(10) NOT NULL default '0',
  290. `comment` text NOT NULL,
  291. `started` varchar(255) NOT NULL default '',
  292. `ended` varchar(255) NOT NULL default '',
  293. `hours` float NOT NULL default '0',
  294. `pstatus` tinyint(1) NOT NULL default '0',
  295. PRIMARY KEY (`ID`),
  296. KEY `user` (`user`,`project`,`task`),
  297. KEY `started` (`started`),
  298. KEY `ended` (`ended`)
  299. ) ENGINE=MyISAM");
  300. $table18 = mysql_query("CREATE TABLE `projectfolders` (
  301. `ID` int(10) unsigned NOT NULL auto_increment,
  302. `parent` int(10) unsigned NOT NULL default '0',
  303. `project` int(11) NOT NULL default '0',
  304. `name` text NOT NULL,
  305. `description` varchar(255) NOT NULL,
  306. `visible` text NOT NULL,
  307. PRIMARY KEY (`ID`),
  308. KEY `project` (`project`)
  309. ) ENGINE=MyISAM");
  310. $table19 = mysql_query("
  311. CREATE TABLE `roles` (
  312. `ID` int(10) NOT NULL auto_increment,
  313. `name` varchar(255) NOT NULL,
  314. `projects` text NOT NULL,
  315. `tasks` text NOT NULL,
  316. `milestones` text NOT NULL,
  317. `messages` text NOT NULL,
  318. `files` text NOT NULL,
  319. `chat` text NOT NULL,
  320. `timetracker` text NOT NULL,
  321. `admin` text NOT NULL,
  322. PRIMARY KEY (`ID`)
  323. ) ENGINE=MyISAM");
  324. $table20 = mysql_query("
  325. CREATE TABLE `roles_assigned` (
  326. `ID` int(10) NOT NULL auto_increment,
  327. `user` int(10) NOT NULL,
  328. `role` int(10) NOT NULL,
  329. PRIMARY KEY (`ID`)
  330. ) ENGINE=MyISAM");
  331. // Checks if tables could be created
  332. if (!$table1 or !$table2 or !$table3 or !$table4 or !$table5 or !$table6 or !$table7 or !$table8 or !$table9 or !$table10 or !$table11 or !$table12 or !$table13 or !$table14 or !$table15 or !$table16 or !$table17 or !$table18 or !$table19 or !$table20)
  333. {
  334. $template->assign("errortext", "Error: Tables could not be created.");
  335. $template->display("error.tpl");
  336. die();
  337. }
  338. //Get the servers default timezone
  339. $timezone = date_default_timezone_get();
  340. // insert default settings
  341. $ins = mysql_query("INSERT INTO settings (name,subtitle,locale,timezone,dateformat,template,mailnotify,mailfrom,mailmethod) VALUES ('Collabtive','Projectmanagement','$locale','$timezone','d.m.Y','standard',1,'collabtive@localhost','mail')");
  342. if (!$ins)
  343. {
  344. $template->assign("errortext", "Error: Failed to create initial settings.");
  345. $template->display("error.tpl");
  346. die();
  347. }
  348. $template->display("install2.tpl");
  349. } elseif ($action == "step3")
  350. {
  351. mkdir(CL_ROOT . "/files/" . CL_CONFIG . "/");
  352. mkdir(CL_ROOT . "/files/" . CL_CONFIG . "/avatar/", 0777);
  353. mkdir(CL_ROOT . "/files/" . CL_CONFIG . "/ics/", 0777);
  354. require(CL_ROOT . "/config/" . CL_CONFIG . "/config.php");
  355. // Start database connection
  356. $db = new datenbank();
  357. $db->connect($db_name, $db_user, $db_pass, $db_host);
  358. $user = $_POST['name'];
  359. $pass = $_POST['pass'];
  360. // create the first user
  361. $usr = new user();
  362. $usrid = $usr->add($user, "", 0, $pass);
  363. if (!$usrid)
  364. {
  365. $template->assign("errortext", "Error: Failed to create first user.");
  366. $template->display("error.tpl");
  367. die();
  368. }
  369. // insert default roles
  370. $rolesobj = new roles();
  371. $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" => 1), array("add" => 1));
  372. $userrid = $rolesobj->add("User", array("add" => 1, "edit" => 1, "del" => 0, "close" => 0), array("add" => 1, "edit" => 1, "del" => 0, "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" => 0), array("add" => 1), array("add" => 0));
  373. $clientrid = $rolesobj->add("Client", array("add" => 0, "edit" => 0, "del" => 0, "close" => 0), array("add" => 0, "edit" => 0, "del" => 0, "close" => 0), array("add" => 0, "edit" => 0, "del" => 0, "close" => 0), array("add" => 0, "edit" => 0, "del" => 0, "close" => 0), array("add" => 0, "edit" => 0, "del" => 0), array("add" => 0, "edit" => 0, "del" => 0, "read" => 0), array("add" => 0), array("add" => 0));
  374. if (!$adminrid or !$userrid or !$clientrid)
  375. {
  376. $template->assign("errortext", "Error: Failed to create initial roles.");
  377. $template->display("error.tpl");
  378. die();
  379. }
  380. $rolesobj->assign($adminrid, $usrid);
  381. /*basecamp import, disabled
  382. if (isset($_FILES["importfile"]))
  383. {
  384. $importer = new importer();
  385. $myfile = new datei();
  386. // import basecamp file
  387. $up = $myfile->upload("importfile", "files/" . CL_CONFIG . "/ics", 0);
  388. if ($up)
  389. {
  390. $importer->importBasecampXmlFile(CL_ROOT . "/files/" . CL_CONFIG . "/ics/$up");
  391. }
  392. }
  393. */
  394. $template->display("install3.tpl");
  395. }
  396. ?>