")
{
Security::saveRedirectURL();
HeaderRedirect("login", "", "message=expired");
return;
}
require_once('include/xtempl.php');
require_once('classes/changepwdpage.php');
require_once(getabspath("classes/cipherer.php"));
$xt = new Xtempl();
$id = postvalue("id") != "" ? postvalue("id") : 1;
$message = "";
$changePwdFields = array('oldpass', 'newpass', 'confirm');
$cipherer = RunnerCipherer::getForLogin();
$layout = new TLayout("changepwd2", "OfficeDeliciousGray", "MobileDeliciousGray");
$layout->version = 2;
$layout->blocks["top"] = array();
$layout->containers["changepwd"] = array();
$layout->container_properties["changepwd"] = array( );
$layout->containers["changepwd"][] = array("name"=>"changeheader",
"block"=>"changeheader", "substyle"=>2 );
$layout->containers["changepwd"][] = array("name"=>"message",
"block"=>"message_block", "substyle"=>1 );
$layout->containers["changepwd"][] = array("name"=>"wrapper",
"block"=>"", "substyle"=>1 , "container"=>"fields" );
$layout->containers["fields"] = array();
$layout->container_properties["fields"] = array( );
$layout->containers["fields"][] = array("name"=>"changefields",
"block"=>"", "substyle"=>1 );
$layout->containers["fields"][] = array("name"=>"changebuttons",
"block"=>"changebuttons", "substyle"=>2 );
$layout->skins["fields"] = "fields";
$layout->skins["changepwd"] = "1";
$layout->blocks["top"][] = "changepwd";
$page_layouts["changepwd"] = $layout;
$layout->skinsparams = array();
$layout->skinsparams["empty"] = array("button"=>"button2");
$layout->skinsparams["menu"] = array("button"=>"button1");
$layout->skinsparams["hmenu"] = array("button"=>"button1");
$layout->skinsparams["undermenu"] = array("button"=>"button1");
$layout->skinsparams["fields"] = array("button"=>"button1");
$layout->skinsparams["form"] = array("button"=>"button1");
$layout->skinsparams["1"] = array("button"=>"button1");
$layout->skinsparams["2"] = array("button"=>"button1");
$layout->skinsparams["3"] = array("button"=>"button1");
//array of params for classes
$params = array("pageType" => PAGE_CHANGEPASS, "id" =>$id);
$params['xt'] = &$xt;
$params['tName'] = NOT_TABLE_BASED_TNAME;
$params['templatefile'] = "changepwd.htm";
$params['needSearchClauseObj'] = false;
$pageObject = new ChangePasswordPage($params);
$pageObject->init();
$onFly = postvalue("onFly");
$referer = @$_SERVER["HTTP_REFERER"] != ""
&& strpos($_SERVER["HTTP_REFERER"], GetTableLink("changepwd")) != strlen($_SERVER["HTTP_REFERER"]) - strlen(GetTableLink("changepwd"))
? $_SERVER["HTTP_REFERER"] : "";
if(!isset($_SESSION["changepwd_referer"]))
$_SESSION["changepwd_referer"] = $referer != "" ? $referer : GetTableLink("menu");
else if($referer != "")
$_SESSION["changepwd_referer"] = $referer;
$auditObj = GetAuditObject();
// Before Process event
if($globalEvents->exists("BeforeProcessChangePwd"))
$globalEvents->BeforeProcessChangePwd( $pageObject );
if (@$_POST["btnSubmit"] == "Change")
{
$xt->assign( "backlink_attrs", "href=\"". runner_htmlspecialchars( $_SESSION["changepwd_referer"] ) . "\"" );
$filename_values = array();
$blobfields = array();
$values = array();
$strTableName = $cLoginTable;
foreach($changePwdFields as $fName)
{
$fControl = $pageObject->getControl($fName, $id);
$fControl->readWebValue($values, $blobfields, NULL, NULL, $filename_values);
}
$value = @$_SESSION["UserID"];
if($cipherer->isFieldEncrypted($cUserNameField))
$value = $cipherer->MakeDBValue($cUserNameField, $value, "", true);
else
{
if(NeedQuotes($cUserNameFieldType))
$value = $pageObject->connection->prepareString($value);
else
$value = (0 + $value);
}
$passvalue = $values["newpass"];
if($cipherer->isFieldEncrypted($cPasswordField))
$passvalue = $cipherer->MakeDBValue($cPasswordField, $passvalue);
else
{
if(NeedQuotes($cPasswordFieldType))
$passvalue = $pageObject->connection->prepareString($passvalue);
else
$passvalue = (0 + $passvalue);
}
//possible to do through $connection->addTableWrappers( . . .)
$sWhere = " where ".$pageObject->connection->addFieldWrappers($cUserNameField)."=".$value;
$strSQL = "select ".$pageObject->connection->addFieldWrappers($cPasswordField);
$strSQL .= " as ".$pageObject->connection->addFieldWrappers($cPasswordField)
." from ".$pageObject->connection->addTableWrappers($cLoginTable).$sWhere;
$qResult = $pageObject->connection->query( $strSQL );
$row = $cipherer->DecryptFetchedArray( $qResult->fetchAssoc() );
if($row && ($values['oldpass'] == $row[$cPasswordField]))
{
if($pageObject->pwdStrong && !checkpassword($values['newpass']))
{
$msg = "";
$pwdLen = GetGlobalData("pwdLen", 0);
if($pwdLen)
{
$fmt = mlang_message("SEC_PWD_LEN");
$fmt = str_replace("%%", "".$pwdLen, $fmt);
$msg.= "
".$fmt;
}
$pwdUnique = GetGlobalData("pwdUnique", 0);
if($pwdUnique)
{
$fmt = mlang_message("SEC_PWD_UNIQUE");
$fmt = str_replace("%%", "".$pwdUnique, $fmt);
$msg.= "
".$fmt;
}
$pwdDigits = GetGlobalData("pwdDigits", 0);
if($pwdDigits)
{
$fmt = mlang_message("SEC_PWD_DIGIT");
$fmt = str_replace("%%", "".$pwdDigits, $fmt);
$msg.= "
".$fmt;
}
if(GetGlobalData("pwdUpperLower", false))
{
$fmt = mlang_message("SEC_PWD_CASE");
$msg.= "
".$fmt;
}
if($msg)
$msg = substr($msg, 4);
$message = $msg;
$pageObject->jsSettings['tableSettings'][$strTableName]['msg_passwordError'] = $msg;
$allow_registration = false;
}
else
{
$retval = true;
if($globalEvents->exists("BeforeChangePassword"))
$retval = $globalEvents->BeforeChangePassword($values["oldpass"], $values["newpass"], $pageObject);
if($retval)
{
$strSQL = "update ".$pageObject->connection->addTableWrappers($cLoginTable)
." set ".$pageObject->connection->addFieldWrappers($cPasswordField)."=".$passvalue.$sWhere;
$pageObject->connection->exec( $strSQL );
if($auditObj)
$auditObj->LogChPassword();
if($globalEvents->exists("AfterChangePassword"))
$globalEvents->AfterChangePassword($values["oldpass"], $values["newpass"], $pageObject);
$layout = new TLayout("changepwd_success2", "OfficeDeliciousGray", "MobileDeliciousGray");
$layout->version = 2;
$layout->blocks["top"] = array();
$layout->containers["changepwd"] = array();
$layout->container_properties["changepwd"] = array( );
$layout->containers["changepwd"][] = array("name"=>"changeheader",
"block"=>"changeheader", "substyle"=>2 );
$layout->containers["changepwd"][] = array("name"=>"wrapper",
"block"=>"", "substyle"=>1 , "container"=>"fields" );
$layout->containers["fields"] = array();
$layout->container_properties["fields"] = array( );
$layout->containers["fields"][] = array("name"=>"changepwd_message",
"block"=>"", "substyle"=>1 );
$layout->skins["fields"] = "fields";
$layout->containers["changepwd"][] = array("name"=>"changesuccessbutton",
"block"=>"", "substyle"=>2 );
$layout->skins["changepwd"] = "1";
$layout->blocks["top"][] = "changepwd";
$page_layouts["changepwd_success"] = $layout;
$layout->skinsparams = array();
$layout->skinsparams["empty"] = array("button"=>"button2");
$layout->skinsparams["menu"] = array("button"=>"button1");
$layout->skinsparams["hmenu"] = array("button"=>"button1");
$layout->skinsparams["undermenu"] = array("button"=>"button1");
$layout->skinsparams["fields"] = array("button"=>"button1");
$layout->skinsparams["form"] = array("button"=>"button1");
$layout->skinsparams["1"] = array("button"=>"button1");
$layout->skinsparams["2"] = array("button"=>"button1");
$layout->skinsparams["3"] = array("button"=>"button1");
$pageObject->updatePageLayoutAndCSS('', 'success');
$xt->assign("body", true);
return $pageObject->display(GetTemplateName("", "changepwd_success")); // return $xt->display for .net compatibility
}
}
}
else
{
$message = mlang_message("INVALID_PASSWORD");
}
}
else
{
$xt->assign("backlink_attrs", "href=\"". runner_htmlspecialchars( $_SESSION["changepwd_referer"] ) . "\"");
}
if($message)
{
$xt->assign("message", "