/[drupal]/contributions/modules/mmedia/media.derivatives.forms.inc
ViewVC logotype

Contents of /contributions/modules/mmedia/media.derivatives.forms.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (show annotations) (download) (as text)
Thu Mar 19 13:31:53 2009 UTC (8 months ago) by rhys
Branch: MAIN
CVS Tags: HEAD
Changes since 1.2: +3 -3 lines
File MIME type: text/x-php
General fixups
1 <?php
2 // $Id: media.derivatives.forms.inc,v 1.2 2009/01/06 13:23:23 rhys Exp $
3
4 /**
5 * Listing of the derivatives for the media.
6 */
7 function mmedia_derivatives_list_form(&$form_state, $media) {
8 // make sure that it's an actual media we're loading.
9 $media = media_load($media->mid);
10 if (!$media) {
11 drupal_not_found();
12 exit();
13 }
14
15 $breadcrumbs = _mmedia_set_breadcrumb(mmedia_folder_load($media->fid));
16 $breadcrumbs[] = l($media->title, MEDIA_PATH .'/'. $media->mid);
17 drupal_set_breadcrumb($breadcrumbs);
18
19 $derivatives = mapi_derivative_list_by_extension($media->ext);
20 $files = mapi_generated_load(media_filename($media));
21
22 $rows = array();
23 foreach ($derivatives as $did => $name) {
24 $found = array_key_exists($did, $files);
25 $rows[] = array(
26 l($name, MEDIA_PATH .'/'. $media->mid .'/derivatives/'. $did),
27 $found && $files[$did]->override ? t('Overridden') : ($found ? t('Generated') : t('Free')),
28 );
29 }
30
31 if (count($rows)) {
32 $form['details'] = array(
33 '#value' => t('This are the available derivatives for this media.') .
34 theme('table', array(t('Derivative'), t('Status')), $rows)
35 );
36 }
37 else {
38 $form['details'] = array('#value' => t('There are no derivatives that can be generated for this media.'));
39 }
40
41 return $form;
42 }
43
44 /**
45 * Derivatives media form
46 */
47 function mmedia_derivatives_form(&$form_state, $media, $derivative) {
48 // make sure it's a valid media file
49 $media = media_load($media->mid);
50
51 // make sure that derivative fits into this media extension.
52 $derivatives = mapi_derivative_list_by_extension($media->ext);
53 if (!array_key_exists($derivative->did, $derivatives)) {
54 drupal_not_found();
55 exit();
56 }
57
58 $breadcrumbs = _mmedia_set_breadcrumb(mmedia_folder_load($media->fid));
59 $breadcrumbs[] = l($media->title, MEDIA_PATH .'/'. $media->mid);
60 $breadcrumbs[] = l(t('Derivatives'), MEDIA_PATH .'/'. $media->mid .'/derivatives');
61 drupal_set_breadcrumb($breadcrumbs);
62
63 // get the details of the generated derivative
64 $details = mapi_generated_details(media_filename($media), $derivative->did);
65
66 // basic necessities for other modules to create changes
67 $form['mid'] = array('#type' => 'value', '#value' => $media->mid);
68 $form['did'] = array('#type' => 'value', '#value' => $derivative->did);
69
70 if ($details) {
71 $form['preview'] = array('#value' => '<div class="media-derivative-preview">'. mapi_display($details['filename'], array('profile' => NULL)) .'</div>');
72 }
73 else {
74 $form['preview'] = array('#value' => '<div>'. t('There is no generated derivative for this media.') .'</div>');
75 }
76
77 // delete derivative
78 $form['delete'] = array('#type' => 'submit', '#value' => t('Delete Derivative'));
79
80 // force generation of derivative
81 $form['force'] = array('#type' => 'submit', '#value' => t('Force Generation'));
82
83 // upload replacement
84 $form['upload'] = array('#type' => 'submit', '#value' => t('Replace via Upload'));
85
86 return $form;
87 }
88
89 /**
90 * Submission of media derivatives form.
91 */
92 function mmedia_derivatives_form_submit($form, &$form_state) {
93 $values = $form_state['values'];
94 switch ($values['op']) {
95 case t('Replace via Upload'):
96 drupal_goto(MEDIA_PATH .'/'. $values['mid'] .'/derivatives/'. $values['did'] .'/upload');
97 exit();
98 break;
99 // deletes the derivative
100 case t('Delete Derivative'):
101 $media = media_load($values['mid']);
102 mapi_generated_delete(media_filename($media), $values['did']);
103 break;
104
105 // forces a regeneration of the file if necessary
106 case t('Force Generation'):
107 $media = media_load($values['mid']);
108 $derivative = mapi_derivative_name($values['did']);
109
110 // check for already generated file, replace it.
111 $filename = NULL;
112 if ($generated = mapi_generated_details(media_filename($media), $derivative->did)) {
113 $filename = $generated['filename'];
114 }
115
116 // generates the derivative
117 mapi_derive(media_filename($media), $derivative, array('filename' => $filename, 'exists' => FILE_EXISTS_REPLACE));
118 break;
119 }
120 }
121
122 /**
123 * Upload capability for individual derivative media modification.
124 */
125 function mmedia_derivatives_upload_form(&$form_state, $media, $derivative) {
126 $media = media_load($media->mid);
127
128 $breadcrumbs = _mmedia_set_breadcrumb(mmedia_folder_load($media->fid));
129 $breadcrumbs[] = l($media->title, MEDIA_PATH .'/'. $media->mid);
130 $breadcrumbs[] = l(t('Derivatives'), MEDIA_PATH .'/'. $media->mid .'/derivatives');
131 drupal_set_breadcrumb($breadcrumbs);
132
133 $form['mid'] = array('#type' => 'value', '#value' => $media->mid);
134 $form['did'] = array('#type' => 'value', '#value' => $derivative->did);
135 $form['ext'] = array('#type' => 'value', '#value' => $derivative->output);
136
137 // handle the processing of the media form...
138 $form['media'] = array(
139 '#type' => 'file',
140 '#title' => t('Upload'),
141 '#description' => t('Select a file to upload.') .' '. t('Must have the extension %ext.', array('%ext' => $derivative->output)),
142 );
143
144 // uploadable form
145 $form['#attributes'] = array('enctype' => 'multipart/form-data');
146
147 $form['submit'] = array('#type' => 'submit', '#value' => t('Upload'));
148
149 return $form;
150 }
151
152 /**
153 * Validate the upload form.
154 */
155 function mmedia_derivatives_upload_form_validate($form, &$form_state) {
156 if ($file = file_save_upload('media', array(), file_directory_temp())) {
157 // validate that the file is correct
158 if (mapi_file_ext($file->filepath) != $form_state['values']['ext']) {
159 file_delete($file->filepath);
160 form_set_error('media', t('File does not have a valid extension. It must be (%ext).', array('%ext' => $form_state['values']['ext'])));
161 }
162 // store if correct
163 else {
164 // we are able to generate the file that is supposed to be at this location.
165 $filename = media_filename(media_load($form_state['values']['mid']));
166 $gen = mapi_generated_details($filename, $form_state['values']['did']);
167 if ($gen && !media_compare_files($file->filepath, $gen['filename'], array('width', 'height'))) {
168 file_delete($file->filepath);
169 form_set_error('media', t('File does not match require generated settings.'));
170 return;
171 }
172 $form_state['storage']['gen'] = $gen['filename'];
173 $form_state['storage']['source'] = $filename;
174 $form_state['storage']['file'] = $file;
175 }
176 }
177 else {
178 form_set_message('', t('No file uploaded'));
179 }
180 }
181
182 /**
183 * Submission of mmedia_derivatives_form().
184 */
185 function mmedia_derivatives_upload_form_submit($form, &$form_state) {
186 $values = $form_state['values'];
187 $storage = $form_state['storage'];
188 unset($form_state['storage']);
189
190 // overwrite the generated file in the system settings.
191 if ($storage['gen']) {
192 if (!($filename = mapi_file_copy($storage['file']->filepath, $storage['gen'], array('replace' => FILE_EXISTS_REPLACE, 'workspace' => 'mmedia')))) {
193 file_delete($storage['file']->filepath);
194 drupal_set_message(t('Unable to move updated file to filename (%filename).', array('%filename' => $storage['gen'])), 'error');
195 return;
196 }
197 file_delete($storage['file']->filepath);
198 }
199 // otherwise just move it to the correct location, with an appropriate rename.
200 else {
201 $temp = mapi_file_path($storage['source']) . mapi_file_name($storage['source']) .'-'. $values['did'] .'.'. $values['ext'];
202 drupal_set_message($temp .' = '. is_file($temp));
203 if (!($filename = mapi_file_move($storage['file']->filepath, $temp, array('replace' => FILE_EXISTS_RENAME, 'workspace' => 'mmedia')))) {
204 file_delete($storage['file']->filepath);
205 drupal_set_message(t('Unable to move updated file to filename (%filename).', array('%filename' => $temp)), 'error');
206 return;
207 }
208 drupal_set_message($filename);
209 }
210
211 // rebuild the mapi_generated settings
212 mapi_generated_override($storage['source'], $values['did'], $filename);
213
214 $form_state['redirect'] = MEDIA_PATH .'/'. $values['mid'] .'/derivatives/'. $values['did'];
215 }

  ViewVC Help
Powered by ViewVC 1.1.2