Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 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);
 }