function showRefactorVariableRes() { /* update last page */ $_SESSION['LASTPAGE'] = substr($_SESSION['LASTPAGE'], 0, strripos($_SESSION['LASTPAGE'], "res")); $displaySysAdmin = new DisplaySysAdmin(); $survey = new Survey($_SESSION['SUID']); $vsid = getFromSessionParams('vsid'); if ($vsid != '') { //refactor $_SESSION['VSID'] = $vsid; $variable = $survey->getVariableDescriptive($vsid); $old = $variable->getName(); if ($old != loadvar(SETTING_NAME)) { $variable->setName(loadvar(SETTING_NAME)); $variable->save(); $new = $variable->getName(); $compiler = new Compiler($_SESSION['SUID'], getSurveyVersion($survey)); $generatevars = array(); $generatevars[] = $variable; // check types $types = $survey->getTypes(); $generatetypes = array(); foreach ($types as $type) { $sets = $type->getSettingsArray(); $changed = false; foreach ($sets as $s) { $val = $s->getValue(); if (!is_numeric($val) && !inArray($val, array(SETTING_FOLLOW_GENERIC, ""))) { $newval = $this->updateVariableValue($old, $new, $val); if ($newval != $val) { $s->setValue($newval); $changed = true; } } } if ($changed == true) { $type->save(); $generatetypes[] = $type; } } $generatevarsgetfills = array(); foreach ($generatetypes as $gt) { $vars = $survey->getVariableDescriptivesOfType($gt->getTyd()); foreach ($vars as $v) { if (isset($generatevarsgetfills[$v->getVsid()]) == false) { $generatevarsgetfills[$v->getVsid()] = $v; } } } // check variables $generatesetfills = array(); $allvars = $survey->getVariableDescriptives(); foreach ($allvars as $var) { if ($var->getVsid() != $variable->getVsid()) { $sets = $var->getSettingsArray(); $changed = false; $fillcodechanged = false; foreach ($sets as $s) { $val = $s->getValue(); if (!is_numeric($val) && !inArray($val, array(SETTING_FOLLOW_GENERIC, SETTING_FOLLOW_TYPE, ""))) { $excluded = array(); if ($s->getName() == SETTING_FILLCODE) { $newval = excludeText($val, $newval); $newval = preg_replace("/\\b" . $old . "\\b/i", $new, $newval); $newval = includeText($newval, $excluded); } else { $newval = $this->updateVariableValue($old, $new, $val); } if ($newval != $val) { if ($s->getName() == SETTING_FILLCODE) { $fillcodechanged = true; } $s->setValue($newval); $changed = true; } } } if ($changed == true) { $var->save(); if (isset($generatevarsgetfills[$var->getVsid()]) == false) { $generatevarsgetfills[$var->getVsid()] = $var; } if ($fillcodechanged == true) { $generatesetfills[] = $var; } } } } // check groups $generategroups = array(); $groups = $survey->getGroups(); foreach ($groups as $gr) { $sets = $gr->getSettingsArray(); $changed = false; $fillcodechanged = false; foreach ($sets as $s) { $val = $s->getValue(); if (!is_numeric($val) && !inArray($val, array(SETTING_FOLLOW_GENERIC, ""))) { $newval = $this->updateVariableValue($old, $new, $val); if ($newval != $val) { $s->setValue($newval); $changed = true; } } } if ($changed == true) { $gr->save(); $generategroups[] = $gr; } } // check routing $generate = array(); $sections = $survey->getSections(); foreach ($sections as $sect) { $routing = $sect->getRouting(); $excluded = array(); $newrouting = excludeText($routing, $excluded); $newrouting = preg_replace("/\\b" . $old . "\\b/i", $new, $newrouting); $newrouting = includeText($newrouting, $excluded); if ($newrouting != $routing) { $sect->storeRouting($newrouting); $sect->save(); $generate[] = $sect; } } // recompile everything $compiler = new Compiler($_SESSION['SUID'], getSurveyVersion($survey)); $messages[] = $compiler->generateVariableDescriptives($generatevars); if (sizeof($generatetypes) > 0) { $messages[] = $compiler->generateTypes($generatetypes); } if (sizeof($generate) > 0) { $messages[] = $compiler->generateSections($generate); } if (sizeof($generatesetfills) > 0) { $messages[] = $compiler->generateSetFills($generatesetfills); } if (sizeof($generatevarsgetfills) > 0) { $messages[] = $compiler->generateGetFills($generatevarsgetfills); } if (sizeof($generategroups) > 0) { $messages[] = $compiler->generateGetFillsGroups($generategroups); } foreach ($generate as $gen) { $messages[] = $compiler->generateEngine($gen->getSeid()); $messages[] = $compiler->generateGetFillsRouting($gen->getSeid()); } return $displaySysAdmin->showEditVariable($_SESSION['VSID'], $displaySysAdmin->displaySuccess(Language::messageVariableRenamed($old, $new))); } else { return $displaySysAdmin->showRefactorVariable($_SESSION['VSID'], $displaySysAdmin->displayWarning(Language::messageVariableNotRenamed())); } } else { return $displaySysAdmin->showSection($_SESSION['SEID']); } }