BxDolConnectionRelationQuery.php 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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 Relation objects.
  11. * @see BxDolConnection
  12. */
  13. class BxDolConnectionRelationQuery extends BxDolConnectionQuery
  14. {
  15. public function __construct($aObject)
  16. {
  17. parent::__construct($aObject);
  18. }
  19. public function addConnection ($iInitiator, $iContent, &$iMutualParam = null)
  20. {
  21. if ($this->getConnection($iInitiator, $iContent)) // connection already exists
  22. return false;
  23. $iMutual = 0;
  24. if(!$this->query("INSERT INTO `" . $this->_sTable . "` SET `initiator` = :initiator, `content` = :content, `added` = :added, `mutual` = :mutual", array(
  25. 'initiator' => $iInitiator,
  26. 'content' => $iContent,
  27. 'mutual' => $iMutual,
  28. 'added' => time()
  29. ))) return false;
  30. $iId = $this->lastId();
  31. if($iMutualParam !== null)
  32. $iMutualParam = $iMutual;
  33. $this->cleanMemory('BxDolConnectionQuery::getConnection' . $this->_sTable . $iInitiator . '_' . $iContent);
  34. return $iId;
  35. }
  36. public function removeConnection ($iInitiator, $iContent)
  37. {
  38. $sQuery = $this->prepare("DELETE FROM `" . $this->_sTable . "` WHERE `initiator` = ? AND `content` = ?", $iInitiator, $iContent);
  39. if(!$this->res($sQuery))
  40. return false;
  41. $this->cleanMemory('BxDolConnectionQuery::getConnection' . $this->_sTable . $iInitiator . '_' . $iContent);
  42. return true;
  43. }
  44. public function getCommonContentExt($iInitiator1, $iInitiator2, $isMutual, $iStart, $iLimit, $iOrder)
  45. {
  46. $sFields = "`c`.`content` AS `content`, `c`.`initiator` AS `initiator1`, `c`.`relation` AS `relation1`, `c`.`mutual` AS `mutual1`, `c2`.`initiator` AS `initiator2`, `c2`.`relation` AS `relation2`, `c2`.`mutual` AS `mutual2`";
  47. $sWhereJoin = (false !== $isMutual) ? " AND `c2`.`mutual` = :mutual" : "";
  48. $sJoin = "INNER JOIN `" . $this->_sTable . "` AS `c2` ON (`c2`.`initiator` = :initiator2 AND `c`.`content` = `c2`.`content` $sWhereJoin)";
  49. $sWhere = " AND `c`.`initiator` = :initiator1";
  50. $sQuery = $this->_getConnectionsQuery($sWhere, $sJoin, $sFields, $isMutual, $iStart, $iLimit, $iOrder);
  51. return $this->getAllWithKey($sQuery, 'content', array(
  52. 'mutual' => $isMutual,
  53. 'initiator1' => $iInitiator1,
  54. 'initiator2' => $iInitiator2
  55. ));
  56. }
  57. public function getConnectedContentExt($iInitiator, $isMutual = false, $iStart = 0, $iLimit = BX_CONNECTIONS_LIST_LIMIT, $iOrder = BX_CONNECTIONS_ORDER_NONE)
  58. {
  59. $sWhere = " AND `c`.`initiator` = :initiator";
  60. $sQuery = $this->_getConnectionsQuery($sWhere, '', '*', $isMutual, $iStart, $iLimit, $iOrder);
  61. return $this->getAllWithKey($sQuery, 'content', array(
  62. 'initiator' => $iInitiator
  63. ));
  64. }
  65. public function getConnectedInitiatorsExt($iContent, $isMutual = false, $iStart = 0, $iLimit = BX_CONNECTIONS_LIST_LIMIT, $iOrder = BX_CONNECTIONS_ORDER_NONE)
  66. {
  67. $sWhere = " AND `c`.`content` = :content";
  68. $sQuery = $this->_getConnectionsQuery($sWhere, '', '*', $isMutual, $iStart, $iLimit, $iOrder);
  69. return $this->getAllWithKey($sQuery, 'initiator', array(
  70. 'content' => $iContent
  71. ));
  72. }
  73. }
  74. /** @} */