Skip to content

Commit 48916c3

Browse files
committed
Merge branch 'feature/drush-update-references'
2 parents ffb1520 + 8212def commit 48916c3

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

os2web_cp_service.drush.inc

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<?php
2+
3+
/**
4+
* @file
5+
* This file implements drush functions for CP Service
6+
*/
7+
8+
/**
9+
* Implements hook_drush_command().
10+
*/
11+
function os2web_cp_service_drush_command() {
12+
$items = array();
13+
$items['cp-update-ref'] = array(
14+
'description' => 'Update references in CP cases',
15+
'arguments' => array(),
16+
'aliases' => array('cp-up'),
17+
);
18+
$items['cp-cleanup'] = array(
19+
'description' => 'Delete all refenreces which are broken to a Stub.',
20+
'arguments' => array(),
21+
'aliases' => array('cp-cl'),
22+
);
23+
return $items;
24+
}
25+
26+
/**
27+
* Implements drush_COMMAND().
28+
*/
29+
function drush_os2web_cp_service_cp_update_ref() {
30+
$nodes = db_query("SELECT *
31+
FROM {node} n
32+
WHERE n.type = 'os2web_cp_service_cp_document'
33+
AND n.nid NOT IN (SELECT field_os2web_cp_service_doc_ref_target_id FROM field_data_field_os2web_cp_service_doc_ref)")->fetchAllAssoc('nid');
34+
35+
$field_name = 'field_os2web_cp_service_case_id';
36+
$field_info = field_info_field($field_name);
37+
$field_id = $field_info['id'];
38+
field_attach_load('node', $nodes, FIELD_LOAD_CURRENT, array('field_id' => $field_id));
39+
40+
foreach ($nodes as $node) {
41+
42+
if (!empty($node->field_os2web_cp_service_case_id['und'][0]['value'])) {
43+
$nid = db_query(
44+
"SELECT entity_id FROM field_data_field_os2web_cp_service_case_id WHERE bundle = 'os2web_cp_service_cp_case' AND field_os2web_cp_service_case_id_value = :id",
45+
array(':id' => $node->field_os2web_cp_service_case_id['und'][0]['value'])
46+
)->fetchColumn();
47+
48+
if (!$nid) {
49+
drush_log(t('Cannot find case with id: :id', array(':id' => $node->field_os2web_cp_service_case_id['und'][0]['value'])), 'warning');
50+
continue;
51+
}
52+
53+
$ref_node = node_load($nid);
54+
$ref_node->field_os2web_cp_service_doc_ref['und'][]['target_id'] = $node->nid;
55+
node_save($ref_node);
56+
drush_log(t('Saved new reference to: :ref in :node', array(':ref' => $ref_node->nid, ':node' => $node->nid)), 'success');
57+
58+
}
59+
}
60+
}
61+
62+
/**
63+
* Implements drush_COMMAND().
64+
*/
65+
function drush_os2web_cp_service_cp_cleanup() {
66+
67+
$nodes = db_query("SELECT *
68+
FROM node n
69+
WHERE n.type = 'os2web_cp_service_cp_document'
70+
AND n.title = 'Stub'
71+
AND n.nid IN (
72+
SELECT field_os2web_cp_service_doc_ref_target_id
73+
FROM field_data_field_os2web_cp_service_doc_ref
74+
)");
75+
76+
foreach ($nodes as $node) {
77+
node_delete($node->nid);
78+
drush_log(t('Deleted stub: :node', array(':node' => $node->nid)), 'success');
79+
}
80+
}

0 commit comments

Comments
 (0)