/**
  * @param CHelpdeskUser $oHelpdeskUser
  * @param int $iOffset = 0
  * @param int $iLimit = 20
  * @param int $iFilter = EHelpdeskThreadFilterType::All
  * @param string $sSearch = ''
  * @param int $iSearchOwner = 0
  *
  * @return string
  */
 public function GetThreads(CHelpdeskUser $oHelpdeskUser, $iOffset = 0, $iLimit = 20, $iFilter = EHelpdeskThreadFilterType::All, $sSearch = '', $iSearchOwner = 0)
 {
     $sSearch = trim($sSearch);
     $aWhere = array();
     $aMap = api_AContainer::DbReadKeys(CHelpdeskThread::GetStaticMap());
     $aMap = array_map(array($this, 'escapeColumn'), $aMap);
     $sSql = 'SELECT %s FROM %sahd_threads';
     $sSql = sprintf($sSql, implode(', ', $aMap), $this->Prefix());
     $aWhere = $this->buildThreadsWhere($oHelpdeskUser, $iFilter, $sSearch, $iSearchOwner);
     if (is_array($aWhere) && 0 < count($aWhere)) {
         $sSql .= ' WHERE ' . implode(' AND ', $aWhere);
     } else {
         $sSql .= ' WHERE 1 = 0';
     }
     $sSql .= ' ORDER BY updated desc LIMIT ' . (int) $iLimit . '  OFFSET ' . (int) $iOffset;
     return $sSql;
 }