BxDolCategoryQuery.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. * Database queries for category objects.
  11. * @see BxDolCategory
  12. */
  13. class BxDolCategoryQuery extends BxDolDb
  14. {
  15. protected $_aObject;
  16. public function __construct($aObject)
  17. {
  18. parent::__construct();
  19. $this->_aObject = $aObject;
  20. }
  21. static public function getCategoryObject ($sObject)
  22. {
  23. $oDb = BxDolDb::getInstance();
  24. $sQuery = $oDb->prepare("SELECT * FROM `sys_objects_category` WHERE `object` = ?", $sObject);
  25. $aObject = $oDb->getRow($sQuery);
  26. if (!$aObject || !is_array($aObject))
  27. return false;
  28. return $aObject;
  29. }
  30. static public function getCategoryObjectByFormAndList ($sObjectForm, $sListName)
  31. {
  32. $oDb = BxDolDb::getInstance();
  33. $sQuery = $oDb->prepare("SELECT * FROM `sys_objects_category` WHERE `form_object` = ? AND `list_name` = ?", $sObjectForm, $sListName);
  34. $aObject = $oDb->getRow($sQuery);
  35. if (!$aObject || !is_array($aObject))
  36. return false;
  37. return $aObject;
  38. }
  39. static public function getItemsNumInCategory ($aObject, $sCategoryValue, $bPublicOnly = true, $aParams = [])
  40. {
  41. $oDb = BxDolDb::getInstance();
  42. $sWhere = '';
  43. if ($bPublicOnly && ($oModule = BxDolModule::getInstance($aObject['module'])) && isset($oModule->_oConfig->CNF)) {
  44. $CNF = &$oModule->_oConfig->CNF;
  45. if(isset($CNF['FIELD_ALLOW_VIEW_TO'])) {
  46. if (isset($aParams['context_id']) && !empty($aParams['context_id'])){
  47. $sWhere .= ' AND `' . $aObject['table'] . '`.`' . $CNF['FIELD_ALLOW_VIEW_TO'] . '` IN(' . -$aParams['context_id'] . ') ';
  48. }
  49. else{
  50. bx_import('BxDolPrivacy');
  51. $a = isLogged() ? array(BX_DOL_PG_ALL, BX_DOL_PG_MEMBERS) : array(BX_DOL_PG_ALL);
  52. $sWhere .= ' AND `' . $aObject['table'] . '`.`' . $CNF['FIELD_ALLOW_VIEW_TO'] . '` IN(' . $oDb->implode_escape($a) . ') ';
  53. }
  54. }
  55. if(isset($CNF['FIELD_STATUS']))
  56. $sWhere .= ' AND `' . $aObject['table'] . '`.`' . $CNF['FIELD_STATUS'] . '` = \'active\' ';
  57. if(isset($CNF['FIELD_STATUS_ADMIN']))
  58. $sWhere .= ' AND `' . $aObject['table'] . '`.`' . $CNF['FIELD_STATUS_ADMIN'] . '` = \'active\' ';
  59. }
  60. return $oDb->getOne("SELECT COUNT(*) FROM `" . $aObject['table'] . "` " . $aObject['join'] . " WHERE `" . $aObject['field'] . "` = :cat " . $aObject['where'] . $sWhere, array('cat' => $sCategoryValue));
  61. }
  62. }
  63. /** @} */