dbXapp 2.0
RAD, CMS, Module und Runtime-IDE fuer dbXapp
Loading...
Searching...
No Matches
dbxContent_images.class.php
Go to the documentation of this file.
1<?php
2namespace dbx\dbxContent_admin;
3
4Class dbxContent_images {
5
6 private function convert_image_to_webp($file) {
7 if (!extension_loaded('gd') || !function_exists('imagewebp')) return '';
8 if ($file === '' || !is_file($file) || !is_readable($file)) return '';
9
10 $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
11 if (!in_array($ext, array('jpg','jpeg','png'), true)) return '';
12
13 $image = $ext === 'png'
14 ? (function_exists('imagecreatefrompng') ? @imagecreatefrompng($file) : false)
15 : (function_exists('imagecreatefromjpeg') ? @imagecreatefromjpeg($file) : false);
16 if (!$image) return '';
17
18 imagepalettetotruecolor($image);
19 imagealphablending($image, true);
20 imagesavealpha($image, true);
21
22 $webp = preg_replace('/\.[^.]+$/', '.webp', $file);
23 if ($webp === $file || $webp === null) {
24 imagedestroy($image);
25 return '';
26 }
27
28 $ok = @imagewebp($image, $webp, 86);
29 imagedestroy($image);
30 if (!$ok || !is_file($webp)) return '';
31
32 @unlink($file);
33 return basename($webp);
34 }
35
36 public function check_data($iid,$data) {
37 if (is_array($data)) {
38 $img_src='';
39 $img_key='upload'.$iid;
40 //$path = dbx_get_base_dir().'dbx/modules/dbxContent/img/';
41 $path = dbx_get_file_dir().'/dbxContent/img/';
42
43 if (isset($data[$img_key])) $img_src=$data[$img_key];
44 if (!$img_src) $img_src='content.gif';
45
46 $path_img_ext=$path.$img_src;
47 if (!file_exists($path_img_ext)) $img_src='content.gif';
48
49 $data[$img_key]=$img_src;
50 }
51 return $data;
52 }
53
54
55 public function run() {
56 $content=''; $ok=false;
57
58 $iid=dbx()->get_modul_var('iid',1,'int');
59 //$img=dbx()->get_modul_var('img','1');
60 $lng=dbx()->get_system_var('dbx_lng','de');
61
62 $rid=dbx()->get_modul_var('rid',0);
63 $obs=dbx()->get_modul_var('dbx_obs_fld');
64 $obv=dbx()->get_modul_var('dbx_obs_val');
65 //dbx_debug("#Observ rid=($rid) obs=($obs) obv=($obv)");
66 if (!$rid) {
67 if ($obs && $obv) $rid=$obv;
68 }
69
70
71 $oForm = dbx()->get_system_obj('dbxForm');
72 $db = dbx()->get_system_obj('dbxDB');
73 //$path = dbx_get_base_dir().'dbx/modules/dbxContent/img/';
74 //$url = dbx()->get_base_url().'dbx/modules/dbxContent/img/';
75 $path = dbx_get_file_dir().'/dbxContent/img/';
76 $url = dbx()->get_base_url().'files/dbxContent/img/';
77
78 $target= dbx()->get_query_var('dbx_target');
79
80 $tab_content = dbx_lng_name('content', $lng);
81 $img_key = 'upload'.$iid;
82 $obs_key = 'obs_'.$img_key;
83
84
85 $data=$db->select1($tab_content,$rid); //,"id,$img_key,");
86 if (!is_array($data)) { return "Content ID ($rid) nicht gefunden"; }
87
88
89 $oForm->init('dbxContent_image_'.$iid,'form-images');
90 $oForm->_data =$data;
91 $oForm->_action="?dbx_modul=dbxContent_admin&dbx_run1=content&dbx_run2=images&rid=$rid&iid=$iid"; // set_action() rid 'new' or record.id
92 if (!$rid) $oForm->_tpl='form-images_wait';
93
94 if ($rid) {
95 $oForm->add_fld('img_alt_'.$iid,'text-label' ,rules: 'words',label: 'Kurtz Beschreibung'); //#+
96 $oForm->add_fld('img_des_'.$iid,'textarea-label',rules: 'words',label: 'Beschreibung'); //#+
97 }
98
99
100 $submit=$oForm->submit();
101 if ($submit) {
102 $img_file=dbx()->get_modul_var($obs_key,'no-img.png','filename-img');
103
104 dbx()->debug("##GEt val=($obs_key) for=($img_key) val=($img_file)");
105
106 if ($img_file) {
107 $oForm->_post[$img_key]=$img_file;
108 $ok=$oForm->save_post($tab_content,$rid);
109 if ($ok) $oForm->_msg_success="Bild: ($img_file)";
110 //$oForm->_data[$img_key]=$img_file;
111 } else {
112 $oForm->add_fld_error($obs_key,'x');
113 $imgag_file=dbx()->get_request_var($obs_key,0,'*');
114 $oForm->_msg_error="Kein Bild: ($img_file)";
115 }
116 }
117 //dbx_debug("FORM submit=($submit)",$_GET,$_POST);
118
119 if (!empty($_FILES) ) {
120 $oUpload=dbx()->get_system_obj('dbxUpload'); // https://github.com/verot/class.upload.php
121 $oUpload->upload($_FILES['upload_file']);
122 $oUpload->allowed = array('image/*');
123 $oUpload->file_overwrite = true;
124 //$oUpload->file_new_name_body = 'avatar';
125 $oUpload->image_resize = true;
126 $oUpload->image_ratio_crop = true;
127 $oUpload->image_x = 1280;
128 $oUpload->image_y = 800;
129
130 //$oUpload->image_ratio_y = true;
131 $oUpload->process($path);
132 if ($oUpload->processed) {
133 $img=$oUpload->file_dst_pathname;
134 $uploaded_name = $oUpload->file_dst_name;
135 $webp_name = $this->convert_image_to_webp($img);
136 if ($webp_name !== '') {
137 $uploaded_name = $webp_name;
138 }
139 $field_values['id']=$rid;
140 $field_values[$img_key]=$uploaded_name;
141
142 $ok=$oForm->save_post($tab_content,$rid,$field_values);
143
144 //$ok=$db->save($tab_content,$field_values,$rid);
145 if ($ok) {
146 $data[$img_key]=$uploaded_name;
147 $url_img_ext=$url.$uploaded_name;
148 $img_src =$uploaded_name;
149 $oForm->set_msg_ok("Bild Datei erfolgreich hochgeladen.");
150 }
151 } else {
152 $content= 'error : ' . $oUpload->error;
153 $oForm->set_msg_error("Bild Datei nicht hochgeladen.");
154 }
155 $oUpload->clean();
156 } else {
157 // Update Data if Filebrauser select Img
158
159 }
160
161 $oForm->_msg_info= 'Bild ('.$iid.')';
162
163
164
165 $oForm->_data=$this->check_data($iid,$oForm->_data);
166 $img_src=$oForm->_data[$img_key];
167 $url_img_ext=$url.$img_src;
168
169
170
171 $modal1['title'] ='Bild Auswahl';
172 $modal1['label'] ='Filebrauser';
173 $modal1['dbx_get'] ='?dbx_modul=dbxContent_admin&dbx_run1=content&dbx_run2=ibrowser&dbx_caller='.$obs_key;
174 //$modal1['dbx_jsys'] ='dbx_select_max=1&dbx_caller='.$obs_key.'_{i}';
175
176
177 $img_data['dbx_get'] = '?dbx_modul=dbxContent_admin&dbx_run1=set_observer';
178 $img_data['dbx_target'] = $img_key.'_{i}';
179 $img_data['id'] = 'selectimg_{i}';
180 $img_data['name'] = $img_key;
181 $img_data['src'] = $url_img_ext;
182 $img_data['class'] = 'dbxImg';
183
184
185
186 $oForm->add_rep('rid',$rid);
187 $oForm->add_rep('iid',$iid);
188
189
190
191 if (!$rid) {
192 $observer='obs_content_rid';
193 $observ['name'] = $observer;
194 $observ['form'] = 'dbx_form_{i}';
195 $observ['observ'] = 'content_rid'; // field must be dev inside one form of the view
196 $observ['value'] = $rid; // $img_src
197 $observ['old'] = $rid;
198
199 $oForm->add_obj('img_wait','modul|img_wait',"src=$url_img_ext");
200 $oForm->add_obj('msg','alert-warning','msg=Ein Content Bild kann erst nach dem Speichern der Systemdaten vom Content gewählt werden.');
201 $oForm->add_obj($observer,'observer',$observ);
202
203 $oForm->add_js_observe($observer,11500); // watch rid from content->sysdata
204 }
205
206 if ($rid) {
207 $observer='obs_'.$img_key;
208 $observ['name'] = $observer;
209 $observ['form'] = 'dbx_form_{i}';
210 $observ['observ'] = $observer; // self
211 $observ['value'] = $img_src;
212 $observ['old'] = $img_src;
213
214 dbx()->debug("## images.class add_observer=($observer)",$observ);
215
216 $oForm->add_obj($observer,'dbx|observer',$observ);
217
218 $oForm->add_obj($img_key,'image-upload',$img_data);
219 //$oForm->add_obj('content-modal','modal1b',$modal1);
220 $oForm->add_obj('button-modal' ,'button-modal1b',$modal1);
221 $oForm->add_obj('button-submit','button-submit','label=Save');
222
223 $oForm->add_js_observe($observer,1500); // watch Filebrauser select img
224 //$oForm->add_js("dbxUploadImg('#uploader_img_{i}_$iid');");
225
226 $oForm->add_js_call("uploader_img_{i}_$iid",'upload');
227
228
229 }
230
231
232
233
234
235
236
237
238
239
240
241
242 $content=$oForm->run();
243
244
245 return $content;
246 }
247
248
249}
250
251?>
dbx_get_file_dir()
Definition index.php:265