• Main Page
  • Modules
  • Classes
  • Files
  • File List

classes/monograph/MonographAgencyDAO.inc.php

00001 <?php
00002 
00016 import('lib.pkp.classes.controlledVocab.ControlledVocabDAO');
00017 
00018 define('CONTROLLED_VOCAB_MONOGRAPH_AGENCY', 'monographAgency');
00019 
00020 class MonographAgencyDAO extends ControlledVocabDAO {
00024    function MonographAgencyDAO() {
00025       parent::ControlledVocabDAO();
00026    }
00027 
00033    function build($monographId) {
00034       return parent::build(CONTROLLED_VOCAB_MONOGRAPH_AGENCY, ASSOC_TYPE_MONOGRAPH, $monographId);
00035    }
00036 
00041    function getLocaleFieldNames() {
00042       return array('monographAgency');
00043    }
00044 
00051    function getAgencies($monographId, $locales) {
00052 
00053       $returner = array();
00054       foreach ($locales as $locale) {
00055          $returner[$locale] = array();
00056          $agencies = $this->build($monographId);
00057          $monographAgencyEntryDao =& DAORegistry::getDAO('MonographAgencyEntryDAO');
00058          $monographAgencies = $monographAgencyEntryDao->getByControlledVocabId($agencies->getId());
00059 
00060          while ($agency =& $monographAgencies->next()) {
00061             $agency = $agency->getAgency();
00062             if (array_key_exists($locale, $agency)) { // quiets PHP when there are no agencies for a given locale
00063                $returner[$locale][] = $agency[$locale];
00064                unset($agency);
00065             }
00066          }
00067       }
00068       return $returner;
00069    }
00070 
00075    function getAllUniqueAgencies() {
00076       $agencies = array();
00077 
00078       $result =& $this->retrieve(
00079          'SELECT DISTINCT setting_value FROM controlled_vocab_entry_settings WHERE setting_name = ?', CONTROLLED_VOCAB_MONOGRAPH_AGENCY
00080       );
00081 
00082       while (!$result->EOF) {
00083          $agencies[] = $result->fields[0];
00084          $result->MoveNext();
00085       }
00086 
00087       $result->Close();
00088       unset($result);
00089 
00090       return $agencies;
00091    }
00092 
00098    function getMonographIdsByAgency($agency) {
00099       $result =& $this->retrieve(
00100          'SELECT assoc_id
00101           FROM controlled_vocabs cv
00102           LEFT JOIN controlled_vocab_entries cve ON cv.controlled_vocab_id = cve.controlled_vocab_id
00103           INNER JOIN controlled_vocab_entry_settings cves ON cve.controlled_vocab_entry_id = cves.controlled_vocab_entry_id
00104           WHERE cves.setting_name = ? AND cves.setting_value = ?',
00105          array(CONTROLLED_VOCAB_MONOGRAPH_AGENCY, $agency)
00106       );
00107 
00108       $returner = array();
00109       while (!$result->EOF) {
00110          $row = $result->GetRowAssoc(false);
00111          $returner[] = $row['assoc_id'];
00112          $result->MoveNext();
00113       }
00114       $result->Close();
00115       return $returner;
00116    }
00117 
00125    function insertAgencies($agencies, $monographId, $deleteFirst = true) {
00126       $agencyDao =& DAORegistry::getDAO('MonographAgencyDAO');
00127       $monographAgencyEntryDao =& DAORegistry::getDAO('MonographAgencyEntryDAO');
00128       $currentAgencies = $this->build($monographId);
00129 
00130       if ($deleteFirst) {
00131          $existingEntries = $agencyDao->enumerate($currentAgencies->getId(), CONTROLLED_VOCAB_MONOGRAPH_AGENCY);
00132 
00133          foreach ($existingEntries as $id => $entry) {
00134             $entry = trim($entry);
00135             $monographAgencyEntryDao->deleteObjectById($id);
00136          }
00137       }
00138       if (is_array($agencies)) { // localized, array of arrays
00139 
00140          foreach ($agencies as $locale => $list) {
00141             if (is_array($list)) {
00142                $list = array_unique($list); // Remove any duplicate keywords
00143                $i = 1;
00144                foreach ($list as $agency) {
00145                   $agencyEntry = $monographAgencyEntryDao->newDataObject();
00146                   $agencyEntry->setControlledVocabId($currentAgencies->getID());
00147                   $agencyEntry->setAgency(urldecode($agency), $locale);
00148                   $agencyEntry->setSequence($i);
00149                   $i ++;
00150                   $agencyEntryId = $monographAgencyEntryDao->insertObject($agencyEntry);
00151                }
00152             }
00153          }
00154       }
00155    }
00156 }
00157 
00158 ?>

Generated on Mon Sep 17 2012 13:58:55 for Open Monograph Press by  doxygen 1.7.1