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