/** * Get the display name associated to a role's shortname * @param string $name the shortname of the role * @returns string */ static function getRoleNameFromShortName($name) { $disp = I2CE_FormStorage::lookupField('role', $name); if ($disp === false) { I2CE::raiseError("Invalid shortname for getRoleNameFromShortName: {$name}."); return null; } return $disp; }
protected function loadPrimary() { if ($this->request_exists('student_id') && in_array('person', $this->formRelationship->getFormNames()) && ($student_id = $this->request('student_id')) && ($pos = strpos($student_id, '|')) !== false && ($id = substr($student_id, $pos + 1)) != '' && ($stc_id = I2CE_FormStorage::lookupField('person_scheduled_training_course', $id, array('scheduled_training_course'), '')) != '' && ($person_id = I2CE_FormStorage::lookupField('person_scheduled_training_course', $id, array('parent'), '')) != '') { $formFactory = I2CE_FormFactory::instance(); if (!($this->primObj = $formFactory->createContainer($stc_id)) instanceof I2CE_Form || $this->formRelationship->getPrimaryForm() != $this->primObj->getName()) { I2CE::raiseError("invalid form id :" . print_r($this->request(), true) . "\ndoes not match " . $this->formRelationship->getPrimaryForm()); return false; } $this->primObj->populate(); $this->person_id = $person_id; } else { return parent::loadPrimary(); } }
/** * Init form storage options * @param string $form */ protected function init_data($form) { if (in_array($form, $this->init_status)) { //already done return true; } if (!parent::init_data($form)) { return false; } $options = $this->getStorageOptions($form); if (!$options instanceof I2CE_MagicDataNode) { I2CE::raiseError("Invalid storage options for {$form}"); return false; } $options = $this->getStorageOptions($form); if (!$options instanceof I2CE_MagicDataNode) { I2CE::raiseError("Invalid storage options for {$form}"); return false; } $directory = false; if (!$options->setIfIsSet($directory, 'csd_directory') || !in_array($directory, array('provider', 'service', 'facility', 'organization'))) { I2CE::raiseError("No valid defined for {$form}"); return false; } if (!is_array($remote_services = I2CE::getConfig()->getAsArray("/modules/forms/storage_options/CSD/remote_services")) || !array_key_exists($directory, $remote_services) || !is_scalar($selected = $remote_services[$directory])) { I2CE::raiseError("No remote service directory selected in global CSD options"); return false; } list($t_form, $id) = array_pad(explode('|', $selected, 2), 2, ''); if ($t_form != 'csd_info_manager' || $id == '0' || !is_array($urls = I2CE_FormStorage::lookupField('csd_info_manager', $id, array('url'), false)) || !array_key_exists('url', $urls) || !$urls['url']) { I2CE::raiseError("Invalid connection details from selected service: {$selected}"); } if (!array_key_exists('csd', $this->namespaces[$form])) { $this->namespaces[$form]['csd'] = "urn:ihe:iti:csd:2013"; } $cache_time = 0; if (is_array($this->global_options) && array_key_exists('cache_time', $this->global_options) && is_scalar($this->global_options['cache_time'])) { $cache_time = (int) $this->global_options['cache_time']; } $options->setIfIsSet($cache_time, "cache_time"); $cache_time = (int) $cache_time; if (!array_key_exists('populate', $this->services[$form])) { $this->services[$form]['populate'] = array(); } $populate = array('url' => $urls['url'], 'curl_opts' => array('HEADER' => 0, 'POST' => 1, 'HTTPHEADER' => array('content-type' => 'content-type: text/xml')), 'cache_time' => $cache_time); I2CE_Util::merge_recursive($this->services[$form]['populate'], $populate); return true; }
public function generate($node) { if ($this->options['task'] && I2CE_PermissionParser::taskExists($this->options['task']) && !$this->page->hasPermission("task(" . $this->options['task'] . ")", $node) || !($linkedNode = $this->template->appendFileByNode($this->options['template'], 'div', $node)) instanceof DOMNode || !($pageDispNode = $this->template->getElementByName('pager_display', 0, $linkedNode)) instanceof DOMNode || !($pageResultsNode = $this->template->getElementByName('pager_results', 0, $linkedNode)) instanceof DOMNode || !($tbodyNode = $this->template->getElementByName('link_fields', 0, $node)) instanceof DOMNode) { return; } $arg_walker = array(); $printf_args = $this->options['printf_args']; foreach ($printf_args as $i => &$arg) { $t_arg = explode(":", $arg); if (count($t_arg) > 1) { $arg_walker[$i] = $t_arg; $arg = $t_arg[0]; } } unset($arg); $dispData = I2CE_FormStorage::listDisplayFields($this->options['form'], $printf_args, false, $this->options['where'], $this->options['orders'], $this->options['limit']); if (count($dispData) == 0) { return; } $pageDispNode->setAttribute('id', 'linked_' . $this->options['form'] . '_pager_display'); $pageResultsNode->setAttribute('id', 'linked_' . $this->options['form'] . '_results'); $dispData = $this->paginateList($dispData, array('form' => $this->options['form']), 'linked_' . $this->options['form']); $this->template->setDisplayDataImmediate('link_title', $this->options['title']); foreach ($dispData as $id => $r_dispData) { $dispData = array(); foreach ($printf_args as $i => $arg) { $dispData[$i] = $r_dispData[$arg]; } foreach ($arg_walker as $i => $fields) { $val = $dispData[$i]; $count = 0; foreach ($fields as $field) { $count++; if ($count == 1) { continue; } list($wform, $wid) = array_pad(explode('|', $val, 2), 2, ''); $val = I2CE_FormStorage::lookupField($wform, $wid, array($field), ''); } $dispData[$i] = $val; } $text = @vsprintf($this->options['printf'], $dispData); //form = person_position $linkid = $this->options['form'] . '|' . $id; foreach ($this->options['link_field'] as $lfield) { list($lform, $lid) = array_pad(explode('|', $linkid, 2), 2, ''); $linkid = I2CE_FormStorage::lookupField($lform, $lid, array($lfield), ''); } $attrs = array('href' => $this->options['link'] . $linkid); $tbodyNode->appendChild($trNode = $this->template->createElement('tr', array('colspan' => 2))); $trNode->appendChild($tdNode = $this->template->createElement('td', array('colspan' => 2))); $tdNode->appendChild($this->template->createElement('a', $attrs, $text)); } }
protected function displayResults($semester, $academic_year, $courses, $semester_node) { $display_GPA = true; $accObj = $this->ff->createContainer($academic_year); $accObj->populate(); $acc_year_name = $accObj->getField("name")->getDBValue(); $this->template->setDisplayDataImmediate("student_results_header", "{$acc_year_name} Semester " . $this->getSemesterName($semester) . " Results", $semester_node); $counter = 1; $courses = explode(",", $courses); foreach ($courses as $course) { $row_node = $this->template->appendFileByName("student_view_results_row.html", "tr", "student_results_rows", 0, $semester_node); $mark = 0; $status = ""; $grade = ""; $this->template->setDisplayDataImmediate("results_row_counter", $counter, $row_node); list($course_form, $course_id) = array_pad(explode("|", $course, 2), 2, ''); $field_data = I2CE_FormStorage::lookupField($course_form, $course_id, array('name', 'code', 'training_course_exam_type'), false); $this->template->setDisplayDataImmediate("results_row_code", $field_data["code"], $row_node); $this->template->setDisplayDataImmediate("results_row_name", $field_data["name"], $row_node); $exam_types_array = explode(",", $field_data["training_course_exam_type"]); $has_final_exam = $this->has_final_exam($course); //if course has final exam,check if is approved,otherwise it is approved if ($has_final_exam) { $is_approved = $this->is_approved($academic_year, $course); if (!$is_approved) { $display_GPA = false; } } else { $is_approved = true; } foreach ($exam_types_array as $exam_type) { $total_marks = ""; $this->persObj->populateChildren("students_results_grade"); foreach ($this->persObj->getChildren("students_results_grade") as $resultsObj) { $training = $resultsObj->getField("training")->getDBValue(); $results_acc_year = $resultsObj->getField("academic_year")->getDBValue(); if ($resultsObj->getField("enroll_course")->getDBValue() != $enroll_id or $training != $course) { continue; } $status = $resultsObj->getField("status")->getDBValue(); $grade = $resultsObj->getField("grade")->getDBValue(); $total_marks = $resultsObj->getField("total_marks")->getDBValue(); $id = $resultsObj->getField("id")->getDBValue(); $assessparentObj = $this->ff->createContainer($id); $assessparentObj->populateChildren("students_results"); foreach ($assessparentObj->getChildren("students_results") as $assessObj) { $mark = $assessObj->getField("score")->getDBValue(); $assessment = $assessObj->getField("training_course_exam_type")->getDBValue(); if ($assessment != $exam_type) { continue; } if ($mark == "") { $mark = "-"; } $examtypeObj = $this->ff->createContainer($exam_type); $examtypeObj->populate(); $exam_type_name = $examtypeObj->getField("name")->getDBValue(); $type_node = $this->template->appendFileByName("student_view_results_row_exam_types.html", "div", "results_row_exam_types", 0, $row_node); if ($exam_type == "training_course_exam_type|final" and !$is_approved) { $mark = "-"; } $this->template->setDisplayDataImmediate("exam_types_name", $exam_type_name . ": " . $mark, $type_node); } } } if ($status == "") { $status = "-"; } if ($grade == "") { $grade = "-"; } if ($total_marks == "") { $total_marks = "-"; } if (!$is_approved) { $status = "-"; $grade = "-"; $total_marks = "Waiting Approval"; } $this->template->setDisplayDataImmediate("results_row_total", $total_marks, $row_node); $this->template->setDisplayDataImmediate("results_row_grade", $grade, $row_node); $this->template->setDisplayDataImmediate("results_row_status", $status, $row_node); $counter++; } $this->persObj->populateChildren("semester_GPA"); foreach ($this->persObj->getChildren("semester_GPA") as $semGPAObj) { if ($semGPAObj->getFIeld("semester")->getDBValue() == $semester and $semGPAObj->getField("registration")->getDBValue() == $this->student_registration["id"]) { $GPA = $semGPAObj->getField("GPA")->getDBValue(); } } if ($GPA == "") { $GPA = "-"; } if (!$display_GPA) { $GPA = "-"; } $this->template->setDisplayDataImmediate("semester_gpa", "Semester " . $this->getSemesterName($semester) . " GPA " . $GPA, $semester_node); return $counter; }
/** * Init form storage options * @param string $form */ protected function init_data($form) { if (in_array($form, $this->init_status)) { //already done return true; } if (!parent::init_data($form)) { return false; } if (!array_key_exists('csd', $this->namespaces[$form])) { $this->namespaces[$form]['csd'] = "urn:ihe:iti:csd:2013"; } $options = $this->getStorageOptions($form); if (!$options instanceof I2CE_MagicDataNode) { I2CE::raiseError("Invalid storage options for {$form}"); return false; } $directory = false; if (!$options->setIfIsSet($directory, 'csd_directory') || !in_array($directory, array('provider', 'service', 'facility', 'organization'))) { I2CE::raiseError("No valid defined for {$form}"); return false; } if (!is_array($this->global_options) || !array_key_exists('remote_services', $this->global_options) || !is_array($remote_services = $this->global_options['remote_services']) || !array_key_exists($directory, $remote_services) || !is_scalar($selected = $remote_services[$directory])) { I2CE::raiseError("No remote service directory selected in global CSD options"); return false; } list($t_form, $id) = array_pad(explode('|', $selected, 2), 2, ''); if ($t_form != 'csd_info_manager' || $id == '0' || !is_array($urls = I2CE_FormStorage::lookupField('csd_info_manager', $id, array('url', 'url_updating'), false)) || !array_key_exists('url', $urls) || !$urls['url'] || !array_key_exists('url_updating', $urls)) { I2CE::raiseError("Invalid connection details from selected service: {$selected}"); } $curl_opts = array('HEADER' => 0, 'POST' => 1, 'HTTPHEADER' => array('content-type' => 'content-type: text/xml')); if (is_array($auth = I2CE_FormStorage::lookupField('csd_info_manager', $id, array('user', 'password'), false)) && array_key_exists('user', $auth) && $auth['user']) { $curl_opts['USERPWD'] = $auth['password']; $curl_opts['USERAGENT'] = $auth['user']; } if (is_array($ssl = I2CE_FormStorage::lookupField('csd_info_manager', $id, array('ssl_version'), false)) && array_key_exists('ssl_version', $ssl) && $ssl['ssl_version']) { $curl_opts['SSLVERSION'] = $ssl['ssl_version']; $curl_opts['SSL_VERIFYPEER'] = false; $curl_opts['SSL_VERIFYHOST'] = false; //or 2? } $cache_time = 0; if (is_array($this->global_options) && array_key_exists('cache_time', $this->global_options) && is_scalar($this->global_options['cache_time'])) { $cache_time = (int) $this->global_options['cache_time']; } $options->setIfIsSet($cache_time, "cache_time"); $cache_time = (int) $cache_time; $updating = array('delete', 'create', 'update'); $reading = array('getRecords', 'populate'); foreach ($reading as $endpoint) { if (!array_key_exists($endpoint, $this->services[$form])) { $this->services[$form][$endpoint] = array(); } } if ($urls['url_updating']) { foreach ($updating as $endpoint) { if (!array_key_exists($endpoint, $this->services[$form])) { $this->services[$form][$endpoint] = array(); } } } foreach ($this->services[$form] as $endpoint => &$data) { if (in_array($endpoint, $updating)) { if ($urls['url_updating']) { $data['url'] = $urls['url_updating']; } } else { if ($urls['url']) { $data['url'] = $urls['url']; } } I2CE_Util::merge_recursive($data['curl_opts'], $curl_opts); if ($cache_time && in_array($endpoint, $reading) && !array_key_exists('cache_time', $data)) { $data['cache_time'] = $cache_time; } } return true; }
public function generate($node) { if (!$node instanceof DOMNode || !$this->primaryObject instanceof I2CE_Form || I2CE_PermissionParser::taskExists($this->options['task']) && !$this->page->hasPermission("task(" . $this->options['task'] . ")", $node) || !($linkedNode = $this->template->appendFileByNode($this->options['template'], 'div', $node)) instanceof DOMNode || !($tbodyNode = $this->template->getElementByName('child_fields', 0, $node)) instanceof DOMNode) { return false; } $added = 0; if (count($this->options['action_links']) > 0 && ($ulNode = $this->template->getElementByName('child_links', 0, $linkedNode)) instanceof DOMNode) { $added = $this->addLinks('li', $this->options['action_links'], $ulNode); } if ($added == 0 && ($containerNode = $this->template->getElementByName('child_actions', 0, $linkedNode)) instanceof DOMNode) { $this->template->removeNode($containerNode); } $this->template->setDisplayDataImmediate('child_title', $this->options['title'], $linkedNode); $dispDatas = array(); $arg_walker = array(); if ($this->options['printf'] && is_array($this->options['printf_args'])) { foreach ($this->options['printf_args'] as $i => &$arg) { $t_arg = explode(":", $arg); if (count($t_arg) > 1) { $arg_walker[$i] = $t_arg; $arg = $t_arg[0]; } } unset($arg); $dispDatas = I2CE_FormStorage::listDisplayFields($this->options['form'], $this->options['printf_args'], $this->primaryObject->getNameId(), $this->options['where'], $this->options['orders'], $this->options['limit']); $ids = array_keys($dispDatas); } else { $ids = I2CE_FormStorage::search($this->options['form'], $this->primaryObject->getNameId(), $this->options['where'], $this->options['orders'], $this->options['limit']); } if (count($ids) == 0) { return false; } foreach ($ids as $id) { $text = $this->options['title']; //default text for child in case printf wasn't set. if (array_key_exists($id, $dispDatas) && is_array($dispDatas)) { $dispFields = $dispDatas[$id]; foreach ($this->options['printf_args'] as $i => $arg) { $dispData[$i] = $dispFields[$arg]; } foreach ($arg_walker as $i => $fields) { $val = $dispData[$i]; $count = 0; foreach ($fields as $field) { $count++; if ($count == 1) { continue; } list($wform, $wid) = array_pad(explode('|', $val, 2), 2, ''); $val = I2CE_FormStorage::lookupField($wform, $wid, array($field), ''); } $dispData[$i] = $val; } $text = @vsprintf($this->options['printf'], $dispData); } $this->generateAjaxLink($id, $text, $tbodyNode); } }
static function generateRegistrationNumber($program, $inst_id) { list($form, $prog_id) = array_pad(explode("|", $program, 2), 2, ""); $program_name = I2CE_FormStorage::lookupField($form, $prog_id, array("name"), false); $program_name = $program_name["name"]; list($institution_form, $institution_id) = array_pad(explode("|", $inst_id), 2, ""); $where = array("operator" => "FIELD_LIMIT", "field" => "id", "style" => "equals", "data" => array("value" => $institution_id)); $last_reg_num = I2CE_FormStorage::lookupField($institution_form, $institution_id, array("last_reg_num", "code"), false); $inst_code = $last_reg_num["code"]; $last_reg_num = $last_reg_num["last_reg_num"]; $reg_num = ++$last_reg_num; $year = date("Y"); $st_reg_num = $year . "-" . $inst_code . "-" . $reg_num; return $st_reg_num; }
/** * Gets the list (in the format of {I2CE_FormStorage::listFields()} of allowed confirmations for the indicated person * @param iHRIS_Person $person * @param boolean $only_new. Defaults to false. it true, we only check for confirmations that this person does not already have * @returns array */ public function getAllowedConfirmations($person, $only_new = false) { if (!$person instanceof iHRIS_Person) { return array(); } $allowed = array(); $conf_type_fields = array('name', 'job', 'probation_period'); $confirmations = I2CE_FormStorage::listFields('confirmation_type', $conf_type_fields); if (count($confirmations) == 0) { return array(); } foreach ($confirmations as $id => $vals) { $job = false; if (array_key_exists('job', $vals) && $vals['job']) { $job = $vals['job']; } //there is no job associted to this confirmation, all positions are valid. $where = array('operator' => 'FIELD_LIMIT', 'field' => 'start_date', 'style' => 'not_null'); if ($job) { $pers_positions = I2CE_FormStorage::listFields('person_position', array('start_date', 'position'), $person->getNameId(), $where, 'start_date'); if (!is_array($pers_positions) || count($pers_positions) == 0) { continue; } $position = false; foreach ($pers_positions as $pp_id => $pp_data) { //we need to check if this posiiton has the correct job $pos_id = substr($pp_data['position'], 9); if (!$pos_id || !($pos_job = I2CE_FormStorage::lookupField('position', $pos_id, 'job'))) { continue; } if ($pos_job != $job) { continue; } $position = $pp_data; break; } if (!$position) { //no mathching posiiton continue; } } else { $positions = I2CE_FormStorage::listFields('person_position', array('start_date'), $person->getNameId(), $where, 'start_date', 1); if (!is_array($positions) || count($positions) == 0) { //person has no valid positions continue; } reset($positions); $position = current($positions); } if (array_key_exists('probation_period', $vals) && $vals['probation_period'] > 0) { if (!array_key_exists('start_date', $position) || !$position['start_date']) { //there was never a position for which can consider this person valid continue; } //now we need to check the probationary period $pos_start_date = I2CE_Date::fromDB($position['start_date']); if (!$pos_start_date->isValid()) { continue; } //probation period is measure in months. this is an approximation. we really need to use the php 5.3 date time class. $prob_valid_month = mktime(0, 0, 0, date("m") - (int) $vals['probation_period'], date("d"), date("Y")); if ($prob_valid_month === false) { I2CE::raiseError("Difficulty in calculating date offest"); continue; } $prob_valid = I2CE_Date::now(I2CE_Date::DATE, $prob_valid_month); if (!$prob_valid->isValid() || $prob_valid->before($pos_start_date)) { //comprare returns -1 if $prob_valid is before $pos_start_data continue; } //we have a position which is valid for this confirmation type } if ($only_new) { $confirm_where = array('operator' => 'FIELD_LIMIT', 'field' => 'confirmation_type', 'style' => 'equals', 'data' => array('value' => 'confirmation_type|' . $id)); if (count(I2CE_FormStorage::search('confirmation', $person->getNameId(), $confirm_where)) > 0) { continue; } } //we made it to here, then the confirmation type is allowed $allowed[$id] = $vals; } return $allowed; }
/** * Walk up a form/linked field path until. Return the id of the top form. * $param mixed. Either an array of string or a colon-sepearted string. (imploded) values is a string of the form: * form1(+field1):...:formM(+fieldM):..:fieldN * there needs to be at least one colon/array needs to be at least two in length * @param string $formid string of the form "$form|$id". the starting value. $form should be one of formX above (e.g. the dbvalue of a map field) * @returns mixed. False on failure, string of the form "$form|$id" on success */ public static function walkupFieldPath($field_path, $formid) { if (is_string($field_path)) { $field_path = explode(':', $field_path); } if (!is_array($field_path) || count($field_path) < 2) { return false; } list($form, $form_id) = array_pad(explode('|', $formid, 2), 2, ''); if (strlen($form_id) == 0 || strlen($form_id) == 0) { return false; } $form_path = array(); $link_field_path = array(); $len = count($field_path); for ($i = $len - 1; $i >= 0; $i--) { $data = explode('+', $field_path[$i], 2); if (count($data) == 2) { list($form, $link_field) = $data; } else { $link_field = $form; $form = $field_path[$i]; } $form_path[$i] = $form; $link_field_path[$i] = $link_field; } //ksort($form_path); //ksort($link_field_path); //now we need to see if we can find the form. if (($form_index = array_search($form, $form_path)) === false) { //the resitrcted form is not among the forms in the form path. return false; } //now we need to walk up the form path until we get to the id of the top most form (e.g. country) for the resitrcted field //example: formid = country|10. stop this is the top //example: formid = region|10 // get dbvalue country field in region|10. this is the top //example: formid = distrct|10 // get dbvalue region field in district|10. suppose it is refgion|10 // get dbvalue country field in region|10. this is the top for ($i = $form_index; $i < $len - 1; $i++) { //if (($form_id = I2CE_FormStorage::search($form_path[$i],false,$where,array(),1)) === false) { if (($formid = I2CE_FormStorage::lookupField($form_path[$i], $form_id, $link_field_path[$i])) === false) { //could not walk up the path. return false; } list($form, $form_id) = array_pad(explode('|', $formid, 2), 2, ''); if ($form != $link_field_path[$i] || strlen($form_id) == 0 || strlen($form_id) == 0) { //be extra sutre that no invalid id received return false; } } //$formid is now the id of the top form. return $formid; }
/** * Get the forms ids for joining on a given field of a named child form's with the named parent form on a given field * @param string $childFormName the name of the child form in the relationship * @param string $parentForm * @param string $parentId * @param array $joinData The array containg the join data * @param array $where * @param array $limit * @param array $fields keys are relationship formnames, values are array of fields we want returned * @param array $ordering keys are relationship formnames, values are array of fields we want ordered by * @return mixed. An array of form ids */ public function getFormDataJoiningByID_fields($childFormName, $parentForm, $parentId, $joinData, $where, $limit, $fields, $ordering) { if (!is_array($joinData)) { I2CE::raiseError("Join data specified for parent_form/{$childFormName}"); return array(); } foreach (array('parent', 'child') as $field) { if (!array_key_exists($field, $joinData) || !is_string($joinData[$field]) || strlen($joinData[$field]) == 0) { I2CE::raiseError("Join {$field} field not specified for parent_form/{$childFormName}"); return array(); } } $form = $this->getForm($childFormName); $pfield = $joinData['parent']; $cfield = $joinData['child']; $pData = I2CE_FormStorage::lookupField($parentForm, $parentId, array($pField), ''); list($pForm, $pId) = array_pad(explode("|", $pData, 2), 2, ''); //this will give the linked form and id if (!array_key_exists($childFormName, $fields) || !is_array($fields[$childFormName])) { $fields[$childFormName] = array(); } if (!array_key_exists($childFormName, $ordering)) { $ordering[$childFormName] = array(); } $sub_where = array('operator' => 'FIELD_LIMIT', 'field' => $cfield, 'style' => 'equals', 'data' => array('value' => $pForm . '|' . $pId)); if (count($where) > 0) { $where = array('operator' => 'AND', 'operand' => array($sub_where, $where)); } else { $where = $sub_where; } if ($this->use_disp_fields) { return I2CE_FormStorage::listFields($form, $fields[$childFormName], false, $where, $ordering[$childFormName], $limit, -1, $this->use_cache); } else { return I2CE_FormStorage::listDisplayFields($form, $fields[$childFormName], false, $where, $ordering[$childFormName], $limit, -1, $this->use_cache); } //return " JOIN $refChildForm AS `$childFormName` ON `$childFormName`.`{$joinData['child']}` = `parent_form`.`{$joinData['parent']}` " ; }
protected function actionDisplayList_row($list, $listConfig) { $odd = false; if ($listConfig['type']) { $link = 'auto_list?type=' . $listConfig['type']; } else { $link = 'auto_list?form=' . $listConfig['form']; } $imported = $this->template->loadFile("lists_type_row.html", "tr", "lists_body"); if (!$imported instanceof DOMNode) { I2CE::raiseError("Could not find lists_type_row.html"); return false; } $remaped = $this->template->loadFile("lists_type_row_remapped.html", "tr", "lists_body"); if (!$remaped instanceof DOMNode) { $remaped = $imported; } $append = $this->template->getElementById('lists_body'); if (!$append instanceof DOMNode) { I2CE::raiseError("Don't know where to append list rows"); return false; } foreach ($list as $data) { $id = substr($data['value'], strlen($listConfig['form']) + 1); if (in_array($id, $this->remap_ids) && ($remap = I2CE_FormStorage::lookupField($listConfig['form'], $id, 'remap', ''))) { $imported_row = $remaped->cloneNode(true); if ($listConfig['type']) { $url = 'index.php/auto_list?type=' . $listConfig['type']; } else { $url = 'index.php/auto_list?form=' . $listConfig['type']; } $url .= '&id=' . $listConfig['form'] . '|' . $id; $this->template->setDisplayDataImmediate('remapped_link', $url, $imported_row); list($rform, $rid) = array_pad(explode('|', $remap, 2), 2, ''); $this->template->setDisplayDataImmediate('remapped_value', I2CE_List::lookup($rid, $rform), $imported_row); } else { $imported_row = $imported->cloneNode(true); } $this->template->appendNode($imported_row, $append); if ($odd) { $this->template->setNodeAttribute("class", "even", $imported_row); } $odd = !$odd; $this->template->setDisplayDataImmediate("lists_row_link", $link . '&id=' . $data['value'], $imported_row); $this->template->setDisplayDataImmediate("lists_row_name", $data['display'], $imported_row); } return true; }
protected function showStudents() { if (!($listNode = $this->template->getElementByID("existing_student_list")) instanceof DOMNode) { return; } foreach ($this->students as $formid => $data) { list($form, $id) = array_pad(explode("|", $formid, 2), 2, ""); if ($form != "person" || !$id) { continue; } $student_name = I2CE_FormStorage::lookupField("person", $id, array('firstname', 'surname'), " "); $aNode = $this->template->createElement("a", array(href => "view?id=" . $formid), $student_name); $liNode = $this->template->createElement("li"); $this->template->appendNode($aNode, $liNode); $this->template->appendNode($liNode, $listNode); } }
public function getEnrolledStudents() { if ($this->id == 0) { return array(); } $where = array('operator' => 'AND', 'operand' => array(0 => array('operator' => 'FIELD_LIMIT', 'field' => 'scheduled_training_course', 'style' => 'equals', 'data' => array('value' => $this->getNameId())), 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()))))); $pstcs = I2CE_FormStorage::listFields('person_scheduled_training_course', array(), true, $where); $list = array(); foreach ($pstcs as $pstc_id => $pstc) { if (strpos($pstc['parent'], '|') === false) { continue; } list($parent, $id) = explode('|', $pstc['parent'], 2); if ($parent != 'person') { continue; } $list[$pstc['parent']] = I2CE_FormStorage::lookupField('person', $id, array('surname', 'firstname'), false); $list[$pstc['parent']]['person_scheduled_training_course'] = 'person_scheduled_training_course|' . $pstc_id; } uasort($list, array($this, 'surnameSort')); return $list; }
protected function appendExamTypesHeaders($tr) { list($form, $id) = array_pad(explode("|", $this->course_id, 2), 2, ''); $field_data = I2CE_FormStorage::lookupField($form, $id, array('training_course_exam_type'), false); $this->exam_types = explode(",", $field_data["training_course_exam_type"]); foreach ($this->exam_types as $exam_type) { list($form, $id) = array_pad(explode("|", $exam_type, 2), 2, ''); $field_data = I2CE_FormStorage::lookupField($form, $id, array('name'), false); $th = $this->template->createElement("th", array("width" => "10", "align" => "center"), $field_data["name"]); $this->template->appendNode($th, $tr); } }
protected function action() { $role = $this->getUser()->role; if ($role != "student") { $this->userMessage("Only A Student Can Enroll Into Courses"); $this->setRedirect("view?id=" . $this->Get("parent")); return false; } iHRIS_AcademicYear::ensureAcademicYear(); $this->person_id = $this->Get("parent"); $this->getProgramAndSemester(); ############Deny Course Registration For A Student Dropped Out Of Semester################### $persObj = I2CE_FormFactory::instance()->createContainer($this->person_id); $persObj->populateChildren("drop_semester"); foreach ($persObj->getChildren("drop_semester") as $dropSemObj) { //check to insure that this drop semester is the one that belongs to the current registration if ($dropSemObj->getField("registration")->getDBValue() != $this->student_registration["id"]) { continue; } $dropSemObj->populateChildren("resume_semester"); $resSemObj = $dropSemObj->getChildren("resume_semester"); if (count($resSemObj) == 0) { $this->userMessage("You Are Currently Dropped From A Semester,Course Enrollment Not Allowed"); $this->setRedirect("view?id=" . $this->person_id); return; } } ############End Of Denying Course Registration For A Student Dropped Out Of Semester################### ############checking if course enrollment closed################# $username = $this->getUser()->username; $this->training_institution = iHRIS_PageFormLecturer::fetch_institution($username); $where = array("operator" => "FIELD_LIMIT", "field" => "training_institution", "style" => "equals", "data" => array("value" => $this->training_institution)); $fields = I2CE_FormStorage::listFields("schedule_course_enrollment", array("start_date", "end_date"), false, $where); foreach ($fields as $id => $field) { $start_date = $field["start_date"]; $end_date = $field["end_date"]; } if (count($fields) == 0) { $this->userMessage("Course Registration Closed"); $this->setRedirect("view?id=" . self::$person_id); return false; } else { $start_date = strtotime($start_date); $end_date = strtotime($end_date); $today = strtotime(date("Y-m-d")); if ($today > $end_date) { $this->userMessage("Course Registration Closed"); $this->setRedirect("view?id=" . self::$person_id); return false; } } ########### End checking of course enrollment deadline ##################### ########### Check if this student is not discontinued ##################### if ($this->check_discontinue($this->person_id)) { $this->userMessage("You have discontinued from this program!!!"); $this->setRedirect("view?id=" . $this->person_id); return false; } ########### End of checking if a student has discontinued ################# ########### If its a new semester then increment the semester and level ################ ######get total number of semesters###### list($prog_form, $prog_id) = array_pad(explode("|", $this->program, 2), 2, ""); $total_sems = I2CE_FormStorage::lookupField("training_program", $prog_id, array("total_semesters"), false); $total_semesters = $total_sems["total_semesters"]; ######end of getting total number of semesters###### ######get passing score###### list($inst_form, $inst_id) = array_pad(explode("|", $this->training_institution, 2), 2, ""); $pass_score = I2CE_FormStorage::lookupField("training_institution", $inst_id, array("passing_score"), false); $this->passing_score = $pass_score["passing_score"]; ######end of getting passing score###### $semester_name = self::getSemesterName($this->curr_semester); $where_GPA = array("operator" => "AND", "operand" => array(0 => array("operator" => "FIELD_LIMIT", "field" => "parent", "style" => "equals", "data" => array("value" => $this->person_id)), 1 => array("operator" => "FIELD_LIMIT", "field" => "semester", "style" => "equals", "data" => array("value" => $this->curr_semester))), 2 => array("operator" => "FIELD_LIMIT", "field" => "registration", "style" => "equals", "data" => array("value" => $this->student_registration["id"]))); ######if GPA for current semester available then increment the semester###### $sem_GPA = I2CE_FormStorage::Search("semester_GPA", false, $where_GPA); if (count($sem_GPA) > 0 and $semester_name < $total_semesters) { $regObj = $this->factory->createContainer($this->student_registration["id"]); list($form, $level) = array_pad(explode("|", $this->curr_level, 2), 2, ""); $semester_name = ++$semester_name; if ($semester_name % 2 != 0) { $new_level = ++$level; } $new_semester = "semester|" . $semester_name; $user = new I2CE_User(); $regObj->populate(); $regObj->getField("semester")->setFromDB($new_semester); if ($semester_name % 2 != 0) { $regObj->getField("academic_level")->setFromDB("academic_level|" . $new_level); } $regObj->save($user); } ########### End of incrementing the semester and level ############ $this->getProgramCourses($this->curr_semester); $this->getElectiveCourses($this->curr_semester); $this->getPreviousSemesterCourses($this->curr_semester); if (count($this->subject_courses) == 0 and count($this->elective_courses) == 0) { $this->userMessage("No courses defined into the system,try later on!!!"); $this->setRedirect("view?id=" . $this->person_id); } $this->displayCourses($this->subject_courses, "subject", "Subject Courses"); if (count($this->elective_courses) > 0) { $this->displayCourses($this->elective_courses, "elective", "Elective Courses"); } //append hidden values to be used on the onload if (!($hidden = $this->template->getElementByID("hidden_values")) instanceof DOMNode) { return; } $input = $this->template->createElement("input", array("type" => "hidden", "name" => "person_id", "value" => $this->person_id)); $this->template->appendNode($input, $hidden); $input = $this->template->createElement("input", array("type" => "hidden", "name" => "curr_semester", "value" => $this->curr_semester)); $this->template->appendNode($input, $hidden); if (!($div = $this->template->getElementByID("button")) instanceof DOMNode) { return; } $input = $this->template->createElement("input", array("type" => "submit", "value" => "Save")); $this->template->appendNode($input, $div); }
protected function addToDiscontinued($reason, $discoForm) { if (!($discoObj = $this->ff->createContainer($discoForm)) instanceof I2CE_Form) { I2CE::raiseError("invalid Object"); return false; } $discoObj->populate(); $id = explode("|", $discoForm); if (count($id) == 2) { $id = $id[1]; $fields = I2CE_FormStorage::lookupField("discontinued", $id, array("reason"), false); $reason = $reason . "," . $fields["reason"]; $reasons_array = explode(",", $reason); $reasons = array_unique($reasons_array); $reason = implode(",", $reasons); } $date_disco = date("Y-m-d"); $discoObj->getField("date_discontinued")->setFromDB($date_disco); $discoObj->getField("registration_number")->setFromPost($this->reg_num); $discoObj->getField("registration")->setFromDB($this->student_registration["id"]); $discoObj->getField("reason")->setFromDB($reason); $discoObj->getField("recommendations")->setFromDB("recommendations|FD"); $discoObj->getField("parent")->setFromPost($this->person_id); $discoObj->getField("academic_year")->setFromDB($this->academic_year_id); $discoObj->save($this->user); }