コード例 #1
0
ファイル: sysadmin.php プロジェクト: nubissurveying/nubis
 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']);
     }
 }