@@ -30,9 +30,9 @@ discard block |
||
30 | 30 | private $db; |
31 | 31 | |
32 | 32 | /** |
33 | - * @var string Error code (or message) |
|
34 | - */ |
|
35 | - public $error; |
|
33 | + * @var string Error code (or message) |
|
34 | + */ |
|
35 | + public $error; |
|
36 | 36 | |
37 | 37 | |
38 | 38 | /** |
@@ -56,7 +56,7 @@ discard block |
||
56 | 56 | */ |
57 | 57 | function selectWebsite($selected='',$htmlname='exportmodelid',$useempty=0) |
58 | 58 | { |
59 | - $out=''; |
|
59 | + $out=''; |
|
60 | 60 | |
61 | 61 | $sql = "SELECT rowid, ref"; |
62 | 62 | $sql.= " FROM ".MAIN_DB_PREFIX."website"; |
@@ -109,55 +109,55 @@ discard block |
||
109 | 109 | */ |
110 | 110 | function selectTypeOfContainer($htmlname, $selected='', $useempty=0, $moreattrib='') |
111 | 111 | { |
112 | - global $langs, $conf, $user; |
|
113 | - |
|
114 | - $langs->load("admin"); |
|
115 | - |
|
116 | - $sql = "SELECT rowid, code, label, entity"; |
|
117 | - $sql.= " FROM ".MAIN_DB_PREFIX.'c_type_container'; |
|
118 | - $sql.= " WHERE active = 1 AND entity IN (".getEntity('c_type_container').")"; |
|
119 | - $sql.= " ORDER BY label"; |
|
120 | - |
|
121 | - dol_syslog(get_class($this)."::selectTypeOfContainer", LOG_DEBUG); |
|
122 | - $result = $this->db->query($sql); |
|
123 | - if ($result) |
|
124 | - { |
|
125 | - $num = $this->db->num_rows($result); |
|
126 | - $i = 0; |
|
127 | - if ($num) |
|
128 | - { |
|
129 | - print '<select id="select'.$htmlname.'" class="flat selectTypeOfContainer" name="'.$htmlname.'"'.($moreattrib?' '.$moreattrib:'').'>'; |
|
130 | - if ($useempty == 1 || ($useempty == 2 && $num > 1)) |
|
131 | - { |
|
132 | - print '<option value="-1"> </option>'; |
|
133 | - } |
|
134 | - |
|
135 | - while ($i < $num) |
|
136 | - { |
|
137 | - $obj = $this->db->fetch_object($result); |
|
138 | - if ($selected == $obj->rowid || $selected == $obj->code) |
|
139 | - { |
|
140 | - print '<option value="'.$obj->code.'" selected>'; |
|
141 | - } |
|
142 | - else |
|
143 | - { |
|
144 | - print '<option value="'.$obj->code.'">'; |
|
145 | - } |
|
146 | - print $obj->label; |
|
147 | - print '</option>'; |
|
148 | - $i++; |
|
149 | - } |
|
150 | - print "</select>"; |
|
151 | - if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); |
|
152 | - } |
|
153 | - else |
|
154 | - { |
|
155 | - print $langs->trans("NoTypeOfPagePleaseEditDictionary"); |
|
156 | - } |
|
157 | - } |
|
158 | - else { |
|
159 | - dol_print_error($this->db); |
|
160 | - } |
|
112 | + global $langs, $conf, $user; |
|
113 | + |
|
114 | + $langs->load("admin"); |
|
115 | + |
|
116 | + $sql = "SELECT rowid, code, label, entity"; |
|
117 | + $sql.= " FROM ".MAIN_DB_PREFIX.'c_type_container'; |
|
118 | + $sql.= " WHERE active = 1 AND entity IN (".getEntity('c_type_container').")"; |
|
119 | + $sql.= " ORDER BY label"; |
|
120 | + |
|
121 | + dol_syslog(get_class($this)."::selectTypeOfContainer", LOG_DEBUG); |
|
122 | + $result = $this->db->query($sql); |
|
123 | + if ($result) |
|
124 | + { |
|
125 | + $num = $this->db->num_rows($result); |
|
126 | + $i = 0; |
|
127 | + if ($num) |
|
128 | + { |
|
129 | + print '<select id="select'.$htmlname.'" class="flat selectTypeOfContainer" name="'.$htmlname.'"'.($moreattrib?' '.$moreattrib:'').'>'; |
|
130 | + if ($useempty == 1 || ($useempty == 2 && $num > 1)) |
|
131 | + { |
|
132 | + print '<option value="-1"> </option>'; |
|
133 | + } |
|
134 | + |
|
135 | + while ($i < $num) |
|
136 | + { |
|
137 | + $obj = $this->db->fetch_object($result); |
|
138 | + if ($selected == $obj->rowid || $selected == $obj->code) |
|
139 | + { |
|
140 | + print '<option value="'.$obj->code.'" selected>'; |
|
141 | + } |
|
142 | + else |
|
143 | + { |
|
144 | + print '<option value="'.$obj->code.'">'; |
|
145 | + } |
|
146 | + print $obj->label; |
|
147 | + print '</option>'; |
|
148 | + $i++; |
|
149 | + } |
|
150 | + print "</select>"; |
|
151 | + if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); |
|
152 | + } |
|
153 | + else |
|
154 | + { |
|
155 | + print $langs->trans("NoTypeOfPagePleaseEditDictionary"); |
|
156 | + } |
|
157 | + } |
|
158 | + else { |
|
159 | + dol_print_error($this->db); |
|
160 | + } |
|
161 | 161 | } |
162 | 162 | |
163 | 163 | |
@@ -172,35 +172,35 @@ discard block |
||
172 | 172 | */ |
173 | 173 | function selectSampleOfContainer($htmlname, $selected='', $useempty=0, $moreattrib='') |
174 | 174 | { |
175 | - global $langs, $conf, $user; |
|
176 | - |
|
177 | - $langs->load("admin"); |
|
178 | - |
|
179 | - $arrayofsamples=array('empty'=>'EmptyPage', 'corporatehome'=>'CorporateHomePage'); |
|
180 | - |
|
181 | - $out = ''; |
|
182 | - $out .= '<select id="select'.$htmlname.'" class="flat selectTypeOfContainer" name="'.$htmlname.'"'.($moreattrib?' '.$moreattrib:'').'>'; |
|
183 | - |
|
184 | - if ($useempty == 1 || $useempty == 2) |
|
185 | - { |
|
186 | - $out .= '<option value="-1"> </option>'; |
|
187 | - } |
|
188 | - |
|
189 | - foreach($arrayofsamples as $key => $val) |
|
190 | - { |
|
191 | - if ($selected == $key) |
|
192 | - { |
|
193 | - $out .= '<option value="'.$key.'" selected>'; |
|
194 | - } |
|
195 | - else |
|
196 | - { |
|
197 | - $out .= '<option value="'.$key.'">'; |
|
198 | - } |
|
199 | - $out .= $langs->trans($val); |
|
200 | - $out .= '</option>'; |
|
201 | - } |
|
202 | - $out .= "</select>"; |
|
203 | - |
|
204 | - return $out; |
|
175 | + global $langs, $conf, $user; |
|
176 | + |
|
177 | + $langs->load("admin"); |
|
178 | + |
|
179 | + $arrayofsamples=array('empty'=>'EmptyPage', 'corporatehome'=>'CorporateHomePage'); |
|
180 | + |
|
181 | + $out = ''; |
|
182 | + $out .= '<select id="select'.$htmlname.'" class="flat selectTypeOfContainer" name="'.$htmlname.'"'.($moreattrib?' '.$moreattrib:'').'>'; |
|
183 | + |
|
184 | + if ($useempty == 1 || $useempty == 2) |
|
185 | + { |
|
186 | + $out .= '<option value="-1"> </option>'; |
|
187 | + } |
|
188 | + |
|
189 | + foreach($arrayofsamples as $key => $val) |
|
190 | + { |
|
191 | + if ($selected == $key) |
|
192 | + { |
|
193 | + $out .= '<option value="'.$key.'" selected>'; |
|
194 | + } |
|
195 | + else |
|
196 | + { |
|
197 | + $out .= '<option value="'.$key.'">'; |
|
198 | + } |
|
199 | + $out .= $langs->trans($val); |
|
200 | + $out .= '</option>'; |
|
201 | + } |
|
202 | + $out .= "</select>"; |
|
203 | + |
|
204 | + return $out; |
|
205 | 205 | } |
206 | 206 | } |
@@ -32,187 +32,187 @@ |
||
32 | 32 | |
33 | 33 | if ($cancel) |
34 | 34 | { |
35 | - if (! empty($backtopage)) |
|
36 | - { |
|
37 | - header("Location: ".$backtopage); |
|
38 | - exit; |
|
39 | - } |
|
40 | - $action=''; |
|
35 | + if (! empty($backtopage)) |
|
36 | + { |
|
37 | + header("Location: ".$backtopage); |
|
38 | + exit; |
|
39 | + } |
|
40 | + $action=''; |
|
41 | 41 | } |
42 | 42 | |
43 | 43 | // Action to add record |
44 | 44 | if ($action == 'add' && ! empty($permissiontoadd)) |
45 | 45 | { |
46 | - foreach ($object->fields as $key => $val) |
|
47 | - { |
|
48 | - if (in_array($key, array('rowid', 'entity', 'date_creation', 'tms', 'fk_user_creat', 'fk_user_modif', 'import_key'))) continue; // Ignore special fields |
|
49 | - |
|
50 | - // Set value to insert |
|
51 | - if (in_array($object->fields[$key]['type'], array('text', 'html'))) { |
|
52 | - $value = GETPOST($key,'none'); |
|
53 | - } elseif ($object->fields[$key]['type']=='date') { |
|
54 | - $value = dol_mktime(12, 0, 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year')); |
|
55 | - } elseif ($object->fields[$key]['type']=='datetime') { |
|
56 | - $value = dol_mktime(GETPOST($key.'hour'), GETPOST($key.'min'), 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year')); |
|
57 | - } elseif ($object->fields[$key]['type']=='price') { |
|
58 | - $value = price2num(GETPOST($key)); |
|
59 | - } else { |
|
60 | - $value = GETPOST($key,'alpha'); |
|
61 | - } |
|
62 | - if (preg_match('/^integer:/i', $object->fields[$key]['type']) && $value == '-1') $value=''; // This is an implicit foreign key field |
|
63 | - if (! empty($object->fields[$key]['foreignkey']) && $value == '-1') $value=''; // This is an explicit foreign key field |
|
64 | - |
|
65 | - $object->$key=$value; |
|
66 | - if ($val['notnull'] > 0 && $object->$key == '' && is_null($val['default'])) |
|
67 | - { |
|
68 | - $error++; |
|
69 | - setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv($val['label'])), null, 'errors'); |
|
70 | - } |
|
71 | - } |
|
72 | - |
|
73 | - if (! $error) |
|
74 | - { |
|
75 | - $result=$object->create($user); |
|
76 | - if ($result > 0) |
|
77 | - { |
|
78 | - // Creation OK |
|
79 | - $urltogo=$backtopage?str_replace('__ID__', $result, $backtopage):$backurlforlist; |
|
80 | - header("Location: ".$urltogo); |
|
81 | - exit; |
|
82 | - } |
|
83 | - else |
|
84 | - { |
|
85 | - // Creation KO |
|
86 | - if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); |
|
87 | - else setEventMessages($object->error, null, 'errors'); |
|
88 | - $action='create'; |
|
89 | - } |
|
90 | - } |
|
91 | - else |
|
92 | - { |
|
93 | - $action='create'; |
|
94 | - } |
|
46 | + foreach ($object->fields as $key => $val) |
|
47 | + { |
|
48 | + if (in_array($key, array('rowid', 'entity', 'date_creation', 'tms', 'fk_user_creat', 'fk_user_modif', 'import_key'))) continue; // Ignore special fields |
|
49 | + |
|
50 | + // Set value to insert |
|
51 | + if (in_array($object->fields[$key]['type'], array('text', 'html'))) { |
|
52 | + $value = GETPOST($key,'none'); |
|
53 | + } elseif ($object->fields[$key]['type']=='date') { |
|
54 | + $value = dol_mktime(12, 0, 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year')); |
|
55 | + } elseif ($object->fields[$key]['type']=='datetime') { |
|
56 | + $value = dol_mktime(GETPOST($key.'hour'), GETPOST($key.'min'), 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year')); |
|
57 | + } elseif ($object->fields[$key]['type']=='price') { |
|
58 | + $value = price2num(GETPOST($key)); |
|
59 | + } else { |
|
60 | + $value = GETPOST($key,'alpha'); |
|
61 | + } |
|
62 | + if (preg_match('/^integer:/i', $object->fields[$key]['type']) && $value == '-1') $value=''; // This is an implicit foreign key field |
|
63 | + if (! empty($object->fields[$key]['foreignkey']) && $value == '-1') $value=''; // This is an explicit foreign key field |
|
64 | + |
|
65 | + $object->$key=$value; |
|
66 | + if ($val['notnull'] > 0 && $object->$key == '' && is_null($val['default'])) |
|
67 | + { |
|
68 | + $error++; |
|
69 | + setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv($val['label'])), null, 'errors'); |
|
70 | + } |
|
71 | + } |
|
72 | + |
|
73 | + if (! $error) |
|
74 | + { |
|
75 | + $result=$object->create($user); |
|
76 | + if ($result > 0) |
|
77 | + { |
|
78 | + // Creation OK |
|
79 | + $urltogo=$backtopage?str_replace('__ID__', $result, $backtopage):$backurlforlist; |
|
80 | + header("Location: ".$urltogo); |
|
81 | + exit; |
|
82 | + } |
|
83 | + else |
|
84 | + { |
|
85 | + // Creation KO |
|
86 | + if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); |
|
87 | + else setEventMessages($object->error, null, 'errors'); |
|
88 | + $action='create'; |
|
89 | + } |
|
90 | + } |
|
91 | + else |
|
92 | + { |
|
93 | + $action='create'; |
|
94 | + } |
|
95 | 95 | } |
96 | 96 | |
97 | 97 | // Action to update record |
98 | 98 | if ($action == 'update' && ! empty($permissiontoadd)) |
99 | 99 | { |
100 | - foreach ($object->fields as $key => $val) |
|
101 | - { |
|
102 | - if (! GETPOSTISSET($key)) continue; // The field was not submited to be edited |
|
103 | - if (in_array($key, array('rowid', 'entity', 'date_creation', 'tms', 'fk_user_creat', 'fk_user_modif', 'import_key'))) continue; // Ignore special fields |
|
104 | - |
|
105 | - // Set value to update |
|
106 | - if (in_array($object->fields[$key]['type'], array('text', 'html'))) { |
|
107 | - $value = GETPOST($key,'none'); |
|
108 | - } elseif ($object->fields[$key]['type']=='date') { |
|
109 | - $value = dol_mktime(12, 0, 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year')); |
|
110 | - } elseif ($object->fields[$key]['type']=='datetime') { |
|
111 | - $value = dol_mktime(GETPOST($key.'hour'), GETPOST($key.'min'), 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year')); |
|
112 | - } elseif ($object->fields[$key]['type']=='price') { |
|
113 | - $value = price2num(GETPOST($key)); |
|
114 | - } else { |
|
115 | - $value = GETPOST($key,'alpha'); |
|
116 | - } |
|
117 | - if (preg_match('/^integer:/i', $object->fields[$key]['type']) && $value == '-1') $value=''; // This is an implicit foreign key field |
|
118 | - if (! empty($object->fields[$key]['foreignkey']) && $value == '-1') $value=''; // This is an explicit foreign key field |
|
119 | - |
|
120 | - $object->$key=$value; |
|
121 | - if ($val['notnull'] > 0 && $object->$key == '' && is_null($val['default'])) |
|
122 | - { |
|
123 | - $error++; |
|
124 | - setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv($val['label'])), null, 'errors'); |
|
125 | - } |
|
126 | - } |
|
127 | - |
|
128 | - if (! $error) |
|
129 | - { |
|
130 | - $result=$object->update($user); |
|
131 | - if ($result > 0) |
|
132 | - { |
|
133 | - $action='view'; |
|
134 | - } |
|
135 | - else |
|
136 | - { |
|
137 | - // Creation KO |
|
138 | - setEventMessages($object->error, $object->errors, 'errors'); |
|
139 | - $action='edit'; |
|
140 | - } |
|
141 | - } |
|
142 | - else |
|
143 | - { |
|
144 | - $action='edit'; |
|
145 | - } |
|
100 | + foreach ($object->fields as $key => $val) |
|
101 | + { |
|
102 | + if (! GETPOSTISSET($key)) continue; // The field was not submited to be edited |
|
103 | + if (in_array($key, array('rowid', 'entity', 'date_creation', 'tms', 'fk_user_creat', 'fk_user_modif', 'import_key'))) continue; // Ignore special fields |
|
104 | + |
|
105 | + // Set value to update |
|
106 | + if (in_array($object->fields[$key]['type'], array('text', 'html'))) { |
|
107 | + $value = GETPOST($key,'none'); |
|
108 | + } elseif ($object->fields[$key]['type']=='date') { |
|
109 | + $value = dol_mktime(12, 0, 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year')); |
|
110 | + } elseif ($object->fields[$key]['type']=='datetime') { |
|
111 | + $value = dol_mktime(GETPOST($key.'hour'), GETPOST($key.'min'), 0, GETPOST($key.'month'), GETPOST($key.'day'), GETPOST($key.'year')); |
|
112 | + } elseif ($object->fields[$key]['type']=='price') { |
|
113 | + $value = price2num(GETPOST($key)); |
|
114 | + } else { |
|
115 | + $value = GETPOST($key,'alpha'); |
|
116 | + } |
|
117 | + if (preg_match('/^integer:/i', $object->fields[$key]['type']) && $value == '-1') $value=''; // This is an implicit foreign key field |
|
118 | + if (! empty($object->fields[$key]['foreignkey']) && $value == '-1') $value=''; // This is an explicit foreign key field |
|
119 | + |
|
120 | + $object->$key=$value; |
|
121 | + if ($val['notnull'] > 0 && $object->$key == '' && is_null($val['default'])) |
|
122 | + { |
|
123 | + $error++; |
|
124 | + setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv($val['label'])), null, 'errors'); |
|
125 | + } |
|
126 | + } |
|
127 | + |
|
128 | + if (! $error) |
|
129 | + { |
|
130 | + $result=$object->update($user); |
|
131 | + if ($result > 0) |
|
132 | + { |
|
133 | + $action='view'; |
|
134 | + } |
|
135 | + else |
|
136 | + { |
|
137 | + // Creation KO |
|
138 | + setEventMessages($object->error, $object->errors, 'errors'); |
|
139 | + $action='edit'; |
|
140 | + } |
|
141 | + } |
|
142 | + else |
|
143 | + { |
|
144 | + $action='edit'; |
|
145 | + } |
|
146 | 146 | } |
147 | 147 | |
148 | 148 | // Action to update one extrafield |
149 | 149 | if ($action == "update_extras" && ! empty($permissiontoadd)) |
150 | 150 | { |
151 | - $object->fetch(GETPOST('id','int')); |
|
152 | - $attributekey = GETPOST('attribute','alpha'); |
|
153 | - $attributekeylong = 'options_'.$attributekey; |
|
154 | - $object->array_options['options_'.$attributekey] = GETPOST($attributekeylong,' alpha'); |
|
155 | - |
|
156 | - $result = $object->insertExtraFields(empty($triggermodname)?'':$triggermodname, $user); |
|
157 | - if ($result > 0) |
|
158 | - { |
|
159 | - setEventMessages($langs->trans('RecordSaved'), null, 'mesgs'); |
|
160 | - $action = 'view'; |
|
161 | - } |
|
162 | - else |
|
163 | - { |
|
164 | - setEventMessages($object->error, $object->errors, 'errors'); |
|
165 | - $action = 'edit_extras'; |
|
166 | - } |
|
151 | + $object->fetch(GETPOST('id','int')); |
|
152 | + $attributekey = GETPOST('attribute','alpha'); |
|
153 | + $attributekeylong = 'options_'.$attributekey; |
|
154 | + $object->array_options['options_'.$attributekey] = GETPOST($attributekeylong,' alpha'); |
|
155 | + |
|
156 | + $result = $object->insertExtraFields(empty($triggermodname)?'':$triggermodname, $user); |
|
157 | + if ($result > 0) |
|
158 | + { |
|
159 | + setEventMessages($langs->trans('RecordSaved'), null, 'mesgs'); |
|
160 | + $action = 'view'; |
|
161 | + } |
|
162 | + else |
|
163 | + { |
|
164 | + setEventMessages($object->error, $object->errors, 'errors'); |
|
165 | + $action = 'edit_extras'; |
|
166 | + } |
|
167 | 167 | } |
168 | 168 | |
169 | 169 | // Action to delete |
170 | 170 | if ($action == 'confirm_delete' && ! empty($permissiontodelete)) |
171 | 171 | { |
172 | - $result=$object->delete($user); |
|
173 | - if ($result > 0) |
|
174 | - { |
|
175 | - // Delete OK |
|
176 | - setEventMessages("RecordDeleted", null, 'mesgs'); |
|
177 | - header("Location: ".$backurlforlist); |
|
178 | - exit; |
|
179 | - } |
|
180 | - else |
|
181 | - { |
|
182 | - if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); |
|
183 | - else setEventMessages($object->error, null, 'errors'); |
|
184 | - } |
|
172 | + $result=$object->delete($user); |
|
173 | + if ($result > 0) |
|
174 | + { |
|
175 | + // Delete OK |
|
176 | + setEventMessages("RecordDeleted", null, 'mesgs'); |
|
177 | + header("Location: ".$backurlforlist); |
|
178 | + exit; |
|
179 | + } |
|
180 | + else |
|
181 | + { |
|
182 | + if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); |
|
183 | + else setEventMessages($object->error, null, 'errors'); |
|
184 | + } |
|
185 | 185 | } |
186 | 186 | |
187 | 187 | // Action clone object |
188 | 188 | if ($action == 'confirm_clone' && $confirm == 'yes' && ! empty($permissiontoadd)) |
189 | 189 | { |
190 | - if (1==0 && ! GETPOST('clone_content') && ! GETPOST('clone_receivers')) |
|
191 | - { |
|
192 | - setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); |
|
193 | - } |
|
194 | - else |
|
195 | - { |
|
196 | - if ($object->id > 0) |
|
197 | - { |
|
198 | - // Because createFromClone modifies the object, we must clone it so that we can restore it later |
|
199 | - $orig = clone $object; |
|
200 | - |
|
201 | - $result=$object->createFromClone($user, $object->id); |
|
202 | - if ($result > 0) |
|
203 | - { |
|
204 | - $newid = 0; |
|
205 | - if (is_object($result)) $newid = $result->id; |
|
206 | - else $newid = $result; |
|
207 | - header("Location: ".$_SERVER['PHP_SELF'].'?id='.$newid); // Open record of new object |
|
208 | - exit; |
|
209 | - } |
|
210 | - else |
|
211 | - { |
|
212 | - setEventMessages($object->error, $object->errors, 'errors'); |
|
213 | - $object = $orig; |
|
214 | - $action=''; |
|
215 | - } |
|
216 | - } |
|
217 | - } |
|
190 | + if (1==0 && ! GETPOST('clone_content') && ! GETPOST('clone_receivers')) |
|
191 | + { |
|
192 | + setEventMessages($langs->trans("NoCloneOptionsSpecified"), null, 'errors'); |
|
193 | + } |
|
194 | + else |
|
195 | + { |
|
196 | + if ($object->id > 0) |
|
197 | + { |
|
198 | + // Because createFromClone modifies the object, we must clone it so that we can restore it later |
|
199 | + $orig = clone $object; |
|
200 | + |
|
201 | + $result=$object->createFromClone($user, $object->id); |
|
202 | + if ($result > 0) |
|
203 | + { |
|
204 | + $newid = 0; |
|
205 | + if (is_object($result)) $newid = $result->id; |
|
206 | + else $newid = $result; |
|
207 | + header("Location: ".$_SERVER['PHP_SELF'].'?id='.$newid); // Open record of new object |
|
208 | + exit; |
|
209 | + } |
|
210 | + else |
|
211 | + { |
|
212 | + setEventMessages($object->error, $object->errors, 'errors'); |
|
213 | + $object = $orig; |
|
214 | + $action=''; |
|
215 | + } |
|
216 | + } |
|
217 | + } |
|
218 | 218 | } |
@@ -35,42 +35,42 @@ |
||
35 | 35 | |
36 | 36 | if ($action == 'addcomment') |
37 | 37 | { |
38 | - $description = GETPOST('comment_description', 'none'); |
|
39 | - if (!empty($description)) |
|
40 | - { |
|
41 | - $comment->description = $description; |
|
42 | - $comment->datec = time(); |
|
43 | - $comment->fk_element = GETPOST('id','int'); |
|
44 | - $comment->element_type = GETPOST('comment_element_type','alpha'); |
|
45 | - $comment->fk_user_author = $user->id; |
|
46 | - $comment->entity = $conf->entity; |
|
47 | - if ($comment->create($user) > 0) |
|
48 | - { |
|
49 | - setEventMessages($langs->trans("CommentAdded"), null, 'mesgs'); |
|
50 | - header('Location: '.$varpage.'?id='.$id.($withproject?'&withproject=1':'')); |
|
51 | - exit; |
|
52 | - } |
|
53 | - else |
|
54 | - { |
|
55 | - setEventMessages($comment->error, $comment->errors,'errors'); |
|
56 | - $action=''; |
|
57 | - } |
|
58 | - } |
|
38 | + $description = GETPOST('comment_description', 'none'); |
|
39 | + if (!empty($description)) |
|
40 | + { |
|
41 | + $comment->description = $description; |
|
42 | + $comment->datec = time(); |
|
43 | + $comment->fk_element = GETPOST('id','int'); |
|
44 | + $comment->element_type = GETPOST('comment_element_type','alpha'); |
|
45 | + $comment->fk_user_author = $user->id; |
|
46 | + $comment->entity = $conf->entity; |
|
47 | + if ($comment->create($user) > 0) |
|
48 | + { |
|
49 | + setEventMessages($langs->trans("CommentAdded"), null, 'mesgs'); |
|
50 | + header('Location: '.$varpage.'?id='.$id.($withproject?'&withproject=1':'')); |
|
51 | + exit; |
|
52 | + } |
|
53 | + else |
|
54 | + { |
|
55 | + setEventMessages($comment->error, $comment->errors,'errors'); |
|
56 | + $action=''; |
|
57 | + } |
|
58 | + } |
|
59 | 59 | } |
60 | 60 | if ($action == 'deletecomment') |
61 | 61 | { |
62 | - if ($comment->fetch($idcomment) >= 0) |
|
63 | - { |
|
64 | - if ($comment->delete($user) > 0) |
|
65 | - { |
|
66 | - setEventMessages($langs->trans("CommentDeleted"), null, 'mesgs'); |
|
67 | - header('Location: '.$varpage.'?id='.$id.($withproject?'&withproject=1':'')); |
|
68 | - exit; |
|
69 | - } |
|
70 | - else |
|
71 | - { |
|
72 | - setEventMessages($comment->error, $comment->errors,'errors'); |
|
73 | - $action=''; |
|
74 | - } |
|
75 | - } |
|
62 | + if ($comment->fetch($idcomment) >= 0) |
|
63 | + { |
|
64 | + if ($comment->delete($user) > 0) |
|
65 | + { |
|
66 | + setEventMessages($langs->trans("CommentDeleted"), null, 'mesgs'); |
|
67 | + header('Location: '.$varpage.'?id='.$id.($withproject?'&withproject=1':'')); |
|
68 | + exit; |
|
69 | + } |
|
70 | + else |
|
71 | + { |
|
72 | + setEventMessages($comment->error, $comment->errors,'errors'); |
|
73 | + $action=''; |
|
74 | + } |
|
75 | + } |
|
76 | 76 | } |
77 | 77 | \ No newline at end of file |
@@ -30,21 +30,21 @@ discard block |
||
30 | 30 | */ |
31 | 31 | function SetXmlHeaders() |
32 | 32 | { |
33 | - ob_end_clean(); |
|
34 | - |
|
35 | - // Prevent the browser from caching the result. |
|
36 | - // Date in the past |
|
37 | - header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); |
|
38 | - // always modified |
|
39 | - header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); |
|
40 | - // HTTP/1.1 |
|
41 | - header('Cache-Control: no-store, no-cache, must-revalidate'); |
|
42 | - header('Cache-Control: post-check=0, pre-check=0', false); |
|
43 | - // HTTP/1.0 |
|
44 | - header('Pragma: no-cache'); |
|
45 | - |
|
46 | - // Set the response format. |
|
47 | - header('Content-Type: text/xml; charset=utf-8'); |
|
33 | + ob_end_clean(); |
|
34 | + |
|
35 | + // Prevent the browser from caching the result. |
|
36 | + // Date in the past |
|
37 | + header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); |
|
38 | + // always modified |
|
39 | + header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); |
|
40 | + // HTTP/1.1 |
|
41 | + header('Cache-Control: no-store, no-cache, must-revalidate'); |
|
42 | + header('Cache-Control: post-check=0, pre-check=0', false); |
|
43 | + // HTTP/1.0 |
|
44 | + header('Pragma: no-cache'); |
|
45 | + |
|
46 | + // Set the response format. |
|
47 | + header('Content-Type: text/xml; charset=utf-8'); |
|
48 | 48 | } |
49 | 49 | |
50 | 50 | /** |
@@ -57,18 +57,18 @@ discard block |
||
57 | 57 | */ |
58 | 58 | function CreateXmlHeader( $command, $resourceType, $currentFolder ) |
59 | 59 | { |
60 | - SetXmlHeaders(); |
|
60 | + SetXmlHeaders(); |
|
61 | 61 | |
62 | - // Create the XML document header. |
|
63 | - echo '<?xml version="1.0" encoding="utf-8" ?>' ; |
|
62 | + // Create the XML document header. |
|
63 | + echo '<?xml version="1.0" encoding="utf-8" ?>' ; |
|
64 | 64 | |
65 | - // Create the main "Connector" node. |
|
66 | - echo '<Connector command="' . $command . '" resourceType="' . $resourceType . '">' ; |
|
65 | + // Create the main "Connector" node. |
|
66 | + echo '<Connector command="' . $command . '" resourceType="' . $resourceType . '">' ; |
|
67 | 67 | |
68 | - // Add the current folder node. |
|
69 | - echo '<CurrentFolder path="' . ConvertToXmlAttribute($currentFolder) . '" url="' . ConvertToXmlAttribute(GetUrlFromPath($resourceType, $currentFolder, $command)) . '" />' ; |
|
68 | + // Add the current folder node. |
|
69 | + echo '<CurrentFolder path="' . ConvertToXmlAttribute($currentFolder) . '" url="' . ConvertToXmlAttribute(GetUrlFromPath($resourceType, $currentFolder, $command)) . '" />' ; |
|
70 | 70 | |
71 | - $GLOBALS['HeaderSent'] = true ; |
|
71 | + $GLOBALS['HeaderSent'] = true ; |
|
72 | 72 | } |
73 | 73 | |
74 | 74 | /** |
@@ -78,7 +78,7 @@ discard block |
||
78 | 78 | */ |
79 | 79 | function CreateXmlFooter() |
80 | 80 | { |
81 | - echo '</Connector>' ; |
|
81 | + echo '</Connector>' ; |
|
82 | 82 | } |
83 | 83 | |
84 | 84 | /** |
@@ -90,30 +90,30 @@ discard block |
||
90 | 90 | */ |
91 | 91 | function SendError($number, $text) |
92 | 92 | { |
93 | - if ( $_GET['Command'] == 'FileUpload' ) |
|
94 | - SendUploadResults($number, "", "", $text); |
|
95 | - |
|
96 | - if ( isset( $GLOBALS['HeaderSent'] ) && $GLOBALS['HeaderSent'] ) |
|
97 | - { |
|
98 | - SendErrorNode($number, $text); |
|
99 | - CreateXmlFooter(); |
|
100 | - } |
|
101 | - else |
|
102 | - { |
|
103 | - SetXmlHeaders(); |
|
104 | - |
|
105 | - dol_syslog('Error: '.$number.' '.$text, LOG_ERR); |
|
93 | + if ( $_GET['Command'] == 'FileUpload' ) |
|
94 | + SendUploadResults($number, "", "", $text); |
|
95 | + |
|
96 | + if ( isset( $GLOBALS['HeaderSent'] ) && $GLOBALS['HeaderSent'] ) |
|
97 | + { |
|
98 | + SendErrorNode($number, $text); |
|
99 | + CreateXmlFooter(); |
|
100 | + } |
|
101 | + else |
|
102 | + { |
|
103 | + SetXmlHeaders(); |
|
104 | + |
|
105 | + dol_syslog('Error: '.$number.' '.$text, LOG_ERR); |
|
106 | 106 | |
107 | - // Create the XML document header |
|
108 | - echo '<?xml version="1.0" encoding="utf-8" ?>' ; |
|
107 | + // Create the XML document header |
|
108 | + echo '<?xml version="1.0" encoding="utf-8" ?>' ; |
|
109 | 109 | |
110 | - echo '<Connector>' ; |
|
110 | + echo '<Connector>' ; |
|
111 | 111 | |
112 | - SendErrorNode($number, $text); |
|
112 | + SendErrorNode($number, $text); |
|
113 | 113 | |
114 | - echo '</Connector>' ; |
|
115 | - } |
|
116 | - exit ; |
|
114 | + echo '</Connector>' ; |
|
115 | + } |
|
116 | + exit ; |
|
117 | 117 | } |
118 | 118 | |
119 | 119 | /** |
@@ -125,8 +125,8 @@ discard block |
||
125 | 125 | */ |
126 | 126 | function SendErrorNode($number, $text) |
127 | 127 | { |
128 | - if ($text) |
|
129 | - echo '<Error number="' . $number . '" text="' . htmlspecialchars($text) . '" />' ; |
|
130 | - else |
|
131 | - echo '<Error number="' . $number . '" />' ; |
|
128 | + if ($text) |
|
129 | + echo '<Error number="' . $number . '" text="' . htmlspecialchars($text) . '" />' ; |
|
130 | + else |
|
131 | + echo '<Error number="' . $number . '" />' ; |
|
132 | 132 | } |
@@ -31,7 +31,7 @@ discard block |
||
31 | 31 | require 'commands.php'; |
32 | 32 | |
33 | 33 | if ( !$Config['Enabled'] ) |
34 | - SendError(1, 'This connector is disabled. Please check the "editor/filemanager/connectors/php/config.php" file'); |
|
34 | + SendError(1, 'This connector is disabled. Please check the "editor/filemanager/connectors/php/config.php" file'); |
|
35 | 35 | |
36 | 36 | DoResponse(); |
37 | 37 | |
@@ -45,47 +45,47 @@ discard block |
||
45 | 45 | if (!isset($_GET)) { |
46 | 46 | global $_GET; |
47 | 47 | } |
48 | - if ( !isset( $_GET['Command'] ) || !isset( $_GET['Type'] ) || !isset( $_GET['CurrentFolder'] ) ) |
|
49 | - return; |
|
48 | + if ( !isset( $_GET['Command'] ) || !isset( $_GET['Type'] ) || !isset( $_GET['CurrentFolder'] ) ) |
|
49 | + return; |
|
50 | 50 | |
51 | - // Get the main request informaiton. |
|
52 | - $sCommand = $_GET['Command'] ; |
|
53 | - $sResourceType = $_GET['Type'] ; |
|
54 | - $sCurrentFolder = GetCurrentFolder(); |
|
51 | + // Get the main request informaiton. |
|
52 | + $sCommand = $_GET['Command'] ; |
|
53 | + $sResourceType = $_GET['Type'] ; |
|
54 | + $sCurrentFolder = GetCurrentFolder(); |
|
55 | 55 | |
56 | - // Check if it is an allowed command |
|
57 | - if (! IsAllowedCommand($sCommand)) |
|
58 | - { |
|
59 | - SendError(1, 'The "' . $sCommand . '" command isn\'t allowed'); |
|
60 | - } |
|
61 | - // Check if it is an allowed type. |
|
62 | - if (! IsAllowedType($sResourceType)) |
|
63 | - SendError(1, 'Invalid type specified'); |
|
56 | + // Check if it is an allowed command |
|
57 | + if (! IsAllowedCommand($sCommand)) |
|
58 | + { |
|
59 | + SendError(1, 'The "' . $sCommand . '" command isn\'t allowed'); |
|
60 | + } |
|
61 | + // Check if it is an allowed type. |
|
62 | + if (! IsAllowedType($sResourceType)) |
|
63 | + SendError(1, 'Invalid type specified'); |
|
64 | 64 | |
65 | - // File Upload doesn't have to Return XML, so it must be intercepted before anything. |
|
66 | - if ( $sCommand == 'FileUpload' ) |
|
67 | - { |
|
68 | - FileUpload($sResourceType, $sCurrentFolder, $sCommand); |
|
69 | - return; |
|
70 | - } |
|
65 | + // File Upload doesn't have to Return XML, so it must be intercepted before anything. |
|
66 | + if ( $sCommand == 'FileUpload' ) |
|
67 | + { |
|
68 | + FileUpload($sResourceType, $sCurrentFolder, $sCommand); |
|
69 | + return; |
|
70 | + } |
|
71 | 71 | |
72 | - CreateXmlHeader($sCommand, $sResourceType, $sCurrentFolder); |
|
72 | + CreateXmlHeader($sCommand, $sResourceType, $sCurrentFolder); |
|
73 | 73 | |
74 | - // Execute the required command. |
|
75 | - switch ( $sCommand ) |
|
76 | - { |
|
77 | - case 'GetFolders' : |
|
78 | - GetFolders($sResourceType, $sCurrentFolder); |
|
79 | - break; |
|
80 | - case 'GetFoldersAndFiles' : |
|
81 | - GetFoldersAndFiles($sResourceType, $sCurrentFolder); |
|
82 | - break; |
|
83 | - case 'CreateFolder' : |
|
84 | - CreateFolder($sResourceType, $sCurrentFolder); |
|
85 | - break; |
|
86 | - } |
|
74 | + // Execute the required command. |
|
75 | + switch ( $sCommand ) |
|
76 | + { |
|
77 | + case 'GetFolders' : |
|
78 | + GetFolders($sResourceType, $sCurrentFolder); |
|
79 | + break; |
|
80 | + case 'GetFoldersAndFiles' : |
|
81 | + GetFoldersAndFiles($sResourceType, $sCurrentFolder); |
|
82 | + break; |
|
83 | + case 'CreateFolder' : |
|
84 | + CreateFolder($sResourceType, $sCurrentFolder); |
|
85 | + break; |
|
86 | + } |
|
87 | 87 | |
88 | - CreateXmlFooter(); |
|
88 | + CreateXmlFooter(); |
|
89 | 89 | |
90 | - exit; |
|
90 | + exit; |
|
91 | 91 | } |
@@ -36,13 +36,13 @@ discard block |
||
36 | 36 | */ |
37 | 37 | function SendError($number, $text) |
38 | 38 | { |
39 | - SendUploadResults($number, '', '', $text); |
|
39 | + SendUploadResults($number, '', '', $text); |
|
40 | 40 | } |
41 | 41 | |
42 | 42 | |
43 | 43 | // Check if this uploader has been enabled. |
44 | 44 | if ( !$Config['Enabled'] ) |
45 | - SendUploadResults('1', '', '', 'This file uploader is disabled. Please check the "filemanagerdol/connectors/php/config.php" file'); |
|
45 | + SendUploadResults('1', '', '', 'This file uploader is disabled. Please check the "filemanagerdol/connectors/php/config.php" file'); |
|
46 | 46 | |
47 | 47 | $sCommand = 'QuickUpload' ; |
48 | 48 | |
@@ -53,7 +53,7 @@ discard block |
||
53 | 53 | |
54 | 54 | // Is enabled the upload? |
55 | 55 | if (! IsAllowedCommand($sCommand)) |
56 | - SendUploadResults('1', '', '', 'The ""' . $sCommand . '"" command isn\'t allowed'); |
|
56 | + SendUploadResults('1', '', '', 'The ""' . $sCommand . '"" command isn\'t allowed'); |
|
57 | 57 | |
58 | 58 | // Check if it is an allowed type. |
59 | 59 | if (! IsAllowedType($sType)) |
@@ -31,7 +31,7 @@ discard block |
||
31 | 31 | */ |
32 | 32 | function CombinePaths( $sBasePath, $sFolder ) |
33 | 33 | { |
34 | - return RemoveFromEnd($sBasePath, '/') . '/' . RemoveFromStart($sFolder, '/'); |
|
34 | + return RemoveFromEnd($sBasePath, '/') . '/' . RemoveFromStart($sFolder, '/'); |
|
35 | 35 | } |
36 | 36 | /** |
37 | 37 | * GetResourceTypePath |
@@ -42,12 +42,12 @@ discard block |
||
42 | 42 | */ |
43 | 43 | function GetResourceTypePath($resourceType, $sCommand) |
44 | 44 | { |
45 | - global $Config ; |
|
45 | + global $Config ; |
|
46 | 46 | |
47 | - if ($sCommand == "QuickUpload") |
|
48 | - return $Config['QuickUploadPath'][$resourceType] ; |
|
49 | - else |
|
50 | - return $Config['FileTypesPath'][$resourceType] ; |
|
47 | + if ($sCommand == "QuickUpload") |
|
48 | + return $Config['QuickUploadPath'][$resourceType] ; |
|
49 | + else |
|
50 | + return $Config['FileTypesPath'][$resourceType] ; |
|
51 | 51 | } |
52 | 52 | |
53 | 53 | /** |
@@ -59,23 +59,23 @@ discard block |
||
59 | 59 | */ |
60 | 60 | function GetResourceTypeDirectory($resourceType, $sCommand) |
61 | 61 | { |
62 | - global $Config ; |
|
63 | - if ($sCommand == "QuickUpload") |
|
64 | - { |
|
65 | - if ( strlen($Config['QuickUploadAbsolutePath'][$resourceType]) > 0) |
|
66 | - return $Config['QuickUploadAbsolutePath'][$resourceType] ; |
|
67 | - |
|
68 | - // Map the "UserFiles" path to a local directory. |
|
69 | - return Server_MapPath($Config['QuickUploadPath'][$resourceType]); |
|
70 | - } |
|
71 | - else |
|
72 | - { |
|
73 | - if ( strlen($Config['FileTypesAbsolutePath'][$resourceType]) > 0) |
|
74 | - return $Config['FileTypesAbsolutePath'][$resourceType] ; |
|
75 | - |
|
76 | - // Map the "UserFiles" path to a local directory. |
|
77 | - return Server_MapPath($Config['FileTypesPath'][$resourceType]); |
|
78 | - } |
|
62 | + global $Config ; |
|
63 | + if ($sCommand == "QuickUpload") |
|
64 | + { |
|
65 | + if ( strlen($Config['QuickUploadAbsolutePath'][$resourceType]) > 0) |
|
66 | + return $Config['QuickUploadAbsolutePath'][$resourceType] ; |
|
67 | + |
|
68 | + // Map the "UserFiles" path to a local directory. |
|
69 | + return Server_MapPath($Config['QuickUploadPath'][$resourceType]); |
|
70 | + } |
|
71 | + else |
|
72 | + { |
|
73 | + if ( strlen($Config['FileTypesAbsolutePath'][$resourceType]) > 0) |
|
74 | + return $Config['FileTypesAbsolutePath'][$resourceType] ; |
|
75 | + |
|
76 | + // Map the "UserFiles" path to a local directory. |
|
77 | + return Server_MapPath($Config['FileTypesPath'][$resourceType]); |
|
78 | + } |
|
79 | 79 | } |
80 | 80 | |
81 | 81 | /** |
@@ -88,7 +88,7 @@ discard block |
||
88 | 88 | */ |
89 | 89 | function GetUrlFromPath($resourceType, $folderPath, $sCommand) |
90 | 90 | { |
91 | - return CombinePaths(GetResourceTypePath($resourceType, $sCommand), $folderPath); |
|
91 | + return CombinePaths(GetResourceTypePath($resourceType, $sCommand), $folderPath); |
|
92 | 92 | } |
93 | 93 | |
94 | 94 | /** |
@@ -99,7 +99,7 @@ discard block |
||
99 | 99 | */ |
100 | 100 | function RemoveExtension($fileName) |
101 | 101 | { |
102 | - return substr($fileName, 0, strrpos($fileName, '.')); |
|
102 | + return substr($fileName, 0, strrpos($fileName, '.')); |
|
103 | 103 | } |
104 | 104 | /** |
105 | 105 | * ServerMapFolder |
@@ -111,16 +111,16 @@ discard block |
||
111 | 111 | */ |
112 | 112 | function ServerMapFolder($resourceType, $folderPath, $sCommand) |
113 | 113 | { |
114 | - // Get the resource type directory. |
|
115 | - $sResourceTypePath = GetResourceTypeDirectory($resourceType, $sCommand); |
|
114 | + // Get the resource type directory. |
|
115 | + $sResourceTypePath = GetResourceTypeDirectory($resourceType, $sCommand); |
|
116 | 116 | |
117 | - // Ensure that the directory exists. |
|
118 | - $sErrorMsg = CreateServerFolder($sResourceTypePath); |
|
119 | - if ( $sErrorMsg != '' ) |
|
120 | - SendError(1, "Error creating folder \"{$sResourceTypePath}\" ({$sErrorMsg})"); |
|
117 | + // Ensure that the directory exists. |
|
118 | + $sErrorMsg = CreateServerFolder($sResourceTypePath); |
|
119 | + if ( $sErrorMsg != '' ) |
|
120 | + SendError(1, "Error creating folder \"{$sResourceTypePath}\" ({$sErrorMsg})"); |
|
121 | 121 | |
122 | - // Return the resource type directory combined with the required path. |
|
123 | - return CombinePaths($sResourceTypePath, $folderPath); |
|
122 | + // Return the resource type directory combined with the required path. |
|
123 | + return CombinePaths($sResourceTypePath, $folderPath); |
|
124 | 124 | } |
125 | 125 | |
126 | 126 | /** |
@@ -144,67 +144,67 @@ discard block |
||
144 | 144 | */ |
145 | 145 | function CreateServerFolder($folderPath, $lastFolder = null) |
146 | 146 | { |
147 | - global $Config ; |
|
148 | - $sParent = GetParentFolder($folderPath); |
|
149 | - |
|
150 | - // Ensure the folder path has no double-slashes, or mkdir may fail on certain platforms |
|
151 | - while ( strpos($folderPath, '//') !== false ) |
|
152 | - { |
|
153 | - $folderPath = str_replace('//', '/', $folderPath); |
|
154 | - } |
|
155 | - |
|
156 | - // Check if the parent exists, or create it. |
|
157 | - if ( !empty($sParent) && !file_exists($sParent)) |
|
158 | - { |
|
159 | - //prevents agains infinite loop when we can't create root folder |
|
160 | - if ( !is_null($lastFolder) && $lastFolder === $sParent) { |
|
161 | - return "Can't create $folderPath directory" ; |
|
162 | - } |
|
163 | - |
|
164 | - $sErrorMsg = CreateServerFolder($sParent, $folderPath); |
|
165 | - if ( $sErrorMsg != '' ) |
|
166 | - return $sErrorMsg ; |
|
167 | - } |
|
168 | - |
|
169 | - if ( !file_exists($folderPath)) |
|
170 | - { |
|
171 | - // Turn off all error reporting. |
|
172 | - error_reporting(0); |
|
173 | - |
|
174 | - $php_errormsg = '' ; |
|
175 | - // Enable error tracking to catch the error. |
|
176 | - ini_set('track_errors', '1'); |
|
177 | - |
|
178 | - if ( isset( $Config['ChmodOnFolderCreate'] ) && !$Config['ChmodOnFolderCreate'] ) |
|
179 | - { |
|
180 | - mkdir($folderPath); |
|
181 | - } |
|
182 | - else |
|
183 | - { |
|
184 | - $permissions = '0777'; |
|
185 | - if ( isset( $Config['ChmodOnFolderCreate'] ) && $Config['ChmodOnFolderCreate']) |
|
186 | - { |
|
187 | - $permissions = (string) $Config['ChmodOnFolderCreate']; |
|
188 | - } |
|
189 | - $permissionsdec = octdec($permissions); |
|
190 | - $permissionsdec |= octdec('0111'); // Set x bit required for directories |
|
191 | - dol_syslog("io.php permission = ".$permissions." ".$permissionsdec." ".decoct($permissionsdec)); |
|
192 | - // To create the folder with 0777 permissions, we need to set umask to zero. |
|
193 | - $oldumask = umask(0); |
|
194 | - mkdir($folderPath, $permissionsdec); |
|
195 | - umask($oldumask); |
|
196 | - } |
|
197 | - |
|
198 | - $sErrorMsg = $php_errormsg ; |
|
199 | - |
|
200 | - // Restore the configurations. |
|
201 | - ini_restore('track_errors'); |
|
202 | - ini_restore('error_reporting'); |
|
203 | - |
|
204 | - return $sErrorMsg ; |
|
205 | - } |
|
206 | - else |
|
207 | - return '' ; |
|
147 | + global $Config ; |
|
148 | + $sParent = GetParentFolder($folderPath); |
|
149 | + |
|
150 | + // Ensure the folder path has no double-slashes, or mkdir may fail on certain platforms |
|
151 | + while ( strpos($folderPath, '//') !== false ) |
|
152 | + { |
|
153 | + $folderPath = str_replace('//', '/', $folderPath); |
|
154 | + } |
|
155 | + |
|
156 | + // Check if the parent exists, or create it. |
|
157 | + if ( !empty($sParent) && !file_exists($sParent)) |
|
158 | + { |
|
159 | + //prevents agains infinite loop when we can't create root folder |
|
160 | + if ( !is_null($lastFolder) && $lastFolder === $sParent) { |
|
161 | + return "Can't create $folderPath directory" ; |
|
162 | + } |
|
163 | + |
|
164 | + $sErrorMsg = CreateServerFolder($sParent, $folderPath); |
|
165 | + if ( $sErrorMsg != '' ) |
|
166 | + return $sErrorMsg ; |
|
167 | + } |
|
168 | + |
|
169 | + if ( !file_exists($folderPath)) |
|
170 | + { |
|
171 | + // Turn off all error reporting. |
|
172 | + error_reporting(0); |
|
173 | + |
|
174 | + $php_errormsg = '' ; |
|
175 | + // Enable error tracking to catch the error. |
|
176 | + ini_set('track_errors', '1'); |
|
177 | + |
|
178 | + if ( isset( $Config['ChmodOnFolderCreate'] ) && !$Config['ChmodOnFolderCreate'] ) |
|
179 | + { |
|
180 | + mkdir($folderPath); |
|
181 | + } |
|
182 | + else |
|
183 | + { |
|
184 | + $permissions = '0777'; |
|
185 | + if ( isset( $Config['ChmodOnFolderCreate'] ) && $Config['ChmodOnFolderCreate']) |
|
186 | + { |
|
187 | + $permissions = (string) $Config['ChmodOnFolderCreate']; |
|
188 | + } |
|
189 | + $permissionsdec = octdec($permissions); |
|
190 | + $permissionsdec |= octdec('0111'); // Set x bit required for directories |
|
191 | + dol_syslog("io.php permission = ".$permissions." ".$permissionsdec." ".decoct($permissionsdec)); |
|
192 | + // To create the folder with 0777 permissions, we need to set umask to zero. |
|
193 | + $oldumask = umask(0); |
|
194 | + mkdir($folderPath, $permissionsdec); |
|
195 | + umask($oldumask); |
|
196 | + } |
|
197 | + |
|
198 | + $sErrorMsg = $php_errormsg ; |
|
199 | + |
|
200 | + // Restore the configurations. |
|
201 | + ini_restore('track_errors'); |
|
202 | + ini_restore('error_reporting'); |
|
203 | + |
|
204 | + return $sErrorMsg ; |
|
205 | + } |
|
206 | + else |
|
207 | + return '' ; |
|
208 | 208 | } |
209 | 209 | |
210 | 210 | /** |
@@ -260,18 +260,18 @@ discard block |
||
260 | 260 | */ |
261 | 261 | function IsAllowedExt($sExtension, $resourceType) |
262 | 262 | { |
263 | - global $Config ; |
|
264 | - // Get the allowed and denied extensions arrays. |
|
265 | - $arAllowed = $Config['AllowedExtensions'][$resourceType] ; |
|
266 | - $arDenied = $Config['DeniedExtensions'][$resourceType] ; |
|
263 | + global $Config ; |
|
264 | + // Get the allowed and denied extensions arrays. |
|
265 | + $arAllowed = $Config['AllowedExtensions'][$resourceType] ; |
|
266 | + $arDenied = $Config['DeniedExtensions'][$resourceType] ; |
|
267 | 267 | |
268 | - if ( count($arAllowed) > 0 && !in_array($sExtension, $arAllowed)) |
|
269 | - return false ; |
|
268 | + if ( count($arAllowed) > 0 && !in_array($sExtension, $arAllowed)) |
|
269 | + return false ; |
|
270 | 270 | |
271 | - if ( count($arDenied) > 0 && in_array($sExtension, $arDenied)) |
|
272 | - return false ; |
|
271 | + if ( count($arDenied) > 0 && in_array($sExtension, $arDenied)) |
|
272 | + return false ; |
|
273 | 273 | |
274 | - return true ; |
|
274 | + return true ; |
|
275 | 275 | } |
276 | 276 | |
277 | 277 | /** |
@@ -282,11 +282,11 @@ discard block |
||
282 | 282 | */ |
283 | 283 | function IsAllowedType($resourceType) |
284 | 284 | { |
285 | - global $Config ; |
|
286 | - if ( !in_array($resourceType, $Config['ConfigAllowedTypes'])) |
|
287 | - return false ; |
|
285 | + global $Config ; |
|
286 | + if ( !in_array($resourceType, $Config['ConfigAllowedTypes'])) |
|
287 | + return false ; |
|
288 | 288 | |
289 | - return true ; |
|
289 | + return true ; |
|
290 | 290 | } |
291 | 291 | |
292 | 292 | /** |
@@ -297,12 +297,12 @@ discard block |
||
297 | 297 | */ |
298 | 298 | function IsAllowedCommand($sCommand) |
299 | 299 | { |
300 | - global $Config ; |
|
300 | + global $Config ; |
|
301 | 301 | |
302 | - if (! in_array($sCommand, $Config['ConfigAllowedCommands'])) |
|
303 | - return false ; |
|
302 | + if (! in_array($sCommand, $Config['ConfigAllowedCommands'])) |
|
303 | + return false ; |
|
304 | 304 | |
305 | - return true ; |
|
305 | + return true ; |
|
306 | 306 | } |
307 | 307 | |
308 | 308 | /** |
@@ -312,79 +312,79 @@ discard block |
||
312 | 312 | */ |
313 | 313 | function GetCurrentFolder() |
314 | 314 | { |
315 | - if (!isset($_GET)) { |
|
316 | - global $_GET; |
|
317 | - } |
|
318 | - $sCurrentFolder = isset( $_GET['CurrentFolder'] ) ? GETPOST('CurrentFolder', '', 1) : '/' ; |
|
319 | - |
|
320 | - // Check the current folder syntax (must begin and start with a slash). |
|
321 | - if (!preg_match('|/$|', $sCurrentFolder)) |
|
322 | - $sCurrentFolder .= '/' ; |
|
323 | - if (strpos($sCurrentFolder, '/') !== 0) |
|
324 | - $sCurrentFolder = '/' . $sCurrentFolder ; |
|
325 | - |
|
326 | - // Ensure the folder path has no double-slashes |
|
327 | - while ( strpos($sCurrentFolder, '//') !== false ) { |
|
328 | - $sCurrentFolder = str_replace('//', '/', $sCurrentFolder); |
|
329 | - } |
|
330 | - |
|
331 | - // Check for invalid folder paths (..) |
|
332 | - if ( strpos($sCurrentFolder, '..') || strpos($sCurrentFolder, "\\")) |
|
333 | - SendError(102, ''); |
|
334 | - |
|
335 | - if ( preg_match(",(/\.)|[[:cntrl:]]|(//)|(\\\\)|([\:\*\?\"\<\>\|]),", $sCurrentFolder)) |
|
336 | - SendError(102, ''); |
|
337 | - |
|
338 | - return $sCurrentFolder ; |
|
315 | + if (!isset($_GET)) { |
|
316 | + global $_GET; |
|
317 | + } |
|
318 | + $sCurrentFolder = isset( $_GET['CurrentFolder'] ) ? GETPOST('CurrentFolder', '', 1) : '/' ; |
|
319 | + |
|
320 | + // Check the current folder syntax (must begin and start with a slash). |
|
321 | + if (!preg_match('|/$|', $sCurrentFolder)) |
|
322 | + $sCurrentFolder .= '/' ; |
|
323 | + if (strpos($sCurrentFolder, '/') !== 0) |
|
324 | + $sCurrentFolder = '/' . $sCurrentFolder ; |
|
325 | + |
|
326 | + // Ensure the folder path has no double-slashes |
|
327 | + while ( strpos($sCurrentFolder, '//') !== false ) { |
|
328 | + $sCurrentFolder = str_replace('//', '/', $sCurrentFolder); |
|
329 | + } |
|
330 | + |
|
331 | + // Check for invalid folder paths (..) |
|
332 | + if ( strpos($sCurrentFolder, '..') || strpos($sCurrentFolder, "\\")) |
|
333 | + SendError(102, ''); |
|
334 | + |
|
335 | + if ( preg_match(",(/\.)|[[:cntrl:]]|(//)|(\\\\)|([\:\*\?\"\<\>\|]),", $sCurrentFolder)) |
|
336 | + SendError(102, ''); |
|
337 | + |
|
338 | + return $sCurrentFolder ; |
|
339 | 339 | } |
340 | 340 | |
341 | 341 | // Do a cleanup of the folder name to avoid possible problems |
342 | 342 | function SanitizeFolderName( $sNewFolderName ) |
343 | 343 | { |
344 | - $sNewFolderName = stripslashes($sNewFolderName); |
|
344 | + $sNewFolderName = stripslashes($sNewFolderName); |
|
345 | 345 | |
346 | - // Remove . \ / | : ? * " < > |
|
347 | - $sNewFolderName = preg_replace('/\\.|\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[[:cntrl:]]/', '_', $sNewFolderName); |
|
346 | + // Remove . \ / | : ? * " < > |
|
347 | + $sNewFolderName = preg_replace('/\\.|\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[[:cntrl:]]/', '_', $sNewFolderName); |
|
348 | 348 | |
349 | - return $sNewFolderName ; |
|
349 | + return $sNewFolderName ; |
|
350 | 350 | } |
351 | 351 | |
352 | 352 | // Do a cleanup of the file name to avoid possible problems |
353 | 353 | function SanitizeFileName( $sNewFileName ) |
354 | 354 | { |
355 | - global $Config ; |
|
355 | + global $Config ; |
|
356 | 356 | |
357 | - $sNewFileName = stripslashes($sNewFileName); |
|
357 | + $sNewFileName = stripslashes($sNewFileName); |
|
358 | 358 | |
359 | - // Replace dots in the name with underscores (only one dot can be there... security issue). |
|
360 | - if ( $Config['ForceSingleExtension'] ) |
|
361 | - $sNewFileName = preg_replace('/\\.(?![^.]*$)/', '_', $sNewFileName); |
|
359 | + // Replace dots in the name with underscores (only one dot can be there... security issue). |
|
360 | + if ( $Config['ForceSingleExtension'] ) |
|
361 | + $sNewFileName = preg_replace('/\\.(?![^.]*$)/', '_', $sNewFileName); |
|
362 | 362 | |
363 | - // Remove \ / | : ? * " < > |
|
364 | - $sNewFileName = preg_replace('/\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[[:cntrl:]]/', '_', $sNewFileName); |
|
363 | + // Remove \ / | : ? * " < > |
|
364 | + $sNewFileName = preg_replace('/\\\\|\\/|\\||\\:|\\?|\\*|"|<|>|[[:cntrl:]]/', '_', $sNewFileName); |
|
365 | 365 | |
366 | - return $sNewFileName ; |
|
366 | + return $sNewFileName ; |
|
367 | 367 | } |
368 | 368 | |
369 | 369 | // This is the function that sends the results of the uploading process. |
370 | 370 | function SendUploadResults( $errorNumber, $fileUrl = '', $fileName = '', $customMsg = '' ) |
371 | 371 | { |
372 | - // Minified version of the document.domain automatic fix script (#1919). |
|
373 | - // The original script can be found at _dev/domain_fix_template.js |
|
374 | - echo <<<EOF |
|
372 | + // Minified version of the document.domain automatic fix script (#1919). |
|
373 | + // The original script can be found at _dev/domain_fix_template.js |
|
374 | + echo <<<EOF |
|
375 | 375 | <script type="text/javascript"> |
376 | 376 | (function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.*?(?:\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})(); |
377 | 377 | EOF; |
378 | 378 | |
379 | - if ($errorNumber && $errorNumber != 201) { |
|
380 | - $fileUrl = ""; |
|
381 | - $fileName = ""; |
|
382 | - } |
|
379 | + if ($errorNumber && $errorNumber != 201) { |
|
380 | + $fileUrl = ""; |
|
381 | + $fileName = ""; |
|
382 | + } |
|
383 | 383 | |
384 | - $rpl = array( '\\' => '\\\\', '"' => '\\"' ); |
|
385 | - echo 'window.parent.OnUploadCompleted(' . $errorNumber . ',"' . strtr($fileUrl, $rpl) . '","' . strtr($fileName, $rpl) . '", "' . strtr($customMsg, $rpl) . '");' ; |
|
386 | - echo '</script>' ; |
|
387 | - exit ; |
|
384 | + $rpl = array( '\\' => '\\\\', '"' => '\\"' ); |
|
385 | + echo 'window.parent.OnUploadCompleted(' . $errorNumber . ',"' . strtr($fileUrl, $rpl) . '","' . strtr($fileName, $rpl) . '", "' . strtr($customMsg, $rpl) . '");' ; |
|
386 | + echo '</script>' ; |
|
387 | + exit ; |
|
388 | 388 | } |
389 | 389 | |
390 | 390 | |
@@ -401,11 +401,11 @@ discard block |
||
401 | 401 | */ |
402 | 402 | function SendCKEditorResults($callback, $sFileUrl, $customMsg = '') |
403 | 403 | { |
404 | - echo '<script type="text/javascript">'; |
|
404 | + echo '<script type="text/javascript">'; |
|
405 | 405 | |
406 | - $rpl = array( '\\' => '\\\\', '"' => '\\"' ); |
|
406 | + $rpl = array( '\\' => '\\\\', '"' => '\\"' ); |
|
407 | 407 | |
408 | - echo 'window.parent.CKEDITOR.tools.callFunction("'. $callback. '","'. strtr($sFileUrl, $rpl). '", "'. strtr($customMsg, $rpl). '");' ; |
|
408 | + echo 'window.parent.CKEDITOR.tools.callFunction("'. $callback. '","'. strtr($sFileUrl, $rpl). '", "'. strtr($customMsg, $rpl). '");' ; |
|
409 | 409 | |
410 | - echo '</script>'; |
|
410 | + echo '</script>'; |
|
411 | 411 | } |
@@ -31,33 +31,33 @@ discard block |
||
31 | 31 | */ |
32 | 32 | function GetFolders($resourceType, $currentFolder) |
33 | 33 | { |
34 | - // Map the virtual path to the local server path. |
|
35 | - $sServerDir = ServerMapFolder($resourceType, $currentFolder, 'GetFolders'); |
|
34 | + // Map the virtual path to the local server path. |
|
35 | + $sServerDir = ServerMapFolder($resourceType, $currentFolder, 'GetFolders'); |
|
36 | 36 | |
37 | - // Array that will hold the folders names. |
|
38 | - $aFolders = array(); |
|
37 | + // Array that will hold the folders names. |
|
38 | + $aFolders = array(); |
|
39 | 39 | |
40 | - $oCurrentFolder = @opendir($sServerDir); |
|
40 | + $oCurrentFolder = @opendir($sServerDir); |
|
41 | 41 | |
42 | - if ($oCurrentFolder !== false) |
|
43 | - { |
|
44 | - while ( $sFile = readdir($oCurrentFolder) ) |
|
45 | - { |
|
46 | - if ( $sFile != '.' && $sFile != '..' && is_dir($sServerDir . $sFile) ) |
|
47 | - $aFolders[] = '<Folder name="' . ConvertToXmlAttribute($sFile) . '" />' ; |
|
48 | - } |
|
49 | - closedir($oCurrentFolder); |
|
50 | - } |
|
42 | + if ($oCurrentFolder !== false) |
|
43 | + { |
|
44 | + while ( $sFile = readdir($oCurrentFolder) ) |
|
45 | + { |
|
46 | + if ( $sFile != '.' && $sFile != '..' && is_dir($sServerDir . $sFile) ) |
|
47 | + $aFolders[] = '<Folder name="' . ConvertToXmlAttribute($sFile) . '" />' ; |
|
48 | + } |
|
49 | + closedir($oCurrentFolder); |
|
50 | + } |
|
51 | 51 | |
52 | - // Open the "Folders" node. |
|
53 | - echo "<Folders>" ; |
|
52 | + // Open the "Folders" node. |
|
53 | + echo "<Folders>" ; |
|
54 | 54 | |
55 | - natcasesort($aFolders); |
|
56 | - foreach ( $aFolders as $sFolder ) |
|
57 | - echo $sFolder ; |
|
55 | + natcasesort($aFolders); |
|
56 | + foreach ( $aFolders as $sFolder ) |
|
57 | + echo $sFolder ; |
|
58 | 58 | |
59 | - // Close the "Folders" node. |
|
60 | - echo "</Folders>" ; |
|
59 | + // Close the "Folders" node. |
|
60 | + echo "</Folders>" ; |
|
61 | 61 | } |
62 | 62 | |
63 | 63 | /** |
@@ -69,60 +69,60 @@ discard block |
||
69 | 69 | */ |
70 | 70 | function GetFoldersAndFiles( $resourceType, $currentFolder ) |
71 | 71 | { |
72 | - // Map the virtual path to the local server path. |
|
73 | - $sServerDir = ServerMapFolder($resourceType, $currentFolder, 'GetFoldersAndFiles'); |
|
74 | - |
|
75 | - // Arrays that will hold the folders and files names. |
|
76 | - $aFolders = array(); |
|
77 | - $aFiles = array(); |
|
78 | - |
|
79 | - $oCurrentFolder = @opendir($sServerDir); |
|
80 | - |
|
81 | - if ($oCurrentFolder !== false) |
|
82 | - { |
|
83 | - while ( $sFile = readdir($oCurrentFolder) ) |
|
84 | - { |
|
85 | - if ( $sFile != '.' && $sFile != '..' ) |
|
86 | - { |
|
87 | - if ( is_dir($sServerDir . $sFile) ) |
|
88 | - $aFolders[] = '<Folder name="' . ConvertToXmlAttribute($sFile) . '" />' ; |
|
89 | - else |
|
90 | - { |
|
91 | - $iFileSize = @filesize($sServerDir . $sFile); |
|
92 | - if ( !$iFileSize ) { |
|
93 | - $iFileSize = 0 ; |
|
94 | - } |
|
95 | - if ( $iFileSize > 0 ) |
|
96 | - { |
|
97 | - $iFileSize = round($iFileSize / 1024); |
|
98 | - if ( $iFileSize < 1 ) |
|
99 | - $iFileSize = 1 ; |
|
100 | - } |
|
101 | - |
|
102 | - $aFiles[] = '<File name="' . ConvertToXmlAttribute($sFile) . '" size="' . $iFileSize . '" />' ; |
|
103 | - } |
|
104 | - } |
|
105 | - } |
|
106 | - closedir($oCurrentFolder); |
|
107 | - } |
|
108 | - |
|
109 | - // Send the folders |
|
110 | - natcasesort($aFolders); |
|
111 | - echo '<Folders>' ; |
|
112 | - |
|
113 | - foreach ( $aFolders as $sFolder ) |
|
114 | - echo $sFolder ; |
|
115 | - |
|
116 | - echo '</Folders>' ; |
|
117 | - |
|
118 | - // Send the files |
|
119 | - natcasesort($aFiles); |
|
120 | - echo '<Files>' ; |
|
121 | - |
|
122 | - foreach ( $aFiles as $sFiles ) |
|
123 | - echo $sFiles ; |
|
124 | - |
|
125 | - echo '</Files>' ; |
|
72 | + // Map the virtual path to the local server path. |
|
73 | + $sServerDir = ServerMapFolder($resourceType, $currentFolder, 'GetFoldersAndFiles'); |
|
74 | + |
|
75 | + // Arrays that will hold the folders and files names. |
|
76 | + $aFolders = array(); |
|
77 | + $aFiles = array(); |
|
78 | + |
|
79 | + $oCurrentFolder = @opendir($sServerDir); |
|
80 | + |
|
81 | + if ($oCurrentFolder !== false) |
|
82 | + { |
|
83 | + while ( $sFile = readdir($oCurrentFolder) ) |
|
84 | + { |
|
85 | + if ( $sFile != '.' && $sFile != '..' ) |
|
86 | + { |
|
87 | + if ( is_dir($sServerDir . $sFile) ) |
|
88 | + $aFolders[] = '<Folder name="' . ConvertToXmlAttribute($sFile) . '" />' ; |
|
89 | + else |
|
90 | + { |
|
91 | + $iFileSize = @filesize($sServerDir . $sFile); |
|
92 | + if ( !$iFileSize ) { |
|
93 | + $iFileSize = 0 ; |
|
94 | + } |
|
95 | + if ( $iFileSize > 0 ) |
|
96 | + { |
|
97 | + $iFileSize = round($iFileSize / 1024); |
|
98 | + if ( $iFileSize < 1 ) |
|
99 | + $iFileSize = 1 ; |
|
100 | + } |
|
101 | + |
|
102 | + $aFiles[] = '<File name="' . ConvertToXmlAttribute($sFile) . '" size="' . $iFileSize . '" />' ; |
|
103 | + } |
|
104 | + } |
|
105 | + } |
|
106 | + closedir($oCurrentFolder); |
|
107 | + } |
|
108 | + |
|
109 | + // Send the folders |
|
110 | + natcasesort($aFolders); |
|
111 | + echo '<Folders>' ; |
|
112 | + |
|
113 | + foreach ( $aFolders as $sFolder ) |
|
114 | + echo $sFolder ; |
|
115 | + |
|
116 | + echo '</Folders>' ; |
|
117 | + |
|
118 | + // Send the files |
|
119 | + natcasesort($aFiles); |
|
120 | + echo '<Files>' ; |
|
121 | + |
|
122 | + foreach ( $aFiles as $sFiles ) |
|
123 | + echo $sFiles ; |
|
124 | + |
|
125 | + echo '</Files>' ; |
|
126 | 126 | } |
127 | 127 | |
128 | 128 | /** |
@@ -134,53 +134,53 @@ discard block |
||
134 | 134 | */ |
135 | 135 | function CreateFolder( $resourceType, $currentFolder ) |
136 | 136 | { |
137 | - if (!isset($_GET)) { |
|
138 | - global $_GET; |
|
139 | - } |
|
140 | - $sErrorNumber = '0' ; |
|
141 | - $sErrorMsg = '' ; |
|
142 | - |
|
143 | - if ( isset( $_GET['NewFolderName'] ) ) |
|
144 | - { |
|
145 | - $sNewFolderName = $_GET['NewFolderName'] ; |
|
146 | - $sNewFolderName = SanitizeFolderName($sNewFolderName); |
|
147 | - |
|
148 | - if (strpos($sNewFolderName, '..') !== false) |
|
149 | - $sErrorNumber = '102' ; // Invalid folder name. |
|
150 | - else |
|
151 | - { |
|
152 | - // Map the virtual path to the local server path of the current folder. |
|
153 | - $sServerDir = ServerMapFolder($resourceType, $currentFolder, 'CreateFolder'); |
|
154 | - |
|
155 | - if ( is_writable($sServerDir) ) |
|
156 | - { |
|
157 | - $sServerDir .= $sNewFolderName ; |
|
158 | - |
|
159 | - $sErrorMsg = CreateServerFolder($sServerDir); |
|
160 | - |
|
161 | - switch ( $sErrorMsg ) |
|
162 | - { |
|
163 | - case '': |
|
164 | - $sErrorNumber = '0' ; |
|
165 | - break; |
|
166 | - case 'Invalid argument' : |
|
167 | - case 'No such file or directory' : |
|
168 | - $sErrorNumber = '102' ; // Path too long. |
|
169 | - break ; |
|
170 | - default: |
|
171 | - $sErrorNumber = '110' ; |
|
172 | - break ; |
|
173 | - } |
|
174 | - } |
|
175 | - else |
|
176 | - $sErrorNumber = '103' ; |
|
177 | - } |
|
178 | - } |
|
179 | - else |
|
180 | - $sErrorNumber = '102' ; |
|
181 | - |
|
182 | - // Create the "Error" node. |
|
183 | - echo '<Error number="' . $sErrorNumber . '" />' ; |
|
137 | + if (!isset($_GET)) { |
|
138 | + global $_GET; |
|
139 | + } |
|
140 | + $sErrorNumber = '0' ; |
|
141 | + $sErrorMsg = '' ; |
|
142 | + |
|
143 | + if ( isset( $_GET['NewFolderName'] ) ) |
|
144 | + { |
|
145 | + $sNewFolderName = $_GET['NewFolderName'] ; |
|
146 | + $sNewFolderName = SanitizeFolderName($sNewFolderName); |
|
147 | + |
|
148 | + if (strpos($sNewFolderName, '..') !== false) |
|
149 | + $sErrorNumber = '102' ; // Invalid folder name. |
|
150 | + else |
|
151 | + { |
|
152 | + // Map the virtual path to the local server path of the current folder. |
|
153 | + $sServerDir = ServerMapFolder($resourceType, $currentFolder, 'CreateFolder'); |
|
154 | + |
|
155 | + if ( is_writable($sServerDir) ) |
|
156 | + { |
|
157 | + $sServerDir .= $sNewFolderName ; |
|
158 | + |
|
159 | + $sErrorMsg = CreateServerFolder($sServerDir); |
|
160 | + |
|
161 | + switch ( $sErrorMsg ) |
|
162 | + { |
|
163 | + case '': |
|
164 | + $sErrorNumber = '0' ; |
|
165 | + break; |
|
166 | + case 'Invalid argument' : |
|
167 | + case 'No such file or directory' : |
|
168 | + $sErrorNumber = '102' ; // Path too long. |
|
169 | + break ; |
|
170 | + default: |
|
171 | + $sErrorNumber = '110' ; |
|
172 | + break ; |
|
173 | + } |
|
174 | + } |
|
175 | + else |
|
176 | + $sErrorNumber = '103' ; |
|
177 | + } |
|
178 | + } |
|
179 | + else |
|
180 | + $sErrorNumber = '102' ; |
|
181 | + |
|
182 | + // Create the "Error" node. |
|
183 | + echo '<Error number="' . $sErrorNumber . '" />' ; |
|
184 | 184 | } |
185 | 185 | |
186 | 186 | // @CHANGE |
@@ -196,134 +196,134 @@ discard block |
||
196 | 196 | */ |
197 | 197 | function FileUpload($resourceType, $currentFolder, $sCommand, $CKEcallback = '') |
198 | 198 | { |
199 | - if (!isset($_FILES)) { |
|
200 | - global $_FILES; |
|
201 | - } |
|
202 | - $sErrorNumber = '0' ; |
|
203 | - $sFileName = '' ; |
|
204 | - |
|
205 | - if ( isset( $_FILES['NewFile'] ) && !is_null($_FILES['NewFile']['tmp_name']) |
|
206 | - // This is for the QuickUpload tab box |
|
199 | + if (!isset($_FILES)) { |
|
200 | + global $_FILES; |
|
201 | + } |
|
202 | + $sErrorNumber = '0' ; |
|
203 | + $sFileName = '' ; |
|
204 | + |
|
205 | + if ( isset( $_FILES['NewFile'] ) && !is_null($_FILES['NewFile']['tmp_name']) |
|
206 | + // This is for the QuickUpload tab box |
|
207 | 207 | or (isset($_FILES['upload']) && !is_null($_FILES['upload']['tmp_name']))) |
208 | - { |
|
209 | - global $Config ; |
|
210 | - |
|
211 | - $oFile = isset($_FILES['NewFile']) ? $_FILES['NewFile'] : $_FILES['upload']; |
|
212 | - |
|
213 | - // Map the virtual path to the local server path. |
|
214 | - $sServerDir = ServerMapFolder($resourceType, $currentFolder, $sCommand); |
|
215 | - |
|
216 | - // Get the uploaded file name. |
|
217 | - $sFileName = $oFile['name'] ; |
|
218 | - $sFileName = SanitizeFileName($sFileName); |
|
219 | - |
|
220 | - $sOriginalFileName = $sFileName ; |
|
221 | - |
|
222 | - // Get the extension. |
|
223 | - $sExtension = substr($sFileName, (strrpos($sFileName, '.') + 1)); |
|
224 | - $sExtension = strtolower($sExtension); |
|
225 | - |
|
226 | - if ( isset( $Config['SecureImageUploads'] ) ) |
|
227 | - { |
|
228 | - if ( ( $isImageValid = IsImageValid($oFile['tmp_name'], $sExtension) ) === false ) |
|
229 | - { |
|
230 | - $sErrorNumber = '202' ; |
|
231 | - } |
|
232 | - } |
|
233 | - |
|
234 | - if ( isset( $Config['HtmlExtensions'] ) ) |
|
235 | - { |
|
236 | - if (!IsHtmlExtension($sExtension, $Config['HtmlExtensions']) && |
|
237 | - ($detectHtml = DetectHtml($oFile['tmp_name'])) === true) |
|
238 | - { |
|
239 | - $sErrorNumber = '202' ; |
|
240 | - } |
|
241 | - } |
|
242 | - |
|
243 | - // Check if it is an allowed extension. |
|
244 | - if ( !$sErrorNumber && IsAllowedExt($sExtension, $resourceType) ) |
|
245 | - { |
|
246 | - $iCounter = 0 ; |
|
247 | - |
|
248 | - while ( true ) |
|
249 | - { |
|
250 | - $sFilePath = $sServerDir . $sFileName ; |
|
251 | - |
|
252 | - if ( is_file($sFilePath) ) |
|
253 | - { |
|
254 | - $iCounter++ ; |
|
255 | - $sFileName = RemoveExtension($sOriginalFileName) . '(' . $iCounter . ').' . $sExtension ; |
|
256 | - $sErrorNumber = '201' ; |
|
257 | - } |
|
258 | - else |
|
259 | - { |
|
260 | - move_uploaded_file($oFile['tmp_name'], $sFilePath); |
|
261 | - |
|
262 | - if ( is_file($sFilePath) ) |
|
263 | - { |
|
264 | - if ( isset( $Config['ChmodOnUpload'] ) && !$Config['ChmodOnUpload'] ) |
|
265 | - { |
|
266 | - break ; |
|
267 | - } |
|
268 | - |
|
269 | - $permissions = '0777'; |
|
270 | - if ( isset( $Config['ChmodOnUpload'] ) && $Config['ChmodOnUpload'] ) |
|
271 | - { |
|
272 | - $permissions = (string) $Config['ChmodOnUpload'] ; |
|
273 | - } |
|
274 | - $permissionsdec = octdec($permissions); |
|
275 | - dol_syslog("commands.php permission = ".$permissions." ".$permissionsdec." ".decoct($permissionsdec)); |
|
276 | - $oldumask = umask(0); |
|
277 | - chmod($sFilePath, $permissionsdec); |
|
278 | - umask($oldumask); |
|
279 | - } |
|
280 | - |
|
281 | - break ; |
|
282 | - } |
|
283 | - } |
|
284 | - |
|
285 | - if ( file_exists($sFilePath) ) |
|
286 | - { |
|
287 | - //previous checks failed, try once again |
|
288 | - if ( isset( $isImageValid ) && $isImageValid === -1 && IsImageValid($sFilePath, $sExtension) === false ) |
|
289 | - { |
|
290 | - @unlink($sFilePath); |
|
291 | - $sErrorNumber = '202' ; |
|
292 | - } |
|
293 | - else if ( isset( $detectHtml ) && $detectHtml === -1 && DetectHtml($sFilePath) === true ) |
|
294 | - { |
|
295 | - @unlink($sFilePath); |
|
296 | - $sErrorNumber = '202' ; |
|
297 | - } |
|
298 | - } |
|
299 | - } |
|
300 | - else |
|
301 | - $sErrorNumber = '202' ; |
|
302 | - } |
|
303 | - else |
|
304 | - $sErrorNumber = '202' ; |
|
305 | - |
|
306 | - |
|
307 | - $sFileUrl = CombinePaths(GetResourceTypePath($resourceType, $sCommand), $currentFolder); |
|
308 | - $sFileUrl = CombinePaths($sFileUrl, $sFileName); |
|
309 | - |
|
310 | - |
|
311 | - // @CHANGE |
|
312 | - //SendUploadResults( $sErrorNumber, $sFileUrl, $sFileName ); |
|
313 | - if($CKEcallback == '') |
|
208 | + { |
|
209 | + global $Config ; |
|
210 | + |
|
211 | + $oFile = isset($_FILES['NewFile']) ? $_FILES['NewFile'] : $_FILES['upload']; |
|
212 | + |
|
213 | + // Map the virtual path to the local server path. |
|
214 | + $sServerDir = ServerMapFolder($resourceType, $currentFolder, $sCommand); |
|
215 | + |
|
216 | + // Get the uploaded file name. |
|
217 | + $sFileName = $oFile['name'] ; |
|
218 | + $sFileName = SanitizeFileName($sFileName); |
|
219 | + |
|
220 | + $sOriginalFileName = $sFileName ; |
|
221 | + |
|
222 | + // Get the extension. |
|
223 | + $sExtension = substr($sFileName, (strrpos($sFileName, '.') + 1)); |
|
224 | + $sExtension = strtolower($sExtension); |
|
225 | + |
|
226 | + if ( isset( $Config['SecureImageUploads'] ) ) |
|
227 | + { |
|
228 | + if ( ( $isImageValid = IsImageValid($oFile['tmp_name'], $sExtension) ) === false ) |
|
229 | + { |
|
230 | + $sErrorNumber = '202' ; |
|
231 | + } |
|
232 | + } |
|
233 | + |
|
234 | + if ( isset( $Config['HtmlExtensions'] ) ) |
|
235 | + { |
|
236 | + if (!IsHtmlExtension($sExtension, $Config['HtmlExtensions']) && |
|
237 | + ($detectHtml = DetectHtml($oFile['tmp_name'])) === true) |
|
238 | + { |
|
239 | + $sErrorNumber = '202' ; |
|
240 | + } |
|
241 | + } |
|
242 | + |
|
243 | + // Check if it is an allowed extension. |
|
244 | + if ( !$sErrorNumber && IsAllowedExt($sExtension, $resourceType) ) |
|
245 | + { |
|
246 | + $iCounter = 0 ; |
|
247 | + |
|
248 | + while ( true ) |
|
249 | + { |
|
250 | + $sFilePath = $sServerDir . $sFileName ; |
|
251 | + |
|
252 | + if ( is_file($sFilePath) ) |
|
253 | + { |
|
254 | + $iCounter++ ; |
|
255 | + $sFileName = RemoveExtension($sOriginalFileName) . '(' . $iCounter . ').' . $sExtension ; |
|
256 | + $sErrorNumber = '201' ; |
|
257 | + } |
|
258 | + else |
|
259 | + { |
|
260 | + move_uploaded_file($oFile['tmp_name'], $sFilePath); |
|
261 | + |
|
262 | + if ( is_file($sFilePath) ) |
|
263 | + { |
|
264 | + if ( isset( $Config['ChmodOnUpload'] ) && !$Config['ChmodOnUpload'] ) |
|
265 | + { |
|
266 | + break ; |
|
267 | + } |
|
268 | + |
|
269 | + $permissions = '0777'; |
|
270 | + if ( isset( $Config['ChmodOnUpload'] ) && $Config['ChmodOnUpload'] ) |
|
271 | + { |
|
272 | + $permissions = (string) $Config['ChmodOnUpload'] ; |
|
273 | + } |
|
274 | + $permissionsdec = octdec($permissions); |
|
275 | + dol_syslog("commands.php permission = ".$permissions." ".$permissionsdec." ".decoct($permissionsdec)); |
|
276 | + $oldumask = umask(0); |
|
277 | + chmod($sFilePath, $permissionsdec); |
|
278 | + umask($oldumask); |
|
279 | + } |
|
280 | + |
|
281 | + break ; |
|
282 | + } |
|
283 | + } |
|
284 | + |
|
285 | + if ( file_exists($sFilePath) ) |
|
286 | + { |
|
287 | + //previous checks failed, try once again |
|
288 | + if ( isset( $isImageValid ) && $isImageValid === -1 && IsImageValid($sFilePath, $sExtension) === false ) |
|
289 | + { |
|
290 | + @unlink($sFilePath); |
|
291 | + $sErrorNumber = '202' ; |
|
292 | + } |
|
293 | + else if ( isset( $detectHtml ) && $detectHtml === -1 && DetectHtml($sFilePath) === true ) |
|
294 | + { |
|
295 | + @unlink($sFilePath); |
|
296 | + $sErrorNumber = '202' ; |
|
297 | + } |
|
298 | + } |
|
299 | + } |
|
300 | + else |
|
301 | + $sErrorNumber = '202' ; |
|
302 | + } |
|
303 | + else |
|
304 | + $sErrorNumber = '202' ; |
|
305 | + |
|
306 | + |
|
307 | + $sFileUrl = CombinePaths(GetResourceTypePath($resourceType, $sCommand), $currentFolder); |
|
308 | + $sFileUrl = CombinePaths($sFileUrl, $sFileName); |
|
309 | + |
|
310 | + |
|
311 | + // @CHANGE |
|
312 | + //SendUploadResults( $sErrorNumber, $sFileUrl, $sFileName ); |
|
313 | + if($CKEcallback == '') |
|
314 | 314 | { |
315 | 315 | // this line already exists so wrap the if block around it |
316 | 316 | SendUploadResults($sErrorNumber, $sFileUrl, $sFileName); |
317 | 317 | } |
318 | 318 | else |
319 | - { |
|
320 | - //issue the CKEditor Callback |
|
321 | - SendCKEditorResults( |
|
322 | - $CKEcallback, |
|
323 | - $sFileUrl, |
|
324 | - ($sErrorNumber != 0 ? 'Error '. $sErrorNumber. ' upload failed.' : 'Upload Successful') |
|
325 | - ); |
|
326 | - } |
|
327 | - |
|
328 | - exit; |
|
319 | + { |
|
320 | + //issue the CKEditor Callback |
|
321 | + SendCKEditorResults( |
|
322 | + $CKEcallback, |
|
323 | + $sFileUrl, |
|
324 | + ($sErrorNumber != 0 ? 'Error '. $sErrorNumber. ' upload failed.' : 'Upload Successful') |
|
325 | + ); |
|
326 | + } |
|
327 | + |
|
328 | + exit; |
|
329 | 329 | } |
@@ -31,8 +31,8 @@ discard block |
||
31 | 31 | */ |
32 | 32 | function RemoveFromStart($sourceString, $charToRemove) |
33 | 33 | { |
34 | - $sPattern = '|^' . $charToRemove . '+|' ; |
|
35 | - return preg_replace($sPattern, '', $sourceString); |
|
34 | + $sPattern = '|^' . $charToRemove . '+|' ; |
|
35 | + return preg_replace($sPattern, '', $sourceString); |
|
36 | 36 | } |
37 | 37 | |
38 | 38 | /** |
@@ -44,8 +44,8 @@ discard block |
||
44 | 44 | */ |
45 | 45 | function RemoveFromEnd($sourceString, $charToRemove) |
46 | 46 | { |
47 | - $sPattern = '|' . $charToRemove . '+$|' ; |
|
48 | - return preg_replace($sPattern, '', $sourceString); |
|
47 | + $sPattern = '|' . $charToRemove . '+$|' ; |
|
48 | + return preg_replace($sPattern, '', $sourceString); |
|
49 | 49 | } |
50 | 50 | |
51 | 51 | /** |
@@ -56,24 +56,24 @@ discard block |
||
56 | 56 | */ |
57 | 57 | function FindBadUtf8($string) |
58 | 58 | { |
59 | - $regex = '([\x00-\x7F]'. |
|
60 | - '|[\xC2-\xDF][\x80-\xBF]'. |
|
61 | - '|\xE0[\xA0-\xBF][\x80-\xBF]'. |
|
62 | - '|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}'. |
|
63 | - '|\xED[\x80-\x9F][\x80-\xBF]'. |
|
64 | - '|\xF0[\x90-\xBF][\x80-\xBF]{2}'. |
|
65 | - '|[\xF1-\xF3][\x80-\xBF]{3}'. |
|
66 | - '|\xF4[\x80-\x8F][\x80-\xBF]{2}'. |
|
67 | - '|(.{1}))'; |
|
68 | - |
|
69 | - while (preg_match('/'.$regex.'/S', $string, $matches)) { |
|
70 | - if ( isset($matches[2])) { |
|
71 | - return true; |
|
72 | - } |
|
73 | - $string = substr($string, strlen($matches[0])); |
|
74 | - } |
|
75 | - |
|
76 | - return false; |
|
59 | + $regex = '([\x00-\x7F]'. |
|
60 | + '|[\xC2-\xDF][\x80-\xBF]'. |
|
61 | + '|\xE0[\xA0-\xBF][\x80-\xBF]'. |
|
62 | + '|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}'. |
|
63 | + '|\xED[\x80-\x9F][\x80-\xBF]'. |
|
64 | + '|\xF0[\x90-\xBF][\x80-\xBF]{2}'. |
|
65 | + '|[\xF1-\xF3][\x80-\xBF]{3}'. |
|
66 | + '|\xF4[\x80-\x8F][\x80-\xBF]{2}'. |
|
67 | + '|(.{1}))'; |
|
68 | + |
|
69 | + while (preg_match('/'.$regex.'/S', $string, $matches)) { |
|
70 | + if ( isset($matches[2])) { |
|
71 | + return true; |
|
72 | + } |
|
73 | + $string = substr($string, strlen($matches[0])); |
|
74 | + } |
|
75 | + |
|
76 | + return false; |
|
77 | 77 | } |
78 | 78 | |
79 | 79 | /** |
@@ -84,23 +84,23 @@ discard block |
||
84 | 84 | */ |
85 | 85 | function ConvertToXmlAttribute( $value ) |
86 | 86 | { |
87 | - if ( defined('PHP_OS') ) |
|
88 | - { |
|
89 | - $os = PHP_OS ; |
|
90 | - } |
|
91 | - else |
|
92 | - { |
|
93 | - $os = php_uname(); |
|
94 | - } |
|
95 | - |
|
96 | - if (strtoupper(substr($os, 0, 3)) === 'WIN' || FindBadUtf8($value)) |
|
97 | - { |
|
98 | - return (utf8_encode(htmlspecialchars($value))); |
|
99 | - } |
|
100 | - else |
|
101 | - { |
|
102 | - return (htmlspecialchars($value)); |
|
103 | - } |
|
87 | + if ( defined('PHP_OS') ) |
|
88 | + { |
|
89 | + $os = PHP_OS ; |
|
90 | + } |
|
91 | + else |
|
92 | + { |
|
93 | + $os = php_uname(); |
|
94 | + } |
|
95 | + |
|
96 | + if (strtoupper(substr($os, 0, 3)) === 'WIN' || FindBadUtf8($value)) |
|
97 | + { |
|
98 | + return (utf8_encode(htmlspecialchars($value))); |
|
99 | + } |
|
100 | + else |
|
101 | + { |
|
102 | + return (htmlspecialchars($value)); |
|
103 | + } |
|
104 | 104 | } |
105 | 105 | |
106 | 106 | /** |
@@ -112,16 +112,16 @@ discard block |
||
112 | 112 | */ |
113 | 113 | function IsHtmlExtension( $ext, $formExtensions ) |
114 | 114 | { |
115 | - if (!$formExtensions || !is_array($formExtensions) ) |
|
116 | - { |
|
117 | - return false ; |
|
118 | - } |
|
119 | - $lcaseHtmlExtensions = array(); |
|
120 | - foreach ( $formExtensions as $key => $val ) |
|
121 | - { |
|
122 | - $lcaseHtmlExtensions[$key] = strtolower($val); |
|
123 | - } |
|
124 | - return in_array($ext, $lcaseHtmlExtensions); |
|
115 | + if (!$formExtensions || !is_array($formExtensions) ) |
|
116 | + { |
|
117 | + return false ; |
|
118 | + } |
|
119 | + $lcaseHtmlExtensions = array(); |
|
120 | + foreach ( $formExtensions as $key => $val ) |
|
121 | + { |
|
122 | + $lcaseHtmlExtensions[$key] = strtolower($val); |
|
123 | + } |
|
124 | + return in_array($ext, $lcaseHtmlExtensions); |
|
125 | 125 | } |
126 | 126 | |
127 | 127 | /** |
@@ -134,63 +134,63 @@ discard block |
||
134 | 134 | */ |
135 | 135 | function DetectHtml( $filePath ) |
136 | 136 | { |
137 | - $fp = @fopen($filePath, 'rb'); |
|
138 | - |
|
139 | - //open_basedir restriction, see #1906 |
|
140 | - if ( $fp === false || !flock($fp, LOCK_SH) ) |
|
141 | - { |
|
142 | - return -1 ; |
|
143 | - } |
|
144 | - |
|
145 | - $chunk = fread($fp, 1024); |
|
146 | - flock($fp, LOCK_UN); |
|
147 | - fclose($fp); |
|
148 | - |
|
149 | - $chunk = strtolower($chunk); |
|
150 | - |
|
151 | - if (!$chunk) |
|
152 | - { |
|
153 | - return false ; |
|
154 | - } |
|
155 | - |
|
156 | - $chunk = trim($chunk); |
|
157 | - |
|
158 | - if ( preg_match("/<!DOCTYPE\W*X?HTML/sim", $chunk) ) |
|
159 | - { |
|
160 | - return true; |
|
161 | - } |
|
162 | - |
|
163 | - $tags = array( '<body', '<head', '<html', '<img', '<pre', '<script', '<table', '<title' ); |
|
164 | - |
|
165 | - foreach( $tags as $tag ) |
|
166 | - { |
|
167 | - if( false !== strpos($chunk, $tag) ) |
|
168 | - { |
|
169 | - return true ; |
|
170 | - } |
|
171 | - } |
|
172 | - |
|
173 | - //type = javascript |
|
174 | - if ( preg_match('!type\s*=\s*[\'"]?\s*(?:\w*/)?(?:ecma|java)!sim', $chunk) ) |
|
175 | - { |
|
176 | - return true ; |
|
177 | - } |
|
178 | - |
|
179 | - //href = javascript |
|
180 | - //src = javascript |
|
181 | - //data = javascript |
|
182 | - if ( preg_match('!(?:href|src|data)\s*=\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk) ) |
|
183 | - { |
|
184 | - return true ; |
|
185 | - } |
|
186 | - |
|
187 | - //url(javascript |
|
188 | - if ( preg_match('!url\s*\(\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk) ) |
|
189 | - { |
|
190 | - return true ; |
|
191 | - } |
|
192 | - |
|
193 | - return false ; |
|
137 | + $fp = @fopen($filePath, 'rb'); |
|
138 | + |
|
139 | + //open_basedir restriction, see #1906 |
|
140 | + if ( $fp === false || !flock($fp, LOCK_SH) ) |
|
141 | + { |
|
142 | + return -1 ; |
|
143 | + } |
|
144 | + |
|
145 | + $chunk = fread($fp, 1024); |
|
146 | + flock($fp, LOCK_UN); |
|
147 | + fclose($fp); |
|
148 | + |
|
149 | + $chunk = strtolower($chunk); |
|
150 | + |
|
151 | + if (!$chunk) |
|
152 | + { |
|
153 | + return false ; |
|
154 | + } |
|
155 | + |
|
156 | + $chunk = trim($chunk); |
|
157 | + |
|
158 | + if ( preg_match("/<!DOCTYPE\W*X?HTML/sim", $chunk) ) |
|
159 | + { |
|
160 | + return true; |
|
161 | + } |
|
162 | + |
|
163 | + $tags = array( '<body', '<head', '<html', '<img', '<pre', '<script', '<table', '<title' ); |
|
164 | + |
|
165 | + foreach( $tags as $tag ) |
|
166 | + { |
|
167 | + if( false !== strpos($chunk, $tag) ) |
|
168 | + { |
|
169 | + return true ; |
|
170 | + } |
|
171 | + } |
|
172 | + |
|
173 | + //type = javascript |
|
174 | + if ( preg_match('!type\s*=\s*[\'"]?\s*(?:\w*/)?(?:ecma|java)!sim', $chunk) ) |
|
175 | + { |
|
176 | + return true ; |
|
177 | + } |
|
178 | + |
|
179 | + //href = javascript |
|
180 | + //src = javascript |
|
181 | + //data = javascript |
|
182 | + if ( preg_match('!(?:href|src|data)\s*=\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk) ) |
|
183 | + { |
|
184 | + return true ; |
|
185 | + } |
|
186 | + |
|
187 | + //url(javascript |
|
188 | + if ( preg_match('!url\s*\(\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk) ) |
|
189 | + { |
|
190 | + return true ; |
|
191 | + } |
|
192 | + |
|
193 | + return false ; |
|
194 | 194 | } |
195 | 195 | |
196 | 196 | /** |
@@ -204,11 +204,11 @@ discard block |
||
204 | 204 | */ |
205 | 205 | function IsImageValid( $filePath, $extension ) |
206 | 206 | { |
207 | - if (!@is_readable($filePath)) { |
|
208 | - return -1; |
|
209 | - } |
|
207 | + if (!@is_readable($filePath)) { |
|
208 | + return -1; |
|
209 | + } |
|
210 | 210 | |
211 | - $imageCheckExtensions = array( |
|
211 | + $imageCheckExtensions = array( |
|
212 | 212 | 'gif', |
213 | 213 | 'jpeg', |
214 | 214 | 'jpg', |
@@ -228,14 +228,14 @@ discard block |
||
228 | 228 | 'wbmp' |
229 | 229 | ); |
230 | 230 | |
231 | - if (!in_array($extension, $imageCheckExtensions) ) { |
|
232 | - return true; |
|
233 | - } |
|
231 | + if (!in_array($extension, $imageCheckExtensions) ) { |
|
232 | + return true; |
|
233 | + } |
|
234 | 234 | |
235 | - if (@getimagesize($filePath) === false) { |
|
236 | - return false ; |
|
237 | - } |
|
235 | + if (@getimagesize($filePath) === false) { |
|
236 | + return false ; |
|
237 | + } |
|
238 | 238 | |
239 | - return true; |
|
239 | + return true; |
|
240 | 240 | } |
241 | 241 |