Пример #1
0
 /**
  * Fetch the slide collection for a given slideset
  *
  * @uses $_POST['slideset'] Identifies presentation based on slideset ID.
  */
 public function get_slides()
 {
     $slideset_id = intval($_POST['slideset']);
     // $response = array(
     //     'success' => true/false,
     //     'data'    => array(
     //         $child_array_1,
     //         $child_array_2
     //         ...
     //     )
     // }
     $response = array();
     if (0 === $slideset_id) {
         $response['success'] = false;
     } else {
         /** @var SEOSlides_Slideset $slideset */
         $slideset = SEOSlides_Module_Provider::get('SEOSlides Core')->get_slideset($slideset_id);
         $child_data = array();
         // Build an array containing each slide in a separate associative array
         /** @var SEOSlides_Slide $slide */
         foreach ($slideset->slides as $slide) {
             $bg_image = $slide->get_bg_image();
             $bg_id = SEOSlides_Util::get_attachment_id_from_url($bg_image);
             if (false !== $bg_id) {
                 $bg_arr = wp_get_attachment_image_src($bg_id, 'seoslides-thumb');
                 $bg_image = $bg_arr[0];
             }
             $data = array('id' => $slide->ID, 'title' => stripslashes($slide->title), 'content' => $slide->content, 'image' => stripslashes($slide->image), 'bg_image' => $bg_image, 'style' => $slide->style, 'position' => $slide->position, 'preview' => $slide->preview, 'fill_color' => $slide->fill_color, 'seo_title' => $slide->seo_title, 'seo_description' => $slide->seo_description, 'seo_keywords' => $slide->seo_keywords, 'presenter_notes' => wp_trim_words($slide->presenter_notes, 50, ' […]'), 'status' => $slide->status);
             if (isset($data['bg_image']) && function_exists('jetpack_photon_url')) {
                 $data['bg_image'] = jetpack_photon_url($data['bg_image'], array(), '//');
             }
             $oembed = SEOSlides_Slide::get_embed_url($slide->oembed);
             $oembed_thumb = SEOSlides_Slide::get_embed_thumbnail($slide->oembed);
             if (!is_wp_error($oembed) && !is_wp_error($oembed_thumb)) {
                 $data['oembed'] = $oembed;
                 $data['oembed_thumb'] = $oembed_thumb;
             }
             // Build out canvas objects
             $data['objects'] = array_map(array($this, 'sanitize_slide_object'), $slide->objects);
             // Add the object
             $child_data[] = $data;
         }
         $response['success'] = true;
         $response['data'] = $child_data;
     }
     wp_send_json($response);
 }
Пример #2
0
 /**
  * Filter the display of the custom Presentation columns.
  *
  * @param string $column
  * @param int    $slideset_id
  *
  * @return void
  */
 public function filter_custom_columns($column, $slideset_id)
 {
     switch ($column) {
         case 'thumbnail':
             $slideset = new SEOSlides_Slideset($slideset_id);
             $title = $slideset->title;
             $slides = array_filter($slideset->slides, array('SEOSlides_Slide', 'slide_is_published'));
             if (count($slides) > 0) {
                 $cover = $slideset->first_slide();
                 if (current_user_can('edit_post', $slideset_id)) {
                     echo '<a href="' . get_edit_post_link($slideset_id) . '">';
                 }
                 echo '<div class="list thumbnail">';
                 if (false === $cover->preview || 'false' === $cover->preview) {
                     // There is no preview thumbnail for this image, so we'll try to create one instead
                     // First, build out the inline style, using auto-generated thumbnail images
                     // Build out inline style
                     $style = ' style="';
                     if ('' !== $cover->bg_image) {
                         $image = $cover->bg_image;
                         $image_id = SEOSlides_Util::get_attachment_id_from_url($cover->bg_image);
                         if (false === $image_id) {
                             if (function_exists('jetpack_photon_url')) {
                                 $image = jetpack_photon_url($cover->bg_image, array(), '//');
                             }
                         } else {
                             $image_arr = wp_get_attachment_image_src($image_id, 'seoslides-thumb');
                             $image = $image_arr[0];
                         }
                         $style .= 'background-image:url(' . $image . ');';
                     }
                     $style .= 'background-color:' . $cover->fill_color . ';"';
                     echo "<section class='slide'><div class='slide-body' {$style}>";
                     if (!empty($cover->oembed)) {
                         $embed_url = SEOSlides_Slide::get_embed_url($cover->oembed);
                         $thumb_url = SEOSlides_Slide::get_embed_thumbnail($cover->oembed);
                         if (!is_wp_error($embed_url) && !is_wp_error($thumb_url)) {
                             echo '<img class="seoslides_iframe_thumb" src="' . $thumb_url . '" />';
                             echo '<iframe class="seoslides_iframe" src="' . $embed_url . '" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
                         }
                     }
                     foreach ($cover->objects as $object) {
                         echo '<div ';
                         echo "data-element='{$object->element_id}' ";
                         echo "data-plugin='{$object->plugin_id}' ";
                         echo "data-width='{$object->settings->size->w}' ";
                         echo "data-height='{$object->settings->size->h}' ";
                         echo "data-top='{$object->settings->position->top}' ";
                         echo "data-left='{$object->settings->position->left}' ";
                         $style = 'position:absolute; ';
                         $style .= 'top:' . $object->settings->position->top . 'px; ';
                         $style .= 'left:' . $object->settings->position->left . 'px; ';
                         $style .= 'width:' . $object->settings->size->w . 'px; ';
                         $style .= 'height:' . $object->settings->size->h . 'px;';
                         echo "style='{$style}'";
                         echo '>';
                         if (isset($object->settings->content)) {
                             echo $object->settings->content;
                         }
                         echo '</div>';
                     }
                     echo '</div></section>';
                 } else {
                     echo "<img src=\"{$cover->preview}\" title=\"{$cover->title}\" />";
                 }
                 echo '</div>';
                 if (current_user_can('edit_post', $slideset_id)) {
                     echo '</a>';
                 }
             }
             break;
         case 'description':
             $slideset = $this->get_slideset($slideset_id);
             echo $slideset->excerpt;
             break;
         case 'slide_count':
             echo self::get_slide_count($slideset_id);
             break;
         case 'updated':
             $slideset = $this->get_slideset($slideset_id);
             $updated = mysql2date('G', $slideset->last_updated_gmt, false);
             $diff = time() - $updated;
             if ($diff > 0 && $diff < DAY_IN_SECONDS) {
                 $time = sprintf(__('%s ago'), human_time_diff($updated));
             } else {
                 $time = mysql2date(__('Y/m/d'), $slideset->last_updated);
             }
             echo $time;
             break;
     }
 }