[ Index ]

PHP Cross Reference of Drupal 6 (gatewave)

title

Body

[close]

/sites/all/modules/project_issue/includes/ -> project_node.inc (source)

   1  <?php
   2  // $Id: project_node.inc,v 1.1 2009/06/18 03:30:22 dww Exp $
   3  
   4  /**
   5   * hook_nodeapi implementation specific to "project_project" nodes
   6   * (from the project.module)
   7   * @see project_issue_nodeapi().
   8   */
   9  function project_issue_project_nodeapi(&$node, $op, $arg) {
  10    switch ($op) {
  11      case 'load':
  12        project_issue_project_load($node, $arg);
  13        break;
  14  
  15      case 'insert':
  16        project_issue_project_insert($node);
  17        break;
  18  
  19      case 'delete':
  20        project_issue_project_delete($node);
  21        break;
  22    }
  23  }
  24  
  25  function project_issue_project_load(&$node, $arg) {
  26    $project = db_fetch_object(db_query('SELECT * FROM {project_issue_projects} WHERE nid = %d', $node->nid));
  27    // If nothing loaded, bail immediately
  28    if (!$project) {
  29      return $node;
  30    }
  31    $node->project_issue = array();
  32    $node->project_issue['components'] = unserialize($project->components);
  33    $node->project_issue['default_component'] = $project->default_component;
  34    $node->project_issue['mail_copy_filter'] = unserialize($project->mail_copy_filter);
  35    $node->project_issue['mail_copy_filter_state'] = unserialize($project->mail_copy_filter_state);
  36    foreach (array('issues', 'help', 'mail_digest', 'mail_copy', 'mail_reminder') as $field) {
  37      $node->project_issue[$field] = $project->$field;
  38    }
  39    return $node;
  40  }
  41  
  42  function project_issue_project_insert($node) {
  43    // Setup reasonable defaults: enable issue tracker and standard
  44    // components. If maintainers want to change these, (or any of the
  45    // other issue-related project settings, like the email notifications)
  46    // they'd use the "issues" subtab of the project edit tab (since none
  47    // of these fields are present on the initial project add form).
  48    $node->project_issue['issues'] = 1;
  49  
  50    // Default components are saved in the variables table as a plain
  51    // string instead of as a serialized array since they come out of
  52    // a textarea on a system settings form.  Convert here to the more
  53    // desirable serialized array for storage per-project.
  54    $defaults = array(t('Code'), t('Documentation'), t('Miscellaneous'), t('User interface'));
  55    $components = variable_get('project_issue_default_components', implode("\n", $defaults));  
  56    $default_components = explode("\n", str_replace("\r", '', $components));
  57  
  58    $node->project_issue['components'] = serialize($default_components);
  59    db_query("INSERT INTO {project_issue_projects} (nid, issues, components) VALUES (%d, %d, '%s')", $node->nid, $node->project_issue['issues'], $node->project_issue['components']);
  60  }
  61  
  62  function project_issue_project_delete($node) {
  63    // Delete all associated issues.
  64    $issues = db_query('SELECT nid FROM {project_issues} WHERE pid = %d', $node->nid);
  65    while ($issue = db_fetch_object($issues)) {
  66      node_delete($issue->nid);
  67    }
  68    db_query('DELETE FROM {project_issue_projects} WHERE nid = %d', $node->nid);
  69    db_query('DELETE FROM {project_subscriptions} WHERE nid = %d', $node->nid);
  70  }
  71  


Generated: Thu Mar 24 11:18:33 2011 Cross-referenced by PHPXref 0.7