BxDolCategoryQuery.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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)
  40. {
  41. $oDb = BxDolDb::getInstance();
  42. $sWhere = '';
  43. // TODO: in the future add 'module' field to categories object
  44. if ($bPublicOnly && ($oModule = BxDolModule::getInstance($aObject['search_object'])) && isset($oModule->_oConfig->CNF)) {
  45. $CNF = &$oModule->_oConfig->CNF;
  46. if(isset($CNF['FIELD_ALLOW_VIEW_TO'])) {
  47. bx_import('BxDolPrivacy');
  48. $a = isLogged() ? array(BX_DOL_PG_ALL, BX_DOL_PG_MEMBERS) : array(BX_DOL_PG_ALL);
  49. $sWhere .= ' AND `' . $aObject['table'] . '`.`' . $CNF['FIELD_ALLOW_VIEW_TO'] . '` IN(' . $oDb->implode_escape($a) . ') ';
  50. }
  51. if(isset($CNF['FIELD_STATUS']))
  52. $sWhere .= ' AND `' . $aObject['table'] . '`.`' . $CNF['FIELD_STATUS'] . '` = \'active\' ';
  53. if(isset($CNF['FIELD_STATUS_ADMIN']))
  54. $sWhere .= ' AND `' . $aObject['table'] . '`.`' . $CNF['FIELD_STATUS_ADMIN'] . '` = \'active\' ';
  55. }
  56. return $oDb->getOne("SELECT COUNT(*) FROM `" . $aObject['table'] . "` " . $aObject['join'] . " WHERE `" . $aObject['field'] . "` = :cat " . $aObject['where'] . $sWhere, array('cat' => $sCategoryValue));
  57. }
  58. }
  59. /** @} */