Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Ищем опытного PHP программиста, хорошо знающего Yii (1.x).  

В случае успешной реализации проекта, гарантируем долгосрочное (по-проектное) сотрудничество. Исполнитель будет выбран из тех, кто предоставит ссылки на собственные проекты на Yii или на github, где можно посмотреть разработки, связанные с фреймворком.  

Итак, задача.  

На основе базового приложения Yii, используя возможности фреймворка и следуя принятым в сообществе Yii правилам кодирования, необходимо разработать два модуля без использования готовых решений (включая модуль User и Bootstrap).  

Модуль 1 – User  

- Регистрация  

Для регистрации запрашивать только имя, фамилию и email.  

Проверять данные до отправки формы (Ajax валидация) – имя и фамилия должны быть на русском языке, от 3 и до 20 символов, email должен пройти проверку встроенным в Yii валидатором "email", а так же проверку на уникальность. Сообщения об ошибках (на русском языке) должны показываться так же до отправки формы. Проверка поля при потере фокуса (клик в другую область).  

После успешно пройденной регистрации, на указанный пользователем email должно отсылаться письмо со ссылкой для подтверждения, а после него – отсылка письма с паролем, сгенерированным системой (от 8 символов, латинские буквы разного регистра и цифры).  При попытке авторизоваться до подтверждения регистрации так же должна выводиться ошибка.  

- Авторизация  

Авторизация происходит при вводе email'a и пароля – email проверяется асинхронно.  

Пароли следует хранить в зашифрованном виде (md5).  

- Восстановление пароля  

Запрос на восстановление пароля происходит при вводе корректного email'а, после чего на этот адрес отсылается письмо с подтверждением сброса пароля. После подтверждения новый пароль отсылается пользователю. Необходимо фиксировать запросы на смену пароля, как удачные, так и нет (оставленные без подтверждения по почте), в отдельной таблице в БД.   

Модуль 2 – Dialog  

Должна быть возможность как вести переписку один на один, так и создавать беседки на 3 и более участников.  

- Создание диалога   

Началом персонального (один на один) диалога является отправка первого сообщения другому пользователю, началом коллективного (беседка) – приглашение нескольких пользователей в беседку или добавление еще одного участника в персональный диалог (кнопка "пригласить собеседников").  

Здесь за пример можно взять любую существующую социальную сеть, например, ВКонтакте. Если беседка была создана посредством приглашения третьего участника к персональному диалогу, то персональный диалог не подвергается изменениям, но пользователи переходят в новый диалог, только что созданный. Инициатор диалога получает  права администрировать беседку (изгонять участников и приглашать новых).  

При создании коллективного диалога создатель должен указать название беседки, которое будет отображаться на странице со списком диалогов вместо имени собеседника.  

- Обмен сообщениями  

Отсылка и получение сообщений в диалоге происходит асинхронно (без перезагрузки страницы). Сообщения, еще не прочитанные получателем, должны выделяться внешне (все равно как – жирный шрифт, другой цвет и так далее – главное сама возможность).  

- Права участников  

Участник диалога может покинуть его, после чего ему не будут видны новые сообщения в диалоге, отправленные уже после его выхода из беседки. Так же создатель диалога не может снова пригласить его в тот же самый диалог – пользователь, самостоятельно покинувший беседку, может вернуться только самостоятельно. Если пользователь был изгнан из диалога его создателем, то он не может вернуться сам, но может быть снова приглашен создателем. Если диалог покинет создатель, то права создателя переходят к первому приглашенному им в диалог пользователю.  

В прикрепленном файле описана предполагаемая структура БД и дан ряд пояснений.  

Финальная структура БД обсуждается с исполнителем.  

Предлагая цену, обоснуйте ее - скорее всего, мы договоримся.  

Конечно, после выполнения задачи данная разработка не может быть использована исполнителем где-либо еще или выложена им в общий доступ.

7 лет назад
fatred86
37 летРоссия
7 лет в сервисе
Был
7 лет назад