| [ Index ] |
PHP Cross Reference of Drupal 6 (gatewave) |
[Summary view] [Print] [Text view]
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
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu Mar 24 11:18:33 2011 | Cross-referenced by PHPXref 0.7 |