value); } else { $oP = new WebPage($sPageTitle); } // Authentication logic try { utils::UseParamFile(); if ($bIsModeCLI) { $sAuthUser = utils::ReadParam('auth_user', null, true, utils::ENUM_SANITIZATION_FILTER_RAW_DATA); $sAuthPwd = utils::ReadParam('auth_pwd', null, true, utils::ENUM_SANITIZATION_FILTER_RAW_DATA); if (utils::IsNullOrEmptyString($sAuthUser) || utils::IsNullOrEmptyString($sAuthPwd)) { throw new AuthenticationException("Access credentials not provided, usage: php rebuildhk.php --auth_user= --auth_pwd= [--param_file=]"); } if (UserRights::CheckCredentials($sAuthUser, $sAuthPwd)) { UserRights::Login($sAuthUser); } else { throw new AuthenticationException("Access wrong credentials ('$sAuthUser')"); } } else { // Check user rights and prompt if needed LoginWebPage::DoLoginEx(null, true); } if (!UserRights::IsAdministrator()) { throw new AuthenticationException("Access restricted to administrators"); } } catch (AuthenticationException $oException) { $oP->p($oException->getMessage()); $oP->output(); exit(BinExitCode::ERROR->value); } catch (Exception $oException) { $oP->p("Error: ".$oException->GetMessage()); $oP->output(); exit(BinExitCode::FATAL->value); } // Business logic try { foreach (MetaModel::GetClasses() as $sClass) { if (!MetaModel::HasTable($sClass)) { continue; } foreach (MetaModel::ListAttributeDefs($sClass) as $sAttCode => $oAttDef) { // Check (once) all the attributes that are hierarchical keys if ((MetaModel::GetAttributeOrigin($sClass, $sAttCode) == $sClass) && $oAttDef->IsHierarchicalKey()) { $oP->p("Rebuild hierarchical key $sAttCode from $sClass."); HierarchicalKey::Rebuild($sClass, $sAttCode, $oAttDef); } } } $oP->p("Done"); $oP->output(); } catch (AuthenticationException $oException) { $oP->p($oException->getMessage()); $oP->output(); exit(BinExitCode::ERROR->value); } catch (Exception $oException) { $oP->p("Error: ".$oException->GetMessage()); $oP->output(); exit(BinExitCode::FATAL->value); }