You are here

function _webform_template_attach in Webform Template 6

Internal function Adds webform template to a node if $_SESSION indicates a template.

1 call to _webform_template_attach()
webform_template_nodeapi in ./webform_template.module
Implements hook_nodeapi().

File

./webform_template.module, line 100

Code

function _webform_template_attach($node, $op = NULL) {
  if (isset($_SESSION['webform_template'])) {
    if ($op == 'delete') {
      if (!in_array($node->type, webform_variable_get('webform_node_types'))) {
        return;
      }

      // Allow components clean up extra data, such as uploaded files.
      module_load_include('inc', 'webform', 'includes/webform.components');
      foreach ($node->webform['components'] as $cid => $component) {
        webform_component_delete($node, $component);
      }

      // Remove any trace of webform data from the database.
      db_query('DELETE FROM {webform} WHERE nid = %d', $node->nid);
      db_query('DELETE FROM {webform_component} WHERE nid = %d', $node->nid);
      db_query('DELETE FROM {webform_emails} WHERE nid = %d', $node->nid);
      db_query('DELETE FROM {webform_roles} WHERE nid = %d', $node->nid);
      db_query('DELETE FROM {webform_submissions} WHERE nid = %d', $node->nid);
      db_query('DELETE FROM {webform_submitted_data} WHERE nid = %d', $node->nid);
      db_query('DELETE FROM {webform_last_download} WHERE nid = %d', $node->nid);
    }
    $template = node_load($_SESSION['webform_template']);
    $webform = $template->webform;
    module_load_include('inc', 'webform', 'includes/webform.components');
    module_load_include('inc', 'webform', 'includes/webform.emails');
    $node->webform = $webform;
    $node->webform['nid'] = $node->nid;
    $node->webform['record_exists'] = (bool) drupal_write_record('webform', $node->webform);

    // Insert the components into the database.
    if (isset($node->webform['components']) && !empty($node->webform['components'])) {
      foreach ($node->webform['components'] as $cid => $component) {
        $component['nid'] = $node->nid;
        webform_component_insert($component);
      }
    }

    // Insert emails.
    if (isset($node->webform['emails']) && !empty($node->webform['emails'])) {
      foreach ($node->webform['emails'] as $eid => $email) {
        $email['nid'] = $node->nid;
        webform_email_insert($email);
      }
    }
    unset($_SESSION['webform_template']);
  }
}