Beispiel #1
0
function parseRecord($s_id, $s_name, $s_container, $s_position, $s_created, $s_updated, $l_id, $l_url, $l_comment, $l_created, $l_updated, $l_accessed)
{
    global $sections;
    global $count;
    $index = 0;
    while ($index < $count && $sections[$index]->getId() !== $s_id) {
        $index++;
    }
    if ($index === $count) {
        $sections[$count] = new Section();
        $sections[$count]->setId($s_id)->setName($s_name)->setPosition($s_position)->setCreated($s_created)->setUpdated($s_updated);
        for ($i = 0; $i < $count; $i++) {
            if ($sections[$i]->getContainer() != null && $sections[$i]->getContainer()->getId() === $s_id) {
                $sections[$i]->setContainer($sections[$count]);
                $sections[$count]->addSection($sections[$i]);
            }
        }
        if ($s_container != null) {
            $i = 0;
            while ($i < $count) {
                if ($sections[$i]->getId() === $s_container) {
                    $sections[$count]->setContainer($sections[$i]);
                    $sections[$i]->addSection($sections[$count]);
                    break;
                }
                $i++;
            }
            if ($i === $count) {
                $aux = new Section();
                $aux->setId($s_container);
                $sections[$count]->setContainer($aux);
            }
        }
        $count++;
    }
    if ($l_id != null) {
        $link = new Link();
        $link->setId($l_id)->setUrl($l_url)->setComment($l_comment)->setCreated($l_created)->setUpdated($l_updated)->setAccessed($l_accessed)->setSection($sections[$index]);
        $sections[$index]->addLink($link);
    }
}
Beispiel #2
0
 /**
  * Internal function to return a Section object from a row.
  * @param $row array
  * @return Section
  */
 function &_returnSectionFromRow(&$row)
 {
     $section = new Section();
     $section->setId($row['section_id']);
     $section->setJournalId($row['journal_id']);
     $section->setReviewFormId($row['review_form_id']);
     $section->setSequence($row['seq']);
     $section->setMetaIndexed($row['meta_indexed']);
     $section->setMetaReviewed($row['meta_reviewed']);
     $section->setAbstractsNotRequired($row['abstracts_not_required']);
     $section->setEditorRestricted($row['editor_restricted']);
     $section->setHideTitle($row['hide_title']);
     $section->setHideAuthor($row['hide_author']);
     $section->setHideAbout($row['hide_about']);
     $section->setDisableComments($row['disable_comments']);
     $section->setAbstractWordCount($row['abstract_word_count']);
     $this->getDataObjectSettings('section_settings', 'section_id', $row['section_id'], $section);
     HookRegistry::call('SectionDAO::_returnSectionFromRow', array(&$section, &$row));
     return $section;
 }
Beispiel #3
0
 function handleSectionNode(&$journal, &$sectionNode, &$issue, &$errors, &$user, $isCommandLine, &$dependentItems, $sectionIndex = null)
 {
     $sectionDao =& DAORegistry::getDAO('SectionDAO');
     $errors = array();
     $journalSupportedLocales = array_keys($journal->getSupportedLocaleNames());
     // => journal locales must be set up before
     $journalPrimaryLocale = $journal->getPrimaryLocale();
     // The following page or two is responsible for locating an
     // existing section based on title and/or abbrev, or, if none
     // can be found, creating a new one.
     $titles = array();
     for ($index = 0; $node = $sectionNode->getChildByName('title', $index); $index++) {
         $locale = $node->getAttribute('locale');
         if ($locale == '') {
             $locale = $journalPrimaryLocale;
         } elseif (!in_array($locale, $journalSupportedLocales)) {
             $errors[] = array('plugins.importexport.native.import.error.sectionTitleLocaleUnsupported', array('sectionTitle' => $node->getValue(), 'issueTitle' => $issue->getIssueIdentification(), 'locale' => $locale));
             return false;
             // or ignore this error?
         }
         $titles[$locale] = $node->getValue();
     }
     if (empty($titles)) {
         $errors[] = array('plugins.importexport.native.import.error.sectionTitleMissing', array('issueTitle' => $issue->getIssueIdentification()));
         return false;
     }
     $abbrevs = array();
     for ($index = 0; $node = $sectionNode->getChildByName('abbrev', $index); $index++) {
         $locale = $node->getAttribute('locale');
         if ($locale == '') {
             $locale = $journalPrimaryLocale;
         } elseif (!in_array($locale, $journalSupportedLocales)) {
             $errors[] = array('plugins.importexport.native.import.error.sectionAbbrevLocaleUnsupported', array('sectionAbbrev' => $node->getValue(), 'issueTitle' => $issue->getIssueIdentification(), 'locale' => $locale));
             return false;
             // or ignore this error?
         }
         $abbrevs[$locale] = $node->getValue();
     }
     $identifyTypes = array();
     for ($index = 0; $node = $sectionNode->getChildByName('identify_type', $index); $index++) {
         $locale = $node->getAttribute('locale');
         if ($locale == '') {
             $locale = $journalPrimaryLocale;
         } elseif (!in_array($locale, $journalSupportedLocales)) {
             $errors[] = array('plugins.importexport.native.import.error.sectionIdentifyTypeLocaleUnsupported', array('sectionIdentifyType' => $node->getValue(), 'issueTitle' => $issue->getIssueIdentification(), 'locale' => $locale));
             return false;
             // or ignore this error?
         }
         $identifyTypes[$locale] = $node->getValue();
     }
     $policies = array();
     for ($index = 0; $node = $sectionNode->getChildByName('policy', $index); $index++) {
         $locale = $node->getAttribute('locale');
         if ($locale == '') {
             $locale = $journalPrimaryLocale;
         } elseif (!in_array($locale, $journalSupportedLocales)) {
             $errors[] = array('plugins.importexport.native.import.error.sectionPolicyLocaleUnsupported', array('sectionPolicy' => $node->getValue(), 'issueTitle' => $issue->getIssueIdentification(), 'locale' => $locale));
             return false;
             // or ignore this error?
         }
         $policies[$locale] = $node->getValue();
     }
     // $title and, optionally, $abbrev contain information that can
     // be used to locate an existing section. Otherwise, we'll
     // create a new one. If $title and $abbrev each match an
     // existing section, but not the same section, throw an error.
     $section = null;
     $foundSectionId = $foundSectionTitle = null;
     $index = 0;
     foreach ($titles as $locale => $title) {
         $section = $sectionDao->getSectionByTitle($title, $journal->getId());
         if ($section) {
             $sectionId = $section->getId();
             if ($foundSectionId) {
                 if ($foundSectionId != $sectionId) {
                     // Mismatching sections found. Throw an error.
                     $errors[] = array('plugins.importexport.native.import.error.sectionTitleMismatch', array('section1Title' => $title, 'section2Title' => $foundSectionTitle, 'issueTitle' => $issue->getIssueIdentification()));
                     return false;
                 }
             } else {
                 if ($index > 0) {
                     // the current title matches, but the prev titles didn't => error
                     $errors[] = array('plugins.importexport.native.import.error.sectionTitleMatch', array('sectionTitle' => $title, 'issueTitle' => $issue->getIssueIdentification()));
                     return false;
                 }
             }
             $foundSectionId = $sectionId;
             $foundSectionTitle = $title;
         } else {
             if ($foundSectionId) {
                 // a prev title matched, but the current doesn't => error
                 $errors[] = array('plugins.importexport.native.import.error.sectionTitleMatch', array('sectionTitle' => $foundSectionTitle, 'issueTitle' => $issue->getIssueIdentification()));
                 return false;
             }
         }
         $index++;
     }
     // check abbrevs:
     $abbrevSection = null;
     $foundSectionId = $foundSectionAbbrev = null;
     $index = 0;
     foreach ($abbrevs as $locale => $abbrev) {
         $abbrevSection = $sectionDao->getSectionByAbbrev($abbrev, $journal->getId());
         if ($abbrevSection) {
             $sectionId = $abbrevSection->getId();
             if ($foundSectionId) {
                 if ($foundSectionId != $sectionId) {
                     // Mismatching sections found. Throw an error.
                     $errors[] = array('plugins.importexport.native.import.error.sectionAbbrevMismatch', array('section1Abbrev' => $abbrev, 'section2Abbrev' => $foundSectionAbbrev, 'issueTitle' => $issue->getIssueIdentification()));
                     return false;
                 }
             } else {
                 if ($index > 0) {
                     // the current abbrev matches, but the prev abbrevs didn't => error
                     $errors[] = array('plugins.importexport.native.import.error.sectionAbbrevMatch', array('sectionAbbrev' => $sectionAbbrev, 'issueTitle' => $issue->getIssueIdentification()));
                     return false;
                 }
             }
             $foundSectionId = $sectionId;
             $foundSectionAbbrev = $abbrev;
         } else {
             if ($foundSectionId) {
                 // a prev abbrev matched, but the current doesn't => error
                 $errors[] = array('plugins.importexport.native.import.error.sectionAbbrevMatch', array('sectionAbbrev' => $foundSectionAbbrev, 'issueTitle' => $issue->getIssueIdentification()));
                 return false;
             }
         }
         $index++;
     }
     if (!$section && !$abbrevSection) {
         // The section was not matched. Create one.
         // Note that because sections are global-ish,
         // we're not maintaining a list of created
         // sections to delete in case the import fails.
         unset($section);
         $section = new Section();
         $section->setTitle($titles, null);
         $section->setAbbrev($abbrevs, null);
         $section->setIdentifyType($identifyTypes, null);
         $section->setPolicy($policies, null);
         $section->setJournalId($journal->getId());
         $section->setSequence(REALLY_BIG_NUMBER);
         $section->setMetaIndexed(1);
         $section->setEditorRestricted(1);
         $section->setId($sectionDao->insertSection($section));
         $sectionDao->resequenceSections($journal->getId());
     }
     if (!$section && $abbrevSection) {
         unset($section);
         $section =& $abbrevSection;
     }
     // $section *must* now contain a valid section, whether it was
     // found amongst existing sections or created anew.
     // Handle custom ordering, if necessary.
     if ($sectionIndex !== null) {
         $sectionDao->insertCustomSectionOrder($issue->getId(), $section->getId(), $sectionIndex);
     }
     $hasErrors = false;
     for ($index = 0; $node = $sectionNode->getChildByName('article', $index); $index++) {
         if (!NativeImportDom::handleArticleNode($journal, $node, $issue, $section, $article, $publishedArticle, $articleErrors, $user, $isCommandLine, $dependentItems)) {
             $errors = array_merge($errors, $articleErrors);
             $hasErrors = true;
         }
     }
     if ($hasErrors) {
         return false;
     }
     return true;
 }
Beispiel #4
0
 public function addSection($title)
 {
     $section = new Section($this->addSubElement("section"));
     $section->setId("section_" . $this->getNewSectionId());
     $section->setTitle($title);
     $section->setPublished(false);
     $this->saveDOM();
     return $section;
 }
 function getAllSection()
 {
     $key = 'section';
     $collection = CacheManager::get($key, TRUE);
     if ($collection) {
         return $collection;
     }
     $collection = new Collection();
     $this->connect();
     $result = $this->conn->query("CALL sp_get_all_section()");
     if ($result) {
         //$row = $result->fetch_assoc();
         while ($obj = $result->fetch_object()) {
             $section = new Section();
             $section->setId($obj->Section_id);
             $section->setName($obj->Section_name);
             $collection->addItem($section, $obj->Section_id);
         }
         $result->close();
         // for fetch_object()
     }
     //$result->free_result(); // for fetch_assoc()
     $this->close();
     CacheManager::set($key, $collection, TRUE);
     return $collection;
 }