Guest User

Untitled

a guest
May 26th, 2018
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.29 KB | None | 0 0
  1. Call to a member function get() on null
  2.  
  3. <?php
  4.  
  5. namespace appmodels;
  6.  
  7. use dektriumusermodelsUser as BaseUser;
  8.  
  9. class User extends BaseUser
  10. {
  11. public function getBalance()
  12. {
  13. return $this->hasOne(UserBalance::className(), ['user_id' => 'id']);
  14. }
  15.  
  16. <?php
  17. namespace appmodels;
  18.  
  19. use dektriumusermodelsRegistrationForm as BaseRegistrationForm;
  20.  
  21. class RegistrationForm extends BaseRegistrationForm
  22. {
  23. public function signup()
  24. {
  25. Yii::$app->db->transaction(function() {
  26. (new UserBalance([
  27. 'user_id' => $this->id,
  28. 'silver_in' => 100
  29. ]))->save();
  30. // increase setting
  31. $value = SettingHelper::get('user.count') + rand(1, 10);
  32. SettingHelper::set('user.count', $value);
  33. });
  34. }
  35. }
  36.  
  37. 'modules' => [
  38. 'rbac' => 'dektriumrbacRbacWebModule',
  39. 'user' => [
  40. 'class' => dektriumuserModule::className(),
  41. // 'identityClass' => 'dektriumusermodelsUser',
  42. // 'identityClass' => 'dektriumusermodelsRegistrationForm',
  43. 'mailer' => [
  44. //'sender' => 'no-reply@myhost.com', // or ['no-reply@myhost.com' => 'Sender name']
  45. 'sender' => 'swallowsveta97@yandex.ru',
  46. 'welcomeSubject' => 'Welcome subject',
  47. 'confirmationSubject' => 'Confirmation subject',
  48. 'reconfirmationSubject' => 'Email change subject',
  49. 'recoverySubject' => 'Recovery subject',
  50. ],
  51. 'controllerMap' => [
  52. 'registration' => [
  53. 'class' => dektriumusercontrollersRegistrationController::className(),
  54. 'on ' . dektriumusercontrollersRegistrationController::EVENT_AFTER_REGISTER => function ($e) {
  55. Yii::$app->response->redirect(array('/user/security/login'))->send();
  56. Yii::$app->end();
  57. }
  58. ],
  59. ],
  60. 'modelMap' => [
  61. 'User' => 'appmodelsUser',
  62. 'RegistrationForm' => 'appmodelsRegistrationForm',
  63. ],
  64. 'enableUnconfirmedLogin' => true,
  65. 'enableFlashMessages' => true,
  66. 'enableRegistration' => true,
  67. 'enableGeneratingPassword' => true,
  68. 'enableUnconfirmedLogin' => false,
  69. 'enablePasswordRecovery' => true,
  70. 'enableAccountDelete' => false,
  71. 'emailChangeStrategy' => 'dektriumuserModule::STRATEGY_DEFAULT',
  72. 'recoverWithin' => 21600,
  73. 'confirmWithin' => 21600,
  74. 'cost' => 12,
  75. 'admins' => ['admin']
  76. ],
  77. ],
  78.  
  79. <?php
  80. namespace appmodels;
  81.  
  82. use apphelpersBalanceHelper;
  83. use yiibaseInvalidParamException;
  84. use yiidbActiveRecord;
  85.  
  86. class UserBalance extends ActiveRecord
  87. {
  88. const CURRENCY_SILVER_IN = 'silver_in';
  89. const CURRENCY_SILVER_OUT = 'silver_out';
  90. const CURRENCY_GOLD_IN = 'gold_in';
  91. const CURRENCY_GOLD_OUT = 'gold_out';
  92. const CURRENCY_FACTORY_ONE = 'factory_one';
  93. const CURRENCY_FACTORY_TWO = 'factory_two';
  94.  
  95. public static function tableName()
  96. {
  97. return '{{%user_balance}}';
  98. }
  99.  
  100. public function rules()
  101. {
  102. return [
  103. ['user_id', 'integer'],
  104. ];
  105. }
  106.  
  107. public function attributeLabels()
  108. {
  109. return [
  110. 'silver_in' => Yii::t('app', 'Серебро'),
  111. 'silver_out' => Yii::t('app', 'Серебро на вывод'),
  112. 'gold_in' => Yii::t('app', 'Золото'),
  113. 'gold_out' => Yii::t('app', 'Золото на вывод'),
  114. 'factory_one' => Yii::t('app', 'Фабрика 1'),
  115. 'factory_two' => Yii::t('app', 'Фабрика 2'),
  116. ];
  117. }
  118.  
  119. public function getUser()
  120. {
  121. return $this->hasOne(User::className(), ['id' => 'user_id']);
  122. }
  123.  
  124. public function get($currency)
  125. {
  126. $currentSum = Yii::$app->db->createCommand('
  127. SELECT `'.$currency.'`
  128. FROM {{%user_balance}}
  129. WHERE `user_id` = :user_id', [
  130. ':user_id' => $this->user_id
  131. ])->queryScalar();
  132. return BalanceHelper::toDigits($currency, $currentSum);
  133. }
  134.  
  135. public function has($currency, $sum)
  136. {
  137. $currentSum = Yii::$app->db->createCommand('
  138. SELECT `'.$currency.'`
  139. FROM {{%user_balance}}
  140. WHERE `user_id` = :user_id', [
  141. ':user_id' => $this->user_id
  142. ])->queryScalar();
  143.  
  144. return $currentSum >= BalanceHelper::toCoins($currency, $sum);
  145. }
  146.  
  147. public function decrease($currency, $sum)
  148. {
  149. if ($this->has($currency, $sum)) {
  150. $sum = BalanceHelper::toCoins($currency, $sum);
  151.  
  152. $rows = Yii::$app->db->createCommand('
  153. UPDATE {{%user_balance}}
  154. SET `' . $currency . '` = `' . $currency . '` - :sum
  155. WHERE `' . $currency . '` >= :sum
  156. AND `user_id` = :user_id', [
  157. ':sum' => $sum,
  158. ':user_id' => $this->user_id
  159. ])->execute();
  160.  
  161. return $rows > 0;
  162. }
  163. return false;
  164. }
  165.  
  166. public function increase($currency, $sum)
  167. {
  168. $sum = BalanceHelper::toCoins($currency, $sum);
  169.  
  170. $rows = Yii::$app->db->createCommand('
  171. UPDATE {{%user_balance}}
  172. SET `' . $currency . '` = `' . $currency . '` + :sum
  173. WHERE `user_id` = :user_id', [
  174. ':sum' => $sum,
  175. ':user_id' => $this->user_id
  176. ])->execute();
  177.  
  178. return $rows > 0;
  179. }
  180.  
  181. public static function getCurrencyArray()
  182. {
  183. return [
  184. self::CURRENCY_SILVER_IN => Yii::t('app', 'Серебро'),
  185. self::CURRENCY_SILVER_OUT => Yii::t('app', 'Серебро на вывод'),
  186. self::CURRENCY_GOLD_IN => Yii::t('app', 'Золото'),
  187. self::CURRENCY_GOLD_OUT => Yii::t('app', 'Золото на вывод'),
  188. self::CURRENCY_FACTORY_ONE => Yii::t('app', 'Фабрика 1'),
  189. self::CURRENCY_FACTORY_TWO => Yii::t('app', 'Фабрика 2'),
  190. ];
  191. }
  192.  
  193. public function getCurrencyString()
  194. {
  195. $currencies = self::getCurrencyArray();
  196. return isset($currencies[$this->currency]) ? $currencies[$this->currency] : '';
  197. }
  198.  
  199. }
  200.  
  201. <?php if (Yii::$app->user->isGuest) { ?>
  202. <?php } else { ?>
  203. <div class="main-p">
  204. <p><a href="#"><i class="fa fa-home" aria-hidden="true"></i>Серебро</a>
  205. <?= Yii::$app->user->identity->balance->get(UserBalance::CURRENCY_SILVER_IN) ?>
  206. <p><a href="#"><i class="fa fa-home" aria-hidden="true"></i>Серебро на вывод</a></li>
  207. <?= Yii::$app->user->identity->balance->get(UserBalance::CURRENCY_SILVER_OUT) ?>
  208. <p><a href="#"><i class="fa fa-home" aria-hidden="true"></i>Золото</a></li>
  209. <?= Yii::$app->user->identity->balance->get(UserBalance::CURRENCY_GOLD_IN) ?>
  210. <p><a href="#"><i class="fa fa-home" aria-hidden="true"></i>Золото на вывод</a></li>
  211. <?= Yii::$app->user->identity->balance->get(UserBalance::CURRENCY_GOLD_OUT) ?>
  212. <p><a href="#"><i class="fa fa-home" aria-hidden="true"></i>Фабрика 1</a></li>
  213. <?= Yii::$app->user->identity->balance->get(UserBalance::CURRENCY_FACTORY_ONE) ?>
  214. <p><a href="#"><i class="fa fa-home" aria-hidden="true"></i>Фабрика 2</a></li>
  215. <?= Yii::$app->user->identity->balance->get(UserBalance::CURRENCY_FACTORY_TWO) ?>
  216. </div>
  217. <?php } ?>
Add Comment
Please, Sign In to add comment