Добавление значения индекса для дублирования имен экранов - PullRequest
1 голос
/ 26 февраля 2010

Я использую expressionengine в качестве CMS, но хочу переопределить проверку ядра для новых пользователей. Когда кто-то регистрируется как новый пользователь, система проверяет, не занято ли уже имя экрана. Если это так, то он выдает флаг ошибки.

Я нашел раздел кода, который выполняет проверку, но я хотел бы изменить его так, чтобы вместо броска и ошибки к имени экрана добавлялся пробел и число (один над значением счетчика.

Таким образом, «Джон Смит» заменяется на «Джон Смит 3» (при условии, что в БД есть еще два имени экрана «Джон Смит»).

Как я могу изменить этот код, чтобы добиться этого?

        /** -------------------------------------
        /**  Is screen name taken?
        /** -------------------------------------*/

        if (strtolower($this->cur_screen_name) != strtolower($this->screen_name))
        {
            $query = $DB->query("SELECT COUNT(*) AS count FROM exp_members WHERE screen_name = '".$DB->escape_str($this->screen_name)."'");

            if ($query->row['count'] > 0)
            {                            
                $this->errors[] = $LANG->line('screen_name_taken');
            }
        }

1 Ответ

1 голос
/ 26 февраля 2010
if (strtolower($this->cur_screen_name) != strtolower($this->screen_name))
{
    $query = $DB->query("SELECT COUNT(*) AS count FROM exp_members WHERE screen_name = '".$DB->escape_str($this->screen_name)."'");

    if ($query->row['count'] > 0)
    {   
        $query2 = $DB->query("SELECT COUNT(*) AS count FROM exp_members WHERE screen_name LIKE '".$DB->escape_str($this->screen_name)."'");
        $name = $DB->escape_str($this->screen_name).$query2->row['count']; 
        $this->errors[] = 'The screen name you choose is taken please use '.$name.' for your new  screen_name);
    }
}

Веселись!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...