BxDolBackgroundJobsQuery.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) UNA, Inc - https://una.io
  4. * MIT License - https://opensource.org/licenses/MIT
  5. *
  6. * @defgroup UnaCore UNA Core
  7. * @{
  8. */
  9. /**
  10. * @see BxDolBackgroundJobs
  11. */
  12. class BxDolBackgroundJobsQuery extends BxDolDb
  13. {
  14. public function __construct()
  15. {
  16. parent::__construct();
  17. }
  18. public function getJobs($aParams = [])
  19. {
  20. $aMethod = ['name' => 'getAll', 'params' => [0 => 'query']];
  21. $sSelectClause = "*";
  22. $sJoinClause = $sWhereClause = $sGroupClause = $sOrderClause = $sLimitClause = "";
  23. switch($aParams['sample']) {
  24. case 'name':
  25. $aMethod['name'] = 'getRow';
  26. $aMethod['params'][1] = [
  27. 'name' => $aParams['name']
  28. ];
  29. $sWhereClause = " AND `name`=:name";
  30. break;
  31. case 'process':
  32. $sOrderClause = "`added` ASC";
  33. if(isset($aParams['with_priority']) && $aParams['with_priority'] === true)
  34. $sOrderClause = "`priority` DESC, " . $sOrderClause;
  35. break;
  36. }
  37. $sOrderClause = !empty($sOrderClause) ? "ORDER BY " . $sOrderClause : $sOrderClause;
  38. $sLimitClause = !empty($sLimitClause) ? "LIMIT " . $sLimitClause : $sLimitClause;
  39. $aMethod['params'][0] = "SELECT
  40. " . $sSelectClause . "
  41. FROM `sys_background_jobs` " . $sJoinClause . "
  42. WHERE 1" . $sWhereClause . " " . $sGroupClause . " " . $sOrderClause . " " . $sLimitClause;
  43. return call_user_func_array([$this, $aMethod['name']], $aMethod['params']);
  44. }
  45. public function addJob($sName, $sServiceCall, $iPriority = 0)
  46. {
  47. return $this->query("INSERT INTO `sys_background_jobs` SET `name` = :name, `added`=UNIX_TIMESTAMP(), `priority` = :priority, `service_call`=:service_call ON DUPLICATE KEY UPDATE `added`=UNIX_TIMESTAMP(), `priority` = :priority, `service_call`=:service_call", [
  48. 'name' => $sName,
  49. 'priority' => $iPriority,
  50. 'service_call' => $sServiceCall
  51. ]) !== false;
  52. }
  53. public function deleteJob($sName)
  54. {
  55. return $this->query("DELETE FROM `sys_background_jobs` WHERE `name`=:name", [
  56. 'name' => $sName
  57. ]) !== false;
  58. }
  59. }
  60. /** @} */