original_string: protected function _tableCols($correlationName, $cols, $afterCorrelationName = null)
      {
          if (!is_array($cols)) {
              $cols = array($cols);
          }
  
          if ($correlationName == null) {
              $correlationName = '';
          }
  
          $columnValues = array();
  
          foreach (array_filter($cols) as $alias => $col) {
              $currentCorrelationName = $correlationName;
              if (is_string($col)) {
                  // Check for a column matching "<column> AS <alias>" and extract the alias name
                  if (preg_match('/^(.+)\s+' . self::SQL_AS . '\s+(.+)$/i', $col, $m)) {
                      $col = $m[1];
                      $alias = $m[2];
                  }
                  // Check for columns that look like functions and convert to Zend_Db_Expr
                  if (preg_match('/\(.*\)/', $col)) {
                      $col = new Zend_Db_Expr($col);
                  } elseif (preg_match('/(.+)\.(.+)/', $col, $m)) {
                      $currentCorrelationName = $m[1];
                      $col = $m[2];
                  }
              }
              $columnValues[] = array($currentCorrelationName, $col, is_string($alias) ? $alias : null);
          }
  
          if ($columnValues) {
  
              // should we attempt to prepend or insert these values?
              if ($afterCorrelationName === true || is_string($afterCorrelationName)) {
                  $tmpColumns = $this->_parts[self::COLUMNS];
                  $this->_parts[self::COLUMNS] = array();
              } else {
                  $tmpColumns = array();
              }
  
              // find the correlation name to insert after
              if (is_string($afterCorrelationName)) {
                  while ($tmpColumns) {
                      $this->_parts[self::COLUMNS][] = $currentColumn = array_shift($tmpColumns);
                      if ($currentColumn[0] == $afterCorrelationName) {
                          break;
                      }
                  }
              }
  
              // apply current values to current stack
              foreach ($columnValues as $columnValue) {
                  array_push($this->_parts[self::COLUMNS], $columnValue);
              }
  
              // finish ensuring that all previous values are applied (if they exist)
              while ($tmpColumns) {
                  array_push($this->_parts[self::COLUMNS], array_shift($tmpColumns));
              }
          }
      }
code: protected function _tableCols($correlationName, $cols, $afterCorrelationName = null)
      {
          if (!is_array($cols)) {
              $cols = array($cols);
          }
  
          if ($correlationName == null) {
              $correlationName = '';
          }
  
          $columnValues = array();
  
          foreach (array_filter($cols) as $alias => $col) {
              $currentCorrelationName = $correlationName;
              if (is_string($col)) {
                  // Check for a column matching "<column> AS <alias>" and extract the alias name
                  if (preg_match('/^(.+)\s+' . self::SQL_AS . '\s+(.+)$/i', $col, $m)) {
                      $col = $m[1];
                      $alias = $m[2];
                  }
                  // Check for columns that look like functions and convert to Zend_Db_Expr
                  if (preg_match('/\(.*\)/', $col)) {
                      $col = new Zend_Db_Expr($col);
                  } elseif (preg_match('/(.+)\.(.+)/', $col, $m)) {
                      $currentCorrelationName = $m[1];
                      $col = $m[2];
                  }
              }
              $columnValues[] = array($currentCorrelationName, $col, is_string($alias) ? $alias : null);
          }
  
          if ($columnValues) {
  
              // should we attempt to prepend or insert these values?
              if ($afterCorrelationName === true || is_string($afterCorrelationName)) {
                  $tmpColumns = $this->_parts[self::COLUMNS];
                  $this->_parts[self::COLUMNS] = array();
              } else {
                  $tmpColumns = array();
              }
  
              // find the correlation name to insert after
              if (is_string($afterCorrelationName)) {
                  while ($tmpColumns) {
                      $this->_parts[self::COLUMNS][] = $currentColumn = array_shift($tmpColumns);
                      if ($currentColumn[0] == $afterCorrelationName) {
                          break;
                      }
                  }
              }
  
              // apply current values to current stack
              foreach ($columnValues as $columnValue) {
                  array_push($this->_parts[self::COLUMNS], $columnValue);
              }
  
              // finish ensuring that all previous values are applied (if they exist)
              while ($tmpColumns) {
                  array_push($this->_parts[self::COLUMNS], array_shift($tmpColumns));
              }
          }
      }
code_tokens: protected function _tableCols ( $ correlationName , $ cols , $ afterCorrelationName = null ) { if ( ! is_array ( $ cols ) ) { $ cols = array ( $ cols ) ; } if ( $ correlationName == null ) { $ correlationName = '' ; } $ columnValues = array ( ) ; foreach ( array_filter ( $ cols ) as $ alias => $ col ) { $ currentCorrelationName = $ correlationName ; if ( is_string ( $ col ) ) { // Check for a column matching "<column> AS <alias>" and extract the alias name if ( preg_match ( '/^(.+)\s+' . self :: SQL_AS . '\s+(.+)$/i' , $ col , $ m ) ) { $ col = $ m [ 1 ] ; $ alias = $ m [ 2 ] ; } // Check for columns that look like functions and convert to Zend_Db_Expr if ( preg_match ( '/\(.*\)/' , $ col ) ) { $ col = new Zend_Db_Expr ( $ col ) ; } elseif ( preg_match ( '/(.+)\.(.+)/' , $ col , $ m ) ) { $ currentCorrelationName = $ m [ 1 ] ; $ col = $ m [ 2 ] ; } } $ columnValues [ ] = array ( $ currentCorrelationName , $ col , is_string ( $ alias ) ? $ alias : null ) ; } if ( $ columnValues ) { // should we attempt to prepend or insert these values? if ( $ afterCorrelationName === true || is_string ( $ afterCorrelationName ) ) { $ tmpColumns = $ this -> _parts [ self :: COLUMNS ] ; $ this -> _parts [ self :: COLUMNS ] = array ( ) ; } else { $ tmpColumns = array ( ) ; } // find the correlation name to insert after if ( is_string ( $ afterCorrelationName ) ) { while ( $ tmpColumns ) { $ this -> _parts [ self :: COLUMNS ] [ ] = $ currentColumn = array_shift ( $ tmpColumns ) ; if ( $ currentColumn [ 0 ] == $ afterCorrelationName ) { break ; } } } // apply current values to current stack foreach ( $ columnValues as $ columnValue ) { array_push ( $ this -> _parts [ self :: COLUMNS ] , $ columnValue ) ; } // finish ensuring that all previous values are applied (if they exist) while ( $ tmpColumns ) { array_push ( $ this -> _parts [ self :: COLUMNS ] , array_shift ( $ tmpColumns ) ) ; } } }
docstring: Adds to the internal table-to-column mapping array.
  
  @param  string $tbl The table/join the columns come from.
  @param  array|string $cols The list of columns; preferably as
  an array, but possibly as a string containing one column.
  @param  bool|string True if it should be prepended, a correlation name if it should be inserted
  @return void
docstring_tokens: Adds to the internal table - to - column mapping array .