Merge branch '2013.03' into 2013.10
[tine20] / tine20 / Tinebase / User / Sql.php
index deaffb3..a8827dd 100644 (file)
@@ -140,8 +140,10 @@ class Tinebase_User_Sql extends Tinebase_User_Abstract
                 $this->rowNameMapping['accountFirstName'], 
                 $this->rowNameMapping['accountLoginName']
             );
+            // prepare for case insensitive search
+            $db = Tinebase_Core::getDb();
             foreach ($defaultValues as $defaultValue) {
-                $whereStatement[] = $this->_db->quoteIdentifier($defaultValue) . 'LIKE ?';
+                $whereStatement[] = Tinebase_Backend_Sql_Command::factory($db)->prepareForILike($this->_db->quoteIdentifier($defaultValue)) . ' LIKE ' . Tinebase_Backend_Sql_Command::factory($db)->prepareForILike('?');
             }
         
             $select->where('(' . implode(' OR ', $whereStatement) . ')', '%' . $_filter . '%');
@@ -225,7 +227,7 @@ class Tinebase_User_Sql extends Tinebase_User_Abstract
      */
     public function getUserByPropertyFromSqlBackend($_property, $_value, $_accountClass = 'Tinebase_Model_User')
     {
-        if(!array_key_exists($_property, $this->rowNameMapping)) {
+        if(!(isset($this->rowNameMapping[$_property]) || array_key_exists($_property, $this->rowNameMapping))) {
             throw new Tinebase_Exception_InvalidArgument("invalid property $_property requested");
         }
         
@@ -263,6 +265,22 @@ class Tinebase_User_Sql extends Tinebase_User_Abstract
     }
     
     /**
+     * get users by primary group
+     * 
+     * @param string $groupId
+     * @return Tinebase_Record_RecordSet of Tinebase_Model_FullUser
+     */
+    public function getUsersByPrimaryGroup($groupId)
+    {
+        $select = $this->_getUserSelectObject()
+            ->where($this->_db->quoteInto($this->_db->quoteIdentifier(SQL_TABLE_PREFIX . 'accounts.primary_group_id') . ' = ?', $groupId));
+        $stmt = $select->query();
+        $data = (array) $stmt->fetchAll(Zend_Db::FETCH_ASSOC);
+        $result = new Tinebase_Record_RecordSet('Tinebase_Model_FullUser', $data, true);
+        return $result;
+    }
+    
+    /**
      * get full user by id
      *
      * @param   int         $_accountId
@@ -951,17 +969,19 @@ class Tinebase_User_Sql extends Tinebase_User_Abstract
     /**
      * Get multiple users
      *
-     * @param     string|array $_id Ids
-     * @param   string  $_accountClass  type of model to return
+     * fetch FullUser by default
+     *
+     * @param  string|array $_id Ids
+     * @param  string  $_accountClass  type of model to return
      * @return Tinebase_Record_RecordSet of 'Tinebase_Model_User' or 'Tinebase_Model_FullUser'
      */
-    public function getMultiple($_id, $_accountClass = 'Tinebase_Model_User') 
+    public function getMultiple($_id, $_accountClass = 'Tinebase_Model_FullUser') 
     {
         if (empty($_id)) {
             return new Tinebase_Record_RecordSet($_accountClass);
         }
-
-        $select = $this->_getUserSelectObject()            
+        
+        $select = $this->_getUserSelectObject()
             ->where($this->_db->quoteIdentifier(SQL_TABLE_PREFIX . 'accounts.id') . ' in (?)', (array) $_id);
         
         $stmt = $this->_db->query($select);