move code up one directory
[atutor.git] / mods / _standard / patcher / patch_creator.php
1 <?php\r
2 /************************************************************************/\r
3 /* ATutor                                                               */\r
4 /************************************************************************/\r
5 /* Copyright (c) 2002-2010                                              */\r
6 /* Inclusive Design Institute                                           */\r
7 /* http://atutor.ca                                                     */\r
8 /*                                                                      */\r
9 /* This program is free software. You can redistribute it and/or        */\r
10 /* modify it under the terms of the GNU General Public License          */\r
11 /* as published by the Free Software Foundation.                        */\r
12 /************************************************************************/\r
13 // $Id$\r
14 \r
15 define('AT_INCLUDE_PATH', '../../../include/');\r
16 require_once (AT_INCLUDE_PATH.'vitals.inc.php');\r
17 admin_authenticate(AT_ADMIN_PRIV_PATCHER);\r
18 \r
19 if ($_POST['create'] || $_POST['save'])\r
20 {\r
21         if (isset($_REQUEST["myown_patch_id"])) $patch_id = $_REQUEST["myown_patch_id"];\r
22         else $patch_id = 0;\r
23         \r
24         // check missing fields\r
25         if (!isset($_POST["atutor_patch_id"]) || trim($_POST["atutor_patch_id"]) == "")\r
26                 $missing_fields[] = _AT("atutor_patch_id");\r
27 \r
28         if (!isset($_POST["atutor_version_to_apply"]) || trim($_POST["atutor_version_to_apply"]) == "")\r
29                 $missing_fields[] = _AT("atutor_version_to_apply");\r
30 \r
31         // only check missing upload file when creating a patch. don't check when save\r
32         if (is_array($_POST['rb_action']) && $_POST['create'])\r
33         {\r
34                 foreach ($_POST['rb_action'] as $i=>$action)\r
35                 {\r
36                         // must upload a file if action is add or overwrite\r
37                         if ($action == "add" && $_FILES['add_upload_file']['name'][$i] == "" && $_POST['add_uploaded_file'] == "")\r
38                                 $missing_fields[] = _AT("upload_file") . " for ". _AT("file_name") . " <strong>" . $_POST['add_filename'][$i] . "</strong>";\r
39         \r
40                         if ($action == "overwrite" && $_FILES['overwrite_upload_file']['name'][$i] == "" && $_POST['overwrite_uploaded_file'] == "")\r
41                                 $missing_fields[] = _AT("upload_file") . " for ". _AT("file_name") . " <strong>" . $_POST['overwrite_filename'][$i] . "</strong>";\r
42                 }\r
43         }\r
44         // end of checking missing fields\r
45 \r
46         if ($missing_fields) \r
47         {\r
48                 $missing_fields = implode(', ', $missing_fields);\r
49                 $msg->addError(array('EMPTY_FIELDS', $missing_fields));\r
50         }\r
51 \r
52         if (!(preg_match("/^[a-zA-Z0-9_.-]([a-zA-Z0-9_.-])*$/i", $_POST['atutor_patch_id'])))\r
53                 $msg->addError('LOGIN_CHARS');\r
54 \r
55         // main process\r
56         if (!$msg->containsErrors()) \r
57         {\r
58                 $patch_info = array("atutor_patch_id"=>$_POST["atutor_patch_id"],\r
59                               "atutor_version_to_apply"=>$_POST["atutor_version_to_apply"],\r
60                               "description"=>$_POST["description"],\r
61                               "sql_statement"=>$_POST["sql_statement"]);\r
62 \r
63                 // remove empty dependent patches\r
64                 if (is_array($_POST["dependent_patch"]))\r
65                 {\r
66                         foreach ($_POST["dependent_patch"] as $dependent_patch)\r
67                                 if (trim($dependent_patch) <> "")\r
68                                         $dependent_patches[] = $dependent_patch;\r
69                 }\r
70                 \r
71                 if (is_array($dependent_patches))\r
72                         $patch_info["dependent_patches"] = $dependent_patches;\r
73                         \r
74                 if (is_array($_POST['rb_action']))\r
75                 {\r
76                         foreach ($_POST['rb_action'] as $i=>$action)\r
77                         {\r
78                                 if ($action == "add" && $_POST['add_filename'][$i] <> "")\r
79                                 {\r
80                                         if ($_FILES['add_upload_file']['tmp_name'][$i] <> "")\r
81                                                 $upload_file = $_FILES['add_upload_file']['tmp_name'][$i];\r
82                                         else\r
83                                                 $upload_file = $_POST['add_uploaded_file'][$i];\r
84                                         \r
85                                         $patch_info["files"][] = array("action"=>$action,\r
86                                                                      "file_name"=>$_POST['add_filename'][$i],\r
87                                                                "directory"=>$_POST['add_dir'][$i],\r
88                                                                "upload_tmp_name"=>$upload_file);\r
89                                 }\r
90                                 \r
91                                 if ($action == "alter" && $_POST['alter_filename'][$i] <> "")\r
92                                         $patch_info["files"][] = array("action"=>$action,\r
93                                                                                        "file_name"=>$_POST['alter_filename'][$i],\r
94                                                                "directory"=>$_POST['alter_dir'][$i],\r
95                                                                "code_from"=>$_POST['alter_code_from'][$i],\r
96                                                                "code_to"=>$_POST['alter_code_to'][$i]);\r
97         \r
98                                 if ($action == "delete" && $_POST['delete_filename'][$i] <> "")\r
99                                         $patch_info["files"][] = array("action"=>$action,\r
100                                                                      "file_name"=>$_POST['delete_filename'][$i],\r
101                                                                "directory"=>$_POST['delete_dir'][$i]);\r
102         \r
103                                 if ($action == "overwrite" && $_POST['overwrite_filename'][$i] <> "")\r
104                                 {\r
105                                         if ($_FILES['overwrite_upload_file']['tmp_name'][$i] <> "")\r
106                                                 $upload_file = $_FILES['overwrite_upload_file']['tmp_name'][$i];\r
107                                         else\r
108                                                 $upload_file = $_POST['overwrite_uploaded_file'][$i];\r
109                                         \r
110                                         $patch_info["files"][] = array("action"=>$action,\r
111                                                                      "file_name"=>$_POST['overwrite_filename'][$i],\r
112                                                                "directory"=>$_POST['overwrite_dir'][$i],\r
113                                                                "upload_tmp_name"=>$upload_file);\r
114                                 }\r
115                         }\r
116                 }\r
117 \r
118                 require_once("classes/PatchCreator.class.php");\r
119                 \r
120                 $patch_creator = new PatchCreator($patch_info, $patch_id);\r
121                 \r
122                 if ($_POST['create'])\r
123                         $patch_creator->create_patch();\r
124                 else if ($_POST['save'])\r
125                 {\r
126                         $patch_creator->saveInfo();\r
127                         header('Location: myown_patches.php');\r
128                 }\r
129 \r
130         }\r
131 }\r
132 \r
133 $msg->printErrors();\r
134 ?>\r