<?php

/**
 * UserChangePassword class.
 * UserChangePassword is the data structure for keeping
 * user change password form data. It is used by the 'changepassword' action of 'UserController'.
 */
class UserChangePassword extends CFormModel {

    public $oldPassword;
    public $FUN_SENHA;
    public $verifyPassword;

    public function rules() {
        $senha = (isset($_POST['UserChangePassword']['FUN_SENHA'])) ? $_POST['UserChangePassword']['FUN_SENHA'] : '';
        return array(
            array('FUN_SENHA, verifyPassword, oldPassword', 'required'),
            array('FUN_SENHA, verifyPassword', 'length', 'max' => 20, 'min' => 6, 'message' => 'A senha deve possuir no mínimo 4 caracteres!'),
            array('FUN_SENHA', 'ext.SPasswordValidator.SPasswordValidator'),
            array('FUN_SENHA', 'compare', 'compareAttribute' => 'verifyPassword', 'message' => 'A confirmação da nova senha está incorreta!'),
            array('FUN_SENHA', 'VerificaSenha', 'FUN_SENHA' => $senha),
        );
    }

    public function VerificaSenha($attribute, $params) {
        $Senhas = Senhas::model()->findAll("PWD_IDFUNCIONARIO = '".User::getId()."' and PWD_DATA >= '".date('Y-m-d', strtotime("-90 days"))."' and PWD_SENHA = '".md5($_POST['UserChangePassword']['FUN_SENHA'])."'");
        if (count($Senhas) != 0) {
            $this->addError($attribute, 'Você não pode utilizar uma senha já utilizada nos últimos 3 meses.');
        }
    }

    /**
     * Declares attribute labels.
     */
    public function attributeLabels() {
        return array(
            'oldPassword' => 'Senha atual',
            'FUN_SENHA' => 'Nova senha',
            'verifyPassword' => 'Repetir nova senha',
        );
    }
}