Search:

# CWIS Developers Documentation

- Main Page
- Classes
- Files

- File List
- File Members

# VocabularyFactory.php

Go to the documentation of this file.

    00001 <?PHP
    00002
    00003 #
    00004 #   FILE:  VocabularyFactory.php
    00005 #
    00006 #   Part of the Collection Workflow Integration System
    00007 #   Copyright 2007-2009 Edward Almasy and Internet Scout
    00008 #   http://scout.wisc.edu
    00009 #
    00010
    00014 class VocabularyFactory {
    00015
    00016     # ---- PUBLIC INTERFACE --------------------------------------------------
    00017
    00022     function VocabularyFactory($Path)
    00023     {
    00024         $this->Path = $Path;
    00025     }
    00026
    00032     function GetVocabularies()
    00033     {
    00034         # load vocabularies (if any)
    00035         $Vocabularies = array();
    00036         $VocFileNames = $this->GetFileList();
    00037         foreach ($VocFileNames as $FileName)
    00038         {
    00039             $Vocabularies[] = new Vocabulary($FileName);
    00040         }
    00041
    00042         # sort vocabularies by name
    00043         function SORT_VocabularyFactory_GetVocabularies($VocA, $VocB)
    00044         {
    00045             $NameA = $VocA->Name();
    00046             $NameB = $VocB->Name();
    00047             return ($NameA == $NameB) ? 0 : (($NameA < $NameB) ? -1 : 1);
    00048         }
    00049         usort($Vocabularies, "SORT_VocabularyFactory_GetVocabularies");
    00050
    00051         # return array of vocabularies to caller
    00052         return $Vocabularies;
    00053     }
    00054
    00060     function GetVocabularyByHash($Hash)
    00061     {
    00062         # for each available vocabulary file
    00063         $Vocab = NULL;
    00064         $VocFileNames = $this->GetFileList();
    00065         foreach ($VocFileNames as $FileName)
    00066         {
    00067             # if hash for vocabulary file matches specified hash
    00068             if (Vocabulary::HashForFile($FileName) == $Hash)
    00069             {
    00070                 # load vocabulary and stop searching file list
    00071                 $Vocab = new Vocabulary($FileName);
    00072                 break;
    00073             }
    00074         }
    00075
    00076         # return matching vocabulary (if any) to caller
    00077         return $Vocab;
    00078     }
    00079
    00080     # ---- PRIVATE INTERFACE -------------------------------------------------
    00081
    00082     private $Path;
    00083
    00084     private function GetFileList()
    00085     {
    00086         # read in list of vocabulary files
    00087         $VocFiles = array();
    00088         if (is_dir($this->Path))
    00089         {
    00090             $AllFiles = scandir($this->Path);
    00091             foreach ($AllFiles as $FileName)
    00092             {
    00093                 if (preg_match("/\\.voc\$/i", $FileName))
    00094                 {
    00095                     $VocFiles[] = realpath($this->Path."/".$FileName);
    00096                 }
    00097             }
    00098         }
    00099         return $VocFiles;
    00100     }
    00101 }
    00102
    00103
    00104 ?>