Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Call to a member function get() on null
- <?php
- namespace appmodels;
- use dektriumusermodelsUser as BaseUser;
- class User extends BaseUser
- {
- public function getBalance()
- {
- return $this->hasOne(UserBalance::className(), ['user_id' => 'id']);
- }
- <?php
- namespace appmodels;
- use dektriumusermodelsRegistrationForm as BaseRegistrationForm;
- class RegistrationForm extends BaseRegistrationForm
- {
- public function signup()
- {
- Yii::$app->db->transaction(function() {
- (new UserBalance([
- 'user_id' => $this->id,
- 'silver_in' => 100
- ]))->save();
- // increase setting
- $value = SettingHelper::get('user.count') + rand(1, 10);
- SettingHelper::set('user.count', $value);
- });
- }
- }
- 'modules' => [
- 'rbac' => 'dektriumrbacRbacWebModule',
- 'user' => [
- 'class' => dektriumuserModule::className(),
- // 'identityClass' => 'dektriumusermodelsUser',
- // 'identityClass' => 'dektriumusermodelsRegistrationForm',
- 'mailer' => [
- //'sender' => 'no-reply@myhost.com', // or ['no-reply@myhost.com' => 'Sender name']
- 'sender' => 'swallowsveta97@yandex.ru',
- 'welcomeSubject' => 'Welcome subject',
- 'confirmationSubject' => 'Confirmation subject',
- 'reconfirmationSubject' => 'Email change subject',
- 'recoverySubject' => 'Recovery subject',
- ],
- 'controllerMap' => [
- 'registration' => [
- 'class' => dektriumusercontrollersRegistrationController::className(),
- 'on ' . dektriumusercontrollersRegistrationController::EVENT_AFTER_REGISTER => function ($e) {
- Yii::$app->response->redirect(array('/user/security/login'))->send();
- Yii::$app->end();
- }
- ],
- ],
- 'modelMap' => [
- 'User' => 'appmodelsUser',
- 'RegistrationForm' => 'appmodelsRegistrationForm',
- ],
- 'enableUnconfirmedLogin' => true,
- 'enableFlashMessages' => true,
- 'enableRegistration' => true,
- 'enableGeneratingPassword' => true,
- 'enableUnconfirmedLogin' => false,
- 'enablePasswordRecovery' => true,
- 'enableAccountDelete' => false,
- 'emailChangeStrategy' => 'dektriumuserModule::STRATEGY_DEFAULT',
- 'recoverWithin' => 21600,
- 'confirmWithin' => 21600,
- 'cost' => 12,
- 'admins' => ['admin']
- ],
- ],
- <?php
- namespace appmodels;
- use apphelpersBalanceHelper;
- use yiibaseInvalidParamException;
- use yiidbActiveRecord;
- class UserBalance extends ActiveRecord
- {
- const CURRENCY_SILVER_IN = 'silver_in';
- const CURRENCY_SILVER_OUT = 'silver_out';
- const CURRENCY_GOLD_IN = 'gold_in';
- const CURRENCY_GOLD_OUT = 'gold_out';
- const CURRENCY_FACTORY_ONE = 'factory_one';
- const CURRENCY_FACTORY_TWO = 'factory_two';
- public static function tableName()
- {
- return '{{%user_balance}}';
- }
- public function rules()
- {
- return [
- ['user_id', 'integer'],
- ];
- }
- public function attributeLabels()
- {
- return [
- 'silver_in' => Yii::t('app', 'Серебро'),
- 'silver_out' => Yii::t('app', 'Серебро на вывод'),
- 'gold_in' => Yii::t('app', 'Золото'),
- 'gold_out' => Yii::t('app', 'Золото на вывод'),
- 'factory_one' => Yii::t('app', 'Фабрика 1'),
- 'factory_two' => Yii::t('app', 'Фабрика 2'),
- ];
- }
- public function getUser()
- {
- return $this->hasOne(User::className(), ['id' => 'user_id']);
- }
- public function get($currency)
- {
- $currentSum = Yii::$app->db->createCommand('
- SELECT `'.$currency.'`
- FROM {{%user_balance}}
- WHERE `user_id` = :user_id', [
- ':user_id' => $this->user_id
- ])->queryScalar();
- return BalanceHelper::toDigits($currency, $currentSum);
- }
- public function has($currency, $sum)
- {
- $currentSum = Yii::$app->db->createCommand('
- SELECT `'.$currency.'`
- FROM {{%user_balance}}
- WHERE `user_id` = :user_id', [
- ':user_id' => $this->user_id
- ])->queryScalar();
- return $currentSum >= BalanceHelper::toCoins($currency, $sum);
- }
- public function decrease($currency, $sum)
- {
- if ($this->has($currency, $sum)) {
- $sum = BalanceHelper::toCoins($currency, $sum);
- $rows = Yii::$app->db->createCommand('
- UPDATE {{%user_balance}}
- SET `' . $currency . '` = `' . $currency . '` - :sum
- WHERE `' . $currency . '` >= :sum
- AND `user_id` = :user_id', [
- ':sum' => $sum,
- ':user_id' => $this->user_id
- ])->execute();
- return $rows > 0;
- }
- return false;
- }
- public function increase($currency, $sum)
- {
- $sum = BalanceHelper::toCoins($currency, $sum);
- $rows = Yii::$app->db->createCommand('
- UPDATE {{%user_balance}}
- SET `' . $currency . '` = `' . $currency . '` + :sum
- WHERE `user_id` = :user_id', [
- ':sum' => $sum,
- ':user_id' => $this->user_id
- ])->execute();
- return $rows > 0;
- }
- public static function getCurrencyArray()
- {
- return [
- self::CURRENCY_SILVER_IN => Yii::t('app', 'Серебро'),
- self::CURRENCY_SILVER_OUT => Yii::t('app', 'Серебро на вывод'),
- self::CURRENCY_GOLD_IN => Yii::t('app', 'Золото'),
- self::CURRENCY_GOLD_OUT => Yii::t('app', 'Золото на вывод'),
- self::CURRENCY_FACTORY_ONE => Yii::t('app', 'Фабрика 1'),
- self::CURRENCY_FACTORY_TWO => Yii::t('app', 'Фабрика 2'),
- ];
- }
- public function getCurrencyString()
- {
- $currencies = self::getCurrencyArray();
- return isset($currencies[$this->currency]) ? $currencies[$this->currency] : '';
- }
- }
- <?php if (Yii::$app->user->isGuest) { ?>
- <?php } else { ?>
- <div class="main-p">
- <p><a href="#"><i class="fa fa-home" aria-hidden="true"></i>Серебро</a>
- <?= Yii::$app->user->identity->balance->get(UserBalance::CURRENCY_SILVER_IN) ?>
- <p><a href="#"><i class="fa fa-home" aria-hidden="true"></i>Серебро на вывод</a></li>
- <?= Yii::$app->user->identity->balance->get(UserBalance::CURRENCY_SILVER_OUT) ?>
- <p><a href="#"><i class="fa fa-home" aria-hidden="true"></i>Золото</a></li>
- <?= Yii::$app->user->identity->balance->get(UserBalance::CURRENCY_GOLD_IN) ?>
- <p><a href="#"><i class="fa fa-home" aria-hidden="true"></i>Золото на вывод</a></li>
- <?= Yii::$app->user->identity->balance->get(UserBalance::CURRENCY_GOLD_OUT) ?>
- <p><a href="#"><i class="fa fa-home" aria-hidden="true"></i>Фабрика 1</a></li>
- <?= Yii::$app->user->identity->balance->get(UserBalance::CURRENCY_FACTORY_ONE) ?>
- <p><a href="#"><i class="fa fa-home" aria-hidden="true"></i>Фабрика 2</a></li>
- <?= Yii::$app->user->identity->balance->get(UserBalance::CURRENCY_FACTORY_TWO) ?>
- </div>
- <?php } ?>
Add Comment
Please, Sign In to add comment