PageRenderTime 36ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/sitemap/models/Sitemap.php

https://bitbucket.org/madarsz/example
PHP | 165 lines | 146 code | 10 blank | 9 comment | 3 complexity | dbfea6cfed51439e198bae27dbbe1dc9 MD5 | raw file
  1. <?php
  2. namespace common\modules\sitemap\models;
  3. use common\modules\sitemap\components\AdviceGenerate;
  4. use common\modules\sitemap\components\BranchGenerate;
  5. use common\modules\sitemap\components\CategoryGenerate;
  6. use common\modules\sitemap\components\CinemaBasicGenerate;
  7. use common\modules\sitemap\components\CinemaMovieGenerate;
  8. use common\modules\sitemap\components\CompanyGenerate;
  9. use common\modules\sitemap\components\CouponGenerate;
  10. use common\modules\sitemap\components\CurrencyRatesGenerate;
  11. use common\modules\sitemap\components\EntertainmentGenerate;
  12. use common\modules\sitemap\components\EventGenerate;
  13. use common\modules\sitemap\components\LursoftCompanyGenerate;
  14. use common\modules\sitemap\components\NameDayGenerate;
  15. use common\modules\sitemap\components\TransportCityGenerate;
  16. use common\modules\sitemap\components\TransportIntercityGenerate;
  17. use common\modules\sitemap\components\TransportStaticGenerate;
  18. use common\modules\sitemap\components\VacancyCompanyGenerate;
  19. use common\modules\sitemap\components\WeatherCityGenerate;
  20. use mgcode\commandLogger\LoggingTrait;
  21. use mgcode\helpers\DbHelper;
  22. use mgcode\helpers\TimeHelper;
  23. use yii\behaviors\TimestampBehavior;
  24. use yii\db\Expression;
  25. /**
  26. * This is the model class for table "sitemap".
  27. */
  28. class Sitemap extends AbstractSitemap
  29. {
  30. use LoggingTrait;
  31. const TYPE_TRANSPORT_CITY = 1;
  32. const TYPE_TRANSPORT_INTERCITY = 2;
  33. const TYPE_TRANSPORT_STATIC = 3;
  34. const TYPE_WEATHER_CITY = 4;
  35. const TYPE_COUPON = 5;
  36. const TYPE_ENTERTAINMENT = 6;
  37. const TYPE_CINEMA_MOVIE = 7;
  38. const TYPE_CINEMA_BASIC = 8;
  39. const TYPE_EVENT = 9;
  40. const TYPE_NAME_DAYS = 10;
  41. const TYPE_VACANCY_COMPANY = 11;
  42. const TYPE_CURRENCY_RATES = 12;
  43. const TYPE_ADVICE = 13;
  44. const TYPE_CATEGORIES = 14;
  45. const TYPE_LURSOFT_COMPANY = 15;
  46. const TYPE_COMPANY = 16;
  47. const TYPE_BRANCH = 17;
  48. /** @inheritdoc */
  49. public function behaviors()
  50. {
  51. return [
  52. TimestampBehavior::className() => [
  53. 'class' => TimestampBehavior::className(),
  54. 'createdAtAttribute' => 'created',
  55. 'updatedAtAttribute' => 'updated',
  56. 'value' => new Expression('NOW()'),
  57. ],
  58. ];
  59. }
  60. /**
  61. * Flags record as deleted
  62. * @inheritdoc
  63. */
  64. public function delete()
  65. {
  66. $this->is_deleted = 1;
  67. $this->deleted = new Expression('NOW()');
  68. $this->updated = new Expression('NOW()');
  69. if (!$this->save()) {
  70. DbHelper::throwSaveException($this);
  71. }
  72. return true;
  73. }
  74. /** @inheritdoc */
  75. public function scenarios()
  76. {
  77. return [
  78. static::SCENARIO_DEFAULT => ['id', 'path', 'link_count', 'type'],
  79. ];
  80. }
  81. public function getLink()
  82. {
  83. if (!$this->path) {
  84. return false;
  85. }
  86. $app = \Yii::$app;
  87. $component = $app->has('frontendUrlManager') ? $app->frontendUrlManager : $app->urlManager;
  88. $filename = substr(strrchr($this->path, "/"), 1);
  89. $params = ['/sitemap/sitemap/view', 'filename' => $filename];
  90. return $component->createAbsoluteUrl($params);
  91. }
  92. public function getLastMod()
  93. {
  94. return TimeHelper::getIso8601Date(strtotime($this->updated));
  95. }
  96. public function generate()
  97. {
  98. switch ($this->type) {
  99. case self::TYPE_TRANSPORT_CITY:
  100. $class = new TransportCityGenerate($this);
  101. break;
  102. case self::TYPE_TRANSPORT_INTERCITY:
  103. $class = new TransportIntercityGenerate($this);
  104. break;
  105. case self::TYPE_TRANSPORT_STATIC:
  106. $class = new TransportStaticGenerate($this);
  107. break;
  108. case self::TYPE_WEATHER_CITY:
  109. $class = new WeatherCityGenerate($this);
  110. break;
  111. case self::TYPE_COUPON:
  112. $class = new CouponGenerate($this);
  113. break;
  114. case self::TYPE_ENTERTAINMENT:
  115. $class = new EntertainmentGenerate($this);
  116. break;
  117. case self::TYPE_CINEMA_MOVIE:
  118. $class = new CinemaMovieGenerate($this);
  119. break;
  120. case self::TYPE_CINEMA_BASIC:
  121. $class = new CinemaBasicGenerate($this);
  122. break;
  123. case self::TYPE_EVENT:
  124. $class = new EventGenerate($this);
  125. break;
  126. case self::TYPE_NAME_DAYS:
  127. $class = new NameDayGenerate($this);
  128. break;
  129. case self::TYPE_VACANCY_COMPANY:
  130. $class = new VacancyCompanyGenerate($this);
  131. break;
  132. case self::TYPE_CURRENCY_RATES:
  133. $class = new CurrencyRatesGenerate($this);
  134. break;
  135. case self::TYPE_ADVICE:
  136. $class = new AdviceGenerate($this);
  137. break;
  138. case self::TYPE_CATEGORIES:
  139. $class = new CategoryGenerate($this);
  140. break;
  141. case self::TYPE_LURSOFT_COMPANY:
  142. $class = new LursoftCompanyGenerate($this);
  143. break;
  144. case self::TYPE_COMPANY:
  145. $class = new CompanyGenerate($this);
  146. break;
  147. case self::TYPE_BRANCH:
  148. $class = new BranchGenerate($this);
  149. break;
  150. default:
  151. throw new \Exception('Unsupported type for sitemap with id: '.$this->id);
  152. }
  153. $class->generate();
  154. }
  155. }