annotate sites/all/modules/webform/webform.install @ 9:830c812b520f

added smtp module
author root <root@paio.local>
date Mon, 28 Oct 2013 15:34:27 +0000
parents ff03f76ab3fe
children
rev   line source
danielebarchiesi@0 1 <?php
danielebarchiesi@0 2
danielebarchiesi@0 3 /**
danielebarchiesi@0 4 * @file
danielebarchiesi@0 5 * Webform module install/schema hooks.
danielebarchiesi@0 6 */
danielebarchiesi@0 7
danielebarchiesi@0 8 /**
danielebarchiesi@0 9 * Implements hook_schema().
danielebarchiesi@0 10 */
danielebarchiesi@0 11 function webform_schema() {
danielebarchiesi@0 12 $schema = array();
danielebarchiesi@0 13
danielebarchiesi@0 14 $schema['webform'] = array(
danielebarchiesi@0 15 'description' => 'Table for storing additional properties for webform nodes.',
danielebarchiesi@0 16 'fields' => array(
danielebarchiesi@0 17 'nid' => array(
danielebarchiesi@0 18 'description' => 'The node identifier of a webform.',
danielebarchiesi@0 19 'type' => 'int',
danielebarchiesi@0 20 'unsigned' => TRUE,
danielebarchiesi@0 21 'not null' => TRUE,
danielebarchiesi@0 22 ),
danielebarchiesi@0 23 'confirmation' => array(
danielebarchiesi@0 24 'description' => 'The confirmation message or URL displayed to the user after submitting a form.',
danielebarchiesi@0 25 'type' => 'text',
danielebarchiesi@0 26 'not null' => TRUE,
danielebarchiesi@0 27 ),
danielebarchiesi@0 28 'confirmation_format' => array(
danielebarchiesi@0 29 'description' => 'The {filter_format}.format of the confirmation message.',
danielebarchiesi@0 30 'type' => 'varchar',
danielebarchiesi@0 31 'length' => 255,
danielebarchiesi@0 32 'not null' => FALSE,
danielebarchiesi@0 33 ),
danielebarchiesi@0 34 'redirect_url' => array(
danielebarchiesi@0 35 'description' => 'The URL a user is redirected to after submitting a form.',
danielebarchiesi@0 36 'type' => 'varchar',
danielebarchiesi@0 37 'length' => 255,
danielebarchiesi@0 38 'default' => '<confirmation>',
danielebarchiesi@0 39 ),
danielebarchiesi@0 40 'status' => array(
danielebarchiesi@0 41 'description' => 'Boolean value of a webform for open (1) or closed (0).',
danielebarchiesi@0 42 'type' => 'int',
danielebarchiesi@0 43 'size' => 'tiny',
danielebarchiesi@0 44 'not null' => TRUE,
danielebarchiesi@0 45 'default' => 1,
danielebarchiesi@0 46 ),
danielebarchiesi@0 47 'block' => array(
danielebarchiesi@0 48 'description' => 'Boolean value for whether this form be available as a block.',
danielebarchiesi@0 49 'type' => 'int',
danielebarchiesi@0 50 'size' => 'tiny',
danielebarchiesi@0 51 'not null' => TRUE,
danielebarchiesi@0 52 'default' => 0,
danielebarchiesi@0 53 ),
danielebarchiesi@0 54 'teaser' => array(
danielebarchiesi@0 55 'description' => 'Boolean value for whether the entire form should be displayed on the teaser.',
danielebarchiesi@0 56 'type' => 'int',
danielebarchiesi@0 57 'size' => 'tiny',
danielebarchiesi@0 58 'not null' => TRUE,
danielebarchiesi@0 59 'default' => 0,
danielebarchiesi@0 60 ),
danielebarchiesi@0 61 'allow_draft' => array(
danielebarchiesi@0 62 'description' => 'Boolean value for whether submissions to this form be saved as a draft.',
danielebarchiesi@0 63 'type' => 'int',
danielebarchiesi@0 64 'size' => 'tiny',
danielebarchiesi@0 65 'not null' => TRUE,
danielebarchiesi@0 66 'default' => 0,
danielebarchiesi@0 67 ),
danielebarchiesi@0 68 'auto_save' => array(
danielebarchiesi@0 69 'description' => 'Boolean value for whether submissions to this form should be auto-saved between pages.',
danielebarchiesi@0 70 'type' => 'int',
danielebarchiesi@0 71 'size' => 'tiny',
danielebarchiesi@0 72 'not null' => TRUE,
danielebarchiesi@0 73 'default' => 0,
danielebarchiesi@0 74 ),
danielebarchiesi@0 75 'submit_notice' => array(
danielebarchiesi@0 76 'description' => 'Boolean value for whether to show or hide the previous submissions notification.',
danielebarchiesi@0 77 'type' => 'int',
danielebarchiesi@0 78 'size' => 'tiny',
danielebarchiesi@0 79 'not null' => TRUE,
danielebarchiesi@0 80 'default' => 1,
danielebarchiesi@0 81 ),
danielebarchiesi@0 82 'submit_text' => array(
danielebarchiesi@0 83 'description' => 'The title of the submit button on the form.',
danielebarchiesi@0 84 'type' => 'varchar',
danielebarchiesi@0 85 'length' => 255,
danielebarchiesi@0 86 ),
danielebarchiesi@0 87 'submit_limit' => array(
danielebarchiesi@0 88 'description' => 'The number of submissions a single user is allowed to submit within an interval. -1 is unlimited.',
danielebarchiesi@0 89 'type' => 'int',
danielebarchiesi@0 90 'size' => 'tiny',
danielebarchiesi@0 91 'not null' => TRUE,
danielebarchiesi@0 92 'default' => -1,
danielebarchiesi@0 93 ),
danielebarchiesi@0 94 'submit_interval' => array(
danielebarchiesi@0 95 'description' => 'The amount of time in seconds that must pass before a user can submit another submission within the set limit.',
danielebarchiesi@0 96 'type' => 'int',
danielebarchiesi@0 97 'not null' => TRUE,
danielebarchiesi@0 98 'default' => -1,
danielebarchiesi@0 99 ),
danielebarchiesi@0 100 'total_submit_limit' => array(
danielebarchiesi@0 101 'description' => 'The total number of submissions allowed within an interval. -1 is unlimited.',
danielebarchiesi@0 102 'type' => 'int',
danielebarchiesi@0 103 'not null' => TRUE,
danielebarchiesi@0 104 'default' => -1,
danielebarchiesi@0 105 ),
danielebarchiesi@0 106 'total_submit_interval' => array(
danielebarchiesi@0 107 'description' => 'The amount of time in seconds that must pass before another submission can be submitted within the set limit.',
danielebarchiesi@0 108 'type' => 'int',
danielebarchiesi@0 109 'not null' => TRUE,
danielebarchiesi@0 110 'default' => -1,
danielebarchiesi@0 111 ),
danielebarchiesi@0 112 ),
danielebarchiesi@0 113 'primary key' => array('nid'),
danielebarchiesi@0 114 );
danielebarchiesi@0 115
danielebarchiesi@0 116 $schema['webform_component'] = array(
danielebarchiesi@0 117 'description' => 'Stores information about components for webform nodes.',
danielebarchiesi@0 118 'fields' => array(
danielebarchiesi@0 119 'nid' => array(
danielebarchiesi@0 120 'description' => 'The node identifier of a webform.',
danielebarchiesi@0 121 'type' => 'int',
danielebarchiesi@0 122 'unsigned' => TRUE,
danielebarchiesi@0 123 'not null' => TRUE,
danielebarchiesi@0 124 'default' => 0,
danielebarchiesi@0 125 ),
danielebarchiesi@0 126 'cid' => array(
danielebarchiesi@0 127 'description' => 'The identifier for this component within this node, starts at 0 for each node.',
danielebarchiesi@0 128 'type' => 'int',
danielebarchiesi@0 129 'size' => 'small',
danielebarchiesi@0 130 'unsigned' => TRUE,
danielebarchiesi@0 131 'not null' => TRUE,
danielebarchiesi@0 132 'default' => 0,
danielebarchiesi@0 133 ),
danielebarchiesi@0 134 'pid' => array(
danielebarchiesi@0 135 'description' => 'If this component has a parent fieldset, the cid of that component.',
danielebarchiesi@0 136 'type' => 'int',
danielebarchiesi@0 137 'size' => 'small',
danielebarchiesi@0 138 'unsigned' => TRUE,
danielebarchiesi@0 139 'not null' => TRUE,
danielebarchiesi@0 140 'default' => 0,
danielebarchiesi@0 141 ),
danielebarchiesi@0 142 'form_key' => array(
danielebarchiesi@0 143 'description' => 'When the form is displayed and processed, this key can be used to reference the results.',
danielebarchiesi@0 144 'type' => 'varchar',
danielebarchiesi@0 145 'length' => 128,
danielebarchiesi@0 146 ),
danielebarchiesi@0 147 'name' => array(
danielebarchiesi@0 148 'description' => 'The label for this component.',
danielebarchiesi@0 149 'type' => 'varchar',
danielebarchiesi@0 150 'length' => 255,
danielebarchiesi@0 151 ),
danielebarchiesi@0 152 'type' => array(
danielebarchiesi@0 153 'description' => 'The field type of this component (textfield, select, hidden, etc.).',
danielebarchiesi@0 154 'type' => 'varchar',
danielebarchiesi@0 155 'length' => 16,
danielebarchiesi@0 156 ),
danielebarchiesi@0 157 'value' => array(
danielebarchiesi@0 158 'description' => 'The default value of the component when displayed to the end-user.',
danielebarchiesi@0 159 'type' => 'text',
danielebarchiesi@0 160 'not null' => TRUE,
danielebarchiesi@0 161 ),
danielebarchiesi@0 162 'extra' => array(
danielebarchiesi@0 163 'description' => 'Additional information unique to the display or processing of this component.',
danielebarchiesi@0 164 'type' => 'text',
danielebarchiesi@0 165 'not null' => TRUE,
danielebarchiesi@0 166 ),
danielebarchiesi@0 167 'mandatory' => array(
danielebarchiesi@0 168 'description' => 'Boolean flag for if this component is required.',
danielebarchiesi@0 169 'type' => 'int',
danielebarchiesi@0 170 'size' => 'tiny',
danielebarchiesi@0 171 'not null' => TRUE,
danielebarchiesi@0 172 'default' => 0,
danielebarchiesi@0 173 ),
danielebarchiesi@0 174 'weight' => array(
danielebarchiesi@0 175 'description' => 'Determines the position of this component in the form.',
danielebarchiesi@0 176 'type' => 'int',
danielebarchiesi@0 177 'size' => 'small',
danielebarchiesi@0 178 'not null' => TRUE,
danielebarchiesi@0 179 'default' => 0,
danielebarchiesi@0 180 ),
danielebarchiesi@0 181 ),
danielebarchiesi@0 182 'primary key' => array('nid', 'cid'),
danielebarchiesi@0 183 );
danielebarchiesi@0 184
danielebarchiesi@0 185 $schema['webform_emails'] = array(
danielebarchiesi@0 186 'description' => 'Holds information regarding e-mails that should be sent upon submitting a webform',
danielebarchiesi@0 187 'fields' => array(
danielebarchiesi@0 188 'nid' => array(
danielebarchiesi@0 189 'description' => 'The node identifier of a webform.',
danielebarchiesi@0 190 'type' => 'int',
danielebarchiesi@0 191 'unsigned' => TRUE,
danielebarchiesi@0 192 'not null' => TRUE,
danielebarchiesi@0 193 'default' => 0,
danielebarchiesi@0 194 ),
danielebarchiesi@0 195 'eid' => array(
danielebarchiesi@0 196 'description' => 'The e-mail identifier for this row\'s settings.',
danielebarchiesi@0 197 'type' => 'int',
danielebarchiesi@0 198 'unsigned' => TRUE,
danielebarchiesi@0 199 'size' => 'small',
danielebarchiesi@0 200 'not null' => TRUE,
danielebarchiesi@0 201 'default' => 0,
danielebarchiesi@0 202 ),
danielebarchiesi@0 203 'email' => array(
danielebarchiesi@0 204 'description' => 'The e-mail address that will be sent to upon submission. This may be an e-mail address, the special key "default" or a numeric value. If a numeric value is used, the value of a component will be substituted on submission.',
danielebarchiesi@0 205 'type' => 'text',
danielebarchiesi@0 206 'not null' => FALSE,
danielebarchiesi@0 207 ),
danielebarchiesi@0 208 'subject' => array(
danielebarchiesi@0 209 'description' => 'The e-mail subject that will be used. This may be a string, the special key "default" or a numeric value. If a numeric value is used, the value of a component will be substituted on submission.',
danielebarchiesi@0 210 'type' => 'varchar',
danielebarchiesi@0 211 'length' => '255',
danielebarchiesi@0 212 'not null' => FALSE,
danielebarchiesi@0 213 ),
danielebarchiesi@0 214 'from_name' => array(
danielebarchiesi@0 215 'description' => 'The e-mail "from" name that will be used. This may be a string, the special key "default" or a numeric value. If a numeric value is used, the value of a component will be substituted on submission.',
danielebarchiesi@0 216 'type' => 'varchar',
danielebarchiesi@0 217 'length' => '255',
danielebarchiesi@0 218 'not null' => FALSE,
danielebarchiesi@0 219 ),
danielebarchiesi@0 220 'from_address' => array(
danielebarchiesi@0 221 'description' => 'The e-mail "from" e-mail address that will be used. This may be a string, the special key "default" or a numeric value. If a numeric value is used, the value of a component will be substituted on submission.',
danielebarchiesi@0 222 'type' => 'varchar',
danielebarchiesi@0 223 'length' => '255',
danielebarchiesi@0 224 'not null' => FALSE,
danielebarchiesi@0 225 ),
danielebarchiesi@0 226 'template' => array(
danielebarchiesi@0 227 'description' => 'A template that will be used for the sent e-mail. This may be a string or the special key "default", which will use the template provided by the theming layer.',
danielebarchiesi@0 228 'type' => 'text',
danielebarchiesi@0 229 'not null' => FALSE,
danielebarchiesi@0 230 ),
danielebarchiesi@0 231 'excluded_components' => array(
danielebarchiesi@0 232 'description' => 'A list of components that will not be included in the %email_values token. A list of CIDs separated by commas.',
danielebarchiesi@0 233 'type' => 'text',
danielebarchiesi@0 234 'not null' => TRUE,
danielebarchiesi@0 235 ),
danielebarchiesi@0 236 'html' => array(
danielebarchiesi@0 237 'description' => 'Determines if the e-mail will be sent in an HTML format. Requires Mime Mail module.',
danielebarchiesi@0 238 'type' => 'int',
danielebarchiesi@0 239 'unsigned' => TRUE,
danielebarchiesi@0 240 'size' => 'tiny',
danielebarchiesi@0 241 'not null' => TRUE,
danielebarchiesi@0 242 'default' => 0,
danielebarchiesi@0 243 ),
danielebarchiesi@0 244 'attachments' => array(
danielebarchiesi@0 245 'description' => 'Determines if the e-mail will include file attachments. Requires Mime Mail module.',
danielebarchiesi@0 246 'type' => 'int',
danielebarchiesi@0 247 'unsigned' => TRUE,
danielebarchiesi@0 248 'size' => 'tiny',
danielebarchiesi@0 249 'not null' => TRUE,
danielebarchiesi@0 250 'default' => 0,
danielebarchiesi@0 251 ),
danielebarchiesi@0 252 ),
danielebarchiesi@0 253 'primary key' => array('nid', 'eid'),
danielebarchiesi@0 254 );
danielebarchiesi@0 255
danielebarchiesi@0 256 $schema['webform_roles'] = array(
danielebarchiesi@0 257 'description' => 'Holds access information regarding which roles are allowed to submit which webform nodes. Does not prevent access to the webform node entirely, use the {node_access} table for that purpose.',
danielebarchiesi@0 258 'fields' => array(
danielebarchiesi@0 259 'nid' => array(
danielebarchiesi@0 260 'description' => 'The node identifier of a webform.',
danielebarchiesi@0 261 'type' => 'int',
danielebarchiesi@0 262 'unsigned' => TRUE,
danielebarchiesi@0 263 'not null' => TRUE,
danielebarchiesi@0 264 'default' => 0,
danielebarchiesi@0 265 ),
danielebarchiesi@0 266 'rid' => array(
danielebarchiesi@0 267 'description' => 'The role identifier.',
danielebarchiesi@0 268 'type' => 'int',
danielebarchiesi@0 269 'unsigned' => TRUE,
danielebarchiesi@0 270 'not null' => TRUE,
danielebarchiesi@0 271 'default' => 0,
danielebarchiesi@0 272 ),
danielebarchiesi@0 273 ),
danielebarchiesi@0 274 'primary key' => array('nid', 'rid'),
danielebarchiesi@0 275 );
danielebarchiesi@0 276
danielebarchiesi@0 277 $schema['webform_submissions'] = array(
danielebarchiesi@0 278 'description' => 'Holds general information about submissions outside of field values.',
danielebarchiesi@0 279 'fields' => array(
danielebarchiesi@0 280 'sid' => array(
danielebarchiesi@0 281 'description' => 'The unique identifier for this submission.',
danielebarchiesi@0 282 'type' => 'serial',
danielebarchiesi@0 283 'unsigned' => TRUE,
danielebarchiesi@0 284 'not null' => TRUE,
danielebarchiesi@0 285 ),
danielebarchiesi@0 286 'nid' => array(
danielebarchiesi@0 287 'description' => 'The node identifier of a webform.',
danielebarchiesi@0 288 'type' => 'int',
danielebarchiesi@0 289 'unsigned' => TRUE,
danielebarchiesi@0 290 'not null' => TRUE,
danielebarchiesi@0 291 'default' => 0,
danielebarchiesi@0 292 ),
danielebarchiesi@0 293 'uid' => array(
danielebarchiesi@0 294 'description' => 'The id of the user that completed this submission.',
danielebarchiesi@0 295 'type' => 'int',
danielebarchiesi@0 296 'unsigned' => TRUE,
danielebarchiesi@0 297 'not null' => TRUE,
danielebarchiesi@0 298 'default' => 0,
danielebarchiesi@0 299 ),
danielebarchiesi@0 300 'is_draft' => array(
danielebarchiesi@0 301 'description' => 'Is this a draft of the submission?',
danielebarchiesi@0 302 'type' => 'int',
danielebarchiesi@0 303 'size' => 'tiny',
danielebarchiesi@0 304 'not null' => TRUE,
danielebarchiesi@0 305 'default' => 0,
danielebarchiesi@0 306 ),
danielebarchiesi@0 307 'submitted' => array(
danielebarchiesi@0 308 'description' => 'Timestamp of when the form was submitted.',
danielebarchiesi@0 309 'type' => 'int',
danielebarchiesi@0 310 'not null' => TRUE,
danielebarchiesi@0 311 'default' => 0,
danielebarchiesi@0 312 ),
danielebarchiesi@0 313 'remote_addr' => array(
danielebarchiesi@0 314 'description' => 'The IP address of the user that submitted the form.',
danielebarchiesi@0 315 'type' => 'varchar',
danielebarchiesi@0 316 'length' => 128,
danielebarchiesi@0 317 ),
danielebarchiesi@0 318 ),
danielebarchiesi@0 319 'primary key' => array('sid'),
danielebarchiesi@0 320 'unique keys' => array(
danielebarchiesi@0 321 'sid_nid' => array('sid', 'nid'),
danielebarchiesi@0 322 ),
danielebarchiesi@0 323 'indexes' => array(
danielebarchiesi@0 324 'nid_uid_sid' => array('nid', 'uid', 'sid'),
danielebarchiesi@0 325 'nid_sid' => array('nid', 'sid'),
danielebarchiesi@0 326 ),
danielebarchiesi@0 327 );
danielebarchiesi@0 328
danielebarchiesi@0 329 $schema['webform_submitted_data'] = array(
danielebarchiesi@0 330 'description' => 'Stores all submitted field data for webform submissions.',
danielebarchiesi@0 331 'fields' => array(
danielebarchiesi@0 332 'nid' => array(
danielebarchiesi@0 333 'description' => 'The node identifier of a webform.',
danielebarchiesi@0 334 'type' => 'int',
danielebarchiesi@0 335 'unsigned' => TRUE,
danielebarchiesi@0 336 'not null' => TRUE,
danielebarchiesi@0 337 'default' => 0,
danielebarchiesi@0 338 ),
danielebarchiesi@0 339 'sid' => array(
danielebarchiesi@0 340 'description' => 'The unique identifier for this submission.',
danielebarchiesi@0 341 'type' => 'int',
danielebarchiesi@0 342 'unsigned' => TRUE,
danielebarchiesi@0 343 'not null' => TRUE,
danielebarchiesi@0 344 'default' => 0,
danielebarchiesi@0 345 ),
danielebarchiesi@0 346 'cid' => array(
danielebarchiesi@0 347 'description' => 'The identifier for this component within this node, starts at 0 for each node.',
danielebarchiesi@0 348 'type' => 'int',
danielebarchiesi@0 349 'size' => 'small',
danielebarchiesi@0 350 'unsigned' => TRUE,
danielebarchiesi@0 351 'not null' => TRUE,
danielebarchiesi@0 352 'default' => 0,
danielebarchiesi@0 353 ),
danielebarchiesi@0 354 'no' => array(
danielebarchiesi@0 355 'description' => 'Usually this value is 0, but if a field has multiple values (such as a time or date), it may require multiple rows in the database.',
danielebarchiesi@0 356 'type' => 'varchar',
danielebarchiesi@0 357 'length' => 128,
danielebarchiesi@0 358 'not null' => TRUE,
danielebarchiesi@0 359 'default' => '0',
danielebarchiesi@0 360 ),
danielebarchiesi@0 361 'data' => array(
danielebarchiesi@0 362 'description' => 'The submitted value of this field, may be serialized for some components.',
danielebarchiesi@0 363 'type' => 'text',
danielebarchiesi@0 364 'size' => 'medium',
danielebarchiesi@0 365 'not null' => TRUE,
danielebarchiesi@0 366 ),
danielebarchiesi@0 367 ),
danielebarchiesi@0 368 'primary key' => array('nid', 'sid', 'cid', 'no'),
danielebarchiesi@0 369 'indexes' => array(
danielebarchiesi@0 370 'nid' => array('nid'),
danielebarchiesi@0 371 'sid_nid' => array('sid', 'nid'),
danielebarchiesi@0 372 ),
danielebarchiesi@0 373 );
danielebarchiesi@0 374
danielebarchiesi@0 375 $schema['webform_last_download'] = array(
danielebarchiesi@0 376 'description' => 'Stores last submission number per user download.',
danielebarchiesi@0 377 'fields' => array(
danielebarchiesi@0 378 'nid' => array(
danielebarchiesi@0 379 'description' => 'The node identifier of a webform.',
danielebarchiesi@0 380 'type' => 'int',
danielebarchiesi@0 381 'unsigned' => TRUE,
danielebarchiesi@0 382 'not null' => TRUE,
danielebarchiesi@0 383 'default' => 0,
danielebarchiesi@0 384 ),
danielebarchiesi@0 385 'uid' => array(
danielebarchiesi@0 386 'description' => 'The user identifier.',
danielebarchiesi@0 387 'type' => 'int',
danielebarchiesi@0 388 'unsigned' => TRUE,
danielebarchiesi@0 389 'not null' => TRUE,
danielebarchiesi@0 390 'default' => 0,
danielebarchiesi@0 391 ),
danielebarchiesi@0 392 'sid' => array(
danielebarchiesi@0 393 'description' => 'The last downloaded submission number.',
danielebarchiesi@0 394 'type' => 'int',
danielebarchiesi@0 395 'unsigned' => TRUE,
danielebarchiesi@0 396 'not null' => TRUE,
danielebarchiesi@0 397 'default' => 0,
danielebarchiesi@0 398 ),
danielebarchiesi@0 399 'requested' => array(
danielebarchiesi@0 400 'description' => 'Timestamp of last download request.',
danielebarchiesi@0 401 'type' => 'int',
danielebarchiesi@0 402 'unsigned' => TRUE,
danielebarchiesi@0 403 'not null' => TRUE,
danielebarchiesi@0 404 'default' => 0,
danielebarchiesi@0 405 ),
danielebarchiesi@0 406 ),
danielebarchiesi@0 407 'primary key' => array('nid', 'uid'),
danielebarchiesi@0 408 );
danielebarchiesi@0 409
danielebarchiesi@0 410 return $schema;
danielebarchiesi@0 411 }
danielebarchiesi@0 412
danielebarchiesi@0 413 /**
danielebarchiesi@0 414 * Implements hook_install().
danielebarchiesi@0 415 */
danielebarchiesi@0 416 function webform_install() {
danielebarchiesi@0 417 module_load_include('inc', 'node', 'content_types');
danielebarchiesi@0 418 db_update('system')
danielebarchiesi@0 419 ->condition('name', 'webform')
danielebarchiesi@0 420 ->condition('type', 'module')
danielebarchiesi@0 421 ->fields(array('weight' => -1))
danielebarchiesi@0 422 ->execute();
danielebarchiesi@0 423
danielebarchiesi@0 424 // Optionally create the default webform type.
danielebarchiesi@0 425 if (variable_get('webform_install_create_content_type', TRUE)) {
danielebarchiesi@0 426 $webform_type = array(
danielebarchiesi@0 427 'type' => 'webform',
danielebarchiesi@0 428 'name' => st('Webform'),
danielebarchiesi@0 429 'base' => 'node_content',
danielebarchiesi@0 430 'description' => st('Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users.'),
danielebarchiesi@0 431 'custom' => TRUE,
danielebarchiesi@0 432 'modified' => TRUE,
danielebarchiesi@0 433 'locked' => FALSE,
danielebarchiesi@0 434 );
danielebarchiesi@0 435 $webform_type = node_type_set_defaults($webform_type);
danielebarchiesi@0 436 node_type_save($webform_type);
danielebarchiesi@0 437 node_add_body_field($webform_type);
danielebarchiesi@0 438 }
danielebarchiesi@0 439 }
danielebarchiesi@0 440
danielebarchiesi@0 441 /**
danielebarchiesi@0 442 * Implements hook_uninstall().
danielebarchiesi@0 443 */
danielebarchiesi@0 444 function webform_uninstall() {
danielebarchiesi@0 445 // Unset webform variables.
danielebarchiesi@0 446 variable_del('webform_node_types');
danielebarchiesi@0 447 variable_del('webform_node_types_primary');
danielebarchiesi@0 448 variable_del('webform_use_cookies');
danielebarchiesi@0 449 variable_del('webform_default_from_address');
danielebarchiesi@0 450 variable_del('webform_default_from_name');
danielebarchiesi@0 451 variable_del('webform_default_subject');
danielebarchiesi@0 452 variable_del('webform_default_format');
danielebarchiesi@0 453 variable_del('webform_format_override');
danielebarchiesi@0 454 variable_del('webform_csv_delimiter');
danielebarchiesi@0 455 variable_del('webform_allowed_tags');
danielebarchiesi@0 456 variable_del('webform_blocks');
danielebarchiesi@0 457
danielebarchiesi@0 458 $component_list = array();
danielebarchiesi@0 459 $path = drupal_get_path('module', 'webform') . '/components';
danielebarchiesi@0 460 $files = file_scan_directory($path, '/^.*\.inc$/');
danielebarchiesi@0 461 foreach ($files as $filename => $file) {
danielebarchiesi@0 462 variable_del('webform_enable_' . $file->name, 1);
danielebarchiesi@0 463 }
danielebarchiesi@0 464
danielebarchiesi@0 465 // Delete uploaded files.
danielebarchiesi@0 466 $filepath = file_build_uri('webform');
danielebarchiesi@0 467 file_unmanaged_delete_recursive($filepath);
danielebarchiesi@0 468 }
danielebarchiesi@0 469
danielebarchiesi@0 470 /**
danielebarchiesi@0 471 * Set the minimum upgrade version.
danielebarchiesi@0 472 *
danielebarchiesi@0 473 * Currently you cannot upgrade from 2.x in Drupal 6 to 3.x in Drupal 7. However
danielebarchiesi@0 474 * there are no database changes between the 3.x versions, so no update is
danielebarchiesi@0 475 * needed at all to move from 3.x in Drupal 6 to Drupal 7.
danielebarchiesi@0 476 */
danielebarchiesi@0 477 function webform_update_last_removed() {
danielebarchiesi@0 478 return 6313;
danielebarchiesi@0 479 }
danielebarchiesi@0 480
danielebarchiesi@0 481 /**
danielebarchiesi@0 482 * Allow the confirmation format column to have a NULL value.
danielebarchiesi@0 483 */
danielebarchiesi@0 484 function webform_update_7301() {
danielebarchiesi@0 485 // These changes are modeled after user_update_7010().
danielebarchiesi@0 486 db_change_field('webform', 'confirmation_format', 'confirmation_format', array(
danielebarchiesi@0 487 'description' => 'The {filter_format}.format of the confirmation message.',
danielebarchiesi@0 488 'type' => 'int',
danielebarchiesi@0 489 'unsigned' => TRUE,
danielebarchiesi@0 490 'not null' => FALSE,
danielebarchiesi@0 491 ));
danielebarchiesi@0 492 db_update('webform')
danielebarchiesi@0 493 ->fields(array('confirmation_format' => NULL))
danielebarchiesi@0 494 ->condition('confirmation', '')
danielebarchiesi@0 495 ->condition('confirmation_format', 0)
danielebarchiesi@0 496 ->execute();
danielebarchiesi@0 497 $existing_formats = db_query("SELECT format FROM {filter_format}")->fetchCol();
danielebarchiesi@0 498 $default_format = variable_get('filter_default_format', 1);
danielebarchiesi@0 499
danielebarchiesi@0 500 // Since Webform may be updated separately from Drupal core, not all format
danielebarchiesi@0 501 // names may be numbers when running this update.
danielebarchiesi@0 502 $numeric_formats = array();
danielebarchiesi@0 503 foreach ($existing_formats as $format_name) {
danielebarchiesi@0 504 if (is_numeric($format_name)) {
danielebarchiesi@0 505 $numeric_formats[] = (int) $format_name;
danielebarchiesi@0 506 }
danielebarchiesi@0 507 }
danielebarchiesi@0 508
danielebarchiesi@0 509 $query = db_update('webform')
danielebarchiesi@0 510 ->fields(array('confirmation_format' => $default_format))
danielebarchiesi@0 511 ->isNotNull('confirmation_format');
danielebarchiesi@0 512
danielebarchiesi@0 513 if (!empty($numeric_formats)) {
danielebarchiesi@0 514 $query->condition('confirmation_format', $numeric_formats, 'NOT IN');
danielebarchiesi@0 515 }
danielebarchiesi@0 516
danielebarchiesi@0 517 $query->execute();
danielebarchiesi@0 518 }
danielebarchiesi@0 519
danielebarchiesi@0 520 /**
danielebarchiesi@0 521 * Add columns for e-mail HTML and attachment settings.
danielebarchiesi@0 522 */
danielebarchiesi@0 523 function webform_update_7302() {
danielebarchiesi@0 524 if (!db_field_exists('webform_emails', 'html')) {
danielebarchiesi@0 525 db_add_field('webform_emails', 'html', array('type' => 'int', 'size' => 'tiny', 'unsigned' => TRUE, 'default' => 0, 'not null' => TRUE));
danielebarchiesi@0 526 db_add_field('webform_emails', 'attachments', array('type' => 'int', 'size' => 'tiny', 'unsigned' => TRUE, 'default' => 0, 'not null' => TRUE));
danielebarchiesi@0 527 }
danielebarchiesi@0 528 }
danielebarchiesi@0 529
danielebarchiesi@0 530 /**
danielebarchiesi@0 531 * Set the default for the "submit_notice" column to 1.
danielebarchiesi@0 532 */
danielebarchiesi@0 533 function webform_update_7303() {
danielebarchiesi@0 534 db_change_field('webform', 'submit_notice', 'submit_notice', array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 1));
danielebarchiesi@0 535 }
danielebarchiesi@0 536
danielebarchiesi@0 537 /**
danielebarchiesi@0 538 * Add field for block feature and redirection setting.
danielebarchiesi@0 539 */
danielebarchiesi@0 540 function webform_update_7304() {
danielebarchiesi@0 541 if (!db_field_exists('webform', 'block')) {
danielebarchiesi@0 542 db_add_field('webform', 'block', array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 0));
danielebarchiesi@0 543 db_change_field('webform', 'redirect_url', 'redirect_url', array('type' => 'varchar', 'length' => 255, 'default' => '<confirmation>'));
danielebarchiesi@0 544 db_update('webform')
danielebarchiesi@0 545 ->fields(array('redirect_url' => 'confirmation'))
danielebarchiesi@0 546 ->condition('redirect_url', '')
danielebarchiesi@0 547 ->execute();
danielebarchiesi@0 548 }
danielebarchiesi@0 549 }
danielebarchiesi@0 550
danielebarchiesi@0 551 /**
danielebarchiesi@0 552 * Set additional_validate and additional_submit columns to allow NULL.
danielebarchiesi@0 553 */
danielebarchiesi@0 554 function webform_update_7305() {
danielebarchiesi@0 555 if (db_field_exists('webform', 'additional_validate')) {
danielebarchiesi@0 556 db_change_field('webform', 'additional_validate', 'additional_validate', array('type' => 'text', 'not null' => FALSE));
danielebarchiesi@0 557 db_change_field('webform', 'additional_submit', 'additional_submit', array('type' => 'text', 'not null' => FALSE));
danielebarchiesi@0 558 }
danielebarchiesi@0 559 }
danielebarchiesi@0 560
danielebarchiesi@0 561 /**
danielebarchiesi@0 562 * Add column for webform status (open or closed).
danielebarchiesi@0 563 */
danielebarchiesi@0 564 function webform_update_7306() {
danielebarchiesi@0 565 if (!db_field_exists('webform', 'status')) {
danielebarchiesi@0 566 db_add_field('webform', 'status', array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 1));
danielebarchiesi@0 567 }
danielebarchiesi@0 568 }
danielebarchiesi@0 569
danielebarchiesi@0 570 /**
danielebarchiesi@0 571 * Update the confirmation_format column for default text format changes.
danielebarchiesi@0 572 */
danielebarchiesi@0 573 function webform_update_7307() {
danielebarchiesi@0 574 // Update removed and moved to webform_update_7301().
danielebarchiesi@0 575 // See http://drupal.org/node/976102.
danielebarchiesi@0 576 }
danielebarchiesi@0 577
danielebarchiesi@0 578 /**
danielebarchiesi@0 579 * Update the confirmation_format column to allow it to store strings.
danielebarchiesi@0 580 */
danielebarchiesi@0 581 function webform_update_7308() {
danielebarchiesi@0 582 db_change_field('webform', 'confirmation_format', 'confirmation_format', array(
danielebarchiesi@0 583 'description' => 'The {filter_format}.format of the confirmation message.',
danielebarchiesi@0 584 'type' => 'varchar',
danielebarchiesi@0 585 'length' => 255,
danielebarchiesi@0 586 'not null' => FALSE,
danielebarchiesi@0 587 ));
danielebarchiesi@0 588 }
danielebarchiesi@0 589
danielebarchiesi@0 590 /**
danielebarchiesi@0 591 * Add the ability to auto-save as draft between pages.
danielebarchiesi@0 592 */
danielebarchiesi@0 593 function webform_update_7309() {
danielebarchiesi@0 594 if (!db_field_exists('webform', 'auto_save')) {
danielebarchiesi@0 595 db_add_field('webform', 'auto_save', array('type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 0));
danielebarchiesi@0 596 }
danielebarchiesi@0 597 }
danielebarchiesi@0 598
danielebarchiesi@0 599 /**
danielebarchiesi@0 600 * Remove orphaned and unnecessary rows in the webform table.
danielebarchiesi@0 601 */
danielebarchiesi@0 602 function webform_update_7310() {
danielebarchiesi@0 603 $result = db_query("SELECT nid FROM {webform} WHERE
danielebarchiesi@0 604 nid NOT IN
danielebarchiesi@0 605 (SELECT DISTINCT(w1.nid) FROM {webform} w1 INNER JOIN {webform_component} wc ON w1.nid = wc.nid)
danielebarchiesi@0 606 AND nid NOT IN
danielebarchiesi@0 607 (SELECT w2.nid FROM {webform} w2 INNER JOIN {node} n ON w2.nid = n.nid WHERE n.type = 'webform')"
danielebarchiesi@0 608 );
danielebarchiesi@0 609 $empty_nids = array();
danielebarchiesi@0 610 foreach ($result as $row) {
danielebarchiesi@0 611 $empty_nids[] = $row->nid;
danielebarchiesi@0 612 }
danielebarchiesi@0 613 if (!empty($empty_nids)) {
danielebarchiesi@0 614 db_delete('webform')->condition('nid', $empty_nids, 'IN')->execute();
danielebarchiesi@0 615 }
danielebarchiesi@0 616 }
danielebarchiesi@0 617
danielebarchiesi@0 618 /**
danielebarchiesi@0 619 * Add an index for nid_uid_sid to webform_submissions.
danielebarchiesi@0 620 */
danielebarchiesi@0 621 function webform_update_7311() {
danielebarchiesi@0 622 if (!db_index_exists('webform_submissions', 'nid_uid_sid')) {
danielebarchiesi@0 623 db_add_index('webform_submissions', 'nid_uid_sid', array('nid', 'uid', 'sid'));
danielebarchiesi@0 624 }
danielebarchiesi@0 625 }
danielebarchiesi@0 626
danielebarchiesi@0 627 /**
danielebarchiesi@0 628 * Remove unused Webform variables.
danielebarchiesi@0 629 */
danielebarchiesi@0 630 function webform_update_7312() {
danielebarchiesi@0 631 variable_del('node_types');
danielebarchiesi@0 632 variable_del('components');
danielebarchiesi@0 633 }
danielebarchiesi@0 634
danielebarchiesi@0 635 /**
danielebarchiesi@0 636 * Convert the Date component start and end year options to start and end date.
danielebarchiesi@0 637 */
danielebarchiesi@0 638 function webform_update_7313() {
danielebarchiesi@0 639 $result = db_select('webform_component', 'wc', array('fetch' => PDO::FETCH_ASSOC))
danielebarchiesi@0 640 ->fields('wc')
danielebarchiesi@0 641 ->condition('type', 'date')
danielebarchiesi@0 642 ->execute();
danielebarchiesi@0 643 foreach ($result as $component) {
danielebarchiesi@0 644 $component['extra'] = unserialize($component['extra']);
danielebarchiesi@0 645 if (!isset($component['extra']['start_date']) && !isset($component['end_date'])) {
danielebarchiesi@0 646 foreach (array('year_start' => 'start_date', 'year_end' => 'end_date') as $key => $replacement) {
danielebarchiesi@0 647 $value = isset($component['extra'][$key]) ? trim($component['extra'][$key]) : '';
danielebarchiesi@0 648 // Relative years.
danielebarchiesi@0 649 if (preg_match('/[-+][ ]*[0-9]+/', $value)) {
danielebarchiesi@0 650 $component['extra'][$replacement] = ($value == 1) ? ($value . ' year') : ($value . ' years');
danielebarchiesi@0 651 }
danielebarchiesi@0 652 // Absolute years.
danielebarchiesi@0 653 elseif (is_numeric($value)) {
danielebarchiesi@0 654 $component['extra'][$replacement] = 'Dec 31 ' . $value;
danielebarchiesi@0 655 }
danielebarchiesi@0 656 unset($component['extra'][$key]);
danielebarchiesi@0 657 }
danielebarchiesi@0 658 $component['extra'] = serialize($component['extra']);
danielebarchiesi@0 659 drupal_write_record('webform_component', $component, array('nid', 'cid'));
danielebarchiesi@0 660 }
danielebarchiesi@0 661 }
danielebarchiesi@0 662 }
danielebarchiesi@0 663
danielebarchiesi@0 664 /**
danielebarchiesi@0 665 * Add webform_last_download table to store last downloaded sid per user.
danielebarchiesi@0 666 */
danielebarchiesi@0 667 function webform_update_7314() {
danielebarchiesi@0 668 // Safety check to prevent recreating the webform_last_download table.
danielebarchiesi@0 669 if (db_table_exists('webform_last_download')) {
danielebarchiesi@0 670 return;
danielebarchiesi@0 671 }
danielebarchiesi@0 672
danielebarchiesi@0 673 $schema['webform_last_download'] = array(
danielebarchiesi@0 674 'description' => 'Stores last submission number per user download.',
danielebarchiesi@0 675 'fields' => array(
danielebarchiesi@0 676 'nid' => array(
danielebarchiesi@0 677 'description' => 'The node identifier of a webform.',
danielebarchiesi@0 678 'type' => 'int',
danielebarchiesi@0 679 'unsigned' => TRUE,
danielebarchiesi@0 680 'not null' => TRUE,
danielebarchiesi@0 681 'default' => 0,
danielebarchiesi@0 682 ),
danielebarchiesi@0 683 'uid' => array(
danielebarchiesi@0 684 'description' => 'The user identifier.',
danielebarchiesi@0 685 'type' => 'int',
danielebarchiesi@0 686 'unsigned' => TRUE,
danielebarchiesi@0 687 'not null' => TRUE,
danielebarchiesi@0 688 'default' => 0,
danielebarchiesi@0 689 ),
danielebarchiesi@0 690 'sid' => array(
danielebarchiesi@0 691 'description' => 'The last downloaded submission number.',
danielebarchiesi@0 692 'type' => 'int',
danielebarchiesi@0 693 'unsigned' => TRUE,
danielebarchiesi@0 694 'not null' => TRUE,
danielebarchiesi@0 695 'default' => 0,
danielebarchiesi@0 696 ),
danielebarchiesi@0 697 ),
danielebarchiesi@0 698 'primary key' => array('nid', 'uid'),
danielebarchiesi@0 699 );
danielebarchiesi@0 700 db_create_table('webform_last_download', $schema['webform_last_download']);
danielebarchiesi@0 701 }
danielebarchiesi@0 702
danielebarchiesi@0 703 /**
danielebarchiesi@0 704 * Add column for timestamp of last requested CSV download.
danielebarchiesi@0 705 */
danielebarchiesi@0 706 function webform_update_7315() {
danielebarchiesi@0 707 if (!db_field_exists('webform_last_download', 'requested')) {
danielebarchiesi@0 708 db_add_field('webform_last_download', 'requested', array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0,));
danielebarchiesi@0 709 }
danielebarchiesi@0 710 }
danielebarchiesi@0 711
danielebarchiesi@0 712 /**
danielebarchiesi@0 713 * Add additional columns for total submission limit.
danielebarchiesi@0 714 */
danielebarchiesi@0 715 function webform_update_7316() {
danielebarchiesi@0 716 if (!db_field_exists('webform', 'total_submit_limit')) {
danielebarchiesi@0 717 db_add_field('webform', 'total_submit_limit', array('type' => 'int', 'not null' => TRUE, 'default' => -1));
danielebarchiesi@0 718 }
danielebarchiesi@0 719
danielebarchiesi@0 720 if (!db_field_exists('webform', 'total_submit_interval')) {
danielebarchiesi@0 721 db_add_field('webform', 'total_submit_interval', array('type' => 'int', 'not null' => TRUE, 'default' => -1));
danielebarchiesi@0 722 }
danielebarchiesi@0 723 }
danielebarchiesi@0 724
danielebarchiesi@0 725 /**
danielebarchiesi@0 726 * Add an index for 'nid_sid' to webform_submissions.
danielebarchiesi@0 727 */
danielebarchiesi@0 728 function webform_update_7317() {
danielebarchiesi@0 729 // Even though we already have an index 'nid_uid_sid', adding the index for
danielebarchiesi@0 730 // 'nid_sid' saves us a tablesort on the node/x/webform-results page.
danielebarchiesi@0 731 if (!db_index_exists('webform_submissions', 'nid_sid')) {
danielebarchiesi@0 732 db_add_index('webform_submissions', 'nid_sid', array('nid', 'sid'));
danielebarchiesi@0 733 }
danielebarchiesi@0 734 }
danielebarchiesi@0 735
danielebarchiesi@0 736 /**
danielebarchiesi@0 737 * Upgrade file components to support the new AJAX-upload element.
danielebarchiesi@0 738 */
danielebarchiesi@0 739 function webform_update_7318() {
danielebarchiesi@0 740 $result = db_select('webform_component', 'wc', array('fetch' => PDO::FETCH_ASSOC))
danielebarchiesi@0 741 ->fields('wc')
danielebarchiesi@0 742 ->condition('type', 'file')
danielebarchiesi@0 743 ->execute();
danielebarchiesi@0 744 foreach ($result as $component) {
danielebarchiesi@0 745 $component['extra'] = unserialize($component['extra']);
danielebarchiesi@0 746 if (!isset($component['extra']['directory'])) {
danielebarchiesi@0 747 $component['extra']['directory'] = $component['extra']['savelocation'];
danielebarchiesi@0 748 $component['extra']['scheme'] = file_default_scheme();
danielebarchiesi@0 749 $component['extra']['filtering']['size'] = $component['extra']['filtering']['size'] . ' KB';
danielebarchiesi@0 750 unset($component['extra']['savelocation']);
danielebarchiesi@0 751 $component['extra'] = serialize($component['extra']);
danielebarchiesi@0 752 drupal_write_record('webform_component', $component, array('nid', 'cid'));
danielebarchiesi@0 753 }
danielebarchiesi@0 754 }
danielebarchiesi@0 755
danielebarchiesi@0 756 return t('File components updated to support AJAX uploading.');
danielebarchiesi@0 757 }
danielebarchiesi@0 758
danielebarchiesi@0 759 /**
danielebarchiesi@0 760 * Add file usage entries for all files uploaded through Webform.
danielebarchiesi@0 761 */
danielebarchiesi@0 762 function webform_update_7319(&$sandbox) {
danielebarchiesi@0 763 if (!isset($sandbox['progress'])) {
danielebarchiesi@0 764 // Initialize batch update information.
danielebarchiesi@0 765 $sandbox['progress'] = 0;
danielebarchiesi@0 766 $sandbox['last_fid_processed'] = -1;
danielebarchiesi@0 767 $sandbox['max'] = db_select('file_managed')
danielebarchiesi@0 768 ->condition('uri', '%' . db_like('://webform/') . '%', 'LIKE')
danielebarchiesi@0 769 ->countQuery()
danielebarchiesi@0 770 ->execute()
danielebarchiesi@0 771 ->fetchField();
danielebarchiesi@0 772 }
danielebarchiesi@0 773
danielebarchiesi@0 774 // Process all files attached to a given revision during the same batch.
danielebarchiesi@0 775 $limit = variable_get('webform_update_batch_size', 100);
danielebarchiesi@0 776 $files = db_select('file_managed', 'f')
danielebarchiesi@0 777 ->fields('f')
danielebarchiesi@0 778 ->condition('uri', '%' . db_like('://webform/') . '%', 'LIKE')
danielebarchiesi@0 779 ->condition('fid', $sandbox['last_fid_processed'], '>')
danielebarchiesi@0 780 ->orderBy('fid', 'ASC')
danielebarchiesi@0 781 ->range(0, $limit)
danielebarchiesi@0 782 ->execute()
danielebarchiesi@0 783 ->fetchAllAssoc('fid', PDO::FETCH_ASSOC);
danielebarchiesi@0 784
danielebarchiesi@0 785 // Determine each submission with which a file is associated.
danielebarchiesi@0 786 if (!empty($files)) {
danielebarchiesi@0 787 foreach ($files as $fid => $file) {
danielebarchiesi@0 788 $file = (object) $file;
danielebarchiesi@0 789 $sids = db_query('SELECT wsd.sid FROM {webform_component} wc INNER JOIN {webform_submitted_data} wsd ON wc.nid = wsd.nid AND wc.type = :file WHERE data = :fid', array(':file' => 'file', ':fid' => $file->fid))->fetchAllAssoc('sid', PDO::FETCH_ASSOC);
danielebarchiesi@0 790 foreach ($sids as $sid => $row) {
danielebarchiesi@0 791 // We use a db_merge() instead of file_usage_add() to prevent problems
danielebarchiesi@0 792 // in the event this update was run twice. No file provided by Webform
danielebarchiesi@0 793 // should ever be in use more than once at this point.
danielebarchiesi@0 794 db_merge('file_usage')
danielebarchiesi@0 795 ->key(array(
danielebarchiesi@0 796 'fid' => $file->fid,
danielebarchiesi@0 797 'type' => 'submission',
danielebarchiesi@0 798 'module' => 'webform',
danielebarchiesi@0 799 'id' => $sid,
danielebarchiesi@0 800 ))
danielebarchiesi@0 801 ->fields(array(
danielebarchiesi@0 802 'count' => 1,
danielebarchiesi@0 803 ))
danielebarchiesi@0 804 ->execute();
danielebarchiesi@0 805 }
danielebarchiesi@0 806
danielebarchiesi@0 807 // Update our progress information for the batch update.
danielebarchiesi@0 808 $sandbox['progress']++;
danielebarchiesi@0 809 $sandbox['last_fid_processed'] = $file->fid;
danielebarchiesi@0 810 }
danielebarchiesi@0 811 }
danielebarchiesi@0 812
danielebarchiesi@0 813 // If less than limit was processed, the update process is finished.
danielebarchiesi@0 814 if (count($files) < $limit || $sandbox['progress'] == $sandbox['max']) {
danielebarchiesi@0 815 $finished = TRUE;
danielebarchiesi@0 816 }
danielebarchiesi@0 817
danielebarchiesi@0 818 // If there's no max value then there's nothing to update and we're finished.
danielebarchiesi@0 819 if (empty($sandbox['max']) || isset($finished)) {
danielebarchiesi@0 820 return t('Webform file entries created in the file_usage table.');
danielebarchiesi@0 821 }
danielebarchiesi@0 822 else {
danielebarchiesi@0 823 // Indicate our current progress to the batch update system.
danielebarchiesi@0 824 $sandbox['#finished'] = $sandbox['progress'] / $sandbox['max'];
danielebarchiesi@0 825 }
danielebarchiesi@0 826 }
danielebarchiesi@0 827
danielebarchiesi@0 828 /**
danielebarchiesi@0 829 * Mark files uploaded through Webform that report active usage permanent.
danielebarchiesi@0 830 */
danielebarchiesi@0 831 function webform_update_7320() {
danielebarchiesi@0 832 db_query("UPDATE {file_managed} SET status = 1 WHERE fid IN (SELECT fid FROM {file_usage} WHERE module = :module_name)", array(':module_name' => 'webform'));
danielebarchiesi@0 833 }
danielebarchiesi@0 834
danielebarchiesi@0 835 /**
danielebarchiesi@0 836 * Remove files left over from deleted submissions. Such files are now deleted
danielebarchiesi@0 837 * automatically.
danielebarchiesi@0 838 */
danielebarchiesi@0 839 function webform_update_7321() {
danielebarchiesi@0 840 module_load_include('inc', 'webform', 'components/file');
danielebarchiesi@0 841 $fids = db_query("SELECT fid FROM {file_usage} WHERE module = 'webform' AND type = 'submission' AND NOT id IN(SELECT sid FROM {webform_submissions})")->fetchCol();
danielebarchiesi@0 842 foreach ($fids as $fid) {
danielebarchiesi@0 843 _webform_delete_file(NULL, array($fid));
danielebarchiesi@0 844 }
danielebarchiesi@0 845 }