Development

Changeset 7570

You must first sign up to be able to contribute.

Changeset 7570

Show
Ignore:
Timestamp:
02/21/08 19:46:47 (9 months ago)
Author:
hartym
Message:

[sfPropelImpersonatorPlugin] $peer->doCount support

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • plugins/sfPropelImpersonatorPlugin/trunk/lib/sfPropelObjectPeerImpersonator.class.php

    r7566 r7570  
    256256 
    257257  /** 
     258   * Propel impersonating doCount ^^ 
     259   */ 
     260  public function doCount(Criteria $criteria, $distinct = false, $con=null) 
     261  { 
     262    $criteria = clone $criteria; 
     263    $asColumns = $criteria->getAsColumns(); 
     264    $criteria->clearSelectColumns()->clearOrderByColumns(); 
     265 
     266    // hack against criteria private policy 
     267    foreach ($asColumns as $key => $value) 
     268    { 
     269      $criteria->addAsColumn($key, $value); 
     270    } 
     271 
     272    $peerClass = get_class($this->objects[0]).'Peer'; 
     273 
     274    if ($distinct || in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) 
     275    { 
     276      $criteria->addSelectColumn(constant($peerClass.'::COUNT_DISTINCT')); 
     277    } 
     278    else 
     279    { 
     280      $criteria->addSelectColumn(constant($peerClass.'::COUNT')); 
     281    } 
     282 
     283    foreach($criteria->getGroupByColumns() as $column) 
     284    { 
     285      $criteria->addSelectColumn($column); 
     286    } 
     287 
     288    $rs = call_user_func(array($peerClass, 'doSelectRS'), $criteria, $con); 
     289 
     290    if ($rs->next()) 
     291    { 
     292      return $rs->getInt(1); 
     293    } 
     294    else 
     295    { 
     296      return 0; 
     297    } 
     298  } 
     299 
     300  /** 
    258301   * Custom query select 
    259302   */