public static function json(Ansel_Gallery $gallery, $params = array())
{
global $conf, $prefs;
$default = array('full' => false, 'from' => 0, 'count' => 0, 'image_view' => 'screen', 'view_links' => false, 'perpage' => $prefs->getValue('tilesperpage', $conf['thumbnail']['perpage']));
$params = array_merge($default, $params);
$json = array();
$curimage = 0;
$curpage = 0;
if (empty($params['images'])) {
$images = $gallery->getImages($params['from'], $params['count']);
}
$style = $gallery->getStyle();
if ($params['image_view'] == 'thumb' && !empty($params['generator'])) {
$style->thumbstyle = $params['generator'];
}
foreach ($images as $image) {
// Calculate the page this image will appear on in the gallery view.
if (++$curimage > $params['perpage']) {
++$curpage;
$curimage = 0;
}
$data = array((string) Ansel::getImageUrl($image->id, $params['image_view'], $params['full'], $style), htmlspecialchars($image->filename), $GLOBALS['injector']->getInstance('Horde_Core_Factory_TextFilter')->filter($image->caption, 'text2html', array('parselevel' => Horde_Text_Filter_Text2html::MICRO_LINKURL)), $image->id, $curpage);
if ($params['view_links']) {
$data[] = (string) Ansel::getUrlFor('view', array('gallery' => $gallery->id, 'slug' => $gallery->get('slug'), 'image' => $image->id, 'view' => 'Image', 'page' => $curpage), true);
$data[] = (string) Ansel::getUrlFor('view', array('gallery' => $image->gallery, 'slug' => $gallery->get('slug'), 'view' => 'Gallery'), true);
}
// Source, Width, Height, Name, Caption, Image Id, Gallery Page
$json[] = $data;
}
return Horde_Serialize::serialize($json, Horde_Serialize::JSON);
}