示例#1
0
 function _findFeed(&$Model, $state, $query, $results = array())
 {
     if ($state == 'before') {
         if (!isset($query['feed'])) {
             return $query;
         }
         $DboMysql = Connectionmanager::getDataSource($Model->useDbConfig);
         $sql = '';
         foreach ((array) $query['feed'] as $key => $feed) {
             $feed = array_merge($this->basicStatement, $feed);
             $sql .= ' UNION ';
             $currentModel = ClassRegistry::init($key);
             $setup = explode(' AND ', str_replace(array('=', '`'), array('AS', '\''), $DboMysql->conditions(array_flip($feed['setup']), false, false)));
             $sql .= $DboMysql->renderStatement('select', array('fields' => implode(', ', array_merge($DboMysql->fields($currentModel, null, (array) $feed['fields']), $setup)), 'table' => $DboMysql->fullTableName($currentModel), 'alias' => $currentModel->alias, 'joins' => '', 'conditions' => $DboMysql->conditions($feed['conditions']), 'group' => '', 'order' => $DboMysql->order($feed['order']), 'limit' => $DboMysql->limit($feed['limit'])));
         }
         $query = array_merge($this->basicStatement, $query);
         $setup = explode(' AND ', str_replace(array('=', '`'), array('AS', '\''), $DboMysql->conditions(array_flip($query['setup']), false, false)));
         $sql = $DboMysql->renderStatement('select', array('fields' => implode(', ', array_merge($DboMysql->fields($Model, null, (array) $query['fields']), $setup)), 'table' => $DboMysql->fullTableName($Model), 'alias' => $Model->alias, 'joins' => '', 'conditions' => $DboMysql->conditions($query['conditions']), 'group' => $sql, 'order' => $DboMysql->order($query['order']), 'limit' => $DboMysql->limit($query['limit'])));
         $_results = $Model->query($sql);
         foreach ($_results as $res) {
             $this->_results[]['Feed'] = $res[0];
         }
         return $query;
     } elseif ($state == 'after') {
         return $this->_results;
     }
     return false;
 }
 /**
  * Initializes the fixture
  *
  */
 public function init($db)
 {
     $plugin = $this->plugin ? $this->plugin . '.' : null;
     App::uses($this->document, $plugin . 'Model');
     $documentClass = $this->document;
     $documentClass::$useDbConfig = Connectionmanager::getSourceName($db);
 }