/**
  * Generate UserPageCollectionsList from api result
  * @param User $user collection list owner (currently ignored)
  * @param boolean [$includePrivate] if the list should show private collections or not
  * @param string|boolean [$memberTitle] title of member to check for
  * @param array [$params] generate collection list with additional api parameters
  * @param string [$mode] listing mode (public/private/review)
  * @param integer [$limit] of number of collections to show
  * @return models\CollectionsList List of collections.
  */
 public static function newFromApi($user = null, $includePrivate = false, $memberTitle = false, $params = array(), $mode = null, $limit = 50)
 {
     $collectionsList = new CollectionsList($user, $includePrivate);
     $query = array_merge($params, array('action' => 'query', 'list' => 'lists', 'lstprop' => 'label|description|public|image|count|updated|owner', 'lstlimit' => $limit, 'continue' => ''));
     if ($memberTitle) {
         $query['lsttitle'] = $memberTitle;
     }
     if ($user) {
         $query['lstowner'] = $user->getName();
     }
     if ($mode) {
         $query['lstmode'] = $mode === 'review' ? $mode : "all{$mode}";
     } else {
         $mode = '';
     }
     $api = new ApiMain(new FauxRequest($query));
     $api->execute();
     $data = $api->getResult()->getResultData(null, array('Strip' => 'all'));
     if (isset($data['query']['lists'])) {
         $lists = $data['query']['lists'];
         foreach ($lists as $list) {
             $public = $list['perm'] === 'public';
             if ($public || $includePrivate) {
                 $image = isset($list['image']) ? wfFindFile($list['image']) : false;
                 $info = new models\CollectionInfo($list['id'], User::newFromName($list['owner']), $list['label'], $list['description'], $public, $image);
                 $info->setCount($list['count']);
                 $info->setUpdated($list['updated']);
                 if ($list['perm'] === 'hidden') {
                     $info->setHidden();
                 }
                 if ($memberTitle) {
                     $info->setMember($memberTitle, $list['title']);
                 }
                 $collectionsList->add($info);
             }
         }
     }
     if (isset($data['continue'])) {
         $collectionsList->setContinueQueryString($data['continue'], $mode);
     }
     return $collectionsList;
 }