Merge branch 'tine20.com/2012.10' into 2013.03
[tine20] / tine20 / Tinebase / Backend / Sql / Abstract.php
index 499d250..2b4a8d5 100644 (file)
@@ -266,6 +266,30 @@ abstract class Tinebase_Backend_Sql_Abstract extends Tinebase_Backend_Abstract i
     }
     
     /**
+     * fetch a single property for all records defined in array of $ids
+     * 
+     * @param array|string $ids
+     * @param string $property
+     * @return array (key = id, value = property value)
+     */
+    public function getPropertyByIds($ids, $property)
+    {
+        $select = $this->_getSelect(array($property, $this->_identifier));
+        $select->where($this->_db->quoteIdentifier($this->_tableName . '.' . $this->_identifier) . ' IN (?)', (array) $ids);
+        Tinebase_Backend_Sql_Abstract::traitGroup($select);
+        
+        $stmt = $this->_db->query($select);
+        $queryResult = $stmt->fetchAll();
+        $stmt->closeCursor();
+        
+        $result = array();
+        foreach($queryResult as $row) {
+            $result[$row[$this->_identifier]] = $row[$property];
+        }
+        return $result;
+    }
+    
+    /**
      * converts raw data from adapter into a single record
      *
      * @param  array $_rawData
@@ -384,7 +408,7 @@ abstract class Tinebase_Backend_Sql_Abstract extends Tinebase_Backend_Abstract i
         
         Tinebase_Backend_Sql_Abstract::traitGroup($select);
         
-        //if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' ' . $select->__toString());
+        if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ' . $select->__toString());
         
         $stmt = $this->_db->query($select);
         $queryResult = $stmt->fetchAll();
@@ -435,7 +459,7 @@ abstract class Tinebase_Backend_Sql_Abstract extends Tinebase_Backend_Abstract i
      * @param  array|string|boolean                 $_cols columns to get, * per default / use self::IDCOL or TRUE to get only ids
      * @return Tinebase_Record_RecordSet|array
      */
-    public function search(Tinebase_Model_Filter_FilterGroup $_filter = NULL, Tinebase_Model_Pagination $_pagination = NULL, $_cols = '*')    
+    public function search(Tinebase_Model_Filter_FilterGroup $_filter = NULL, Tinebase_Model_Pagination $_pagination = NULL, $_cols = '*')
     {
         if ($_pagination === NULL) {
             $_pagination = new Tinebase_Model_Pagination(NULL, TRUE);
@@ -456,7 +480,9 @@ abstract class Tinebase_Backend_Sql_Abstract extends Tinebase_Backend_Abstract i
         }
         $this->_addSecondarySort($_pagination);
         $_pagination->appendPaginationSql($select);
-        
+
+        Tinebase_Backend_Sql_Abstract::traitGroup($select);
+
         if ($getIdValuePair) {
             return $this->_fetch($select, self::FETCH_MODE_PAIR);
         } else {