- 001
 - 002
 - 003
 - 004
 - 005
 - 006
 - 007
 - 008
 - 009
 - 010
 - 011
 - 012
 - 013
 - 014
 - 015
 - 016
 - 017
 - 018
 - 019
 - 020
 - 021
 - 022
 - 023
 - 024
 - 025
 - 026
 - 027
 - 028
 - 029
 - 030
 - 031
 - 032
 - 033
 - 034
 - 035
 - 036
 - 037
 - 038
 - 039
 - 040
 - 041
 - 042
 - 043
 - 044
 - 045
 - 046
 - 047
 - 048
 - 049
 - 050
 - 051
 - 052
 - 053
 - 054
 - 055
 - 056
 - 057
 - 058
 - 059
 - 060
 - 061
 - 062
 - 063
 - 064
 - 065
 - 066
 - 067
 - 068
 - 069
 - 070
 - 071
 - 072
 - 073
 - 074
 - 075
 - 076
 - 077
 - 078
 - 079
 - 080
 - 081
 - 082
 - 083
 - 084
 - 085
 - 086
 - 087
 - 088
 - 089
 - 090
 - 091
 - 092
 - 093
 - 094
 - 095
 - 096
 - 097
 - 098
 - 099
 - 100
 
                        <?php
  abstract class registration{
      
      /**
      * @desc тип пользователя (soiskatel, rabotodatel, agent)
      */
      protected $type;
      
      abstract protected function set_BDToValidationUsers($login,$passwd,$lastName,$firstName,$patronymic,$phone,$sex,$year_month_day,$key);
      abstract protected function set_BDFinalRegistration();
      
      /**
      * @desc сохраняет данные в таблице БД валидатор
      */
      static public function pre_registration(){
        #ПРОВЕРКА ПЕРЕДАННЫХ ДАННЫХ#
                #НЕ СДЕЛАНО#
        $array=$_POST;
        $array['year_month_day']=$array['year'].'-'.$array['month'].'-'.$array['day'];
#СОХРАНЕНИЕ ДАННЫХ В БАЗЕ#
        if(self::set_BDToValidationUsers($array['login'],$array['passwd'],$array['lastName'],$array['firstName'],$array['patronymic'],$array['phone'],$array['sex'],$array['year_month_day'],$array['key'])){
#ОТПРАВКА СООБЩЕНИЯ НА ПОЧТУ ДЛЯ ПОДТВЕРЖДЕНИЯ# 
            if(!self::send_mailRegistration($mail)){
                return array(true);
            }else{ return array(false,'mail');}
        }else{ return array(false,'dataBase');}
      }
      
      protected function test_activation_key($key){
        $query="SELECT * FROM validation_users WHERE activation_key='".$key."'";
        $test=Mysql::prepare($query)->execute()->fetchall_assoc();
        if(count($test)>0) return $test[0];
        else return false;
      } 
      
      protected function send_mailRegistration($mail){
        $send=md5($mail.microtime()); 
        $subject='регистрация на сайте';
        $tetx2mail='регистрация на сайте my-new-job.wd<br>для подтверждения регистрации перейдите по ссылке <br><a href="http://my-new-job.wd/register/'.self::$type.'/mail/?key='.$send.'&save=y">подтвердить регистрацию</a><br><a href="http://my-new-job.wd/register/'.self::$type.'/mail/?key='.$send.'&save=n">отказаться от регистрации</a>';
        $tetx2mail=iconv('utf-8','windows-1251',$tetx2mail);
        if(@mail($mail,$subject,$tetx2mail)) return true;
        else return false;     
      }
  }
  
  
  
  
final class register_soiskatel extends registration{
  
      protected $type='soiskatel';
      
      static function registraion($key){
        #ВАЛИДАЦИЯ ПЕРЕДАННЫХ ДАННЫХ#
                #НЕ СДЕЛАНО#
                
        #СОХРАНЕНИЕ ДАННЫХ В БАЗЕ#
         if($test=self::test_activation_key($key)){
            if(self::set_BDFinalRegistration($test)){
            return array(true);
            }else return array(false,'dataBase');
         }else return array(false,'actiavation_key');
                
      }
      
      /**
      * @desc заполняем предварительную таблицу БД для регистрации соискателя
      * @see registration::set_BDToValidationUsers()   
      * @param string логин соискателя
      * @param string пароль соискателя
      * @param string имя соискателя
      * @param string фамилия соискателя
      * @param string отчество соискателя
      * @param string телефон(ы) соискателя
      * @param string пол соискателя
      * @param string дата рождения соискателя
      * @param string ключ активации 
      * @return bool занесена новая запись в БД или нет
      */
      protected function set_BDToValidationUsers($login,$passwd,$lastName,$firstName,$patronymic,$phone,$sex,$year_month_day,$key){
        $query='INSERT INTO validation_users
                        (login,
                        user_type,
                        password,
                        last_name,
                        first_name,
                        patronymic,
                        phones,
                        sex,
                        birthdate,
                        activation_key,
                        puttime) 
                VALUES 
                        ("'.$login.'",
                        "'.Qualifier::getCompetitorID().'",
                        "'.md5($passwd).'",
                        "'.$lastName.'",  
                        "'.$firstName.'",
                        "'.$patronymic.'",
                        "'.$phone.'",