/** * Save changes to article. * @param $request Request * @return int the article ID */ function execute() { $articleDao =& DAORegistry::getDAO('ArticleDAO'); $authorDao =& DAORegistry::getDAO('AuthorDAO'); $article =& $this->article; // Retrieve the previous citation list for comparison. $previousRawCitationList = $article->getCitations(); // Update article $article->setTitle($this->getData('title'), null); // Localized $article->setAbstract($this->getData('abstract'), null); // Localized $article->setDiscipline($this->getData('discipline'), null); // Localized $article->setSubjectClass($this->getData('subjectClass'), null); // Localized $article->setSubject($this->getData('subject'), null); // Localized $article->setCoverageGeo($this->getData('coverageGeo'), null); // Localized $article->setCoverageChron($this->getData('coverageChron'), null); // Localized $article->setCoverageSample($this->getData('coverageSample'), null); // Localized $article->setType($this->getData('type'), null); // Localized $article->setLanguage($this->getData('language')); $article->setSponsor($this->getData('sponsor'), null); // Localized $article->setCitations($this->getData('citations')); if ($article->getSubmissionProgress() <= $this->step) { $article->stampStatusModified(); $article->setSubmissionProgress($this->step + 1); } // Update authors $authors = $this->getData('authors'); for ($i = 0, $count = count($authors); $i < $count; $i++) { if ($authors[$i]['authorId'] > 0) { // Update an existing author $author =& $authorDao->getAuthor($authors[$i]['authorId'], $article->getId()); $isExistingAuthor = true; } else { // Create a new author $author = new Author(); $isExistingAuthor = false; } if ($author != null) { $author->setSubmissionId($article->getId()); $author->setFirstName($authors[$i]['firstName']); $author->setMiddleName($authors[$i]['middleName']); $author->setLastName($authors[$i]['lastName']); $author->setAffiliation($authors[$i]['affiliation'], null); $author->setCountry($authors[$i]['country']); $author->setEmail($authors[$i]['email']); $author->setData('orcid', $authors[$i]['orcid']); $author->setUrl($authors[$i]['url']); if (array_key_exists('competingInterests', $authors[$i])) { $author->setCompetingInterests($authors[$i]['competingInterests'], null); } $author->setBiography($authors[$i]['biography'], null); $author->setPrimaryContact($this->getData('primaryContact') == $i ? 1 : 0); $author->setSequence($authors[$i]['seq']); HookRegistry::call('Author::Form::Submit::AuthorSubmitStep3Form::Execute', array(&$author, &$authors[$i])); if ($isExistingAuthor) { $authorDao->updateAuthor($author); } else { $authorDao->insertAuthor($author); } } unset($author); } // Remove deleted authors $deletedAuthors = preg_split('/:/', $this->getData('deletedAuthors'), -1, PREG_SPLIT_NO_EMPTY); for ($i = 0, $count = count($deletedAuthors); $i < $count; $i++) { $authorDao->deleteAuthorById($deletedAuthors[$i], $article->getId()); } parent::execute(); // Save the article $articleDao->updateArticle($article); // Update references list if it changed. $citationDao =& DAORegistry::getDAO('CitationDAO'); $rawCitationList = $article->getCitations(); if ($previousRawCitationList != $rawCitationList) { $citationDao->importCitations($this->request, ASSOC_TYPE_ARTICLE, $article->getId(), $rawCitationList); } return $this->articleId; }
/** * Save changes to article. * @param $request Request * @return int the article ID */ function execute(&$request) { $articleDao =& DAORegistry::getDAO('ArticleDAO'); $article =& $this->article; $articleSitesData = $this->getData('articleSites'); $articleSites = $article->getArticleSites(); import('classes.journal.TrialSite'); import('classes.article.ArticleSite'); // Remove deleted article sites foreach ($articleSites as $articleSite) { $isPresent = false; foreach ($articleSitesData as $articleSiteData) { if (!empty($articleSiteData['id'])) { if ($articleSite->getId() == $articleSiteData['id']) { $isPresent = true; } } } if (!$isPresent) { $article->removeArticleSite($articleSite->getId()); } unset($isPresent); unset($articleSite); } // Update / Insters article sites foreach ($articleSitesData as $articleSiteData) { if (isset($articleSiteData['id'])) { $articleSite = $article->getArticleSite($articleSiteData['id']); $isExistingSite = true; } else { $articleSite = new ArticleSite(); $isExistingSite = false; } $articleSite->setArticleId($article->getId()); if ($articleSiteData['siteSelect'] == "OTHER") { $trialSite = new TrialSite(); $trialSite->setName($articleSiteData['siteName']); $trialSite->setAddress($articleSiteData['siteAddress']); $trialSite->setCity($articleSiteData['siteCity']); $trialSite->setRegion($articleSiteData['siteRegion']); $trialSite->setLicensure($articleSiteData['siteLicensure']); $trialSite->setAccreditation($articleSiteData['siteAccreditation']); $articleSite->setSiteId($this->trialSiteDao->insertTrialSite($trialSite)); } else { $articleSite->setSiteId($articleSiteData['siteSelect']); } $articleSite->setAuthority($articleSiteData['authority']); $articleSite->setERCId($articleSiteData['erc']); $articleSite->setPrimaryPhone($articleSiteData['primaryPhone']); $articleSite->setSecondaryPhone($articleSiteData['secondaryPhone']); $articleSite->setFax($articleSiteData['fax']); $articleSite->setEmail($articleSiteData['email']); $articleSite->setSubjectsNumber($articleSiteData['subjectsNumber']); $investigatorsData = $articleSiteData['investigators']; $investigators = $articleSite->getInvestigators(); // Remove deleted investigators foreach ($investigators as $investigator) { $isPresent = false; foreach ($investigatorsData as $investigatorData) { if (!empty($investigatorData['id'])) { if ($investigator->getId() == $investigatorData['id']) { $isPresent = true; } } } if (!$isPresent) { $articleSite->removeInvestigator($investigator->getId()); } unset($isPresent); unset($investigator); } // Update / Insert Investigators $investigatorIterator = 1; foreach ($investigatorsData as $investigatorData) { if (isset($investigatorData['id'])) { $investigator = $articleSite->getInvestigator($investigatorData['id']); } else { $investigator = new Author(); } if ($isExistingSite) { $investigator->setSiteId($articleSite->getId()); } if ($investigatorIterator == 1) { $investigator->setPrimaryContact(1); } $investigator->setSequence($investigatorIterator); $investigator->setFirstName($investigatorData['firstName']); $investigator->setLastName($investigatorData['lastName']); $investigator->setExpertise($investigatorData['expertise']); $investigator->setPrimaryPhoneNumber($investigatorData['iPrimaryPhone']); $investigator->setSecondaryPhoneNumber($investigatorData['iSecondaryPhone']); $investigator->setFaxNumber($investigatorData['iFax']); $investigator->setEmail($investigatorData['iEmail']); $articleSite->addInvestigator($investigator); $investigatorIterator++; } $article->addArticleSite($articleSite); } //update step if ($article->getSubmissionProgress() <= $this->step) { $article->stampStatusModified(); $article->setSubmissionProgress($this->step + 1); } elseif ($article->getSubmissionProgress() == 9) { $article->setSubmissionProgress(8); } parent::execute(); // Save the article $articleDao->updateArticle($article); return $this->articleId; }
/** * Save changes to article. * @param $request Request * @return int the article ID */ function execute(&$request) { $articleDao =& DAORegistry::getDAO('ArticleDAO'); $article =& $this->article; $articleContact = new ArticleContact(); $articleContact->setArticleId($article->getId()); $articleContact->setPQName($this->getData('pqName')); $articleContact->setPQAffiliation($this->getData('pqAffiliation')); $articleContact->setPQAddress($this->getData('pqAddress')); $articleContact->setPQCountry($this->getData('pqCountry')); $articleContact->setPQPhone($this->getData('pqPhone')); $articleContact->setPQFax($this->getData('pqFax')); $articleContact->setPQEmail($this->getData('pqEmail')); $articleContact->setSQName($this->getData('sqName')); $articleContact->setSQAffiliation($this->getData('sqAffiliation')); $articleContact->setSQAddress($this->getData('sqAddress')); $articleContact->setSQCountry($this->getData('sqCountry')); $articleContact->setSQPhone($this->getData('sqPhone')); $articleContact->setSQFax($this->getData('sqFax')); $articleContact->setSQEmail($this->getData('sqEmail')); $article->setArticleContact($articleContact); //update step if ($article->getSubmissionProgress() <= $this->step) { $article->stampStatusModified(); $article->setSubmissionProgress($this->step + 1); } elseif ($article->getSubmissionProgress() == 9) { $article->setSubmissionProgress(8); } parent::execute(); // Save the article $articleDao->updateArticle($article); return $this->articleId; }
/** * Save changes to article. * @param $request Request * @return int the article ID */ function execute(&$request) { $articleDao =& DAORegistry::getDAO('ArticleDAO'); $article =& $this->article; // Retrieve the previous citation list for comparison. $previousRawCitationList = $article->getCitations(); /////////////////////////////////////////// ////////////// Update Authors ///////////// /////////////////////////////////////////// $authors = $this->getData('authors'); for ($i = 0, $count = count($authors); $i < $count; $i++) { if ($authors[$i]['authorId'] > 0) { // Update an existing author $author =& $article->getAuthor($authors[$i]['authorId']); $isExistingAuthor = true; } else { // Create a new author $author = new Author(); $isExistingAuthor = false; } if ($author != null) { $author->setSubmissionId($article->getId()); if (isset($authors[$i]['firstName'])) { $author->setFirstName($authors[$i]['firstName']); } if (isset($authors[$i]['middleName'])) { $author->setMiddleName($authors[$i]['middleName']); } if (isset($authors[$i]['lastName'])) { $author->setLastName($authors[$i]['lastName']); } if (isset($authors[$i]['affiliation'])) { $author->setAffiliation($authors[$i]['affiliation']); } if (isset($authors[$i]['phone'])) { $author->setPhoneNumber($authors[$i]['phone']); } if (isset($authors[$i]['email'])) { $author->setEmail($authors[$i]['email']); } $author->setPrimaryContact($this->getData('primaryContact') == $i ? 1 : 0); $author->setSequence($authors[$i]['seq']); if ($isExistingAuthor == false) { $article->addAuthor($author); } } unset($author); } // Remove deleted authors $deletedAuthors = explode(':', $this->getData('deletedAuthors')); for ($i = 0, $count = count($deletedAuthors); $i < $count; $i++) { $article->removeAuthor($deletedAuthors[$i]); } /////////////////////////////////////////// //////////// Update Abstract(s) /////////// /////////////////////////////////////////// import('classes.article.ProposalAbstract'); $journal = Request::getJournal(); $abstracts = $this->getData('abstracts'); foreach ($journal->getSupportedLocaleNames() as $localeKey => $localeValue) { if ($abstracts[$localeKey]['abstractId'] > 0) { $abstract = $article->getAbstractByLocale($localeKey); $isExistingAbstract = true; } else { $abstract = new ProposalAbstract(); $isExistingAbstract = false; } if ($abstract != null) { $abstract->setArticleId($article->getId()); $abstract->setLocale($localeKey); $abstract->setScientificTitle($abstracts[$localeKey]['scientificTitle']); $abstract->setPublicTitle($abstracts[$localeKey]['publicTitle']); $abstract->setBackground($abstracts[$localeKey]['background']); $abstract->setObjectives($abstracts[$localeKey]['objectives']); $abstract->setStudyMethods($abstracts[$localeKey]['studyMethods']); $abstract->setExpectedOutcomes($abstracts[$localeKey]['expectedOutcomes']); $abstract->setKeywords($abstracts[$localeKey]['keywords']); if ($isExistingAbstract == false) { $article->addAbstract($abstract); } } unset($abstract); } /////////////////////////////////////////// ///////// Update Proposal Details ///////// /////////////////////////////////////////// $proposalDetailsData = $this->getData('proposalDetails'); import('classes.article.ProposalDetails'); $proposalDetails = new ProposalDetails(); $institutionDao =& DAORegistry::getDAO('InstitutionDAO'); import('classes.journal.Institution'); $proposalDetails->setArticleId($article->getId()); $proposalDetails->setStudentResearch($proposalDetailsData['studentInitiatedResearch']); $proposalDetails->setStartDate($proposalDetailsData['startDate']); $proposalDetails->setEndDate($proposalDetailsData['endDate']); if ($proposalDetailsData['keyImplInstitution'] == "OTHER") { $institution = new Institution(); $institution->setInstitutionName($proposalDetailsData['otherInstitutionName']); $institution->setInstitutionAcronym($proposalDetailsData['otherInstitutionAcronym']); $institution->setInstitutionType($proposalDetailsData['otherInstitutionType']); $institution->setInstitutionInternational($proposalDetailsData['international']); if ($proposalDetailsData['international'] == INSTITUTION_NATIONAL) { $institution->setInstitutionLocation($proposalDetailsData['locationCountry']); } elseif ($proposalDetailsData['international'] == INSTITUTION_INTERNATIONAL) { $institution->setInstitutionLocation($proposalDetailsData['locationInternational']); } $institutionId = $institutionDao->insertInstitution($institution); $proposalDetails->setKeyImplInstitution($institutionId); unset($institution); } else { $proposalDetails->setKeyImplInstitution($proposalDetailsData['keyImplInstitution']); } $proposalDetails->setMultiCountryResearch($proposalDetailsData['multiCountryResearch']); if ($proposalDetailsData['multiCountryResearch'] == PROPOSAL_DETAIL_YES) { $countriesArray = $proposalDetailsData['countries']; $countries = implode(",", $countriesArray); $proposalDetails->setCountries($countries); } $proposalDetails->setNationwide($proposalDetailsData['nationwide']); if ($proposalDetailsData['nationwide'] != PROPOSAL_DETAIL_YES) { $geoAreasArray = $proposalDetailsData['geoAreas']; $proposalDetails->setGeoAreasFromArray($geoAreasArray); } $researchDomainsArray = $proposalDetailsData['researchDomains']; $proposalDetails->setResearchDomainsFromArray($researchDomainsArray); $researchFieldsArray = $proposalDetailsData['researchFields']; foreach ($researchFieldsArray as $i => $field) { if ($field == "OTHER") { $otherField = $proposalDetailsData['otherResearchField']; if ($otherField != "") { $researchFieldsArray[$i] = "Other (" . $otherField . ")"; } } } $proposalDetails->setResearchFieldsFromArray($researchFieldsArray); $proposalDetails->setHumanSubjects($proposalDetailsData['withHumanSubjects']); if ($proposalDetailsData['withHumanSubjects'] == PROPOSAL_DETAIL_YES) { $proposalTypesArray = $proposalDetailsData['proposalTypes']; foreach ($proposalTypesArray as $i => $type) { if ($type == "OTHER") { $otherType = $proposalDetailsData['otherProposalType']; if ($otherType != "") { $proposalTypesArray[$i] = "Other (" . $otherType . ")"; } } } $proposalDetails->setProposalTypesFromArray($proposalTypesArray); } $proposalDetails->setDataCollection($proposalDetailsData['dataCollection']); if ($proposalDetailsData['reviewedByOtherErc'] == PROPOSAL_DETAIL_YES) { $proposalDetails->setCommitteeReviewed($proposalDetailsData['otherErcDecision']); } else { $proposalDetails->setCommitteeReviewed(PROPOSAL_DETAIL_NO); } // Update or insert student research import('classes.article.StudentResearch'); $studentResearchInfo = new StudentResearch(); $studentResearchInfo->setArticleId($article->getId()); $studentResearchData = $this->getData('studentResearch'); $studentResearchInfo->setInstitution($studentResearchData['studentInstitution']); $studentResearchInfo->setDegree($studentResearchData['academicDegree']); $studentResearchInfo->setSupervisorName($studentResearchData['supervisorName']); $studentResearchInfo->setSupervisorEmail($studentResearchData['supervisorEmail']); $proposalDetails->setStudentResearchInfo($studentResearchInfo); $article->setProposalDetails($proposalDetails); /////////////////////////////////////////// //////// Update Sources of Monetary /////// /////////////////////////////////////////// $sources = $article->getSources(); $sourcesData = $this->getData('sources'); //Remove sources foreach ($sources as $source) { $isPresent = false; foreach ($sourcesData as $sourceData) { if (!empty($sourceData['sourceId'])) { if ($source->getSourceId() == $sourceData['sourceId']) { $isPresent = true; } } } if (!$isPresent) { $article->removeSource($source->getSourceId()); } unset($source); } for ($i = 0, $count = count($sourcesData); $i < $count; $i++) { if (!empty($sourcesData[$i]['sourceId'])) { // Update an existing source $source =& $article->getSource($sourcesData[$i]['sourceId']); $isExistingSource = true; } else { // Create a new source $source = new ProposalSource(); $isExistingSource = false; } if ($source != null) { $source->setArticleId($article->getId()); if ($sourcesData[$i]['institution'] == "OTHER") { $institution = new Institution(); $institution->setInstitutionName($sourcesData[$i]['otherInstitutionName']); $institution->setInstitutionAcronym($sourcesData[$i]['otherInstitutionAcronym']); $institution->setInstitutionType($sourcesData[$i]['otherInstitutionType']); $institution->setInstitutionInternational($sourcesData[$i]['international']); if ($sourcesData[$i]['international'] == INSTITUTION_NATIONAL) { $institution->setInstitutionLocation($sourcesData[$i]['locationCountry']); } elseif ($proposalDetailsData['international'] == INSTITUTION_INTERNATIONAL) { $institution->setInstitutionLocation($sourcesData[$i]['locationInternational']); } $institutionId = $institutionDao->insertInstitution($institution); $source->setInstitutionId($institutionId); unset($institution); } elseif ($sourcesData[$i]['institution'] == "KII") { $source->setInstitutionId($proposalDetails->getKeyImplInstitution()); } else { $source->setInstitutionId($sourcesData[$i]['institution']); } $source->setSourceAmount($sourcesData[$i]['amount']); if (!$isExistingSource) { $article->addSource($source); } } unset($source); } /////////////////////////////////////////// ///////////// Risk Assessment ///////////// /////////////////////////////////////////// import('classes.article.RiskAssessment'); $riskAssessment = new RiskAssessment(); $riskAssessmentData = $this->getData('riskAssessment'); $riskAssessment->setArticleId($article->getId()); $riskAssessment->setIdentityRevealed($riskAssessmentData['identityRevealed']); $riskAssessment->setUnableToConsent($riskAssessmentData['unableToConsent']); $riskAssessment->setUnder18($riskAssessmentData['under18']); $riskAssessment->setDependentRelationship($riskAssessmentData['dependentRelationship']); $riskAssessment->setEthnicMinority($riskAssessmentData['ethnicMinority']); $riskAssessment->setImpairment($riskAssessmentData['impairment']); $riskAssessment->setPregnant($riskAssessmentData['pregnant']); $riskAssessment->setNewTreatment($riskAssessmentData['newTreatment']); $riskAssessment->setBioSamples($riskAssessmentData['bioSamples']); $riskAssessment->setExportHumanTissue($riskAssessmentData['exportHumanTissue']); $riskAssessment->setExportReason($riskAssessmentData['exportReason']); $riskAssessment->setRadiation($riskAssessmentData['radiation']); $riskAssessment->setDistress($riskAssessmentData['distress']); $riskAssessment->setInducements($riskAssessmentData['inducements']); $riskAssessment->setSensitiveInfo($riskAssessmentData['sensitiveInfo']); $riskAssessment->setReproTechnology($riskAssessmentData['reproTechnology']); $riskAssessment->setGenetic($riskAssessmentData['genetic']); $riskAssessment->setStemCell($riskAssessmentData['stemCell']); $riskAssessment->setBiosafety($riskAssessmentData['biosafety']); $riskAssessment->setRiskLevel($riskAssessmentData['riskLevel']); $riskAssessment->setListRisks($riskAssessmentData['listRisks']); $riskAssessment->setHowRisksMinimized($riskAssessmentData['howRisksMinimized']); $riskAssessment->setRisksToTeam(isset($riskAssessmentData['risksToTeam']) ? 1 : 0); $riskAssessment->setRisksToSubjects(isset($riskAssessmentData['risksToSubjects']) ? 1 : 0); $riskAssessment->setRisksToCommunity(isset($riskAssessmentData['risksToCommunity']) ? 1 : 0); $riskAssessment->setBenefitsToParticipants(isset($riskAssessmentData['benefitsToParticipants']) ? 1 : 0); $riskAssessment->setKnowledgeOnCondition(isset($riskAssessmentData['knowledgeOnCondition']) ? 1 : 0); $riskAssessment->setKnowledgeOnDisease(isset($riskAssessmentData['knowledgeOnDisease']) ? 1 : 0); $riskAssessment->setMultiInstitutions($riskAssessmentData['multiInstitutions']); $riskAssessment->setConflictOfInterest($riskAssessmentData['conflictOfInterest']); $article->setRiskAssessment($riskAssessment); //update step if ($article->getSubmissionProgress() <= $this->step) { $article->stampStatusModified(); $article->setSubmissionProgress($this->step + 1); } parent::execute(); // Save the article $articleDao->updateArticle($article); // Update references list if it changed. $citationDao =& DAORegistry::getDAO('CitationDAO'); $rawCitationList = $article->getCitations(); if ($previousRawCitationList != $rawCitationList) { $citationDao->importCitations($request, ASSOC_TYPE_ARTICLE, $article->getId(), $rawCitationList); } return $this->articleId; }
/** * Save changes to article. * @return int the article ID */ function execute() { $articleDao =& DAORegistry::getDAO('ArticleDAO'); $authorDao =& DAORegistry::getDAO('AuthorDAO'); // Update article $article =& $this->article; $article->setTitle($this->getData('title'), null); // Localized $article->setAbstract($this->getData('abstract'), null); // Localized $article->setDiscipline($this->getData('discipline'), null); // Localized $article->setSubjectClass($this->getData('subjectClass'), null); // Localized $article->setSubject($this->getData('subject'), null); // Localized $article->setCoverageGeo($this->getData('coverageGeo'), null); // Localized $article->setCoverageChron($this->getData('coverageChron'), null); // Localized $article->setCoverageSample($this->getData('coverageSample'), null); // Localized $article->setType($this->getData('type'), null); // Localized $article->setLanguage($this->getData('language')); $article->setSponsor($this->getData('sponsor'), null); // Localized $article->setCitations($this->getData('citations')); if ($article->getSubmissionProgress() <= $this->step) { $article->stampStatusModified(); $article->setSubmissionProgress($this->step + 1); } // Update authors $authors = $this->getData('authors'); for ($i = 0, $count = count($authors); $i < $count; $i++) { if ($authors[$i]['authorId'] > 0) { // Update an existing author $author =& $article->getAuthor($authors[$i]['authorId']); $isExistingAuthor = true; } else { // Create a new author $author = new Author(); $isExistingAuthor = false; } if ($author != null) { $author->setArticleId($article->getId()); $author->setFirstName($authors[$i]['firstName']); $author->setMiddleName($authors[$i]['middleName']); $author->setLastName($authors[$i]['lastName']); $author->setAffiliation($authors[$i]['affiliation']); $author->setCountry($authors[$i]['country']); $author->setEmail($authors[$i]['email']); $author->setUrl($authors[$i]['url']); if (array_key_exists('competingInterests', $authors[$i])) { $author->setCompetingInterests($authors[$i]['competingInterests'], null); } $author->setBiography($authors[$i]['biography'], null); $author->setPrimaryContact($this->getData('primaryContact') == $i ? 1 : 0); $author->setSequence($authors[$i]['seq']); if ($isExistingAuthor == false) { $article->addAuthor($author); } } unset($author); } // Remove deleted authors $deletedAuthors = explode(':', $this->getData('deletedAuthors')); for ($i = 0, $count = count($deletedAuthors); $i < $count; $i++) { $article->removeAuthor($deletedAuthors[$i]); } parent::execute(); // Save the article $articleDao->updateArticle($article); return $this->articleId; }
/** * Save changes to article. * @param $request Request * @return int the article ID */ function execute(&$request) { $articleDao =& DAORegistry::getDAO('ArticleDAO'); $articleDetailsDao =& DAORegistry::getDAO('ArticleDetailsDAO'); $institutionDao =& DAORegistry::getDAO('InstitutionDAO'); import('classes.journal.Institution'); $article =& $this->article; $fundingSourcesData = $this->getData('fundingSources'); $fundingSources = $article->getArticleFundingSources(); $primarySponsorData = $this->getData('primarySponsor'); $secondarySponsorsData = $this->getData('secondarySponsors'); $secondarySponsors = $article->getArticleSecondarySponsors(); $details = $article->getArticleDetails(); $CROsData = $this->getData('CROs'); $CROs = $article->getArticleCROs(); $newInstitutions = array(); // Remove deleted funding sources foreach ($fundingSources as $fundingSource) { $isPresent = false; foreach ($fundingSourcesData as $fundingSourceData) { if (!empty($fundingSourceData['id'])) { if ($fundingSource->getId() == $fundingSourceData['id']) { $isPresent = true; } } } if (!$isPresent) { $article->removeArticleFundingSource($fundingSource->getId()); } unset($isPresent); unset($fundingSource); } // Update / Insert funding sources foreach ($fundingSourcesData as $fundingSourceData) { if (isset($fundingSourceData['id'])) { $articleSource = $article->getArticleFundingSource($fundingSourceData['id']); } else { $articleSource = new ArticleSponsor(); } $articleSource->setArticleId($article->getId()); $articleSource->setType(ARTICLE_SPONSOR_TYPE_FUNDING); if ($fundingSourceData['institutionId'] == 'OTHER') { $institution = new Institution(); $institution->setInstitutionName($fundingSourceData['name']); $institution->setInstitutionAcronym($fundingSourceData['acronym']); $institution->setInstitutionType($fundingSourceData['type']); $institution->setInstitutionInternational($fundingSourceData['location']); if ($fundingSourceData['location'] == INSTITUTION_NATIONAL) { $institution->setInstitutionLocation($fundingSourceData['locationCountry']); } elseif ($fundingSourceData['location'] == INSTITUTION_INTERNATIONAL) { $institution->setInstitutionLocation($fundingSourceData['locationInternational']); } $institutionId = $institutionDao->insertInstitution($institution); $articleSource->setInstitutionId($institutionId); $fundingSourceData['institutionId'] = $institutionId; array_push($newInstitutions, $fundingSourceData); unset($institution); } else { $articleSource->setInstitutionId($fundingSourceData['institutionId']); } $article->addArticleFundingSource($articleSource); unset($articleSource); } if (isset($primarySponsorData['id'])) { $primarySponsor = $article->getArticlePrimarySponsor(); } else { $primarySponsor = new ArticleSponsor(); } $primarySponsor->setArticleId($article->getId()); $primarySponsor->setType(ARTICLE_SPONSOR_TYPE_PRIMARY); if ($primarySponsorData['institutionId'] == 'OTHER') { $found = false; foreach ($newInstitutions as $newInstitution) { if ($newInstitution['name'] == $primarySponsorData['name'] || $newInstitution['acronym'] == $primarySponsorData['acronym']) { $found = $newInstitution['institutionId']; } } if (!$found) { $institution = new Institution(); $institution->setInstitutionName($primarySponsorData['name']); $institution->setInstitutionAcronym($primarySponsorData['acronym']); $institution->setInstitutionType($primarySponsorData['type']); $institution->setInstitutionInternational($primarySponsorData['location']); if ($primarySponsorData['location'] == INSTITUTION_NATIONAL) { $institution->setInstitutionLocation($primarySponsorData['locationCountry']); } elseif ($primarySponsorData['location'] == INSTITUTION_INTERNATIONAL) { $institution->setInstitutionLocation($primarySponsorData['locationInternational']); } $institutionId = $institutionDao->insertInstitution($institution); $primarySponsor->setInstitutionId($institutionId); $primarySponsorData['institutionId'] = $institutionId; array_push($newInstitutions, $primarySponsorData); unset($institution); } else { $primarySponsor->setInstitutionId($found); } } else { $primarySponsor->setInstitutionId($primarySponsorData['institutionId']); } $article->setArticlePrimarySponsor($primarySponsor); // Remove deleted secondary sponsors foreach ($secondarySponsors as $secondarySponsor) { $isPresent = false; foreach ($secondarySponsorsData as $secondarySponsorData) { if (!empty($secondarySponsorData['id'])) { if ($secondarySponsor->getId() == $secondarySponsorData['id']) { $isPresent = true; } } } if (!$isPresent) { $article->removeArticleSecondarySponsor($secondarySponsor->getId()); } unset($isPresent); unset($secondarySponsor); } // Update / Insert secondary sponsors foreach ($secondarySponsorsData as $secondarySponsorData) { if (isset($secondarySponsorData['id'])) { $secondarySponsor = $article->getArticleSecondarySponsor($secondarySponsorData['id']); } else { $secondarySponsor = new ArticleSponsor(); } $secondarySponsor->setArticleId($article->getId()); $secondarySponsor->setType(ARTICLE_SPONSOR_TYPE_SECONDARY); if ($secondarySponsorData['ssInstitutionId'] == 'OTHER') { $found = false; foreach ($newInstitutions as $newInstitution) { if ($newInstitution['name'] == $secondarySponsorData['ssName'] || $newInstitution['acronym'] == $secondarySponsorData['ssAcronym']) { $found = $newInstitution['institutionId']; } } if (!$found) { $institution = new Institution(); $institution->setInstitutionName($secondarySponsorData['ssName']); $institution->setInstitutionAcronym($secondarySponsorData['ssAcronym']); $institution->setInstitutionType($secondarySponsorData['ssType']); $institution->setInstitutionInternational($secondarySponsorData['ssLocation']); if ($secondarySponsorData['ssLocation'] == INSTITUTION_NATIONAL) { $institution->setInstitutionLocation($secondarySponsorData['ssLocationCountry']); } elseif ($secondarySponsorData['ssLocation'] == INSTITUTION_INTERNATIONAL) { $institution->setInstitutionLocation($secondarySponsorData['ssLocationInternational']); } $institutionId = $institutionDao->insertInstitution($institution); $secondarySponsor->setInstitutionId($institutionId); $primarySponsorData['institutionId'] = $institutionId; array_push($newInstitutions, array('institutionId' => $institutionId, 'name' => $secondarySponsorData['ssName'], 'acronym' => $secondarySponsorData['ssAcronym'])); unset($institution); } else { $secondarySponsor->setInstitutionId($found); } } else { $secondarySponsor->setInstitutionId($secondarySponsorData['ssInstitutionId']); } $article->addArticleSecondarySponsor($secondarySponsor); unset($secondarySponsor); } $details->setCROInvolved($this->getData('croInvolved')); $articleDetailsDao->updateArticleDetails($details); // Remove deleted CROs foreach ($CROs as $CRO) { $isPresent = false; foreach ($CROsData as $CROData) { if (!empty($CROData['id'])) { if ($CRO->getId() == $CROData['id']) { $isPresent = true; } } } if (!$isPresent) { $article->removeArticleCRO($CRO->getId()); } unset($isPresent); unset($CRO); } // Update / Insert CROs if ($details->getCROInvolved() == ARTICLE_DETAIL_YES) { foreach ($CROsData as $CROData) { if (isset($CROData['id'])) { $CRO = $article->getArticleCRO($CROData['id']); } else { $CRO = new ArticleCRO(); } $CRO->setArticleId($article->getId()); $CRO->setName($CROData['croName']); $CRO->setInternational($CROData['croLocation']); if ($CROData['croLocation'] == CRO_NATIONAL) { $CRO->setLocation($CROData['croLocationCountry']); } elseif ($CROData['croLocation'] == CRO_INTERNATIONAL) { $CRO->setLocation($CROData['croLocationInternational']); } $CRO->setCity($CROData['city']); $CRO->setAddress($CROData['address']); $CRO->setPrimaryPhone($CROData['primaryPhone']); $CRO->setSecondaryPhone($CROData['secondaryPhone']); $CRO->setFax($CROData['fax']); $CRO->setEmail($CROData['email']); $article->addArticleCRO($CRO); unset($CRO); } } //update step if ($article->getSubmissionProgress() <= $this->step) { $article->stampStatusModified(); $article->setSubmissionProgress($this->step + 1); } elseif ($article->getSubmissionProgress() == 9) { $article->setSubmissionProgress(8); } parent::execute(); // Save the article $articleDao->updateArticle($article); return $this->articleId; }
/** * Save changes to article. * @param $request Request * @return int the article ID */ function execute(&$request) { $articleDao =& DAORegistry::getDAO('ArticleDAO'); $article =& $this->article; /////////////////////// ///// UPDATE TEXTS///// /////////////////////// $journal = Request::getJournal(); $articleTexts = $this->getData('articleTexts'); foreach ($journal->getSupportedLocaleNames() as $localeKey => $localeValue) { if ($articleTexts[$localeKey]['articleTextId'] > 0) { $articleText = $article->getArticleTextByLocale($localeKey); $isExistingArticleText = true; } else { $articleText = new ArticleText(); $isExistingArticleText = false; } if ($articleText != null) { $articleText->setArticleId($article->getId()); $articleText->setLocale($localeKey); $articleText->setScientificTitle($articleTexts[$localeKey]['scientificTitle']); $articleText->setPublicTitle($articleTexts[$localeKey]['publicTitle']); $articleText->setDescription($articleTexts[$localeKey]['description']); $articleText->setKeyInclusionCriteria($articleTexts[$localeKey]['keyInclusionCriteria']); $articleText->setKeyExclusionCriteria($articleTexts[$localeKey]['keyExclusionCriteria']); $articleText->setRecruitmentInfo($articleTexts[$localeKey]['recruitmentInfo']); if ($isExistingArticleText == false) { $article->addArticleText($articleText); } } unset($articleText); } /////////////////////////////////////////// /////////// Update secondary IDs ////////// /////////////////////////////////////////// $secIds = $article->getArticleSecIds(); $secIdsData = $this->getData('articleSecIds'); //Remove secondary IDs foreach ($secIds as $secId) { $isPresent = false; foreach ($secIdsData as $secIdData) { if (!empty($secIdData['articleSecIdId'])) { if ($secId->getId() == $secIdData['articleSecIdId']) { $isPresent = true; } } } if (!$isPresent) { $article->removeArticleSecId($secId->getId()); } unset($secId); } foreach ($secIdsData as $secIdData) { if (!empty($secIdData['type']) && !empty($secIdData['id'])) { if (!empty($secIdData['articleSecIdId'])) { // Update an existing sec id $secId =& $article->getArticleSecId($secIdData['articleSecIdId']); } else { // Create a new sec id $secId = new ArticleSecId(); } if ($secId != null) { $secId->setArticleId($article->getId()); $secId->setType($secIdData['type']); $secId->setSecId($secIdData['id']); $article->addArticleSecId($secId); } unset($secId); } } /////////////////////////////////////////// ////////// Update Article Details ///////// /////////////////////////////////////////// $articlelDetailsData = $this->getData('articleDetails'); if ($article->getArticleDetails()) { $articleDetails = $article->getArticleDetails(); } else { $articleDetails = new ArticleDetails(); } $articleDetails->setArticleId($article->getId()); $articleDetails->setProtocolVersion($articlelDetailsData['protocolVersion']); $articleDetails->setTherapeuticArea($articlelDetailsData['therapeuticArea'], $articlelDetailsData['otherTherapeuticArea']); $articleDetails->setHealthCondDiseaseFromArray($articlelDetailsData['healthConds']); $articleDetails->setMinAgeNum($articlelDetailsData['minAgeNum']); $articleDetails->setMinAgeUnit($articlelDetailsData['minAgeUnit']); $articleDetails->setMaxAgeNum($articlelDetailsData['maxAgeNum']); $articleDetails->setMaxAgeUnit($articlelDetailsData['maxAgeUnit']); $articleDetails->setSex($articlelDetailsData['sex']); $articleDetails->setHealthy($articlelDetailsData['healthy']); $articleDetails->setLocaleSampleSize($articlelDetailsData['localeSampleSize']); $articleDetails->setMultinational($articlelDetailsData['multinational']); $articleDetails->setIntSampleSizeFromArray($articlelDetailsData['intSampleSize']); $articleDetails->setStartDate($articlelDetailsData['startDate']); $articleDetails->setEndDate($articlelDetailsData['endDate']); $articleDetails->setRecruitmentStatus($articlelDetailsData['recruitStatus']); $articleDetails->setAdvertisingScheme($articlelDetailsData['adScheme']); $articleDetails->setCompensationPolicy($articlelDetailsData['compensationPolicy']); $article->setArticleDetails($articleDetails); /////////////////////////////////////////// ////////// Update Article Purposes //////// /////////////////////////////////////////// $purposesData = $this->getData('purposes'); $purposes = $article->getArticlePurposes(); //Remove deleted article purposes foreach ($purposes as $purpose) { $isPresent = false; foreach ($purposesData as $purposeData) { if (!empty($purposeData['id'])) { if ($purpose->getId() == $purposeData['id']) { $isPresent = true; } } } if (!$isPresent) { $article->removeArticlePurpose($purpose->getId()); } unset($purpose); } foreach ($purposesData as $purposeData) { if (!empty($purposeData['interventional'])) { if (!empty($purposeData['id'])) { // Update an existing purpose $purpose =& $article->getArticlePurpose($purposeData['id']); } else { // Create a new article purpose $purpose = new ArticlePurpose(); } if ($purpose != null) { $purpose->setArticleId($article->getId()); if ($purposeData['interventional'] == ARTICLE_PURPOSE_TYPE_OBS) { $purpose->setType(ARTICLE_PURPOSE_TYPE_OBS); } else { $purpose->setType($purposeData['type']); } $purpose->setCTPhase($purposeData['ctPhase']); $purpose->setAllocation($purposeData['allocation']); $purpose->setMasking($purposeData['masking']); $purpose->setControl($purposeData['control']); $purpose->setAssignment($purposeData['assignment']); $purpose->setEndpoint($purposeData['endpoint']); $article->addArticlePurpose($purpose); } unset($purpose); } } /////////////////////////////////////////// ////////// Update Article Outcomes //////// /////////////////////////////////////////// $primaryOutcomesData = $this->getData('primaryOutcomes'); $secondaryOutcomesData = $this->getData('secondaryOutcomes'); $articlelOutcomes = $article->getArticleOutcomes(); //Remove outcomes foreach ($articlelOutcomes as $articlelOutcome) { $isPresent = false; foreach ($primaryOutcomesData as $primaryOutcomeData) { foreach ($journal->getSupportedLocaleNames() as $localeKey => $localeValue) { if (!empty($primaryOutcomeData[$localeKey]['primaryOutcomeId'])) { if ($articlelOutcome[$localeKey]->getId() == $primaryOutcomeData[$localeKey]['primaryOutcomeId']) { $isPresent = true; } } } } foreach ($secondaryOutcomesData as $secondaryOutcomeData) { foreach ($journal->getSupportedLocaleNames() as $localeKey => $localeValue) { if (!empty($secondaryOutcomeData[$localeKey]['secondaryOutcomeId'])) { if ($articlelOutcome[$localeKey]->getId() == $secondaryOutcomeData[$localeKey]['secondaryOutcomeId']) { $isPresent = true; } } } } if (!$isPresent) { foreach ($journal->getSupportedLocaleNames() as $localeKey => $localeValue) { if (!empty($articlelOutcome[$localeKey])) { $article->removeArticleOutcome($articlelOutcome[$localeKey]->getId()); } } } unset($articlelOutcome); } foreach ($primaryOutcomesData as $poKey => $primaryOutcomeData) { foreach ($journal->getSupportedLocaleNames() as $localeKey => $localeValue) { if (!empty($primaryOutcomeData[$localeKey]['name']) && !empty($primaryOutcomeData[$localeKey]['measurement']) && !empty($primaryOutcomeData[$localeKey]['timepoint'])) { if (!empty($primaryOutcomeData[$localeKey]['primaryOutcomeId'])) { $primaryOutcome = $article->getArticleOutcome($primaryOutcomeData[$localeKey]['primaryOutcomeId']); } else { $primaryOutcome = new ArticleOutcome(); } if ($primaryOutcome != null) { $primaryOutcome->setArticleId($article->getId()); $primaryOutcome->setName($primaryOutcomeData[$localeKey]['name']); $primaryOutcome->setLocale($localeKey); $primaryOutcome->setType(ARTICLE_OUTCOME_PRIMARY); $primaryOutcome->setMeasurement($primaryOutcomeData[$localeKey]['measurement']); $primaryOutcome->setTimepoint($primaryOutcomeData[$localeKey]['timepoint']); $article->addArticleOutcome($primaryOutcome); } unset($primaryOutcome); } } } foreach ($secondaryOutcomesData as $poKey => $secondaryOutcomeData) { foreach ($journal->getSupportedLocaleNames() as $localeKey => $localeValue) { if (!empty($secondaryOutcomeData[$localeKey]['name']) && !empty($secondaryOutcomeData[$localeKey]['measurement']) && !empty($secondaryOutcomeData[$localeKey]['timepoint'])) { if (!empty($secondaryOutcomeData[$localeKey]['secondaryOutcomeId'])) { $secondaryOutcome = $article->getArticleOutcome($secondaryOutcomeData[$localeKey]['secondaryOutcomeId']); } else { $secondaryOutcome = new ArticleOutcome(); } if ($secondaryOutcome != null) { $secondaryOutcome->setArticleId($article->getId()); $secondaryOutcome->setName($secondaryOutcomeData[$localeKey]['name']); $secondaryOutcome->setLocale($localeKey); $secondaryOutcome->setType(ARTICLE_OUTCOME_SECONDARY); $secondaryOutcome->setMeasurement($secondaryOutcomeData[$localeKey]['measurement']); $secondaryOutcome->setTimepoint($secondaryOutcomeData[$localeKey]['timepoint']); $article->addArticleOutcome($secondaryOutcome); } unset($secondaryOutcome); } } } //update step if ($article->getSubmissionProgress() <= $this->step) { $article->stampStatusModified(); $article->setSubmissionProgress($this->step + 1); } elseif ($article->getSubmissionProgress() == 9) { $article->setSubmissionProgress(8); } parent::execute(); // Save the article $articleDao->updateArticle($article); return $this->articleId; }
/** * Save changes to article. * @param $request Request * @return int the article ID */ function execute(&$request) { $articleDao =& DAORegistry::getDAO('ArticleDAO'); $article =& $this->article; $articleDrugsData = $this->getData('articleDrugs'); $articleDrugs = $article->getArticleDrugs(); // Remove deleted article drugs foreach ($articleDrugs as $articleDrug) { $isPresent = false; foreach ($articleDrugsData as $articleDrugData) { if (!empty($articleDrugData['id'])) { if ($articleDrug->getId() == $articleDrugData['id']) { $isPresent = true; } } } if (!$isPresent) { $article->removeArticleDrug($articleDrug->getId()); } unset($isPresent); unset($articleDrug); } // Update article drugs foreach ($articleDrugsData as $articleDrugData) { if (isset($articleDrugData['id'])) { $articleDrug = $article->getArticleDrug($articleDrugData['id']); $isExistingDrug = true; } else { $articleDrug = new ArticleDrugInfo(); $isExistingDrug = false; } $articleDrug->setArticleId($article->getId()); $articleDrug->setType($articleDrugData['type']); $articleDrug->setName($articleDrugData['name']); $articleDrug->setBrandName($articleDrugData['brandName']); $articleDrug->setAdministration($articleDrugData['administration']); $articleDrug->setOtherAdministration($articleDrugData['otherAdministration']); $articleDrug->setForm($articleDrugData['form']); $articleDrug->setOtherForm($articleDrugData['otherForm']); $articleDrug->setStrength($articleDrugData['strength']); $articleDrug->setStorage($articleDrugData['storage']); $articleDrug->setPharmaClass($articleDrugData['pharmaClass']); $articleDrug->setClassesFromArray($articleDrugData['studyClasses']); $articleDrug->setCountriesFromArray($articleDrugData['countries']); $articleDrug->setDifferentConditionsOfUse($articleDrugData['conditionsOfUse']); $articleDrug->setCPR($articleDrugData['cpr']); $articleDrug->setDrugRegistrationNumber($articleDrugData['drugRegistrationNumber']); $articleDrug->setImportedQuantity($articleDrugData['importedQuantity']); $manufacturersData = $articleDrugData['manufacturers']; $manufacturers = $articleDrug->getManufacturers(); // Remove deleted manufacturers foreach ($manufacturers as $manufacturer) { $isPresent = false; foreach ($manufacturersData as $manufacturerData) { if (!empty($manufacturerData['id'])) { if ($manufacturer->getId() == $manufacturerData['id']) { $isPresent = true; } } } if (!$isPresent) { $articleDrug->removeManufacturer($manufacturer->getId()); } unset($isPresent); unset($manufacturer); } // Update manufacturers foreach ($manufacturersData as $manufacturerData) { if (isset($manufacturerData['id'])) { $manufacturer = $articleDrug->getManufacturer($manufacturerData['id']); } else { $manufacturer = new ArticleDrugManufacturer(); } if ($isExistingDrug) { $manufacturer->setDrugId($articleDrug->getId()); } $manufacturer->setName($manufacturerData['name']); $manufacturer->setAddress($manufacturerData['address']); $articleDrug->addManufacturer($manufacturer); } $article->addArticleDrug($articleDrug); } //update step if ($article->getSubmissionProgress() <= $this->step) { $article->stampStatusModified(); $article->setSubmissionProgress($this->step + 1); } elseif ($article->getSubmissionProgress() == 9) { $article->setSubmissionProgress(8); } parent::execute(); // Save the article $articleDao->updateArticle($article); return $this->articleId; }