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