/**
  * Returns all asset sources.
  *
  * @param string|null $indexBy
  * @return array
  */
 public function getAllSources($indexBy = null)
 {
     if (!isset($this->_sourcesByIds)) {
         $sourceRecords = AssetSourceRecord::model()->ordered()->findAll();
         $this->_sourcesByIds = AssetSourceModel::populateModels($sourceRecords, $indexBy);
     }
     if ($indexBy == 'id') {
         $sources = $this->_sourcesByIds;
     } else {
         if (!$indexBy) {
             $sources = array_values($this->_sourcesByIds);
         } else {
             $sources = array();
             foreach ($this->_sourcesByIds as $source) {
                 $sources[$source->{$indexBy}] = $source;
             }
         }
     }
     return $sources;
 }