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

classes/monograph/MonographDisciplineDAO.inc.php

00001 <?php
00002 
00017 import('lib.pkp.classes.controlledVocab.ControlledVocabDAO');
00018 
00019 define('CONTROLLED_VOCAB_MONOGRAPH_DISCIPLINE', 'monographDiscipline');
00020 
00021 class MonographDisciplineDAO extends ControlledVocabDAO {
00025    function MonographDisciplineDAO() {
00026       parent::ControlledVocabDAO();
00027    }
00028 
00034    function build($monographId) {
00035       return parent::build(CONTROLLED_VOCAB_MONOGRAPH_DISCIPLINE, ASSOC_TYPE_MONOGRAPH, $monographId);
00036    }
00037 
00042    function getLocaleFieldNames() {
00043       return array('monographDiscipline');
00044    }
00045 
00052    function getDisciplines($monographId, $locales) {
00053 
00054       $returner = array();
00055 
00056       foreach ($locales as $locale) {
00057 
00058          $returner[$locale] = array();
00059          $disciplines = $this->build($monographId);
00060          $monographDisciplineEntryDao =& DAORegistry::getDAO('MonographDisciplineEntryDAO');
00061          $monographDisciplines = $monographDisciplineEntryDao->getByControlledVocabId($disciplines->getId());
00062 
00063          while ($discipline =& $monographDisciplines->next()) {
00064             $discipline = $discipline->getDiscipline();
00065             if (array_key_exists($locale, $discipline)) { // quiets PHP when there are no disciplines for a given locale
00066                $returner[$locale][] = $discipline[$locale];
00067                unset($discipline);
00068             }
00069          }
00070       }
00071       return $returner;
00072    }
00073 
00078    function getAllUniqueDisciplines() {
00079       $disciplines = array();
00080 
00081       $result =& $this->retrieve(
00082          'SELECT DISTINCT setting_value FROM controlled_vocab_entry_settings WHERE setting_name = ?', CONTROLLED_VOCAB_MONOGRAPH_DISCIPLINE
00083       );
00084 
00085       while (!$result->EOF) {
00086          $disciplines[] = $result->fields[0];
00087          $result->MoveNext();
00088       }
00089 
00090       $result->Close();
00091       unset($result);
00092 
00093       return $disciplines;
00094    }
00095 
00101    function getMonographIdsByDiscipline($discipline) {
00102       $result =& $this->retrieve(
00103          'SELECT assoc_id
00104           FROM controlled_vocabs cv
00105           LEFT JOIN controlled_vocab_entries cve ON cv.controlled_vocab_id = cve.controlled_vocab_id
00106           INNER JOIN controlled_vocab_entry_settings cves ON cve.controlled_vocab_entry_id = cves.controlled_vocab_entry_id
00107           WHERE cves.setting_name = ? AND cves.setting_value = ?',
00108          array(CONTROLLED_VOCAB_MONOGRAPH_DISCIPLINE, $discipline)
00109       );
00110 
00111       $returner = array();
00112       while (!$result->EOF) {
00113          $row = $result->GetRowAssoc(false);
00114          $returner[] = $row['assoc_id'];
00115          $result->MoveNext();
00116       }
00117       $result->Close();
00118       return $returner;
00119    }
00120 
00128    function insertDisciplines($disciplines, $monographId, $deleteFirst = true) {
00129       $disciplineDao =& DAORegistry::getDAO('MonographDisciplineDAO');
00130       $monographDisciplineEntryDao =& DAORegistry::getDAO('MonographDisciplineEntryDAO');
00131       $currentDisciplines = $this->build($monographId);
00132 
00133       if ($deleteFirst) {
00134          $existingEntries = $disciplineDao->enumerate($currentDisciplines->getId(), CONTROLLED_VOCAB_MONOGRAPH_DISCIPLINE);
00135 
00136          foreach ($existingEntries as $id => $entry) {
00137             $entry = trim($entry);
00138             $monographDisciplineEntryDao->deleteObjectById($id);
00139          }
00140       }
00141       if (is_array($disciplines)) { // localized, array of arrays
00142 
00143          foreach ($disciplines as $locale => $list) {
00144             if (is_array($list)) {
00145                $list = array_unique($list); // Remove any duplicate keywords
00146                $i = 1;
00147                foreach ($list as $discipline) {
00148                   $disciplineEntry = $monographDisciplineEntryDao->newDataObject();
00149                   $disciplineEntry->setControlledVocabId($currentDisciplines->getID());
00150                   $disciplineEntry->setDiscipline(urldecode($discipline), $locale);
00151                   $disciplineEntry->setSequence($i);
00152                   $i ++;
00153                   $disciplineEntryId = $monographDisciplineEntryDao->insertObject($disciplineEntry);
00154                }
00155             }
00156          }
00157       }
00158    }
00159 }
00160 
00161 ?>

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