2011-05-03 14:55:17 +03:00
|
|
|
|
<?php
|
2011-08-28 21:49:01 +03:00
|
|
|
|
/*-------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* LiveStreet Engine Social Networking
|
|
|
|
|
* Copyright © 2008 Mzhelskiy Maxim
|
|
|
|
|
*
|
|
|
|
|
*--------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* Official site: www.livestreet.ru
|
|
|
|
|
* Contact e-mail: rus.engine@gmail.com
|
|
|
|
|
*
|
|
|
|
|
* GNU General Public License, version 2:
|
|
|
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
|
*
|
|
|
|
|
---------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
2011-05-03 14:55:17 +03:00
|
|
|
|
/**
|
2012-04-17 20:58:32 +03:00
|
|
|
|
* Класс представляющий собой обёертку для связей MANY_TO_MANY.
|
|
|
|
|
* Позволяет оперировать коллекцией загруженных по связи элементов через имя связи
|
2012-04-18 08:37:24 +03:00
|
|
|
|
* Например
|
|
|
|
|
* <pre>
|
2012-04-19 21:04:25 +03:00
|
|
|
|
* $oTopic->Tags->add($oTag)
|
|
|
|
|
* // или
|
|
|
|
|
* $oTopic->Tags->delete($oTag->getId())
|
2012-04-18 08:37:24 +03:00
|
|
|
|
* </pre> при
|
2011-05-03 14:55:17 +03:00
|
|
|
|
* наличии настроенной MANY_TO_MANY связи 'tags'
|
2012-04-17 20:58:32 +03:00
|
|
|
|
*
|
2012-04-18 08:33:41 +03:00
|
|
|
|
* @package engine.orm
|
2012-04-17 20:58:32 +03:00
|
|
|
|
* @since 1.0
|
2011-05-03 14:55:17 +03:00
|
|
|
|
*/
|
2012-04-07 09:41:52 +03:00
|
|
|
|
class LS_ManyToManyRelation extends LsObject {
|
2012-04-17 20:58:32 +03:00
|
|
|
|
/**
|
|
|
|
|
* Список объектов связи
|
|
|
|
|
*
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
protected $_aCollection = array();
|
|
|
|
|
/**
|
|
|
|
|
* Флаг обновления списка объектов связи
|
|
|
|
|
*
|
|
|
|
|
* @var bool
|
|
|
|
|
*/
|
|
|
|
|
protected $bUpdated = false;
|
2011-05-03 14:55:17 +03:00
|
|
|
|
|
2012-04-17 20:58:32 +03:00
|
|
|
|
/**
|
|
|
|
|
* Устанавливает список объектов
|
|
|
|
|
*
|
|
|
|
|
* @param $aCollection Список объектов связи
|
|
|
|
|
*/
|
|
|
|
|
public function __construct($aCollection) {
|
|
|
|
|
$this->_aCollection = $aCollection;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Добавление объекта в список
|
|
|
|
|
*
|
|
|
|
|
* @param Entity $oEntity
|
|
|
|
|
*/
|
|
|
|
|
public function add($oEntity) {
|
|
|
|
|
$this->bUpdated = true;
|
|
|
|
|
$this->_aCollection[$oEntity->_getPrimaryKeyValue()] = $oEntity;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Удаление объекта из списка по его id или массиву id
|
|
|
|
|
*
|
|
|
|
|
* @param int|array $iId
|
|
|
|
|
*/
|
|
|
|
|
public function delete($iId) {
|
|
|
|
|
$this->bUpdated = true;
|
|
|
|
|
if (is_array($iId)) {
|
|
|
|
|
foreach ($iId as $id) {
|
|
|
|
|
if (isset($this->_aCollection[$id])) {
|
|
|
|
|
unset($this->_aCollection[$id]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} elseif (isset($this->_aCollection[$iId])) {
|
|
|
|
|
unset($this->_aCollection[$iId]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Возвращает список объектов связи
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*/
|
|
|
|
|
public function getCollection() {
|
|
|
|
|
return $this->_aCollection;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Проверка списка на обновление
|
|
|
|
|
*
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
public function isUpdated() {
|
|
|
|
|
return $this->bUpdated;
|
|
|
|
|
}
|
2011-08-28 21:49:01 +03:00
|
|
|
|
}
|