protected function _display($supress_output = false) { $this->template->addHeaderLink('mootools-core.js'); $this->template->addHeaderLink('mootools-more.js'); parent::_display($supress_output); if ($errors = I2CE_Dumper::cleanlyEndOutputBuffers()) { I2CE::raiseError("Errors:\n" . $errors); } $this->ff = I2CE_FormFactory::instance(); if (!$this->request_exists('id') || !($formid = $this->request('id'))) { $this->pushError("Bad list id {$id}"); //needs to be localized return false; } $success = true; list($form, $id) = array_pad(explode("|", $formid, 2), 2, ''); I2CE::raiseError(print_r($this->request(), true)); if ($id == '*') { $where = array('operator' => 'FIELD_LIMIT', 'field' => 'remap', 'style' => 'not_null', 'data' => array()); $ids = I2CE_FormStorage::search($form, false, $where); I2CE::raiseError("Form {$form} has remapping data for " . implode(" ", $ids)); if (count($ids) > 0) { foreach (I2CE_List::getFieldsMappingToList($form) as $rform => $fields) { foreach ($fields as $fieldObj) { $field = $fieldObj->getName(); foreach ($ids as $id) { I2CE::raiseError("Checking for remaps on {$rform}+{$field}"); $success &= $this->doRemap($rform, $field, $form . '|' . $id); } } } } $url = "index.php/auto_list?form=" . $form; } else { $form = ''; if (!$this->request_exists('form') || !($form = $this->request('form')) || !in_array($form, $this->ff->getForms())) { $this->pushError("Form {$form} not found"); return false; } $field = ''; if (!$this->request_exists('field') || !($field = $this->request('field'))) { $this->pushError("Bad Field {$field}"); return false; } $success = $this->doRemap($form, $field, $formid); $url = "index.php/auto_list?id={$formid}&form=" . $form; } if ($success) { $this->pushContent("Data was succesully remapped. Continue on to database lists <a href='{$url}'>site</a>?"); } else { $this->pushContent("Data was <b>not</b> succesully remapped. Continue on to database lists <a href='{$url}'>site</a>?"); } return true; }
/** * method to remap a given id * @param string $form * @param string $oldid * @param string $newid */ public function remapID($form, $oldid, $newid) { $ff = I2CE_FormFactory::instance(); $list = $ff->createForm($form); if (!$list instanceof I2CE_List) { return; } //go through each form and each field and $forms = I2CE_List::getFieldsMappingToList($list); foreach ($forms as $mapForm => $fields) { foreach ($fields as $fieldName => $fieldObj) { I2CE::raiseError("Remapping {$mapForm}+" . $fieldName . " from {$form}|{$oldid} to {$form}|{$newid}"); $fieldObj->remapField($form, $oldid, $newid); } } }
protected function getLinkedFormIds($formObj, &$child_forms) { if (!$formObj instanceof I2CE_Form) { return; } $formObj->populate(); $child_forms['form'] = $formObj; $links = array(); $fields = $formObj->getFieldNames(); $child_forms['links_info'] = array(); foreach ($fields as $field) { $fieldObj = $formObj->getField($field); if (!$fieldObj instanceof I2CE_FormField_MAPPED) { continue; } if (!$fieldObj->isValid() || !$fieldObj->isSetValue()) { continue; } if ($fieldObj instanceof I2CE_FormField_MAP) { $links[] = $fieldObj->getMappedForm() . '|' . $fieldObj->getMappedID(); $child_forms['links_info'][$field] = array($fieldObj->getMappedForm() . '|' . $fieldObj->getMappedID()); } else { if ($fieldObj instanceof I2CE_FormField_MAP_MULT) { $child_forms['links_info'][$field] = array(); foreach (explode(',', $fieldObj->getDBValue()) as $val) { if (!$val) { continue; } $links[] = $val; $child_forms['links_info'][$field][] = $val; } } else { continue; } } } if (count($links) > 0) { $child_forms['links'] = $links; } $links_from = array(); $links_from_info = array(); if ($formObj instanceof I2CE_List) { $data = I2CE_List::getFieldsMappingToList($formObj); foreach ($data as $link_form => $link_fields) { foreach ($link_fields as $link_field_name => $link_field_obj) { if ($link_field_obj instanceof iHRIS_Currency) { $where = array('operator' => 'FIELD_LIMIT', 'field' => $link_field_name, 'style' => 'like', 'data' => array('value' => $formObj->getFormID() . '=%')); } else { if ($link_field_obj instanceof I2CE_FormField_MAP) { $where = array('operator' => 'FIELD_LIMIT', 'field' => $link_field_name, 'style' => 'equals', 'data' => array('value' => $formObj->getFormID())); } else { $where = array('operator' => 'OR', 'operand' => array(array('operator' => 'FIELD_LIMIT', 'field' => $link_field_name, 'style' => 'like', 'data' => array('value' => $formObj->getFormID() . ',%')), array('operator' => 'FIELD_LIMIT', 'field' => $link_field_name, 'style' => 'like', 'data' => array('value' => '%,' . $formObj->getFormID())), array('operator' => 'FIELD_LIMIT', 'field' => $link_field_name, 'style' => 'like', 'data' => array('value' => '%,' . $formObj->getFormID() . ',%')), array('operator' => 'FIELD_LIMIT', 'field' => $link_field_name, 'style' => 'equals', 'data' => array('value' => $formObj->getFormID())))); } } $matches = I2CE_FormStorage::search($link_form, false, $where); if ($matches) { foreach ($matches as $match) { $links_from[] = $link_form . '|' . $match; if (!array_key_exists($link_form . '+' . $link_field_name, $links_from_info)) { $links_from_info[$link_form . '+' . $link_field_name] = array(); } $links_from_info[$link_form . '+' . $link_field_name][] = $link_form . '|' . $match; } } } } } if (count($links_from) > 0) { $child_forms['links_from'] = $links_from; $child_forms['links_from_info'] = $links_from_info; } if (($parentField = $formObj->getField('parent')) instanceof I2CE_FormField) { if ($parent = $parentField->getDBValue()) { $child_forms['parent'] = $parent; } } foreach ($formObj->getChildForms() as $child_form) { $formObj->populateChildren($child_form); $children = $formObj->getChildren($child_form); if (!is_array($children) || count($children) == 0) { continue; } foreach ($children as $childObj) { if (!$childObj instanceof I2CE_Form) { I2CE::raiseError("Baddness getting {$child_form} of " . $formObj->getFormID() . "\n" . gettype($childObj)); continue; } if (!array_key_exists('children', $child_forms)) { $child_forms['children'] = array(); } $child_forms['children'][$childObj->getFormID()] = array(); $this->getLinkedFormIds($childObj, $child_forms['children'][$childObj->getFormID()]); } } return; }