Уважаемые, разобраться.
За напоманание пароля отвечает задача task=lostPassword в com_comprofiler
(com_comprofiler&task=lostPassword)
task имеет такой вид
case "lostPassword":
case "lostpassword":
lostPassForm( $option );
break;
lostPassForm есть в файле com_comprofiler.php:
function lostPassForm( $option ) {
global $mainframe;
if (method_exists($mainframe, "SetPageTitle")) $mainframe->SetPageTitle(_PROMPT_PASSWORD);
HTML_comprofiler::lostPassForm($option);
}
Это как я понимаю формирование шапки, За саму форму восстановления пароля отвечает lostPassForm в файле com_comprofiler.html.php
function lostPassForm($option) {
global $_PLUGINS;
$_PLUGINS->loadPluginGroup('user');
$results = $_PLUGINS->trigger( 'onLostPassForm', array( 1 )); //$ui=1
if ($_PLUGINS->is_errors()) {
echo "<script type=\"text/javascript\">alert(\"".$_PLUGINS->getErrorMSG()."\"); window.history.go(-1); </script>\n";
exit();
}
//TODO: Add ability to change password on form.
?>
<table cellpadding="4" cellspacing="0" border="0" width="98%" class="contentpane">
<form action="<?php echo sefRelToAbs("index.php?option=".$option); ?>" id="adminForm" name="adminForm" method="post">
<tr>
<td colspan="2"><div class="componentheading"><?php echo _PROMPT_PASSWORD; ?></div></td>
</tr>
<tr>
<td colspan="2"><?php echo _NEW_PASS_DESC; ?></td>
</tr>
<tr>
<td><?php echo _PROMPT_UNAME; ?></td>
<td><input type="text" name="checkusername" class="inputbox" size="40" maxlength="25" /></td>
</tr>
<tr>
<td><?php echo _PROMPT_EMAIL; ?></td>
<td><input type="text" name="confirmEmail" class="inputbox" size="40" /></td>
</tr>
<?php
if (is_array($results)) {
foreach ( $results as $r ) {
echo " <tr>\n";
echo " <td>" . $r[0] . "</td>\n";
echo " <td>" . $r[1] . "</td>\n";
echo " </tr>\n";
}
}
?>
<tr>
<td colspan="2"> <input type="hidden" name="option" value="<?php echo $option;?>" />
<input type="hidden" name="task" value="sendNewPass" />
<?php
echo cbGetSpoofInputTag();
?>
<input type="submit" class="button" value="<?php echo _BUTTON_SEND_PASS; ?>" /></td>
</tr>
</form>
</table>
<?php
}
В этой форме должны выводиться значения массива $results (видимо это и есть поля Секретного кода и секретной картинки)
if (is_array($results)) {
foreach ( $results as $r ) {
echo " <tr>\n";
echo " <td>" . $r[0] . "</td>\n";
echo " <td>" . $r[1] . "</td>\n";
echo " </tr>\n";
}
}
У меня этот блок не выводит ничего. Массив $results = пустой.
А массив получается следующим образом $results = $_PLUGINS->trigger( 'onLostPassForm', array( 1 )); //$ui=1
Функция onLostPassForm есть в components\com_comprofiler\plugin\user\plug_cbcaptcha\cb.captcha.php (109)
function onLostPassForm( $ui ) {
$params = $this->params;
if (!$params->get('captchaNewPassword',1)) {
return;
}
$CaptchaImage = $this->_getHTMLcaptcha();
$return = array( 0 => "", 1 => $CaptchaImage );
return $return;
}
Эта функция видимо управляет выводом картинки? Походу не работает именно этот блок, а вот почему не могу понять. Получается, что проверка на секретную картинку есть (кстати, не нашел, где эта проверка вызывается), а сама картинка не выводится. пожалуйста, дальше понять,
1) где искать вызов проверки секретного когда?
2) как вывести картинку секретного кода?