瀏覽代碼

Indentation + commentaires modèle User / UserEtablissement

refactoring
Guillaume Bourgeois 6 年之前
父節點
當前提交
e1821d7565
共有 3 個文件被更改,包括 162 次插入111 次删除
  1. +0
    -39
      backend/views/paiement/index.php
  2. +154
    -68
      common/models/User.php
  3. +8
    -4
      common/models/UserEtablissement.php

+ 0
- 39
backend/views/paiement/index.php 查看文件

@@ -46,45 +46,6 @@ use common\models\Etablissement ;

$this->title = 'Paiement';

$etat_paiement = Yii::$app->user->identity->etatPaiementEtablissement() ;

?>

<h1>Paiement</h1>

<div class="alert alert-warning">
<?php if($etat_paiement == Etablissement::PAIEMENT_ESSAI_TERMINE): ?>
Votre période d'essai gratuite est terminée.<br />
Vous pouvez continuer à bénéficier de ce service en vous abonnant à <strong>La boîte à pain</strong>
pour <strong>30 € / mois</strong>
<?php elseif($etat_paiement == Etablissement::PAIEMENT_RETARD): ?>
Nous constatons un retard de paiement sur votre compte.<br />
Nous vous invitons à vérifier que tout est en ordre au niveau de votre compte Paypal ou à vous
abonner à nouveau en utilisant le bouton ci-dessous (<strong>30 € / mois</strong>).
<?php elseif($etat_paiement == Etablissement::PAIEMENT_ESSAI): ?>
Si vous souhaitez profiter de ce service au-delà de la période d'essai gratuite,
abonnez-vous à <strong>La boîte à pain</strong> pour <strong>30 € / mois</strong>.
<?php endif; ?>
</div>
<div class="alert alert-info">Si vous rencontrez des difficultés, n'hésitez pas à nous contacter.</div>


<!--<h2>Prod</h2>
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="K96K2WLBSBDSA">
<input name="custom" value="<?php echo Yii::$app->user->identity->id; ?>" type="hidden" />
<input type="image" src="https://www.paypalobjects.com/fr_FR/FR/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal, le réflexe sécurité pour payer en ligne">
<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
</form>-->

<!--<h2>Test</h2>-->
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="USASPWAC39S4N">
<input name="custom" value="<?php echo Yii::$app->user->identity->id; ?>" type="hidden" />
<input type="image" src="https://www.sandbox.paypal.com/fr_FR/FR/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal, le réflexe sécurité pour payer en ligne">
<img alt="" border="0" src="https://www.sandbox.paypal.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
</form>


+ 154
- 68
common/models/User.php 查看文件

@@ -39,6 +39,7 @@ termes.
namespace common\models;

use yii\web\IdentityInterface;
use yii\db\Query ;

/**
* User model
@@ -55,7 +56,8 @@ use yii\web\IdentityInterface;
* @property string $password write-only password
* @property boolean $confiance
*/
class User extends ActiveRecord implements IdentityInterface {
class User extends ActiveRecord implements IdentityInterface
{

const STATUS_DELETED = 0;
const STATUS_ACTIVE = 10;
@@ -71,14 +73,16 @@ class User extends ActiveRecord implements IdentityInterface {
/**
* @inheritdoc
*/
public static function tableName() {
public static function tableName()
{
return '{{%user}}';
}

/**
* @inheritdoc
*/
public function behaviors() {
public function behaviors()
{
return [
TimestampBehavior::className(),
];
@@ -87,7 +91,8 @@ class User extends ActiveRecord implements IdentityInterface {
/**
* @inheritdoc
*/
public function rules() {
public function rules()
{
return [
['confiance', 'default', 'value' => 1],
[['no_mail', 'mail_prod_lundi', 'mail_prod_mardi', 'mail_prod_mercredi', 'mail_prod_jeudi', 'mail_prod_vendredi', 'mail_prod_samedi', 'mail_prod_dimanche'], 'boolean'],
@@ -104,7 +109,14 @@ class User extends ActiveRecord implements IdentityInterface {
];
}

public function verifyPasswordOld($attribute, $params) {
/**
* Vérifie le mot de passe envoyé par l'utilisateur.
*
* @param string $attribute
* @param array $params
*/
public function verifyPasswordOld($attribute, $params)
{
if (strlen($this->password_old)) {
if (!$this->validatePassword($this->password_old)) {
$this->addError($attribute, 'Mot de passe invalide.');
@@ -124,40 +136,68 @@ class User extends ActiveRecord implements IdentityInterface {
}
}

public function verifyPasswordNew($attribute, $params) {
/**
* Vérifie le mot de passe de l'utilisateur.
*
* @param string $attribute
* @param array $params
*/
public function verifyPasswordNew($attribute, $params)
{
if (strlen($this->password_new) < 6) {
$this->addError($attribute, 'Votre mot de passe doit comporter au moins 6 caractères.');
}
}

public function verifyPasswordNewConfirm($attribute, $params) {
/**
* Vérifie la confirmation de mot de passe de l'utilisateur.
*
* @param string $attribute
* @param array $params
*/
public function verifyPasswordNewConfirm($attribute, $params)
{
if ($this->password_new != $this->password_new_confirm) {
$this->addError($attribute, 'Les deux mots de passe doivent être identiques');
}
}

public function verifyEmail($attribute, $params) {
/**
* Vérifie l'email de l'utilisateur.
*
* @param string $attribute
* @param array $params
*/
public function verifyEmail($attribute, $params)
{
$user = User::find()->where("email LIKE :email AND id != :id")->params(array(':email' => '%' . $this->email . '%', ':id' => $this->id))->one();

if ($user)
$this->addError($attribute, 'Cette adresse email est déjà utilisée par un autre utilisateur ');
}

public function getUserEtablissement() {
/*
* Relations
*/
public function getUserEtablissement()
{
return $this->hasMany(UserEtablissement::className(), ['id_user' => 'id']);
}

/**
* @inheritdoc
*/
public static function findIdentity($id) {
public static function findIdentity($id)
{
return static::findOne(['id' => $id/* , 'status' => self::STATUS_ACTIVE */]);
}

/**
* @inheritdoc
*/
public static function findIdentityByAccessToken($token, $type = null) {
public static function findIdentityByAccessToken($token, $type = null)
{
throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.');
}

@@ -167,12 +207,20 @@ class User extends ActiveRecord implements IdentityInterface {
* @param string $username
* @return static|null
*/
public static function findByUsername($username) {
return static::findOne(['username' => $username/* , 'status' => self::STATUS_ACTIVE */]);
public static function findByUsername($username)
{
return static::findOne(['username' => $username]);
}

public static function findByEmail($email) {
return static::findOne(['email' => $email /* , 'status' => self::STATUS_ACTIVE */]);
/**
* Recherche un utilisateur via son adresse email.
*
* @param string $email
* @return User
*/
public static function findByEmail($email)
{
return static::findOne(['email' => $email]);
}

/**
@@ -181,7 +229,8 @@ class User extends ActiveRecord implements IdentityInterface {
* @param string $token password reset token
* @return static|null
*/
public static function findByPasswordResetToken($token) {
public static function findByPasswordResetToken($token)
{
if (!static::isPasswordResetTokenValid($token)) {
return null;
}
@@ -191,11 +240,19 @@ class User extends ActiveRecord implements IdentityInterface {
]);
}

public static function findBy($params = []) {
/**
* Recherche des utilisateurs suivant les paramètres : id_etablissement,
* inactifs, id_point_vente, nom, prenom, email, telephone.
*
* @param array $params
* @return Query
*/
public static function findBy($params = [])
{
if (!isset($params['id_etablissement']))
$params['id_etablissement'] = Yii::$app->user->identity->id_etablissement;
$query = (new \yii\db\Query())
$query = (new Query())
->select(['user.id AS user_id', 'user.prenom', 'user.nom', 'user.telephone', 'user.email', 'user.created_at', 'user.date_derniere_connexion', 'user_etablissement.*'])
->from('user');
@@ -224,15 +281,22 @@ class User extends ActiveRecord implements IdentityInterface {
->groupBy('user.id');
}
if (isset($params['nom']))
if (isset($params['nom'])) {
$query->andFilterWhere(['like', 'nom', $params['nom']]);
if (isset($params['prenom']))
}
if (isset($params['prenom'])) {
$query->andFilterWhere(['like', 'prenom', $params['prenom']]);
if (isset($params['email']))
}
if (isset($params['email'])) {
$query->andFilterWhere(['like', 'email', $params['email']]);
if (isset($params['telephone']))
}
if (isset($params['telephone'])) {
$query->andFilterWhere(['like', 'telephone', $params['telephone']]);

}
return $query;
}

@@ -242,7 +306,8 @@ class User extends ActiveRecord implements IdentityInterface {
* @param string $token password reset token
* @return boolean
*/
public static function isPasswordResetTokenValid($token) {
public static function isPasswordResetTokenValid($token)
{
if (empty($token)) {
return false;
}
@@ -255,21 +320,24 @@ class User extends ActiveRecord implements IdentityInterface {
/**
* @inheritdoc
*/
public function getId() {
public function getId()
{
return $this->getPrimaryKey();
}

/**
* @inheritdoc
*/
public function getAuthKey() {
public function getAuthKey()
{
return $this->auth_key;
}

/**
* @inheritdoc
*/
public function validateAuthKey($authKey) {
public function validateAuthKey($authKey)
{
return $this->getAuthKey() === $authKey;
}

@@ -279,7 +347,8 @@ class User extends ActiveRecord implements IdentityInterface {
* @param string $password password to validate
* @return boolean if password provided is valid for current user
*/
public function validatePassword($password) {
public function validatePassword($password)
{
return Yii::$app->security->validatePassword($password, $this->password_hash);
}

@@ -288,32 +357,37 @@ class User extends ActiveRecord implements IdentityInterface {
*
* @param string $password
*/
public function setPassword($password) {
public function setPassword($password)
{
$this->password_hash = Yii::$app->security->generatePasswordHash($password);
}

/**
* Generates "remember me" authentication key
*/
public function generateAuthKey() {
public function generateAuthKey()
{
$this->auth_key = Yii::$app->security->generateRandomString();
}

/**
* Generates new password reset token
*/
public function generatePasswordResetToken() {
public function generatePasswordResetToken()
{
$this->password_reset_token = Yii::$app->security->generateRandomString() . '_' . time();
}

/**
* Removes password reset token
*/
public function removePasswordResetToken() {
public function removePasswordResetToken()
{
$this->password_reset_token = null;
}

public function attributeLabels() {
public function attributeLabels()
{
return [
'id' => 'ID',
'username' => 'Identifiant',
@@ -335,16 +409,34 @@ class User extends ActiveRecord implements IdentityInterface {
];
}

public function isBoulanger() {
/**
* Retourne si l'utilisateur est un boulanger ou non.
*
* @return boolean
*/
public function isBoulanger()
{
return ($this->status == User::STATUS_ADMIN || $this->status == User::STATUS_BOULANGER) && $this->id_etablissement;
}

public function getNomMagasin() {
/**
* Retourne le nom du producteur.
*
* @return string
*/
public function getNomMagasin()
{
$etablissement = Etablissement::findOne($this->id_etablissement);
return $etablissement->nom;
}

public function getEtablissementsFavoris() {
/**
* Retourne les établissements liés à l'utilisateur.
*
* @return array
*/
public function getEtablissementsFavoris()
{
$etabs = (new \yii\db\Query())
->select('*')
->from(['user_etablissement', 'etablissement'])
@@ -356,37 +448,20 @@ class User extends ActiveRecord implements IdentityInterface {
return $etabs;
}

public function etatPaiementEtablissement() {
$etablissement = Etablissement::findOne($this->id_etablissement);

if ($etablissement) {
return $etablissement->etatPaiement();
}
}

public function periodeEssai() {
$etablissement = Etablissement::findOne($this->id_etablissement);

if ($etablissement) {
$date_limite = strtotime($etablissement->date_creation) + 30 * 24 * 60 * 60;
$date = time();

if ($date < $date_limite) {
$date = $date_limite - $date;
return (int) ($date / (24 * 60 * 60));
} else {
return 0;
}
}
}

public function getCredit($id_etablissement) {
/**
* Retourne le crédit de l'utilisateur pour un producteur donné.
*
* @param integer $id_etablissement
* @return float
*/
public function getCredit($id_etablissement)
{
$user_etablissement = UserEtablissement::find()
->where([
'id_user' => $this->id,
'id_etablissement' => $id_etablissement
])
->one();
->where([
'id_user' => $this->id,
'id_etablissement' => $id_etablissement
])
->one();

if ($user_etablissement) {
return $user_etablissement->credit;
@@ -395,12 +470,23 @@ class User extends ActiveRecord implements IdentityInterface {
return 0;
}

public function updateDerniereConnexion() {
/**
* Met à jour la date de dernière connexion de l'utilisateur.
*/
public function updateDerniereConnexion()
{
$this->date_derniere_connexion = date('Y-m-d H:i:s');
$this->save();
}
public function sendMailWelcome($password) {
/**
* Envoie un email de bienvenue à l'utilisateur lors de son inscription
* via le backend du site.
*
* @param string $password
*/
public function sendMailWelcome($password)
{
if (strlen($this->email)) {
$etablissement = Etablissement::findOne(Yii::$app->user->identity->id_etablissement);
Yii::$app->mailer->compose();

+ 8
- 4
common/models/UserEtablissement.php 查看文件

@@ -48,19 +48,22 @@ use Yii;
* @property boolean $actif
* @property boolean $favoris
*/
class UserEtablissement extends \yii\db\ActiveRecord {
class UserEtablissement extends \yii\db\ActiveRecord
{

/**
* @inheritdoc
*/
public static function tableName() {
public static function tableName()
{
return 'user_etablissement';
}

/**
* @inheritdoc
*/
public function rules() {
public function rules()
{
return [
[['id_user', 'id_etablissement'], 'required'],
[['id_user', 'id_etablissement'], 'integer'],
@@ -72,7 +75,8 @@ class UserEtablissement extends \yii\db\ActiveRecord {
/**
* @inheritdoc
*/
public function attributeLabels() {
public function attributeLabels()
{
return [
'id_user' => 'Id User',
'id_etablissement' => 'Id Etablissement',

Loading…
取消
儲存