CronTabs.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. namespace ThurData\Servers\KerioEmail\Core\Models;
  3. /**
  4. * Description of Crontabs
  5. *
  6. * @author inbs
  7. */
  8. class CronTabs extends ExtendedEloquentModel
  9. {
  10. const DEFAULT_CRON_MANAGER_NAME = 'DefaultCronManagerName';
  11. /**
  12. * Table name
  13. *
  14. * @var string
  15. */
  16. protected $table = 'CronTabs';
  17. protected $primaryKey = 'name';
  18. /**
  19. * Eloquent guarded parameters
  20. * @var array
  21. */
  22. protected $guarded = ['name'];
  23. /**
  24. * Eloquent fillable parameters
  25. * @var array
  26. */
  27. protected $fillable = ['name', 'status', 'created', 'params', 'errors'];
  28. protected $dates = ['created'];
  29. /**
  30. * Indicates if the model should soft delete.
  31. *
  32. * @var bool
  33. */
  34. protected $softDelete = false;
  35. /**
  36. * Indicates if the model should be timestamped.
  37. *
  38. * @var bool
  39. */
  40. public $timestamps = false;
  41. public function getErrorsAttribute($value)
  42. {
  43. return json_decode($value);
  44. }
  45. public function setErrorsAttribute($value)
  46. {
  47. $this->attributes['errors'] = json_encode($value);
  48. return $this;
  49. }
  50. public function getParamsAttribute($value)
  51. {
  52. return json_decode($value);
  53. }
  54. public function setParamsAttribute($value)
  55. {
  56. $this->attributes['params'] = json_encode($value);
  57. return $this;
  58. }
  59. public function scopeStatusError($query)
  60. {
  61. return $query->where("status", "LIKE", 'error');
  62. }
  63. public function scopeStatusReboot($query)
  64. {
  65. return $query->where("status", "LIKE", 'reboot');
  66. }
  67. public function scopeStatusStart($query)
  68. {
  69. return $query->where("status", "LIKE", 'start');
  70. }
  71. public function scopeStatusStop($query)
  72. {
  73. return $query->where("status", "LIKE", 'stop');
  74. }
  75. public function scopeIfName($query, $name = '')
  76. {
  77. return $query->where("name", "LIKE", $name);
  78. }
  79. public function scopeIfDefaultCronManager($query)
  80. {
  81. return $query->where("name", "LIKE", CronTabs::DEFAULT_CRON_MANAGER_NAME);
  82. }
  83. public function scopeUpdateStatus($query, $status = 'stop', $params = [])
  84. {
  85. return $query->update(['status' => $status, 'params' => json_encode($params)]);
  86. }
  87. public function scopeAddError($query, $errorMessage = '')
  88. {
  89. $errorList = $this->errors;
  90. $errorList[] = $errorMessage;
  91. return $query->update(['errors' => json_encode($errorList), 'status' => 'error']);
  92. }
  93. public function scopeCleanErrors($query)
  94. {
  95. $errorList = [];
  96. return $query->update(['errors' => json_encode($errorList)]);
  97. }
  98. }