0224642983825df24e86c5547d965d0d308188e0
[web/PetoskeyRobotics.git] /
1 <?php
2
3 class A_NextGen_Basic_Singlepic_Controller extends Mixin
4 {
5     /**
6      * Displays the 'singlepic' display type
7      *
8      * @param stdClass|C_Displayed_Gallery|C_DataMapper_Model $displayed_gallery
9      */
10     function index_action($displayed_gallery, $return = FALSE)
11     {
12         $storage   = $this->object->get_registry()->get_utility('I_Gallery_Storage');
13         $dynthumbs = $this->object->get_registry()->get_utility('I_Dynamic_Thumbnails_Manager');
14         $display_settings = $displayed_gallery->display_settings;
15
16         // use this over get_included_entities() so we can display images marked 'excluded'
17         $image = array_shift($displayed_gallery->get_entities(1, FALSE, FALSE, 'both'));
18
19         if (!$image)
20             return $this->object->render_partial("photocrati-nextgen_gallery_display#no_images_found", array(), $return);
21
22         switch ($display_settings['float']) {
23             case 'left':
24                 $display_settings['float'] = 'ngg-left';
25                 break;
26             case 'right':
27                 $display_settings['float'] = 'ngg-right';
28                 break;
29             case 'center':
30                 $display_settings['float'] = 'ngg-center';
31                 break;
32             default:
33                 $display_settings['float'] = '';
34                 break;
35         }
36
37         $params = array();
38
39         if (!empty($display_settings['link']))
40         {
41             $target = $display_settings['link_target'];
42             $effect_code = '';
43         }
44         else {
45             $display_settings['link'] = $storage->get_image_url($image, 'full', TRUE);
46             $target = '_self';
47             $effect_code = $this->object->get_effect_code($displayed_gallery);
48         }
49         $params['target'] = $target;
50
51         // mode is a legacy parameter
52         if (!is_array($display_settings['mode']))
53             $display_settings['mode'] = explode(',', $display_settings['mode']);
54         if (in_array('web20', $display_settings['mode']))
55             $display_settings['display_reflection'] = TRUE;
56         if (in_array('watermark', $display_settings['mode']))
57             $display_settings['display_watermark'] = TRUE;
58         
59               if (isset($display_settings['w']))
60                   $display_settings['width'] = $display_settings['w'];
61               elseif (isset($display_settings['h']))
62                         unset($display_settings['width']);
63                   
64               if (isset($display_settings['h']))
65                   $display_settings['height'] = $display_settings['h'];
66               elseif (isset($display_settings['w']))
67                         unset($display_settings['height']);
68         
69         // legacy assumed no width/height meant full size unlike generate_thumbnail: force a full resolution
70         if (!isset($display_settings['width']) && !isset($display_settings['height']))
71             $display_settings['width'] = $image->meta_data['width'];
72         
73         if (isset($display_settings['width']))
74                         $params['width'] = $display_settings['width'];
75         
76         if (isset($display_settings['height']))
77             $params['height'] = $display_settings['height'];
78             
79         $params['quality'] = $display_settings['quality'];
80         $params['crop'] = $display_settings['crop'];
81         $params['watermark'] = $display_settings['display_watermark'];
82         $params['reflection'] = $display_settings['display_reflection'];
83
84         // Fall back to full in case dynamic images aren't available
85         $size = 'full';
86
87         if ($dynthumbs != null)
88             $size = $dynthumbs->get_size_name($params);
89
90         $thumbnail_url = $storage->get_image_url($image, $size);
91
92         if (!empty($display_settings['template']))
93         {
94             $this->object->add_mixin('A_NextGen_Basic_Template_Form');
95             $this->object->add_mixin('Mixin_NextGen_Basic_Templates');
96             $params = $this->object->prepare_legacy_parameters(array($image), $displayed_gallery, array('single_image' => TRUE));
97
98             // the wrapper is a lazy-loader that calculates variables when requested. We here override those to always
99             // return the same precalculated settings provided
100             $params['image']->container[0]->_cache_overrides['caption']      = $displayed_gallery->inner_content;
101             $params['image']->container[0]->_cache_overrides['classname']    = 'ngg-singlepic ' . $display_settings['float'];
102             $params['image']->container[0]->_cache_overrides['imageURL']     = $display_settings['link'];
103             $params['image']->container[0]->_cache_overrides['thumbnailURL'] = $thumbnail_url;
104             $params['target'] = $target;
105
106             // if a link is present we temporarily must filter out the effect code
107             if (empty($effect_code))
108                 add_filter('ngg_get_thumbcode', array(&$this, 'strip_thumbcode'), 10);
109
110             $retval = $this->object->legacy_render($display_settings['template'], $params, $return, 'singlepic');
111
112             if (empty($effect_code))
113                 remove_filter('ngg_get_thumbcode', array(&$this, 'strip_thumbcode'), 10);
114
115             return $retval;
116         }
117         else {
118             $params = $display_settings;
119             $params['storage']       = &$storage;
120             $params['image']         = &$image;
121             $params['effect_code']   = $effect_code;
122             $params['inner_content'] = $displayed_gallery->inner_content;
123             $params['settings']      = $display_settings;
124             $params['thumbnail_url'] = $thumbnail_url;
125             $params['target']        = $target;
126                 
127             $params = $this->object->prepare_display_parameters($displayed_gallery, $params);
128
129             return $this->object->render_partial('photocrati-nextgen_basic_singlepic#nextgen_basic_singlepic', $params, $return);
130         }
131     }
132
133     /**
134      * Intentionally disable the application of the effect code
135      */
136     function strip_thumbcode($thumbcode)
137     {
138         return '';
139     }
140
141     /**
142      * Enqueues all static resources required by this display type
143      *
144      * @param C_Displayed_Gallery $displayed_gallery
145      */
146     function enqueue_frontend_resources($displayed_gallery)
147     {
148                 $this->call_parent('enqueue_frontend_resources', $displayed_gallery);
149
150         wp_enqueue_style('nextgen_basic_singlepic_style', $this->get_static_url('photocrati-nextgen_basic_singlepic#nextgen_basic_singlepic.css'));
151
152                 $this->enqueue_ngg_styles();
153     }
154
155 }