Skip to content

Commit 0e54838

Browse files
committed
Save nodes rules in seperate taxonomy
1 parent 1255d16 commit 0e54838

File tree

4 files changed

+78
-36
lines changed

4 files changed

+78
-36
lines changed

os2web_cp_service.features.field.inc

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -692,14 +692,14 @@ function os2web_cp_service_field_default_fields() {
692692
),
693693
);
694694

695-
// Exported field: 'node-os2web_cp_service_cp_case-field_os2web_cp_service_rules'.
696-
$fields['node-os2web_cp_service_cp_case-field_os2web_cp_service_rules'] = array(
695+
// Exported field: 'node-os2web_cp_service_cp_case-field_os2web_cp_service_tax_rules'.
696+
$fields['node-os2web_cp_service_cp_case-field_os2web_cp_service_tax_rules'] = array(
697697
'field_config' => array(
698698
'active' => '1',
699699
'cardinality' => '-1',
700700
'deleted' => '0',
701701
'entity_types' => array(),
702-
'field_name' => 'field_os2web_cp_service_rules',
702+
'field_name' => 'field_os2web_cp_service_tax_rules',
703703
'foreign keys' => array(
704704
'tid' => array(
705705
'columns' => array(
@@ -718,9 +718,8 @@ function os2web_cp_service_field_default_fields() {
718718
'settings' => array(
719719
'allowed_values' => array(
720720
0 => array(
721-
'vocabulary' => 'os2web_cp_service_tax_approved_rules',
721+
'vocabulary' => 'os2web_cp_service_tax_rules',
722722
'parent' => '0',
723-
'depth' => '',
724723
),
725724
),
726725
'options_list_callback' => 'content_taxonomy_allowed_values',
@@ -749,7 +748,7 @@ function os2web_cp_service_field_default_fields() {
749748
),
750749
),
751750
'entity_type' => 'node',
752-
'field_name' => 'field_os2web_cp_service_rules',
751+
'field_name' => 'field_os2web_cp_service_tax_rules',
753752
'label' => 'TriggerRules',
754753
'required' => 0,
755754
'settings' => array(
@@ -1728,14 +1727,14 @@ function os2web_cp_service_field_default_fields() {
17281727
),
17291728
);
17301729

1731-
// Exported field: 'node-os2web_cp_service_cp_document-field_os2web_cp_service_rules'.
1732-
$fields['node-os2web_cp_service_cp_document-field_os2web_cp_service_rules'] = array(
1730+
// Exported field: 'node-os2web_cp_service_cp_document-field_os2web_cp_service_tax_rules'.
1731+
$fields['node-os2web_cp_service_cp_document-field_os2web_cp_service_tax_rules'] = array(
17331732
'field_config' => array(
17341733
'active' => '1',
17351734
'cardinality' => '-1',
17361735
'deleted' => '0',
17371736
'entity_types' => array(),
1738-
'field_name' => 'field_os2web_cp_service_rules',
1737+
'field_name' => 'field_os2web_cp_service_tax_rules',
17391738
'foreign keys' => array(
17401739
'tid' => array(
17411740
'columns' => array(
@@ -1754,9 +1753,8 @@ function os2web_cp_service_field_default_fields() {
17541753
'settings' => array(
17551754
'allowed_values' => array(
17561755
0 => array(
1757-
'vocabulary' => 'os2web_cp_service_tax_approved_rules',
1756+
'vocabulary' => 'os2web_cp_service_tax_rules',
17581757
'parent' => '0',
1759-
'depth' => '',
17601758
),
17611759
),
17621760
'options_list_callback' => 'content_taxonomy_allowed_values',
@@ -1785,7 +1783,7 @@ function os2web_cp_service_field_default_fields() {
17851783
),
17861784
),
17871785
'entity_type' => 'node',
1788-
'field_name' => 'field_os2web_cp_service_rules',
1786+
'field_name' => 'field_os2web_cp_service_tax_rules',
17891787
'label' => 'TriggerRules',
17901788
'required' => 0,
17911789
'settings' => array(

os2web_cp_service.features.taxonomy.inc

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,29 @@
99
*/
1010
function os2web_cp_service_taxonomy_default_vocabularies() {
1111
return array(
12+
'os2web_cp_service_tax_rules' => array(
13+
'name' => 'CP Rules',
14+
'machine_name' => 'os2web_cp_service_tax_rules',
15+
'description' => 'Vocabulary of the different types of used rules',
16+
'hierarchy' => '0',
17+
'module' => 'taxonomy',
18+
'weight' => '0',
19+
'rdf_mapping' => array(
20+
'rdftype' => array(
21+
0 => 'skos:ConceptScheme',
22+
),
23+
'name' => array(
24+
'predicates' => array(
25+
0 => 'dc:title',
26+
),
27+
),
28+
'description' => array(
29+
'predicates' => array(
30+
0 => 'rdfs:comment',
31+
),
32+
),
33+
),
34+
),
1235
'os2web_cp_service_tax_approved_rules' => array(
1336
'name' => 'CP Approved Rules',
1437
'machine_name' => 'os2web_cp_service_tax_approved_rules',

os2web_cp_service.info

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ features[field][] = node-os2web_cp_service_cp_case-field_os2web_cp_service_full_
4141
features[field][] = node-os2web_cp_service_cp_case-field_os2web_cp_service_key
4242
features[field][] = node-os2web_cp_service_cp_case-field_os2web_cp_service_org_unit
4343
features[field][] = node-os2web_cp_service_cp_case-field_os2web_cp_service_property
44-
features[field][] = node-os2web_cp_service_cp_case-field_os2web_cp_service_rules
44+
features[field][] = node-os2web_cp_service_cp_case-field_os2web_cp_service_tax_rules
4545
features[field][] = node-os2web_cp_service_cp_case-field_os2web_cp_service_status
4646
features[field][] = node-os2web_cp_service_cp_case-field_os2web_cp_service_sysid
4747
features[field][] = node-os2web_cp_service_cp_document-field_os2web_cp_service_case_id
@@ -55,13 +55,14 @@ features[field][] = node-os2web_cp_service_cp_document-field_os2web_cp_service_f
5555
features[field][] = node-os2web_cp_service_cp_document-field_os2web_cp_service_filetype
5656
features[field][] = node-os2web_cp_service_cp_document-field_os2web_cp_service_full_xml
5757
features[field][] = node-os2web_cp_service_cp_document-field_os2web_cp_service_key
58-
features[field][] = node-os2web_cp_service_cp_document-field_os2web_cp_service_rules
58+
features[field][] = node-os2web_cp_service_cp_document-field_os2web_cp_service_tax_rules
5959
features[field][] = node-os2web_cp_service_cp_document-field_os2web_cp_service_sysid
6060
features[node][] = os2web_cp_service_cp_case
6161
features[node][] = os2web_cp_service_cp_document
6262
features[page_manager_handlers][] = os2web_cp_service_cp_case_panel
6363
features[page_manager_handlers][] = os2web_cp_service_cp_document_panel
6464
features[page_manager_pages][] = os2web_cp_service_cp_case_search_panel
65+
features[taxonomy][] = os2web_cp_service_tax_rules
6566
features[taxonomy][] = os2web_cp_service_tax_approved_rules
6667
features[user_permission][] = create os2web_cp_service_cp_case content
6768
features[user_permission][] = create os2web_cp_service_cp_document content
@@ -80,3 +81,4 @@ features[views_view][] = os2web_cp_service_cp_document_view
8081
features_exclude[field][node-os2web_cp_service_cp_case-field_os2web_cp_service_case_num] = node-os2web_cp_service_cp_case-field_os2web_cp_service_case_num
8182
features_exclude[field][node-os2web_cp_service_cp_document-field_os2web_cp_service_doc_num] = node-os2web_cp_service_cp_document-field_os2web_cp_service_doc_num
8283
features_exclude[dependencies][os2web_cp_service] = os2web_cp_service
84+
features_exclude[taxonomy][os2web_cp_service_tax_rules] = os2web_cp_service_tax_rules

os2web_cp_service.module

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,6 @@ function os2web_cs_service_create_case(array $data) {
159159
$result = $query
160160
->entityCondition('entity_type', 'node')
161161
->propertyCondition('type', 'os2web_cp_service_cp_case')
162-
->propertyCondition('status', 1)
163162
->fieldCondition('field_os2web_cp_service_sysid', 'value', $data['fields']['SystemID'], '=')
164163
->execute();
165164
$nids = (isset($result['node']))?array_keys($result['node']) : NULL;
@@ -170,13 +169,13 @@ function os2web_cs_service_create_case(array $data) {
170169
}
171170
}
172171
else {
173-
$node = node_load($nids);
172+
$node = node_load(array_pop($nids));
174173
}
175174

176175
// See if the triggered rules on the published node, is approved
177176
// in the vocabulary. Otherwise the node will be unpublished.
178-
$vocabulary = taxonomy_vocabulary_machine_name_load('os2web_cp_service_tax_approved_rules');
179-
$approved_rules = taxonomy_get_tree($vocabulary->vid);
177+
$approved_vocabulary = taxonomy_vocabulary_machine_name_load('os2web_cp_service_tax_approved_rules');
178+
$approved_rules = taxonomy_get_tree($approved_vocabulary->vid);
180179
$approved = FALSE;
181180
foreach ($data['rules'] as $trigger_rule) {
182181
foreach ($approved_rules as $approved_rule) {
@@ -229,7 +228,17 @@ function os2web_cs_service_create_case(array $data) {
229228

230229
unset($node->field_os2web_cp_service_rules[LANGUAGE_NONE]);
231230
foreach ($data['rules'] as $name) {
232-
$term = array_pop(taxonomy_get_term_by_name($name, 'os2web_cp_service_tax_approved_rules'));
231+
$term = taxonomy_get_term_by_name($name, 'os2web_cp_service_tax_rules');
232+
if (empty($term)) {
233+
$rules_vocabulary = taxonomy_vocabulary_machine_name_load('os2web_cp_service_tax_rules');
234+
$term = new stdClass();
235+
$term->vid = $rules_vocabulary->vid;
236+
$term->name = $name;
237+
taxonomy_term_save($term);
238+
}
239+
if (is_array($term)) {
240+
$term = array_pop($term);
241+
}
233242
$node->field_os2web_cp_service_rules[LANGUAGE_NONE][]['tid'] = $term->tid;
234243
}
235244

@@ -363,7 +372,6 @@ function os2web_cs_service_create_document(array $data) {
363372
$result = $query
364373
->entityCondition('entity_type', 'node')
365374
->propertyCondition('type', 'os2web_cp_service_cp_document')
366-
->propertyCondition('status', 1)
367375
->fieldCondition('field_os2web_cp_service_sysid', 'value', $data['fields']['SystemID'], '=')
368376
->execute();
369377
$node = new stdClass();
@@ -424,7 +432,17 @@ function os2web_cs_service_create_document(array $data) {
424432

425433
unset($node->field_os2web_cp_service_rules[LANGUAGE_NONE]);
426434
foreach ($data['rules'] as $name) {
427-
$term = array_pop(taxonomy_get_term_by_name($name, 'os2web_cp_service_tax_approved_rules'));
435+
$term = taxonomy_get_term_by_name($name, 'os2web_cp_service_tax_rules');
436+
if (empty($term)) {
437+
$rules_vocabulary = taxonomy_vocabulary_machine_name_load('os2web_cp_service_tax_rules');
438+
$term = new stdClass();
439+
$term->vid = $rules_vocabulary->vid;
440+
$term->name = $name;
441+
taxonomy_term_save($term);
442+
}
443+
if (is_array($term)) {
444+
$term = array_pop($term);
445+
}
428446
$node->field_os2web_cp_service_rules[LANGUAGE_NONE][]['tid'] = $term->tid;
429447
}
430448

@@ -437,28 +455,29 @@ function os2web_cs_service_create_document(array $data) {
437455
return FALSE;
438456
}
439457

440-
// Update case.
458+
// Update reference on cases.
441459
$query = new EntityFieldQuery();
442460
$result = $query
443461
->entityCondition('entity_type', 'node')
444462
->propertyCondition('type', 'os2web_cp_service_cp_case')
445-
->propertyCondition('status', 1)
446463
->fieldCondition('field_os2web_cp_service_sysid', 'value', $data['fields']['Sag SystemID'], '=')
447464
->execute();
448-
$nids = array_keys($result['node']);
449-
foreach ($nids as $nid) {
450-
$cnode = node_load($nid);
451-
$node->field_os2web_cp_service_case_id[LANGUAGE_NONE][]['value'] = $cnode->field_os2web_cp_service_case_id[LANGUAGE_NONE][0]['value'];
452-
node_save($node);
453-
$is_missing = TRUE;
454-
foreach ($cnode->field_os2web_cp_service_doc_ref[LANGUAGE_NONE] as $value) {
455-
if ($value['target_id'] == $node->nid) {
456-
$is_missing = FALSE;
465+
if (!empty($result['node'])) {
466+
$nids = array_keys($result['node']);
467+
foreach ($nids as $nid) {
468+
$cnode = node_load($nid);
469+
$node->field_os2web_cp_service_case_id[LANGUAGE_NONE][]['value'] = $cnode->field_os2web_cp_service_case_id[LANGUAGE_NONE][0]['value'];
470+
node_save($node);
471+
$is_missing = TRUE;
472+
foreach ($cnode->field_os2web_cp_service_doc_ref[LANGUAGE_NONE] as $value) {
473+
if ($value['target_id'] == $node->nid) {
474+
$is_missing = FALSE;
475+
}
476+
}
477+
if ($is_missing) {
478+
$cnode->field_os2web_cp_service_doc_ref[LANGUAGE_NONE][]['target_id'] = $node->nid;
479+
node_save($cnode);
457480
}
458-
}
459-
if ($is_missing) {
460-
$cnode->field_os2web_cp_service_doc_ref[LANGUAGE_NONE][]['target_id'] = $node->nid;
461-
node_save($cnode);
462481
}
463482
}
464483
return TRUE;

0 commit comments

Comments
 (0)