| [ Index ] |
PHP Cross Reference of Drupal 6 (gatewave) |
[Summary view] [Print] [Text view]
1 <?php 2 // $Id: project_package.module,v 1.2 2009/12/01 02:39:20 dww Exp $ 3 4 /** 5 * @file project_package.module 6 * Provides packages made up of releases of other projects. 7 */ 8 9 /** 10 * Implement hook_views_api(). 11 */ 12 function project_package_views_api() { 13 return array( 14 'api' => 2, 15 'path' => drupal_get_path('module', 'project_package') .'/views', 16 ); 17 } 18 19 /** 20 * Implement hook_nodeapi(). 21 */ 22 function project_package_nodeapi(&$node, $op, $arg) { 23 switch ($node->type) { 24 case 'project_release': 25 project_package_release_nodeapi($node, $op, $arg); 26 break; 27 28 } 29 } 30 31 /** 32 * hook_nodeapi implementation specific to "project_release" nodes. 33 * 34 * @see project_package_nodeapi(). 35 */ 36 function project_package_release_nodeapi(&$node, $op, $arg) { 37 switch ($op) { 38 case 'insert': 39 case 'update': 40 // We can't rely on $node->project_package since nodeapi() doesn't have 41 // a fully loaded $node object. :( 42 $count = db_result(db_query("SELECT COUNT(*) FROM {project_package_local_release_item} WHERE package_nid = %d", $node->nid)); 43 if (!empty($count)) { 44 project_package_set_update_status($node->nid); 45 } 46 break; 47 48 case 'load': 49 $count = db_result(db_query("SELECT COUNT(*) FROM {project_package_local_release_item} WHERE package_nid = %d", $node->nid)); 50 if (!empty($count)) { 51 $node->project_package['count'] = $count; 52 } 53 break; 54 55 } 56 } 57 58 /** 59 * Set the {prn}.update_status for a package based on security updates. 60 */ 61 function project_package_set_update_status($package_nid) { 62 $max = db_result(db_query("SELECT MAX(prn.update_status) FROM {project_release_nodes} prn INNER JOIN {project_package_local_release_item} pp ON prn.nid = pp.item_nid WHERE pp.package_nid = %d", $package_nid)); 63 if ($max == PROJECT_RELEASE_UPDATE_STATUS_NOT_SECURE) { 64 // Something included in this package is insecure, so we are, too. 65 db_query("UPDATE {project_release_nodes} SET update_status = %d WHERE nid = %d", PROJECT_RELEASE_UPDATE_STATUS_NOT_SECURE, $package_nid); 66 } 67 } 68 69 /** 70 * Fix the {prn}.update_status column whenever the status changes on items. 71 */ 72 function project_package_check_update_status($item_nids) { 73 $affected_packages = array(); 74 $placeholders = db_placeholders($item_nids); 75 $query = db_query("SELECT * FROM {project_package_local_release_item} WHERE item_nid IN ($placeholders) GROUP BY package_nid", $item_nids); 76 while ($package = db_fetch_object($query)) { 77 $affected_packages[] = $package->package_nid; 78 } 79 if (!empty($affected_packages)) { 80 $placeholders = db_placeholders($affected_packages); 81 db_query("UPDATE {project_release_nodes} SET update_status = %d WHERE nid IN ($placeholders)", array_merge(array(PROJECT_RELEASE_UPDATE_STATUS_NOT_SECURE), $affected_packages)); 82 } 83 } 84
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 |