Еще ошибки. кажется. Еще не исправлял, так как сильно тороплюсь и боюсь сделать еще хуже (php изучаю от силы неделю). Если ошибки, а не мои кривые руки - исправлю попозжа.
Версия санты 3.07
Краткое описание: не работает вывод ошибок при редактировании пользователем подписок и имени.
В шаблоне секции:
<!-- @errore_name -->
<!-- @errore_news -->
должны заменятся тем, что я пишу после них (заполнил конечно).
Похоже ошибки в функции:
function pub_formsubmit_show($file_template, $file_template_control)
секция с 207 строки
//Возможно захотел настроить свою подписку
if (isset($my_post['save_control']) && isset($my_post['code']) && isset($my_post['id']))
{
$this->set_templates($kernel->pub_template_parse($file_template_control));
$errore = '';
$ret = $this->user_save_control($my_post['code']);
if (!$ret )
$errore = $ret;
return $this->user_controle($kernel->pub_httppost_get('code'), $errore);
}
errore всегда будет '', так как вызываемая функция
$ret = $this->user_save_control($my_post['code']);
должна вернуть сообщение об ошибке:
if (empty($code))
return $this->get_template_block('code_not_exist');
$user = $this->mysql_base->get_info_user($code);
if (empty($user))
return $this->get_template_block('code_not_exist');
$my_post = $kernel->pub_httppost_get();
if (!isset($my_post['section']))
return $this->get_template_block('errore_news');
но поле в массиве my_post[name] вообще не проверяется, таким образом, функция всегда возвращает или сообщение об ошибке или TRUE и в этой инструкции:
if (!$ret )
$errore = $ret;
смысла нет.
Предлагаю кусок переписать с 207 строки переписать так:
if (isset($my_post['save_control']) && isset($my_post['code']) && isset($my_post['id']))
{
$this->set_templates($kernel->pub_template_parse($file_template_control));
$errore = '';
$ret = $this->user_save_control($my_post['code']);
/*было if (!$ret ) стало: */
if ($ret )
$errore = $ret;
return $this->user_controle($kernel->pub_httppost_get('code'), $errore);
}
а часть функции
function user_save_control($code)
переписать так:
/* было
if (isset($my_post['name']) && !empty($my_post['name']))
$this->mysql_base->update_user($userid, array("name"=>$my_post['name']));
return true; */
/*стало*/
if (isset($my_post['name']) && !empty($my_post['name']))
$this->mysql_base->update_user($userid, array("name"=>$my_post['name']));
else
return $this->get_template_block('errore_name');
/*...*/
return false;
опыта нет, потому не рискнул так менять. малоли, вдруг где еще вызывается эта функция. и где-то истину должна возвращать если ошибок нет.
(по-моему проверки надо полностью переписать), что бы сразу вернуть все ошибки, а не по одной на каждый запрос. Потом подумаю