Beispiel #1
0
 protected function reflect($className)
 {
     if (!array_key_existS($className, self::$types)) {
         self::$types[$className] = new \ReflectionClass($className);
     }
     return self::$types[$className];
 }
 public function processValues($vals)
 {
     I2CE::raiseError("Got:" . print_r($vals, true));
     if (array_key_existS('list', $vals) && is_scalar($list = $vals['list']) && ($listObj = I2CE_FormFactory::instance()->createContainer($list)) instanceof I2CE_List) {
         $this->setField('list', $list);
     }
     return true;
 }
 public function processValues($vals)
 {
     $oids = $this->storage->getKeys("list");
     if (!is_array($oids)) {
         $oids = array();
     }
     if (array_key_existS('oid', $vals) && I2CE_MagicDataNode::checkKey($oid = $vals['oid']) && !in_array($oid, $oids) && array_key_exists('list', $vals) && is_scalar($list = $vals['list']) && ($listObj = I2CE_FormFactory::instance()->createContainer($list)) instanceof I2CE_List) {
         $this->storage->lists->{$oid} = array('list' => $list);
     }
     return true;
 }
 public function enrolledStudentsListCompact($node, $template)
 {
     if (!($main_node = $template->appendFileByNode('training_course_exam_base_compact.html', 'div', $node)) instanceof DOMNode) {
         return false;
     }
     if (!($list_node = $template->getElementById('student_exams', $main_node)) instanceof DOMNode) {
         return false;
     }
     $node->appendChild($list_node);
     $list = $this->getEnrolledStudents();
     $template->addHeaderLink("mootools-core.js");
     $template->addHeaderLink("mootools-more.js");
     $template->addHeaderLink("editstudent.js");
     $has_exam = I2CE_ModuleFactory::instance()->isEnabled('training-exam');
     if (!$has_exam) {
         return;
     }
     $where_exam = array('operator' => 'OR', 'operand' => array(array('operator' => 'FIELD_LIMIT', 'field' => 'i2ce_hidden', 'style' => 'no'), array('operator' => 'FIELD_LIMIT', 'field' => 'i2ce_hidden', 'style' => 'null')));
     $exams = I2CE_FormStorage::listDisplayFields('training_course_exam_type', array('name'), false, $where_exam, array('name'));
     $passing_score = '';
     $passing_scores = I2CE_FormStorage::lookupField('training_course', $this->getField('training_course')->getMappedID(), array('passing_score'), false);
     if (count($passing_scores) == 1) {
         $passing_score = current($passing_scores);
         if (!is_numeric($passing_score) || $passing_score < 0 || $passing_score > 100) {
             $passing_score = '';
         }
     }
     $stc_dup_where = array('operator' => 'FIELD_LIMIT', 'field' => 'training_course', 'style' => 'equals', 'data' => array('value' => $this->getField('training_course')->getDBValue()));
     $dup_where = array();
     //this will be a search on person_scheduled_training_course
     foreach (I2CE_FormStorage::search('scheduled_training_course', false, $stc_dup_where) as $stc) {
         if ($stc == $this->getID()) {
             //don't include this course when looking for duplicate scheuling.
             continue;
         }
         $dup_where[] = array('operator' => 'AND', 'operand' => array(0 => array('operator' => 'FIELD_LIMIT', 'field' => 'scheduled_training_course', 'style' => 'equals', 'data' => array('value' => 'scheduled_training_course|' . $stc)), 1 => array('operator' => 'OR', 'operand' => array(0 => array('operator' => 'FIELD_LIMIT', 'field' => 'attending', 'style' => 'equals', 'data' => array('value' => 1)), 1 => array('operator' => 'FIELD_LIMIT', 'field' => 'attending', 'style' => 'null', 'data' => array())))));
     }
     foreach ($exams as $i => $data) {
         if (!is_array($data) || !array_key_exists('name', $data) || !$data['name']) {
             unset($exams[$i]);
             continue;
         }
     }
     $num_exams = count($exams);
     if ($num_exams > 0) {
         $style = "display:table-cell;width:" . 66 / $num_exams . '%';
     } else {
         $style = "display:table-cell";
     }
     if (($header_node = $template->getElementByID("header_row")) instanceof DOMNode) {
         foreach ($exams as $id => $data) {
             $exam_title_node = $template->createElement("div", array('style' => $style), $data['name']);
             $template->appendNode($exam_title_node, $header_node);
         }
     }
     foreach ($list as $id => $sdata) {
         $studentNode = $template->appendFileByNode('enrolled_students_compact.html', 'div', $list_node);
         if (!$studentNode instanceof DOMNode) {
             return false;
         }
         $studId = 'student_' . $id;
         $studentNode->setAttribute('id', $studId);
         $template->setDisplayDataImmediate('id', 'id=' . $id, $studentNode);
         $template->setDisplayDataImmediate('firstname', $sdata['firstname'], $studentNode);
         $template->setDisplayDataImmediate('surname', $sdata['surname'], $studentNode);
         $scores = I2CE_FormStorage::listFields('training_course_exam', array('score', 'training_course_exam_type'), $sdata['person_scheduled_training_course']);
         foreach ($exams as $examid => $data) {
             $examsNode = $template->createElement("div", array('style' => $style));
             $template->appendNode($examsNode, $studentNode);
             $template->setDisplayData('passing_score', $passing_score, $examsNode);
             $score = false;
             $exam_id = '0';
             foreach ($scores as $sid => $data) {
                 if (!is_array($data) || !array_key_existS('score', $data) || !array_key_exists('training_course_exam_type', $data) || $data['training_course_exam_type'] != "training_course_exam_type|" . $examid) {
                     continue;
                 }
                 $score = $data['score'];
                 break;
             }
             $template->appendFileByNode('student_exam.html', 'div', $examsNode);
             $finalNode = $template->getElementByName('final_exam', 0, $examsNode);
             if (!$finalNode) {
                 continue;
             }
             $template->setDisplayDataImmediate('final_exam', $score, $finalNode);
             if ($passing_score) {
                 if ($score >= $passing_score) {
                     $finalNode->setAttribute('style', 'color:green');
                 } else {
                     $finalNode->setAttribute('style', 'color:red');
                 }
             }
             if (!$passing_score) {
                 $passing_score = 0;
             }
             $js = "changeFinalExamGrade(this,'" . addslashes($examid) . "','" . addslashes($sdata['person_scheduled_training_course']) . "','" . addslashes($exam_id) . "'," . $passing_score . ");";
             $finalNode->setAttribute('onchange', $js);
         }
         $clear_node = $template->createElement("hr", array("style" => "clear: both; max-height:0px; padding:0px; margin:0px;"));
         $template->appendNode($clear_node, $list_node);
     }
 }
Beispiel #5
0
 /**
  * Parse variable in square brackets
  *
  * @param mixed Variable
  * @return array Attributes
  */
 protected function parseSquareBrackets($mVariable)
 {
     $sType = gettype($mVariable);
     $aAttr = array();
     $sId = '';
     if ($sType == 'object') {
         static $__objectNamesCache;
         if (!is_array($__objectNamesCache)) {
             $__objectNamesCache = array();
         }
         $sClass = get_class($mVariable);
         if (!array_key_existS($sClass, $__objectNamesCache)) {
             $__objectNamesCache[$sClass] = $sType = trim(preg_replace('/([A-Z][a-z]*)/', '$1_', $sClass), '_');
         } else {
             $sType = $__objectNamesCache[$sClass];
         }
         if (method_exists($mVariable, 'getID')) {
             $sId = $mVariable->getID();
         } else {
             if (!empty($mVariable->ID)) {
                 $sId = $mVariable->ID;
             }
         }
     }
     if ($sId == '') {
         $sId = substr(md5(uniqid(serialize($mVariable) . rand(), true)), 0, 8);
     }
     $aAttr['class'] = strtolower($sType);
     $aAttr['id'] = "{$aAttr['class']}_{$sId}";
     return $aAttr;
 }