/** * Try and match a score to an answer * * @param \Jazzee\Entity\Answer */ public function matchScore(\Jazzee\Entity\Answer $answer) { if ($answer->getPageStatus() == self::SKIPPED) { return; } if (!is_null($answer->getGREScore()) and !is_null($answer->getTOEFLScore())) { return; //we already have a match } $testType = $this->_applicationPage->getPage()->getElementByFixedId(self::FID_TEST_TYPE)->getJazzeeElement()->displayValue($answer); $registrationNumber = $this->_applicationPage->getPage()->getElementByFixedId(self::FID_REGISTRATION_NUMBER)->getJazzeeElement()->displayValue($answer); $testDate = $this->_applicationPage->getPage()->getElementByFixedId(self::FID_TEST_DATE)->getJazzeeElement()->formValue($answer); $testMonth = date('m', strtotime($testDate)); $testYear = date('Y', strtotime($testDate)); $parameters = array('registrationNumber' => $registrationNumber, 'testMonth' => $testMonth, 'testYear' => $testYear); switch ($testType) { case 'GRE/GRE Subject': $score = $this->_controller->getEntityManager()->getRepository('\\Jazzee\\Entity\\GREScore')->findOneBy($parameters); if ($score) { $answer->setGreScore($score); } break; case 'TOEFL': $score = $this->_controller->getEntityManager()->getRepository('\\Jazzee\\Entity\\TOEFLScore')->findOneBy($parameters); if ($score) { $answer->setTOEFLScore($score); } break; default: throw new \Jazzee\Exception("Unknown test type: {$testType} when trying to match a score"); } }
public function rawValue(\Jazzee\Entity\Answer $answer) { $elementsAnswers = $answer->getElementAnswersForElement($this->_element); if (isset($elementsAnswers[0])) { return $elementsAnswers[0]->getEText(); } return null; }
/** * Perform a regular expression match on each value * @param \Jazzee\Entity\Answer $answer * @param \stdClass $obj * @return boolean */ public function testQuery(\Jazzee\Entity\Answer $answer, \stdClass $obj) { $elementsAnswers = $answer->getElementAnswersForElement($this->_element); if (!isset($elementsAnswers[0])) { return false; } $match = false; $date = $elementsAnswers[0]->getEDate(); if (isset($obj->after)) { if ($date > new \DateTime($obj->after)) { $match = true; } else { return false; } } if (isset($obj->before)) { if ($date < new \DateTime($obj->before)) { $match = true; } else { return false; } } return $match; }
/** * Get the answer value as an xml element * @param \DomDocument $dom * @param \Jazzee\Entity\Answer $answer * @param integer $version * @return \DomElement */ public function getXmlAnswer(\DomDocument $dom, \Jazzee\Entity\Answer $answer, $version) { $eXml = $dom->createElement('element'); $eXml->setAttribute('elementId', $this->_element->getId()); $eXml->setAttribute('title', htmlentities($this->_element->getTitle(), ENT_COMPAT, 'utf-8')); $eXml->setAttribute('name', htmlentities($this->_element->getName(), ENT_COMPAT, 'utf-8')); $eXml->setAttribute('type', htmlentities($this->_element->getType()->getClass(), ENT_COMPAT, 'utf-8')); $eXml->setAttribute('weight', $this->_element->getWeight()); $elementsAnswers = $answer->getElementAnswersForElement($this->_element); if ($value = $this->rawValue($answer)) { switch ($version) { case 1: $eXml->appendChild($dom->createCDATASection(preg_replace('/[\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F]/', '', $value))); break; case 2: $vXml = $dom->createElement('value'); $vXml->appendChild($dom->createCDATASection(preg_replace('/[\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F]/', '', $value))); $eXml->appendChild($vXml); break; } } return $eXml; }
/** * Convert an answer to an xml element * @param \DomDocument $dom * @param \Jazzee\Entity\Answer $answer * @param integer $version the XML version to create * @return \DomElement */ protected function xmlAnswer(\DomDocument $dom, \Jazzee\Entity\Answer $answer, $version) { $answerXml = $dom->createElement('answer'); $answerXml->setAttribute('answerId', $answer->getId()); $answerXml->setAttribute('uniqueId', $answer->getUniqueId()); $answerXml->setAttribute('updatedAt', $answer->getUpdatedAt()->format('c')); $answerXml->setAttribute('pageStatus', $answer->getPageStatus()); $answerXml->setAttribute('publicStatus', $answer->getPublicStatus() ? $answer->getPublicStatus()->getName() : ''); $answerXml->setAttribute('privateStatus', $answer->getPrivateStatus() ? $answer->getPrivateStatus()->getName() : ''); foreach ($answer->getPage()->getElements() as $element) { $element->getJazzeeElement()->setController($this->_controller); if ($element->getJazzeeElement() instanceof \Jazzee\Interfaces\XmlElement) { $answerXml->appendChild($element->getJazzeeElement()->getXmlAnswer($dom, $answer, $version)); } } $attachment = $dom->createElement('attachment'); if ($answer->getAttachment()) { $attachment->appendChild($dom->createCDATASection(base64_encode($answer->getAttachment()->getAttachment()))); } $answerXml->appendChild($attachment); $children = $dom->createElement('children'); foreach ($answer->getChildren() as $child) { $children->appendChild($this->xmlAnswer($dom, $child, $version)); } $answerXml->appendChild($children); return $answerXml; }
/** * Convert an answer to an xml element and add school information * Since school data is stored either in the School entity or else in a child answer * we combine these two * @param \DomDocument $dom * @param \Jazzee\Entity\Answer $answer * @param integer $version the XML version to create * @return \DomElement */ protected function xmlAnswer(\DomDocument $dom, \Jazzee\Entity\Answer $answer, $version) { $answerXml = $dom->createElement('answer'); $answerXml->setAttribute('answerId', $answer->getId()); $answerXml->setAttribute('uniqueId', $answer->getUniqueId()); $answerXml->setAttribute('updatedAt', $answer->getUpdatedAt()->format('c')); $answerXml->setAttribute('pageStatus', $answer->getPageStatus()); $answerXml->setAttribute('publicStatus', $answer->getPublicStatus() ? $answer->getPublicStatus()->getName() : ''); $answerXml->setAttribute('privateStatus', $answer->getPrivateStatus() ? $answer->getPrivateStatus()->getName() : ''); foreach ($answer->getPage()->getElements() as $element) { $element->getJazzeeElement()->setController($this->_controller); if ($element->getJazzeeElement() instanceof \Jazzee\Interfaces\XmlElement) { $answerXml->appendChild($element->getJazzeeElement()->getXmlAnswer($dom, $answer, $version)); } } $attachment = $dom->createElement('attachment'); if ($answer->getAttachment()) { $attachment->appendChild($dom->createCDATASection(base64_encode($answer->getAttachment()->getAttachment()))); } $answerXml->appendChild($attachment); $schoolXml = $dom->createElement('school'); if ($school = $answer->getSchool()) { $schoolXml->setAttribute('type', 'known'); $schoolXml->setAttribute('code', htmlentities($school->getCode(), ENT_COMPAT, 'utf-8')); $eXml = $dom->createElement('name'); $eXml->appendChild($dom->createCDATASection($school->getName())); $schoolXml->appendChild($eXml); $eXml = $dom->createElement('city'); $eXml->appendChild($dom->createCDATASection($school->getCity())); $schoolXml->appendChild($eXml); $eXml = $dom->createElement('state'); $eXml->appendChild($dom->createCDATASection($school->getState())); $schoolXml->appendChild($eXml); $eXml = $dom->createElement('country'); $eXml->appendChild($dom->createCDATASection($school->getCountry())); $schoolXml->appendChild($eXml); $eXml = $dom->createElement('postalCode'); $eXml->appendChild($dom->createCDATASection($school->getPostalCode())); $schoolXml->appendChild($eXml); } else { $schoolXml->setAttribute('type', 'new'); $newSchoolElements = array(self::ELEMENT_FID_NAME => 'name', self::ELEMENT_FID_CITY => 'city', self::ELEMENT_FID_STATE => 'state', self::ELEMENT_FID_COUNTRY => 'country', self::ELEMENT_FID_POSTALCODE => 'postalCode'); foreach ($newSchoolElements as $fid => $name) { $element = $this->_applicationPage->getPage()->getChildByFixedId(self::PAGE_FID_NEWSCHOOL)->getElementByFixedId($fid); $element->getJazzeeElement()->setController($this->_controller); if ($element->getJazzeeElement() instanceof \Jazzee\Interfaces\XmlElement) { $eXml = $dom->createElement($name); $eXml->appendChild($dom->createCDATASection($element->getJazzeeElement()->displayValue($answer->getChildren()->first()))); $schoolXml->appendChild($eXml); } } } $answerXml->appendChild($schoolXml); return $answerXml; }
public function pdfValue(\Jazzee\Entity\Answer $answer, \Jazzee\ApplicantPDF $pdf) { $elementsAnswers = $answer->getElementAnswersForElement($this->_element); if (isset($elementsAnswers[0])) { $pdf->addPdf(\Jazzee\Globals::getFileStore()->getFileContents($elementsAnswers[0]->getEShortString())); return 'Attached'; } return null; }
/** * Perform a regular expression match on each value * @param \Jazzee\Entity\Answer $answer * @param \stdClass $obj * @return boolean */ public function testQuery(\Jazzee\Entity\Answer $answer, \stdClass $obj) { $elementsAnswers = $answer->getElementAnswersForElement($this->_element); if (!isset($elementsAnswers[0])) { return false; } return preg_match($obj->pattern, $this->_element->getItemById($elementsAnswers[0]->getEInteger())->getValue()); }
/** * Perform a regular expression match on each value * @param \Jazzee\Entity\Answer $answer * @param \stdClass $obj * @return boolean */ public function testQuery(\Jazzee\Entity\Answer $answer, \stdClass $obj) { $elementsAnswers = $answer->getElementAnswersForElement($this->_element); if (!isset($elementsAnswers[0])) { return false; } return preg_match($obj->pattern, $elementsAnswers[0]->getEShortString()); }
/** * Perform a regular expression match on each value * @param \Jazzee\Entity\Answer $answer * @param \stdClass $obj * @return boolean */ public function testQuery(\Jazzee\Entity\Answer $answer, \stdClass $obj) { $elementsAnswers = $answer->getElementAnswersForElement($this->_element); foreach ($elementsAnswers as $elementsAnswer) { if (isset($obj->all)) { if (preg_match($obj->all, $this->_element->getItemById($elementsAnswer->getEInteger())->getValue())) { return true; } } if (isset($obj->{$elementsAnswer->getPosition()})) { if (preg_match($obj->{$elementsAnswer->getPosition()}, $this->_element->getItemById($elementsAnswer->getEInteger())->getValue())) { return true; } } } return false; }
public function fillLorForm(\Jazzee\Entity\Answer $answer) { foreach ($answer->getPage()->getElements() as $element) { $element->getJazzeeElement()->setController($this->_controller); $value = $element->getJazzeeElement()->formValue($answer); if ($value) { $this->getForm()->getElementByName('el' . $element->getId())->setValue($value); } } }
/** * Add answer * * @param \Jazzee\Entity\Answer $answer */ public function addAnswer(\Jazzee\Entity\Answer $answer) { $this->answers[] = $answer; if ($answer->getApplicant() != $this) { $answer->setApplicant($this); } }
/** * Get the action path for a form * @return string */ public function getActionPath() { return $this->path('lor/' . $this->_parentAnswer->getUniqueId()); }