Changeset f0daea6
- Timestamp:
- 08/30/10 09:58:45 (21 months ago)
- Branches:
- ('master', '8434b8322dd6f8ff37c17bd45b94e7a826f86b53')('vitrine', 'afe109c61a407808bd54d88bcccb1cde726a010a')
- Children:
- adc28f645b270eff1c3aab9ec84933445c26b50b
- Parents:
- 80d44661cba844705c64610a0ddc0bc60f2d9950
- git-author:
- Benoit Grégoire <benoitg@coeus.ca>2010-08-30 09:58:45-04:00
- git-committer:
- Benoit Grégoire <benoitg@coeus.ca>2010-08-30 09:58:45-04:00
- Location:
- html
- Files:
-
- 4 edited
-
classes/SearchEngine.php (modified) (7 diffs)
-
tests/VocabRelationshipNavigationTest.php (modified) (4 diffs)
-
tests/testVocs/pivotVoc.xml (modified) (2 diffs)
-
tests/testVocs/rVoc1.xml (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
html/classes/SearchEngine.php
r80d4466 rf0daea6 461 461 $term_id = $term->getId(); 462 462 if ($recursive) { 463 $sql_theme_limit_where = " AND ( vdex_4_vocabulary_identifier = '{$term_id[1]}' AND ns_left >= {$term->mLeft} ANDns_right <= {$term->mRight})\n";463 $sql_theme_limit_where = " AND (initial_theme_limit_terms.vdex_4_vocabulary_identifier = '{$term_id[1]}' AND initial_theme_limit_terms.ns_left >= {$term->mLeft} AND initial_theme_limit_terms.ns_right <= {$term->mRight})\n"; 464 464 } else { 465 $sql_theme_limit_where = " AND ( vdex_4_vocabulary_identifier = '{$term_id[1]}' ANDvdex_6_1_identifier='{$term_id[0]}')\n";465 $sql_theme_limit_where = " AND (initial_theme_limit_terms.vdex_4_vocabulary_identifier = '{$term_id[1]}' AND initial_theme_limit_terms.vdex_6_1_identifier='{$term_id[0]}')\n"; 466 466 } 467 467 … … 484 484 $term_id = $theme_limit['theme']->getId(); 485 485 if($theme_limit['recursive']) { 486 $sql_theme_limit_where = "( vdex_4_vocabulary_identifier = '{$term_id[1]}' AND ns_left >= {$theme_limit['theme']->mLeft} ANDns_right <= {$theme_limit['theme']->mRight})\n";486 $sql_theme_limit_where = "(initial_theme_limit_terms.vdex_4_vocabulary_identifier = '{$term_id[1]}' AND initial_theme_limit_terms.ns_left >= {$theme_limit['theme']->mLeft} AND initial_theme_limit_terms.ns_right <= {$theme_limit['theme']->mRight})\n"; 487 487 } 488 488 else { 489 $sql_theme_limit_where = "( vdex_4_vocabulary_identifier = '{$term_id[1]}' ANDvdex_6_1_identifier='{$term_id[0]}')\n";489 $sql_theme_limit_where = "(initial_theme_limit_terms.vdex_4_vocabulary_identifier = '{$term_id[1]}' AND initial_theme_limit_terms.vdex_6_1_identifier='{$term_id[0]}')\n"; 490 490 } 491 491 //pretty_print_r($sql_theme_limit); … … 612 612 * Enter description here ... 613 613 * @param integer $navLevel 614 * @param boolean $finalJoin If this is the final level. 615 * @param $joinBackwards boolean. If true, instead of joining from a (restricted) vocabulary to all equivalent or narrower, it will reverse. 614 616 * @return true 615 617 */ 616 static private function getSqlLomThemeJoinHelper($navLevel, &$sql, Array &$selectListArray) { 618 static private function getSqlLomThemeJoinHelper($navLevel, $initialLeftTable, $finalTable, &$sql, Array &$selectListArray, $finalJoin=true, $joinBackwards=false) { 619 if($finalJoin) { 620 $finalJoinTable = $finalTable; 621 $sql .= " vocabulary_terms AS {$finalTable} \n"; 622 $sql .= " JOIN vocabulary_terms AS {$initialLeftTable} \n"; 623 // $sql .= " JOIN vocabulary_terms AS {$finalJoinTable} \n"; 624 } 625 if($navLevel>1) { 626 self::getSqlLomThemeJoinHelper($navLevel-1, $initialLeftTable, $finalJoinTable, $sql, $selectListArray, false, $joinBackwards); 627 } 617 628 if($navLevel==1) { 618 $leftTable= 'vocabulary_terms';629 $leftTable=$initialLeftTable; 619 630 } 620 631 else { 621 632 $leftTable='navigated_terms_level_'.(string)($navLevel-1); 622 633 } 634 $leftTermIdCol=$leftTable.'.vdex_6_1_identifier'; 635 $leftVocIdCol=$leftTable.'.vdex_4_vocabulary_identifier'; 636 $rightTable='navigated_terms_level_'.(string)($navLevel); 637 if($finalJoin) { 638 for($i=$navLevel;$i>0;$i--) { 639 $rightTables[]='navigated_terms_level_'.(string)($i); 640 } 641 $rightTables[]=$initialLeftTable; 642 } 623 643 624 644 $navigableRelationships = configGetNavigableRelationshipsIdArray(); 625 $sql .= " LEFT JOIN vocabulary_relationships AS navigated_relationship_level_{$navLevel} ON ( \n"; 645 $sql .= " LEFT JOIN \n"; 646 $sql .= " vocabulary_relationships AS navigated_relationship_level_{$navLevel} ON ( \n"; 626 647 $joinCondArray=array(); 627 648 //navigableSourceToDest 628 if(count($navigableRelationships['navigableSourceToDest']>0)){ 649 $joinBackwards?$sourceToDestTypes=$navigableRelationships['navigableSourceToDest']:$sourceToDestTypes=$navigableRelationships['navigableSourceToDest']; 650 if(count($sourceToDestTypes)>0){ 629 651 $tmpSql = null; 630 652 $tmpSql .= " ( \n"; 631 $tmpSql .= " navigated_relationship_level_{$navLevel}.source_term_vocabulary_identifier=$leftTable.vdex_4_vocabulary_identifier \n"; 632 $tmpSql .= " AND navigated_relationship_level_{$navLevel}.source_term_identifier=$leftTable.vdex_6_1_identifier \n"; 633 $tmpSql .= " AND navigated_relationship_level_{$navLevel}.target_term_vocabulary_identifier!=$leftTable.vdex_4_vocabulary_identifier \n"; 634 $tmpSql .= " AND navigated_relationship_level_{$navLevel}.target_term_identifier!=$leftTable.vdex_6_1_identifier \n"; 653 $tmpSql .= " navigated_relationship_level_{$navLevel}.source_term_vocabulary_identifier=$leftVocIdCol \n"; 654 $tmpSql .= " AND navigated_relationship_level_{$navLevel}.source_term_identifier=$leftTermIdCol \n"; 655 635 656 $internaljoinCondArray = array(); 636 foreach($navigableRelationships['navigableSourceToDest'] as $relationshipType) { 657 658 foreach($sourceToDestTypes as $relationshipType) { 637 659 $internaljoinCondArray[] = "(navigated_relationship_level_{$navLevel}.vdex_7_4_1_relationship_type_source='$relationshipType[1]' AND navigated_relationship_level_{$navLevel}.vdex_7_4_2_relationship_type_value='$relationshipType[0]') \n"; 638 660 } … … 643 665 } 644 666 //navigableDestToSource 645 if(count($navigableRelationships['navigableDestToSource']>0)){ 667 $joinBackwards?$destToSourceTypes=$navigableRelationships['navigableSourceToDest']:$destToSourceTypes=$navigableRelationships['navigableSourceToDest']; 668 if(count($destToSourceTypes)>0){ 646 669 $tmpSql = null; 647 670 $tmpSql .= " ( \n"; 648 $tmpSql .= " navigated_relationship_level_{$navLevel}.target_term_vocabulary_identifier=$left Table.vdex_4_vocabulary_identifier\n";649 $tmpSql .= " AND navigated_relationship_level_{$navLevel}.target_term_identifier=$leftT able.vdex_6_1_identifier\n";671 $tmpSql .= " navigated_relationship_level_{$navLevel}.target_term_vocabulary_identifier=$leftVocIdCol \n"; 672 $tmpSql .= " AND navigated_relationship_level_{$navLevel}.target_term_identifier=$leftTermIdCol \n"; 650 673 $internaljoinCondArray = array(); 651 foreach($ navigableRelationships['navigableDestToSource']as $relationshipType) {674 foreach($destToSourceTypes as $relationshipType) { 652 675 $internaljoinCondArray[] = "(navigated_relationship_level_{$navLevel}.vdex_7_4_1_relationship_type_source='$relationshipType[1]' AND navigated_relationship_level_{$navLevel}.vdex_7_4_2_relationship_type_value='$relationshipType[0]') \n"; 653 676 } … … 659 682 $sql .= implode("\n OR \n", $joinCondArray); 660 683 $sql .= " )\n"; 661 $joinCondArray = array(); 684 685 686 687 688 /* Re-joining with vocabulary_term is essential to exploit the nested-set structure later */ 662 689 $selectListArray[] = "navigated_relationship_level_{$navLevel}.vdex_7_4_2_relationship_type_value as RT"; 663 690 $selectListArray[] = "navigated_relationship_level_{$navLevel}.source_term_identifier as l{$navLevel}_STid, navigated_relationship_level_{$navLevel}.target_term_identifier as l{$navLevel}_TTid"; 664 $caseSql = " CASE \n"; 665 $caseSql .= " WHEN navigated_relationship_level_{$navLevel}.target_term_identifier!=$leftTable.vdex_6_1_identifier THEN navigated_relationship_level_{$navLevel}.target_term_identifier\n"; 666 $caseSql .= " WHEN navigated_relationship_level_{$navLevel}.source_term_identifier!=$leftTable.vdex_6_1_identifier THEN navigated_relationship_level_{$navLevel}.source_term_identifier \n"; 667 $caseSql .= " END as navigated_relationship_level_{$navLevel}_joined_term_identifier \n"; 668 $caseSql .= " , CASE \n"; 669 $caseSql .= " WHEN navigated_relationship_level_{$navLevel}.target_term_identifier!=$leftTable.vdex_6_1_identifier THEN navigated_relationship_level_{$navLevel}.target_term_vocabulary_identifier\n"; 670 $caseSql .= " WHEN navigated_relationship_level_{$navLevel}.source_term_identifier!=$leftTable.vdex_6_1_identifier THEN navigated_relationship_level_{$navLevel}.source_term_vocabulary_identifier \n"; 671 $caseSql .= " END as navigated_relationship_level_{$navLevel}_joined_term_vocabulary_identifier \n"; 672 $selectListArray[] = $caseSql; 673 /* 674 $selectListArray[] = "navigated_terms_level_{$navLevel}.vdex_4_vocabulary_identifier as l{$navLevel}_voc, navigated_terms_level_{$navLevel}.vdex_6_1_identifier as l{$navLevel}_term"; 675 676 $sql .= " LEFT JOIN vocabulary_terms AS navigated_terms_level_$navLevel ON ( \n"; 677 $tmpSql = " (navigated_terms_level_$navLevel.vdex_4_vocabulary_identifier=COALESCE(navigated_relationship_level_{$navLevel}_destToSource.source_term_vocabulary_identifier, navigated_relationship_level_{$navLevel}_sourceToDest.target_term_vocabulary_identifier) \n"; 678 $tmpSql .= " AND navigated_terms_level_$navLevel.vdex_6_1_identifier=COALESCE(navigated_relationship_level_{$navLevel}_destToSource.source_term_identifier, navigated_relationship_level_{$navLevel}_sourceToDest.target_term_identifier)) \n"; 679 $joinCondArray[]=$tmpSql; 680 $sql .= implode(" OR \n", $joinCondArray); 681 $sql .= " ) \n";*/ 691 $selectListArray[] = "navigated_terms_level_{$navLevel}.vdex_4_vocabulary_identifier as l{$navLevel}_voc, navigated_terms_level_{$navLevel}.vdex_6_1_identifier as l{$navLevel}_term"; 692 $sqlVocTermJoin = null; 693 $sqlVocTermJoin .= " LEFT JOIN vocabulary_terms AS {$rightTable} ON ( \n"; 694 $sqlVocTermJoin .= " ({$rightTable}.vdex_4_vocabulary_identifier=\n"; 695 $sqlVocTermJoin .= " (CASE \n"; 696 $sqlVocTermJoin .= " WHEN (navigated_relationship_level_{$navLevel}.target_term_identifier!=$leftTermIdCol AND navigated_relationship_level_{$navLevel}.target_term_vocabulary_identifier!=$leftVocIdCol) THEN navigated_relationship_level_{$navLevel}.target_term_vocabulary_identifier \n"; 697 $sqlVocTermJoin .= " WHEN (navigated_relationship_level_{$navLevel}.source_term_identifier!=$leftTermIdCol AND navigated_relationship_level_{$navLevel}.source_term_vocabulary_identifier!=$leftVocIdCol) THEN navigated_relationship_level_{$navLevel}.source_term_vocabulary_identifier \n"; 698 $sqlVocTermJoin .= " END) \n"; 699 700 $sqlVocTermJoin .= " AND {$rightTable}.vdex_6_1_identifier= \n"; 701 $sqlVocTermJoin .= " (CASE \n"; 702 $sqlVocTermJoin .= " WHEN (navigated_relationship_level_{$navLevel}.target_term_identifier!=$leftTermIdCol AND navigated_relationship_level_{$navLevel}.target_term_vocabulary_identifier!=$leftVocIdCol) THEN navigated_relationship_level_{$navLevel}.target_term_identifier \n"; 703 $sqlVocTermJoin .= " WHEN (navigated_relationship_level_{$navLevel}.source_term_identifier!=$leftTermIdCol AND navigated_relationship_level_{$navLevel}.source_term_vocabulary_identifier!=$leftVocIdCol) THEN navigated_relationship_level_{$navLevel}.source_term_identifier \n"; 704 $sqlVocTermJoin .= " END) \n"; 705 $sqlVocTermJoin .= " ) \n"; 706 //$sqlVocTermJoin .= " ) \n"; 707 $sqlVocTermJoin .= " ) \n"; 708 709 $sql .= $sqlVocTermJoin; 710 if($finalJoin) { 711 foreach($rightTables as $table) { 712 $vocIdcoalesceParts[]="{$table}.vdex_4_vocabulary_identifier"; 713 $termIdcoalesceParts[]="{$table}.vdex_6_1_identifier"; 714 } 715 /* Re-joining with vocabulary_term is essential to exploit the nested-set structure later */ 716 $selectListArray[] = "{$finalJoinTable}.vdex_4_vocabulary_identifier as final_voc, {$finalJoinTable}.vdex_6_1_identifier as final_term"; 717 $sqlFinalJoin = null; 718 $sqlFinalJoin .= " ON ( \n"; 719 $sqlFinalJoin .= " {$finalJoinTable}.vdex_4_vocabulary_identifier=\n"; 720 $sqlFinalJoin .= " COALESCE(".implode(', ',$vocIdcoalesceParts).") \n"; 721 $sqlFinalJoin .= " AND {$finalJoinTable}.vdex_6_1_identifier= \n"; 722 $sqlFinalJoin .= " COALESCE(".implode(', ',$termIdcoalesceParts).") \n"; 723 $sqlFinalJoin .= " ) \n"; 724 $sql .= $sqlFinalJoin; 725 } 682 726 683 727 return true; 684 728 } 685 729 686 /** SQL fragment to join LO with themes */ 730 /** SQL fragment to join LO with themes 731 * WATCH OUT: 732 * Actual LOMS are joined with theme_limit_terms (we want all the LOs of the navigated terms, that's the point. 733 * Typically restrictions placed outside this function should be on initial_theme_limit_terms. 734 * BUT there may be exceptions. Example: One may want to search by keywords including all navigated terms. 735 * */ 687 736 static private function getSqlLomThemeJoin() { 737 $retval = null; 738 739 $retval .= " NATURAL JOIN lom_has_lom_9_classification \n"; 740 $retval .= " NATURAL JOIN lom_9_classification \n"; 741 $retval .= " NATURAL JOIN lom_9_classification_has_lom_9_2_taxon_path \n"; 742 $retval .= " NATURAL JOIN lom_9_2_taxon_path \n"; 743 $retval .= " LEFT JOIN ( \n"; 744 //$retval .= " JOIN vocabulary_terms AS initial_theme_limit_terms ON \n"; 745 //$retval .= " (path_identifier=initial_theme_limit_terms.vdex_6_1_identifier AND path_vdex_4_vocabulary_identifier=initial_theme_limit_terms.vdex_4_vocabulary_identifier) \n"; 746 747 688 748 global $NAVIGATE_VOC_RELATIONS_ENABLED; 689 749 if($NAVIGATE_VOC_RELATIONS_ENABLED) { 690 $db = AbstractDb::getObject(); 691 750 $debug=true; 751 if($debug) { 752 $db = AbstractDb::getObject(); 753 $selectListArray=array(); 754 $sqlJoin = null; 755 self::getSqlLomThemeJoinHelper(2, 'initial_theme_limit_terms', 'theme_limit_terms', $sqlJoin, $selectListArray); 756 $selectList = implode(", \n ", $selectListArray); 757 $sql = "SELECT $selectList \n"; 758 $sql .= " FROM \n"; 759 $sql .= $sqlJoin; 760 $sql .= " WHERE initial_theme_limit_terms.vdex_4_vocabulary_identifier='rVoc1' AND initial_theme_limit_terms.vdex_6_1_identifier='rVoc1T2'\n"; 761 //$sql .= " WHERE vocabulary_terms.vdex_4_vocabulary_identifier='pivotVoc' AND vocabulary_terms.vdex_6_1_identifier='pivotVocT3'\n"; 762 pretty_print_r($sql);ob_flush();flush(); 763 $db->ExecuterSql($sql, $rows, true); 764 //pretty_print_r($navigableRelationships); 765 } 692 766 $selectListArray=array(); 693 $selectListArray[]='vocabulary_terms.vdex_4_vocabulary_identifier, vocabulary_terms.vdex_6_1_identifier'; 694 $sqlJoin = null; 695 self::getSqlLomThemeJoinHelper(1, $sqlJoin, $selectListArray); 696 //self::getSqlLomThemeJoinHelper(2, $sqlJoin, $selectListArray); 697 $selectList = implode(", \n ", $selectListArray); 698 $sql = "SELECT $selectList \n"; 699 $sql .= " FROM vocabulary_terms \n"; 700 $sql .= $sqlJoin; 701 //$sql .= " WHERE vocabulary_terms.vdex_4_vocabulary_identifier='rVoc1' AND vocabulary_terms.vdex_6_1_identifier='rVoc1T2'\n"; 702 $sql .= " WHERE vocabulary_terms.vdex_4_vocabulary_identifier='pivotVoc' AND vocabulary_terms.vdex_6_1_identifier='pivotVocT3'\n"; 703 pretty_print_r($sql); 704 ob_flush();flush(); 705 $db->ExecuterSql($sql, $rows, true); 706 //pretty_print_r($navigableRelationships); 707 $retval = " NATURAL JOIN lom_has_lom_9_classification NATURAL JOIN lom_9_classification NATURAL JOIN lom_9_classification_has_lom_9_2_taxon_path NATURAL JOIN lom_9_2_taxon_path JOIN vocabulary_terms AS theme_limit_terms ON (path_identifier=theme_limit_terms.vdex_6_1_identifier AND path_vdex_4_vocabulary_identifier=theme_limit_terms.vdex_4_vocabulary_identifier) \n"; 708 767 $sqlJoin=null; 768 769 self::getSqlLomThemeJoinHelper(1, 'initial_theme_limit_terms', 'theme_limit_terms', $sqlJoin, $selectListArray, true, false); 770 771 $retval .= " $sqlJoin \n"; 709 772 } 710 773 else { 711 $retval = " NATURAL JOIN lom_has_lom_9_classification NATURAL JOIN lom_9_classification NATURAL JOIN lom_9_classification_has_lom_9_2_taxon_path NATURAL JOIN lom_9_2_taxon_path JOIN vocabulary_terms AS theme_limit_terms ON (path_identifier=theme_limit_terms.vdex_6_1_identifier AND path_vdex_4_vocabulary_identifier=theme_limit_terms.vdex_4_vocabulary_identifier) \n"; 712 } 774 //Yes, that's an identity join, but we do need both names to be compatible with code above 775 $retval .= " vocabulary_terms AS theme_limit_terms JOIN vocabulary_terms AS initial_theme_limit_terms ON \n"; 776 $retval .= " (theme_limit_terms.vdex_6_1_identifier=initial_theme_limit_terms.vdex_6_1_identifier AND theme_limit_terms.vdex_4_vocabulary_identifier=initial_theme_limit_terms.vdex_4_vocabulary_identifier)\n"; 777 } 778 //$retval .= " JOIN vocabulary_terms AS initial_theme_limit_terms ON \n"; 779 $retval .= ") ON (path_identifier=theme_limit_terms.vdex_6_1_identifier AND path_vdex_4_vocabulary_identifier=theme_limit_terms.vdex_4_vocabulary_identifier) \n"; 780 713 781 return $retval; 714 782 } … … 815 883 $sql_1_5 = "\n(SELECT lom_id, lom_status_identifier, value, {$this->value_match_table}.rank, '1_5' as element, CAST({$this->value_match_table}.langstring_entries_id AS integer) as source_langstring_value_id FROM lom NATURAL JOIN lom_1_5_keywords_has_langstrings NATURAL JOIN langstrings NATURAL JOIN {$this->value_match_table}) \n"; 816 884 /* lom_9_2_taxon_path, vocabulaires VDEX */ 817 $sql_9_2_vdex = "\n(SELECT lom_id, lom_status_identifier, value, {$this->value_match_table}.rank, '9_2' as element, CAST({$this->value_match_table}.langstring_entries_id AS integer) as source_langstring_value_id FROM lom " . $this->getSqlLomThemeJoin() . " NATURAL JOIN vocabularies JOIN {$this->value_match_table} ON (vdex_6_3_caption={$this->value_match_table}.langstrings_id ORvdex_6_4_description={$this->value_match_table}.langstrings_id) ) \n";885 $sql_9_2_vdex = "\n(SELECT lom_id, lom_status_identifier, value, {$this->value_match_table}.rank, '9_2' as element, CAST({$this->value_match_table}.langstring_entries_id AS integer) as source_langstring_value_id FROM lom " . $this->getSqlLomThemeJoin() . " JOIN vocabularies ON (theme_limit_terms.vdex_4_vocabulary_identifier=vocabularies.vdex_4_vocabulary_identifier) JOIN {$this->value_match_table} ON (theme_limit_terms.vdex_6_3_caption={$this->value_match_table}.langstrings_id OR theme_limit_terms.vdex_6_4_description={$this->value_match_table}.langstrings_id) ) \n"; 818 886 /* lom_9_2_taxon_path, lom_9_2_2_taxons */ 819 887 $sql_9_2_manual = "\n((SELECT lom_id, lom_status_identifier, value, {$this->value_match_table}.rank, '9_2' as element, CAST({$this->value_match_table}.langstring_entries_id AS integer) as source_langstring_value_id AS source_langstring_value_id FROM lom NATURAL JOIN lom_has_lom_9_classification NATURAL JOIN lom_9_classification NATURAL JOIN lom_9_classification_has_lom_9_2_taxon_path NATURAL JOIN lom_9_2_taxon_path NATURAL JOIN lom_9_2_taxon_path_has_lom_9_2_2_taxons NATURAL JOIN lom_9_2_2_taxons JOIN {$this->value_match_table} ON (lom_9_2_2_taxons.lom_9_2_2_2_entry_langstrings_id={$this->value_match_table}.langstrings_id) ) \n"; … … 944 1012 945 1013 $sql = "SELECT count(DISTINCT(lom_id)) as count FROM lom $sql_candidate_lom_join $sql_theme_limit_join WHERE 1=1 $only_valid_where $sql_theme_limit_where"; 946 $db->ExecuterSqlResUnique($sql, $row, false);1014 $db->ExecuterSqlResUnique($sql, $row, true); 947 1015 return $row['count']; 948 1016 } -
html/tests/VocabRelationshipNavigationTest.php
rce9b376 rf0daea6 63 63 $this->addLo('oai:eureka.coeus.ca:r11', array('rVoc2T6', 'rVoc2'), $los, $create); 64 64 $this->addLo('oai:eureka.coeus.ca:r12', array('rVoc2T7', 'rVoc2'), $los, $create); 65 $this->addLo('oai:eureka.coeus.ca:r13', array('pivotVocT4', 'pivotVoc'), $los, $create); 65 66 return $los; 66 67 } … … 104 105 $retval[]=$lo->getOaiId()->getEntry(); 105 106 } 107 106 108 sort($retval); 109 107 110 return $retval; 108 111 } … … 163 166 $this->assertEquals(array('oai:eureka.coeus.ca:r11'), $this->getThemeLOArray(Theme::getObject(array('rVoc2T6', 'rVoc2')))); 164 167 $this->assertEquals(array('oai:eureka.coeus.ca:r12'), $this->getThemeLOArray(Theme::getObject(array('rVoc2T7', 'rVoc2')))); 165 } 168 $this->assertEquals(array('oai:eureka.coeus.ca:r13'), $this->getThemeLOArray(Theme::getObject(array('pivotVocT4', 'pivotVoc')))); 169 } 166 170 167 171 public function testVocabularyNavigationWorks() 168 172 { 169 173 global $NAVIGATE_VOC_RELATIONS_ENABLED; 170 $NAVIGATE_VOC_RELATIONS_ENABLED = false;174 $NAVIGATE_VOC_RELATIONS_ENABLED = true; 171 175 $expected = array('oai:eureka.coeus.ca:r1'); 172 176 $this->assertEquals($expected, $this->getThemeLOArray(Theme::getObject(array('rVoc1T1', 'rVoc1')))); … … 178 182 'oai:eureka.coeus.ca:r8', 179 183 'oai:eureka.coeus.ca:r9', 180 'oai:eureka.coeus.ca:r12' 184 'oai:eureka.coeus.ca:r12', 185 'oai:eureka.coeus.ca:r13' 181 186 ); 187 sort($expected); 182 188 $this->assertEquals($expected, $this->getThemeLOArray(Theme::getObject(array('rVoc1T2', 'rVoc1')))); 183 189 -
html/tests/testVocs/pivotVoc.xml
rdf1a05b rf0daea6 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 <vdex xmlns="http://www.imsglobal.org/xsd/imsvdex_v1p0" orderSignificant="false" profileType=" flatTokenTerms" language="en-US">2 <vdex xmlns="http://www.imsglobal.org/xsd/imsvdex_v1p0" orderSignificant="false" profileType="hierarchicalTokenTerms" language="en-US"> 3 3 <vocabName> 4 4 <langstring language="en">pivot vocabulary to test relationship navigations</langstring> … … 23 23 </caption> 24 24 </term> 25 <term validIndex="true" orderSignificant="false"> 26 <termIdentifier>pivotVocT4</termIdentifier> 27 <caption> 28 <langstring language="en">Term 4</langstring> 29 </caption> 30 </term> 25 31 </vdex> -
html/tests/testVocs/rVoc1.xml
rdf1a05b rf0daea6 1 1 <?xml version="1.0"?> 2 <vdex xmlns="http://www.imsglobal.org/xsd/imsvdex_v1p0" orderSignificant="false" profileType=" lax" language="en-US">2 <vdex xmlns="http://www.imsglobal.org/xsd/imsvdex_v1p0" orderSignificant="false" profileType="hierarchicalTokenTerms" language="en-US"> 3 3 <vocabName> 4 4 <langstring language="en">related vocabulary 1 to test relationship navigations</langstring> … … 28 28 <relationshipType source="http://www.imsglobal.org/vocabularies/iso2788_relations.xml">RT</relationshipType> 29 29 </relationship> 30 <relationship> 31 <sourceTerm vocabularyIdentifier="rVoc1">rVoc1T2</sourceTerm> 32 <targetTerm vocabularyIdentifier="pivotVoc">pivotVocT4</targetTerm> 33 <relationshipType source="http://www.imsglobal.org/vocabularies/iso2788_relations.xml">NT</relationshipType> 34 </relationship> 30 35 </vdex>
Note: See TracChangeset
for help on using the changeset viewer.
