Index: stormexpense/stormexpense.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/storm/stormexpense/stormexpense.module,v retrieving revision 1.4.4.33 diff -u -r1.4.4.33 stormexpense.module --- stormexpense/stormexpense.module 25 Sep 2009 16:17:35 -0000 1.4.4.33 +++ stormexpense/stormexpense.module 8 Nov 2009 21:58:11 -0000 @@ -245,6 +245,21 @@ db_query($s, $ticket_title, $ticket_nid, $ticket_title); } +function stormexpense_stormproject_change_hierarchy($project_nid, $organization_nid, $organization_title) { + $s = "UPDATE {stormexpense} SET organization_nid=%d, organization_title='%s' WHERE project_nid=%d"; + db_query($s, $organization_nid, $organization_title, $project_nid); +} + +function stormexpense_stormtask_change_hierarchy($task_nid, $organization_nid, $organization_title, $project_nid, $project_title) { + $s = "UPDATE {stormexpense} SET organization_nid=%d, organization_title='%s', project_nid=%d, project_title='%s' WHERE task_nid=%d"; + db_query($s, $organization_nid, $organization_title, $project_nid, $project_title, $task_nid); +} + +function stormexpense_stormticket_change_hierarchy($ticket_nid, $organization_nid, $organization_title, $project_nid, $project_title, $task_nid, $task_title) { + $s = "UPDATE {stormexpense} SET organization_nid=%d, organization_title='%s', project_nid=%d, project_title='%s', task_nid=%d, task_title='%s' WHERE ticket_nid=%d"; + db_query($s, $organization_nid, $organization_title, $project_nid, $project_title, $task_nid, $task_title, $ticket_nid); +} + function stormexpense_form(&$node) { $breadcrumb = array(); $breadcrumb[] = l(t('Storm'), 'storm'); Index: storminvoice/storminvoice.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/storm/storminvoice/storminvoice.module,v retrieving revision 1.4.4.64 diff -u -r1.4.4.64 storminvoice.module --- storminvoice/storminvoice.module 6 Nov 2009 00:37:44 -0000 1.4.4.64 +++ storminvoice/storminvoice.module 8 Nov 2009 21:25:36 -0000 @@ -289,7 +289,7 @@ return $cond; } -// LOAD ORGANISATION AND PROJECT DETAILS +// IMPLEMENT STORM HOOKS - ACCOUNT FOR CHANGES IN OTHER STORM NODES function storminvoice_stormorganization_change($organization_nid, $organization_title) { $s = "UPDATE {storminvoice} SET organization_title='%s' WHERE organization_nid=%d AND organization_title <> '%s'"; db_query($s, $organization_title, $organization_nid, $organization_title); @@ -300,6 +300,11 @@ db_query($s, $project_title, $project_nid, $project_title); } +function storminvoice_stormproject_change_hierarchy($project_nid, $organization_nid, $organization_title) { + $s = "UPDATE {storminvoice} SET organization_nid=%d, organization_title='%s' WHERE project_nid=%d"; + db_query($s, $organization_nid, $organization_title, $project_nid); +} + // INVOICE CREATE/EDIT FORM function storminvoice_form(&$node) { $breadcrumb = array(); Index: stormnote/stormnote.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/storm/stormnote/stormnote.module,v retrieving revision 1.6.4.22 diff -u -r1.6.4.22 stormnote.module --- stormnote/stormnote.module 27 Sep 2009 23:20:59 -0000 1.6.4.22 +++ stormnote/stormnote.module 8 Nov 2009 21:45:17 -0000 @@ -211,6 +211,16 @@ db_query($s, $task_title, $task_stepno, $task_nid, $task_title, $task_stepno); } +function stormnote_stormproject_change_hierarchy($project_nid, $organization_nid, $organization_title) { + $s = "UPDATE {stormnote} SET organization_nid=%d, organization_title='%s' WHERE project_nid=%d"; + db_query($s, $organization_nid, $organization_title, $project_nid); +} + +function stormnote_stormtask_change_hierarchy($task_nid, $organization_nid, $organization_title, $project_nid, $project_title) { + $s = "UPDATE {stormnote} SET organization_nid=%d, organization_title='%s', project_nid=%d, project_title='%s' WHERE task_nid=%d"; + db_query($s, $organization_nid, $organization_title, $project_nid, $project_title, $task_nid); +} + function stormnote_form(&$node) { $breadcrumb = array(); $breadcrumb[] = l(t('Storm'), 'storm'); Index: stormproject/stormproject.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/storm/stormproject/stormproject.module,v retrieving revision 1.8.4.49 diff -u -r1.8.4.49 stormproject.module --- stormproject/stormproject.module 16 Oct 2009 17:54:05 -0000 1.8.4.49 +++ stormproject/stormproject.module 8 Nov 2009 21:45:11 -0000 @@ -347,6 +347,11 @@ '#process' => array('storm_dependent_select_process'), ); + $form['group1']['organization_nid_old'] = array( + '#type' => 'hidden', + '#default_value' => $node->organization_nid, + ); + $form['title'] = array( '#type' => 'textfield', '#title' => check_plain($type->title_label), @@ -563,20 +568,26 @@ function stormproject_update($node) { _stormproject_beforesave($node); + // this code needs to run whether or not revisions are being used + $s = "SELECT title FROM {node} WHERE type='stormorganization' AND nid=%d"; + $r = db_query($s, $node->organization_nid); + $organization = db_fetch_object($r); + + // If the project has been moved to a different organization, all nodes that reference the project should be updated. + if ($node->organization_nid != $node->organization_nid_old) { + module_invoke_all('stormproject_change_hierarchy', $node->nid, $node->organization_nid, $organization->title); + } + // if this is a new node or we're adding a new revision, if ($node->revision) { stormproject_insert($node); } else { - $s = "SELECT title FROM {node} WHERE type='stormorganization' AND nid=%d"; - $r = db_query($s, $node->organization_nid); - $organization = db_fetch_object($r); - $s = "SELECT title FROM {node} WHERE type='stormperson' AND nid=%d"; $r = db_query($s, $node->manager_nid); $manager = db_fetch_object($r); - $assigned = node_load($node->assigned_nid); + $assigned = node_load($node->assigned_nid); db_query("UPDATE {stormproject} SET organization_nid=%d, organization_title='%s', @@ -585,7 +596,8 @@ manager_nid=%d, manager_title='%s', assigned_nid=%d, assigned_title='%s' WHERE vid = %d", $node->organization_nid, $organization->title, $node->projectcategory, $node->projectstatus, $node->projectpriority, $node->pricemode, $node->price, $node->currency, $node->datebegin, $node->dateend, $node->durationunit, $node->duration, - $node->manager_nid, $manager->title, $node->assigned_nid, $assigned->title, $node->vid); + $node->manager_nid, $manager->title, $node->assigned_nid, $assigned->title, $node->vid + ); if ($node->title != $node->title_old) { module_invoke_all('stormproject_change', $node->nid, $node->title); Index: stormtask/stormtask.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/storm/stormtask/stormtask.module,v retrieving revision 1.6.4.46 diff -u -r1.6.4.46 stormtask.module --- stormtask/stormtask.module 25 Sep 2009 16:22:53 -0000 1.6.4.46 +++ stormtask/stormtask.module 8 Nov 2009 21:54:20 -0000 @@ -329,6 +329,11 @@ db_query($s, $project_title, $project_nid, $project_title); } +function stormtask_stormproject_change_hierarchy($project_nid, $organization_nid, $organization_title) { + $s = "UPDATE {stormtask} SET organization_nid=%d, organization_title='%s' WHERE project_nid=%d"; + db_query($s, $organization_nid, $organization_title, $project_nid); +} + function stormtask_form(&$node) { $breadcrumb = array(); $breadcrumb[] = l(t('Storm'), 'storm'); @@ -402,7 +407,7 @@ '#required' => true, '#attributes' => array('onchange' => "stormtask_organization_project_tasks(this, 'edit-project-nid', 'edit-parent-nid', true, '-')"), ); - + $s = "SELECT n.nid, n.title FROM {node} AS n INNER JOIN {stormproject} AS spr ON spr.vid=n.vid WHERE n.status=1 AND spr.organization_nid=%d AND n.type='stormproject' ORDER BY n.title"; $s = stormproject_access_sql($s); @@ -422,7 +427,12 @@ '#required' => true, '#attributes' => array('onchange' => "stormtask_project_tasks(this, 'edit-parent-nid', true, '-')"), ); - + + $form['group1']['project_nid_old'] = array( + '#type' => 'hidden', + '#default_value' => $node->project_nid, + ); + $tree = _stormtask_get_tree($node->project_nid); $parent_tasks = _stormtask_plain_tree($tree); $form['group1']['parent_nid'] = array( @@ -607,6 +617,21 @@ } function stormtask_update($node) { + $s = "SELECT n.title FROM {node} n INNER JOIN {stormorganization} o ON n.nid=o.nid + WHERE type='stormorganization' AND n.nid=%d"; + $r = db_query($s, $node->organization_nid); + $o = db_fetch_object($r); + $node->organization_title = $o->title; + + $s = "SELECT n.title, p.organization_title FROM {node} n INNER JOIN {stormproject} p ON n.nid=p.nid + WHERE type='stormproject' AND n.nid=%d"; + $r = db_query($s, $node->project_nid); + $p = db_fetch_object($r); + $node->project_title = $p->title; + + if ($node->project_nid != $node->project_nid_old) { + module_invoke_all('stormtask_change_hierarchy', $node->nid, $node->organization_nid, $node->organization_title, $node->project_nid, $node->project_title); + } // if this is a new node or we're adding a new revision, if ($node->revision) { stormtask_insert($node); Index: stormticket/stormticket.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/storm/stormticket/stormticket.module,v retrieving revision 1.5.4.32 diff -u -r1.5.4.32 stormticket.module --- stormticket/stormticket.module 25 Sep 2009 16:24:03 -0000 1.5.4.32 +++ stormticket/stormticket.module 8 Nov 2009 21:54:16 -0000 @@ -240,6 +240,16 @@ db_query($s, $task_title, $task_stepno, $task_nid, $task_title, $task_stepno); } +function stormticket_stormproject_change_hierarchy($project_nid, $organization_nid, $organization_title) { + $s = "UPDATE {stormticket} SET organization_nid=%d, organization_title='%s' WHERE project_nid=%d"; + db_query($s, $organization_nid, $organization_title, $project_nid); +} + +function stormticket_stormtask_change_hierarchy($task_nid, $organization_nid, $organization_title, $project_nid, $project_title) { + $s = "UPDATE {stormticket} SET organization_nid=%d, organization_title='%s', project_nid=%d, project_title='%s' WHERE task_nid=%d"; + db_query($s, $organization_nid, $organization_title, $project_nid, $project_title, $task_nid); +} + // INVOICE CREATE / EDIT FORM function stormticket_form(&$node) { $breadcrumb = array(); @@ -312,7 +322,7 @@ '#required' => TRUE, '#attributes' => array('onchange' => "stormtask_organization_project_tasks(this, 'edit-project-nid', 'edit-parent-nid', true, '-')"), ); - + $s = "SELECT n.nid, n.title FROM {node} AS n INNER JOIN {stormproject} AS spr ON spr.vid=n.vid WHERE spr.organization_nid=%d AND n.status=1 AND n.type='stormproject' ORDER BY n.title"; $s = stormproject_access_sql($s); $s = db_rewrite_sql($s); @@ -339,7 +349,12 @@ '#options' => array(0 => '-') + $tasks, '#process' => array('storm_dependent_select_process'), ); - + + $form['group1']['task_nid_old'] = array( + '#type' => 'hidden', + '#default_value' => $node->task_nid, + ); + $form['group2'] = array( '#type' => 'markup', '#theme' => 'storm_form_group', @@ -458,31 +473,43 @@ // INSERT / UPDATE FUNCTIONS function stormticket_insert($node) { _stormticket_beforesave($node); - + db_query("INSERT INTO {stormticket} - (vid, nid, - organization_nid, organization_title, - project_nid, project_title, - task_nid, task_title, task_stepno, - ticketcategory, ticketstatus, ticketpriority, - datebegin, dateend, durationunit, duration, pricemode, price, currency) - VALUES - (%d, %d, - %d, '%s', - %d, '%s', - %d, '%s', '%s', - '%s', '%s', '%s', - %d, %d, '%s', %f, '%s', %f, '%s')", - $node->vid, $node->nid, - $node->organization_nid, $node->organization_title, - $node->project_nid, $node->project_title, - $node->task_nid, $node->task_title, $node->task_stepno, - $node->ticketcategory, $node->ticketstatus, $node->ticketpriority, - $node->datebegin, $node->dateend, $node->durationunit, $node->duration, - $node->pricemode, $node->price, $node->currency); + (vid, nid, organization_nid, organization_title, project_nid, project_title, + task_nid, task_title, task_stepno, ticketcategory, ticketstatus, ticketpriority, + datebegin, dateend, durationunit, duration, pricemode, price, currency) + VALUES + (%d, %d, %d, '%s', %d, '%s', + %d, '%s', '%s', '%s', '%s', '%s', + %d, %d, '%s', %f, '%s', %f, '%s')", + $node->vid, $node->nid, $node->organization_nid, $node->organization_title, $node->project_nid, $node->project_title, + $node->task_nid, $node->task_title, $node->task_stepno, $node->ticketcategory, $node->ticketstatus, $node->ticketpriority, + $node->datebegin, $node->dateend, $node->durationunit, $node->duration, $node->pricemode, $node->price, $node->currency + ); } function stormticket_update($node) { + $s = "SELECT n.title FROM {node} n INNER JOIN {stormorganization} o ON n.nid=o.nid + WHERE type='stormorganization' AND n.nid=%d"; + $r = db_query($s, $node->organization_nid); + $o = db_fetch_object($r); + $node->organization_title = $o->title; + + $s = "SELECT n.title, p.organization_title FROM {node} n INNER JOIN {stormproject} p ON n.nid=p.nid + WHERE type='stormproject' AND n.nid=%d"; + $r = db_query($s, $node->project_nid); + $p = db_fetch_object($r); + $node->project_title = $p->title; + + $s = "SELECT n.title FROM {node} n INNER JOIN {stormtask} t ON n.nid=t.nid WHERE n.type='stormtask' AND n.nid=%d"; + $r = db_query($s, $node->task_nid); + $ta = db_fetch_object($r); + $node->task_title = $ta->title; + + if ($node->task_nid != $node->task_nid_old) { + module_invoke_all('stormticket_change_hierarchy', $node->nid, $node->organization_nid, $node->organization_title, $node->project_nid, $node->project_title, $node->task_nid, $node->task_title); + } + // if this is a new node or we're adding a new revision, if ($node->revision) { stormticket_insert($node); @@ -490,14 +517,15 @@ else { _stormticket_beforesave($node); db_query("UPDATE {stormticket} SET - organization_nid=%d, organization_title='%s', project_nid=%d, project_title='%s', - task_nid=%d, task_title='%s', task_stepno='%s', ticketcategory='%s', ticketstatus='%s', - ticketpriority='%s', datebegin=%d, dateend=%d, durationunit='%s', duration=%f, pricemode='%s', - price=%f, currency='%s' WHERE vid = %d", - $node->organization_nid, $node->organization_title, $node->project_nid, $node->project_title, - $node->task_nid, $node->task_title, $node->task_stepno, $node->ticketcategory, $node->ticketstatus, - $node->ticketpriority, $node->datebegin, $node->dateend, $node->durationunit, $node->duration, $node->pricemode, - $node->price, $node->currency, $node->vid); + organization_nid=%d, organization_title='%s', project_nid=%d, project_title='%s', + task_nid=%d, task_title='%s', task_stepno='%s', ticketcategory='%s', ticketstatus='%s', + ticketpriority='%s', datebegin=%d, dateend=%d, durationunit='%s', duration=%f, pricemode='%s', + price=%f, currency='%s' WHERE vid = %d", + $node->organization_nid, $node->organization_title, $node->project_nid, $node->project_title, + $node->task_nid, $node->task_title, $node->task_stepno, $node->ticketcategory, $node->ticketstatus, + $node->ticketpriority, $node->datebegin, $node->dateend, $node->durationunit, $node->duration, $node->pricemode, + $node->price, $node->currency, $node->vid + ); if ($node->title != $node->title_old) { module_invoke_all('stormticket_change', $node->nid, $node->title); } Index: stormtimetracking/stormtimetracking.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/storm/stormtimetracking/stormtimetracking.module,v retrieving revision 1.10.4.43 diff -u -r1.10.4.43 stormtimetracking.module --- stormtimetracking/stormtimetracking.module 28 Oct 2009 22:16:14 -0000 1.10.4.43 +++ stormtimetracking/stormtimetracking.module 8 Nov 2009 21:58:35 -0000 @@ -247,6 +247,21 @@ db_query($s, $ticket_title, $ticket_nid, $ticket_title); } +function stormtimetracking_stormproject_change_hierarchy($project_nid, $organization_nid, $organization_title) { + $s = "UPDATE {stormtimetracking} SET organization_nid=%d, organization_title='%s' WHERE project_nid=%d"; + db_query($s, $organization_nid, $organization_title, $project_nid); +} + +function stormtimetracking_stormtask_change_hierarchy($task_nid, $organization_nid, $organization_title, $project_nid, $project_title) { + $s = "UPDATE {stormtimetracking} SET organization_nid=%d, organization_title='%s', project_nid=%d, project_title='%s' WHERE task_nid=%d"; + db_query($s, $organization_nid, $organization_title, $project_nid, $project_title, $task_nid); +} + +function stormtimetracking_stormticket_change_hierarchy($ticket_nid, $organization_nid, $organization_title, $project_nid, $project_title, $task_nid, $task_title) { + $s = "UPDATE {stormtimetracking} SET organization_nid=%d, organization_title='%s', project_nid=%d, project_title='%s', task_nid=%d, task_title='%s' WHERE ticket_nid=%d"; + db_query($s, $organization_nid, $organization_title, $project_nid, $project_title, $task_nid, $task_title, $ticket_nid); +} + function stormtimetracking_form(&$node) { $breadcrumb = array(); $breadcrumb[] = l(t('Storm'), 'storm');