/** * Override getOne to get the appropriate Principal class. * * @param $alias * @param null $criteria * @param bool $cacheFlag * @return null|xPDOObject */ public function &getOne($alias, $criteria = null, $cacheFlag = true) { $object = null; if ($alias === 'Principal') { if ($fkdef = $this->getFKDefinition($alias)) { $k = $fkdef['local']; $fk = $fkdef['foreign']; if (isset($this->_relatedObjects[$alias])) { if (is_object($this->_relatedObjects[$alias])) { $object =& $this->_relatedObjects[$alias]; return $object; } } if ($criteria === null) { $criteria = array($fk => $this->get($k)); } $fkdef['class'] = $this->get('principal_class'); if ($object = $this->xpdo->getObject($fkdef['class'], $criteria, $cacheFlag)) { $this->_relatedObjects[$alias] = $object; } } } else { $object = parent::getOne($alias, $criteria, $cacheFlag); } return $object; }
public function getOne($alias, $criteria = null) { if (($alias === 'Recipient' || $alias === 'Sender') && $criteria === null) { if ($fkMeta = $this->getFKDefinition($alias)) { if ($userid = $this->get($fkMeta['local'])) { if ($userid < 0) { $class = 'modWebUser'; $userid = abs($userid); } elseif ($userid > 0) { $class = 'modManagerUser'; } $userTable = $this->xpdo->getTableName($class); $sql = "SELECT * FROM {$userTable} WHERE `id` = :user_id"; $bindings = array(':user_id' => array('value' => $userid, 'type' => PDO::PARAM_INT)); $criteria = new xPDOCriteria($this->xpdo, $sql, $bindings, true); } } } return parent::getOne($alias, $criteria); }