Changeset f0daea6


Ignore:
Timestamp:
08/30/10 09:58:45 (21 months ago)
Author:
Benoit Grégoire <benoitg@…>
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
Message:

Snapshot

Location:
html
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • html/classes/SearchEngine.php

    r80d4466 rf0daea6  
    461461            $term_id = $term->getId(); 
    462462            if ($recursive) { 
    463                 $sql_theme_limit_where = " AND (vdex_4_vocabulary_identifier = '{$term_id[1]}' AND ns_left >= {$term->mLeft} AND ns_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"; 
    464464            } else { 
    465                 $sql_theme_limit_where = " AND (vdex_4_vocabulary_identifier = '{$term_id[1]}' AND vdex_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"; 
    466466            } 
    467467 
     
    484484            $term_id = $theme_limit['theme']->getId(); 
    485485            if($theme_limit['recursive']) { 
    486                 $sql_theme_limit_where = "(vdex_4_vocabulary_identifier = '{$term_id[1]}' AND ns_left >= {$theme_limit['theme']->mLeft} AND ns_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"; 
    487487            } 
    488488            else { 
    489                 $sql_theme_limit_where = "(vdex_4_vocabulary_identifier = '{$term_id[1]}' AND vdex_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"; 
    490490            } 
    491491            //pretty_print_r($sql_theme_limit); 
     
    612612     * Enter description here ... 
    613613     * @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. 
    614616     * @return true 
    615617     */ 
    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        } 
    617628        if($navLevel==1) { 
    618             $leftTable='vocabulary_terms'; 
     629            $leftTable=$initialLeftTable; 
    619630        } 
    620631        else { 
    621632            $leftTable='navigated_terms_level_'.(string)($navLevel-1); 
    622633        } 
     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        } 
    623643 
    624644        $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"; 
    626647        $joinCondArray=array(); 
    627648        //navigableSourceToDest 
    628         if(count($navigableRelationships['navigableSourceToDest']>0)){ 
     649        $joinBackwards?$sourceToDestTypes=$navigableRelationships['navigableSourceToDest']:$sourceToDestTypes=$navigableRelationships['navigableSourceToDest']; 
     650        if(count($sourceToDestTypes)>0){ 
    629651            $tmpSql = null; 
    630652            $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 
    635656            $internaljoinCondArray = array(); 
    636             foreach($navigableRelationships['navigableSourceToDest'] as $relationshipType) { 
     657             
     658            foreach($sourceToDestTypes as $relationshipType) { 
    637659                $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"; 
    638660            } 
     
    643665        } 
    644666        //navigableDestToSource 
    645         if(count($navigableRelationships['navigableDestToSource']>0)){ 
     667        $joinBackwards?$destToSourceTypes=$navigableRelationships['navigableSourceToDest']:$destToSourceTypes=$navigableRelationships['navigableSourceToDest']; 
     668        if(count($destToSourceTypes)>0){ 
    646669            $tmpSql = null; 
    647670            $tmpSql .= " ( \n"; 
    648             $tmpSql .= " navigated_relationship_level_{$navLevel}.target_term_vocabulary_identifier=$leftTable.vdex_4_vocabulary_identifier \n"; 
    649             $tmpSql .= " AND navigated_relationship_level_{$navLevel}.target_term_identifier=$leftTable.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"; 
    650673            $internaljoinCondArray = array(); 
    651             foreach($navigableRelationships['navigableDestToSource'] as $relationshipType) { 
     674            foreach($destToSourceTypes as $relationshipType) { 
    652675                $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"; 
    653676            } 
     
    659682        $sql .= implode("\n OR \n", $joinCondArray); 
    660683        $sql .= " )\n"; 
    661         $joinCondArray = array(); 
     684 
     685 
     686 
     687 
     688        /* Re-joining with vocabulary_term is essential to exploit the nested-set structure later */ 
    662689        $selectListArray[] = "navigated_relationship_level_{$navLevel}.vdex_7_4_2_relationship_type_value as RT"; 
    663690        $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        } 
    682726 
    683727        return true; 
    684728    } 
    685729 
    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     *  */ 
    687736    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 
    688748        global $NAVIGATE_VOC_RELATIONS_ENABLED; 
    689749        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            } 
    692766            $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"; 
    709772        } 
    710773        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         
    713781        return $retval; 
    714782    } 
     
    815883            $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"; 
    816884            /* 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 OR vdex_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"; 
    818886            /* lom_9_2_taxon_path, lom_9_2_2_taxons */ 
    819887            $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"; 
     
    9441012 
    9451013        $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); 
    9471015        return $row['count']; 
    9481016    } 
  • html/tests/VocabRelationshipNavigationTest.php

    rce9b376 rf0daea6  
    6363        $this->addLo('oai:eureka.coeus.ca:r11', array('rVoc2T6', 'rVoc2'), $los, $create); 
    6464        $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); 
    6566        return $los; 
    6667    } 
     
    104105            $retval[]=$lo->getOaiId()->getEntry(); 
    105106        } 
     107 
    106108        sort($retval); 
     109 
    107110        return $retval; 
    108111    } 
     
    163166        $this->assertEquals(array('oai:eureka.coeus.ca:r11'), $this->getThemeLOArray(Theme::getObject(array('rVoc2T6', 'rVoc2')))); 
    164167        $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        } 
    166170     
    167171    public function testVocabularyNavigationWorks() 
    168172    { 
    169173        global $NAVIGATE_VOC_RELATIONS_ENABLED; 
    170         $NAVIGATE_VOC_RELATIONS_ENABLED = false; 
     174        $NAVIGATE_VOC_RELATIONS_ENABLED = true; 
    171175        $expected = array('oai:eureka.coeus.ca:r1'); 
    172176        $this->assertEquals($expected, $this->getThemeLOArray(Theme::getObject(array('rVoc1T1', 'rVoc1')))); 
     
    178182                          'oai:eureka.coeus.ca:r8', 
    179183                          'oai:eureka.coeus.ca:r9', 
    180                           'oai:eureka.coeus.ca:r12'     
     184                          'oai:eureka.coeus.ca:r12',     
     185                          'oai:eureka.coeus.ca:r13'    
    181186                          ); 
     187                                  sort($expected); 
    182188                          $this->assertEquals($expected, $this->getThemeLOArray(Theme::getObject(array('rVoc1T2', 'rVoc1')))); 
    183189 
  • html/tests/testVocs/pivotVoc.xml

    rdf1a05b rf0daea6  
    11<?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"> 
    33  <vocabName> 
    44    <langstring language="en">pivot vocabulary to test relationship navigations</langstring> 
     
    2323    </caption> 
    2424  </term> 
     25  <term validIndex="true" orderSignificant="false"> 
     26    <termIdentifier>pivotVocT4</termIdentifier> 
     27    <caption> 
     28      <langstring language="en">Term 4</langstring> 
     29    </caption> 
     30  </term> 
    2531</vdex> 
  • html/tests/testVocs/rVoc1.xml

    rdf1a05b rf0daea6  
    11<?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"> 
    33  <vocabName> 
    44    <langstring language="en">related vocabulary 1 to test relationship navigations</langstring> 
     
    2828    <relationshipType source="http://www.imsglobal.org/vocabularies/iso2788_relations.xml">RT</relationshipType> 
    2929  </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> 
    3035</vdex> 
Note: See TracChangeset for help on using the changeset viewer.