WordPress.org

Plugin Directory

Changeset 1017663


Ignore:
Timestamp:
10/31/14 20:50:04 (3 years ago)
Author:
cmstactics
Message:
  • Rewrote js processing of uploading / editing: added ajax forms processing including file uploading
  • Changed public functions to static: wpvp_return_bytes(), wpvp_max_upload_size()
  • Moved video upload / edit html into the template files. Users can now overwrite these template files with their own in their template.
  • Also added shell_exec back to video / thumb processing (it got incorrectly removed at some point).
Location:
wp-video-posts
Files:
58 added
7 edited

Legend:

Unmodified
Added
Removed
  • wp-video-posts/trunk/classes/wpvp-core-class.php

    r1017034 r1017663  
    168168                $postObj = get_post($videoPostID); 
    169169                $currentContent = $postObj->post_content; 
    170                 $newContent = $shortCode.' '.$currentContent; 
     170                $newContent = $shortCode.$currentContent; 
    171171                $videopost = array( 
    172172                    'ID' => $postID, 
     
    225225    */ 
    226226    protected function wpvp_convert_thumb($source,$target){ 
     227        $helper = new WPVP_Helper(); 
     228        $options = $helper->wpvp_get_full_options(); 
     229        $debug_mode = ($options['debug_mode']=='yes') ? true : false; 
    227230        $width = $this->options['thumb_width']; 
    228231        $height = $this->options['thumb_height']; 
     
    232235        $capture_image = $capture_image ? $capture_image : 5; 
    233236        $extra = '-vframes 1 '.$dimensions.' -ss '.$capture_image.' -f image2'; 
    234         $str = $ffmpeg_path."ffmpeg -y -i ".$source." ". $extra ." ".$target;    
    235         return exec($str); 
    236     } 
    237     /** 
    238     *convert video to a specified format (currently, mp4 only) 
     237        $str = $ffmpeg_path."ffmpeg -y -i ".$source." ". $extra ." ".$target." 2>&1"; 
     238        if($debug_mode) 
     239            $helper->wpvp_dump('Image conversion command: '.$str); 
     240        $output = shell_exec($str); 
     241        if($debug_mode){ 
     242            $helper->wpvp_dump('Image conversion output:'); 
     243            $helper->wpvp_dump($output); 
     244        } 
     245        return $target; 
     246    } 
     247    /** 
     248    *convert video to a specified format 
    239249    *@access protected 
    240250    */ 
    241     protected function wpvp_convert_video($source,$target,$format){ 
     251    protected function wpvp_convert_video($source,$target,$format='mp4'){ 
    242252        global $encodeFormat; 
    243253        $helper = new WPVP_Helper(); 
     254        $options = $helper->wpvp_get_full_options(); 
     255        $debug_mode = ($options['debug_mode']=='yes') ? true : false; 
    244256        $helper->wpvp_dump($this->options); 
    245257        $width = $this->options['video_width']; 
     
    256268        $ffmpeg_vcodec=$this->options['wpvp_ffmpeg_vcodec']; 
    257269        $ffmpeg_vpre=$this->options['wpvp_ffmpeg_vpre']; 
    258         $ffmpeg_other_flags=$this->options['wpvp_ffmpeg_other_flags']; 
     270        $ffmpeg_other_flags=(int)$this->options['wpvp_ffmpeg_other_flags']; 
    259271         
    260272        $extra = $dimentions." "; 
     
    275287                $extra.=' -vpre '.$ffmpeg_vpre; 
    276288        } 
    277         if($ffmpeg_other_flags!=0) 
    278             $extra.= " -refs 1 -coder 1 -level 31 -threads 8 -partitions parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -flags +mv4 -trellis 1 -cmp 256 -me_range 16 -sc_threshold 40 -i_qfactor 0.71 -bf 0 -g 250"; 
    279         $str = $ffmpeg_path."ffmpeg -i ".$source." $extra ".$target; 
    280         $helper = new WPVP_Helper(); 
    281         $helper->wpvp_dump($str); 
    282         exec($str); 
    283         //check for the file. If not created, attempt to execute a simplier command 
     289        switch($format){ 
     290            case 'mp4': 
     291                if(!$ffmpeg_other_flags) 
     292                    $extra.= " -refs 1 -coder 1 -level 31 -threads 8 -partitions parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -flags +mv4 -trellis 1 -cmp 256 -me_range 16 -sc_threshold 40 -i_qfactor 0.71 -bf 0 -g 250"; 
     293                $str = $ffmpeg_path."ffmpeg -i ".$source." $extra ".$target." 2>&1"; 
     294                break; 
     295            case 'webm': 
     296             
     297                break; 
     298            case 'ogg': 
     299             
     300                break; 
     301        } 
     302        if($debug_mode) 
     303            $helper->wpvp_dump('Video conversion command: '.$str); 
     304        $output = shell_exec($str); 
     305        if($debug_mode){ 
     306            $helper->wpvp_dump('Video conversion output:'); 
     307            $helper->wpvp_dump($output); 
     308        } 
     309        //check for the file. If not created, attempt to execute a simpler command 
    284310        if(!file_exists($target)){ 
    285             exec($ffmpeg_path."ffmpeg -i ".$source.$dimensions." ".$ffmpeg_acodec." ".$ffmpeg_vcodec." ".$target); 
     311            $output = shell_exec($ffmpeg_path."ffmpeg -i ".$source.$dimensions." ".$ffmpeg_acodec." ".$ffmpeg_vcodec." ".$target." 2>&1"); 
     312            if($debug_mode) 
     313                $helper->wpvp_dump($output); 
    286314        } 
    287315        //in case of MP4Box is installed, execute command to move the video data to the front 
    288316        $prepare = $mp4box_path."MP4Box -inter 100  ".$target; 
    289         exec($prepare); 
    290         return 1; 
     317        $output = shell_exec($prepare); 
     318        if($debug_mode) 
     319            $helper->wpvp_dump($output); 
     320        return $target; 
    291321    } 
    292322    /** 
     
    483513    public function wpvp_front_video_uploader(){ 
    484514        $helper = new WPVP_Helper();  
    485         $upload_size_unit = $helper->wpvp_max_upload_size(); 
    486         $error_vid_type = false; 
    487         $video_limit =  $helper->wpvp_return_bytes($helper->wpvp_max_upload_size(false)); 
    488         if(isset($_POST['wpvp_action'])&&'wpvp_upload'==$_POST['wpvp_action']){ 
    489             if ( !wp_verify_nonce( $_POST['wpvp_file_upload_field'], 'wpvp_file_upload' ) ) { 
    490                 $error_vid_type = true; 
    491                 $error_msg = __('Invalid referrer.'); 
    492             } else { 
    493                 $default_ext = array('video/mp4','video/x-flv'); 
    494                 $video_types = get_option('wpvp_allowed_extensions',$default_ext) ? get_option('wpvp_allowed_extensions',$default_ext) : $default_ext; 
    495                 if(in_array($_FILES['async-upload']['type'],$video_types)){ 
    496                     $video_post = $this->wpvp_insert_init_post($_POST,$_FILES); 
    497                     // send email notification to an admin 
    498                     $userObj = wp_get_current_user(); 
    499                     $admin = get_bloginfo('admin_email'); 
    500                     $subject = get_bloginfo('name').': New Video Submitted for Review'; 
    501                     $headers = 'MIME-Version: 1.0' . "\r\n"; 
    502                     $headers.= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
    503                     $message = 'New video uploaded for review on '.get_bloginfo('name').'. Moderate the <a href="'.get_bloginfo('url').'/?post_type=videos&p='.$video_post.'">uploaded video</a>.'; 
    504                     $send_draft_notice = wp_mail($admin, $subject, $message, $headers); 
    505                 } else if($_FILES['async-upload']['size']>$video_limit){ 
    506                     $error_vid_type = true; 
    507                     $error_mgs = 'The file exceeds the maximum upload size.'; 
    508                 } 
    509                 else { 
    510                     $error_vid_type = true; 
    511                     $supported_ext = implode(', ',$video_types); 
    512                     $error_msg = 'The file is either not a video file or the extension is not supported.<br /> Currently supported extensions are: '.$supported_ext; 
    513                 } 
    514             } 
    515         } // if wpvp-upload is in $_POST     
    516         $helper = new WPVP_Helper();  
    517         if($helper->wpvp_is_allowed()) { ?> 
    518             <?php if($error_vid_type){ echo '<p style="color:red;font-style:italic;font-size:11px;">'.$error_msg.'</p>';}?> 
    519             <form id="wpvp-upload-video" enctype="multipart/form-data" name="wpvp-upload-video" class="wpvp-processing-form" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>"> 
    520                 <div class="wpvp_block"> 
    521                     <label><?php printf( __( 'Choose Video (Max Size of %s):' ), esc_html($upload_size_unit) ); ?><span>*</span></label> 
    522                     <input type="file" id="async-upload" name="async-upload" class="wpvp_require" value="" /> 
    523                     <div class="wpvp_file_error wpvp_error"></div> 
    524                     <div class="wpvp_upload_progress" style="display:none;"><img class="wpvp_progress_gif" src="<?php echo plugins_url('images/upload_progress.gif',dirname(__FILE__));?>" /><?php _e('Please, wait while your video is being uploaded.');?></div> 
    525                 </div> 
    526                 <div class="wpvp_block"> 
    527                     <label><?php _e('Title');?><span>*</span></label> 
    528                     <input type="text" name="wpvp_title" class="wpvp_require" value="<?php echo $_POST['wpvp_title'];?>" /> 
    529                     <div class="wpvp_title_error wpvp_error"></div> 
    530                 </div> 
    531                 <div class="wpvp_block"> 
    532                 <?php $desc_status = (int)get_option('wpvp_uploader_desc',false);?> 
    533                     <label><?php _e('Description');?><?php if(!$desc_status):?><span>*</span><?php endif;?></label> 
    534                     <textarea name="wpvp_desc" <?php if(!$desc_status):?>class="wpvp_require"<?php endif;?>><?php echo $_POST['wpvp_desc'];?></textarea> 
    535                     <div class="wpvp_desc_error wpvp_error"></div> 
    536                 </div> 
    537                 <div class="wpvp_block"> 
    538                     <div class="wpvp_cat" style="float:left;width:50%;"> 
    539                         <label><?php _e('Choose category');?></label> 
    540                         <select name="wpvp_category"> 
    541                 <?php 
    542                         $wpvp_uploader_cats = get_option('wpvp_uploader_cats',''); 
    543                         if($wpvp_uploader_cats==''){ 
    544                             $uploader_cats = ''; 
    545                         } else { 
    546                             $uploader_cats = implode(", ",$wpvp_uploader_cats); 
    547                         } 
    548                         $args = array('hide_empty'=>0,'include'=>$uploader_cats); 
    549                         $categories = get_categories($args); 
    550                         foreach($categories as $category){ 
    551                             $options .= '<option '; 
    552                             $options .= ' value="'.$category->term_id.'">'; 
    553                             $options .= $category->cat_name.'</option>'; 
    554                         } 
    555                         echo $options; 
    556                 ?> 
    557                         </select> 
    558                     </div> 
    559                     <?php    
    560                     $hide_tags = get_option('wpvp_uploader_tags',''); 
    561                     if($hide_tags==''){ ?> 
    562                     <div class="wpvp_tag" style="float:right;width:50%;text-align:right;"> 
    563                         <label><?php _e('Tags (comma separated)');?></label> 
    564                         <input type="text" name="wpvp_tags" value="<?php echo $_POST['wpvp_tags'];?>" /> 
    565                     </div> 
    566                     <?php    
    567                     }  
    568                     ?> 
    569                     <?php wp_nonce_field('wpvp_file_upload','wpvp_file_upload_field',true,true);?> 
    570                 </div> 
    571                 <input type="hidden" name="wpvp_action" value="wpvp_upload" /> 
    572                 <p class="wpvp_submit_block"> 
    573                     <input type="submit" class="wpvp-submit" name="wpvp-upload" value="Upload" /> 
    574                 </p> 
    575                 <p class="wpvp_info"><span>*</span> = <?php _e('Required fields');?></p> 
    576             </form> 
    577 <?php   } else { //Display insufficient privileges message 
     515        $upload_size_unit = WPVP_Helper::wpvp_max_upload_size(); 
     516        if($helper->wpvp_is_allowed()) { 
     517            WPVP_Helper::wpvp_load_template_file('wpvp-frontend-uploader',true); 
     518        } else { //Display insufficient privileges message 
    578519            $denial_message = get_option('wpvp_denial_message'); 
    579520            if(!$denial_message || $denial_message == "") 
     
    645586                $post_category = wp_get_post_categories($post_id); 
    646587                $post_cat = $post_category[0]; 
    647                 $wp_nonce_field = wp_nonce_field('wpvp_video_update','wpvp_video_update_field',true,false); 
    648                 ?> 
    649                 <form id="wpvp-update-video" enctype="multipart/form-data" name="wpvp-update-video" class="wpvp-processing-form" method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>"> 
    650                     <div class="wpvp_block"> 
    651                         <?php echo do_shortcode($video_shortcode);?> 
    652                     </div> 
    653                     <div class="wpvp_block"> 
    654                         <label><?php _e('Title');?><span>*</span></label> 
    655                         <input type="text" name="wpvp_title" class="wpvp_require" value="<?php if($_POST['wpvp_title']) {echo $_POST['wpvp_title'];} else{ echo $video_title;}?>" /> 
    656                         <div class="wpvp_title_error wpvp_error"></div> 
    657                     </div> 
    658                     <div class="wpvp_block"> 
    659                     <?php $desc_status = (int)get_option('wpvp_uploader_desc',false);?> 
    660                         <label><?php _e('Description');?><?php if(!$desc_status):?><span>*</span><?php endif;?></label> 
    661                         <textarea name="wpvp_desc" <?php if(!$desc_status):?>class="wpvp_require"<?php endif;?>><?php if($_POST['wpvp_desc']){ echo $_POST['wpvp_desc'];} else{ echo $video_content;};?></textarea> 
    662                         <div class="wpvp_desc_error wpvp_error"></div> 
    663                     </div> 
    664                     <div class="wpvp_block"> 
    665                         <div class="wpvp_cat" style="float:left;width:50%;"> 
    666                          <?php 
    667                         $wpvp_uploader_cats = get_option('wpvp_uploader_cats',''); 
    668                         if($wpvp_uploader_cats==''){ 
    669                             $uploader_cats = ''; 
    670                         } else { 
    671                             $uploader_cats = implode(", ",$wpvp_uploader_cats); 
    672                         } 
    673                         ?> 
    674                         <label><?php _e('Choose category');?></label> 
    675                         <select name="wpvp_category"> 
    676                 <?php 
    677                         $args = array('hide_empty'=>0,'include'=>$uploader_cats); 
    678                         $categories = get_categories($args); 
    679                         foreach($categories as $category){ 
    680                             if($post_cat==$category->term_id){ 
    681                                 $selected = ' selected="selected"'; 
    682                             } else { $selected = '';} 
    683                             $options .= '<option '; 
    684                             $options .= ' value="'.$category->term_id.'"'.$selected.'>'; 
    685                             $options .= $category->cat_name.'</option>'; 
    686                         } 
    687                         echo $options; 
    688                 ?> 
    689                                 </select> 
    690                         </div> 
    691                     <?php $hide_tags = get_option('wpvp_uploader_tags','');?> 
    692                         <?php if($hide_tags==''):?> 
    693                         <div class="wpvp_tag" style="float:right;width:50%;text-align:right;"> 
    694                             <label><?php _e('Tags (comma separated)');?></label> 
    695                             <input type="text" name="wpvp_tags" value="<?php if($_POST['wpvp_tags']) {echo $_POST['wpvp_tags'];} else { echo $tags_list; }?>" /> 
    696                         </div> 
    697                         <?php endif;?> 
    698                     </div> 
    699                     <input type="hidden" name="wpvp_video_id" value="<?php echo $post_id;?>" /> 
    700                     <p class="wpvp_submit_block"> 
    701                         <input type="submit" class="wpvp-submit" name="wpvp-update" value="<?php _e('Save Changes');?>" /> 
    702                     </p> 
    703                     <?php echo $wp_nonce_field;?> 
    704                     <div class="wpvp_msg"></div> 
    705                     <p class="wpvp_info"><span>*</span> = <?php _e('Required fields');?></p> 
    706                 </form> 
    707     <?php   } ?> 
    708 <?php   } else{ 
     588                $data = array(); 
     589                $data['post_id'] = $post_id; 
     590                $data['video_shortcode'] = $video_shortcode; 
     591                $data['content'] = $video_content; 
     592                $data['title'] = $video_title; 
     593                $data['tags'] = $tags_list; 
     594                $data['category'] = $post_cat; 
     595                WPVP_Helper::wpvp_load_template_file('wpvp-frontend-editor',true,$data); 
     596            }  
     597        } else{ 
    709598            return __('Cheating, huh?!'); 
    710599            exit; 
     
    760649            } 
    761650        } 
    762     }    
     651    } 
    763652} 
    764653?> 
  • wp-video-posts/trunk/classes/wpvp-helper-class.php

    r1017034 r1017663  
    8686        $debug_mode = get_option('wpvp_debug_mode'); 
    8787        $allowed_extensions = get_option('wpvp_allowed_extensions',$default_ext); 
     88        $encode_formats = get_option('wpvp_encode_format',false) ? get_option('wpvp_encode_format') : array(); 
    8889        $wpvp_ffmpeg_options = array(); 
    8990        $wpvp_ffmpeg_options = get_option('wpvp_ffmpeg_options',array()) ? get_option('wpvp_ffmpeg_options') : array(); 
     
    113114        $wpvp_options['mp4box_path']=$mp4box_path; 
    114115        $wpvp_options['debug_mode']=$debug_mode; 
     116        $wpvp_options['encode_formats']=$encode_formats; 
    115117        return $wpvp_options; 
    116118    } 
     
    187189    /** 
    188190    *check for max upload size based on php.ini settings 
    189     *@access public 
    190     */ 
    191     public function wpvp_max_upload_size($type=true) { 
     191    *@access static 
     192    */ 
     193    static function wpvp_max_upload_size($type=true) { 
    192194        $max_upload = (int)(ini_get('upload_max_filesize')); 
    193195        $max_post = (int)(ini_get('post_max_size')); 
     
    200202    /** 
    201203    *convert to bytes 
    202     *@access public 
    203     */ 
    204     public function wpvp_return_bytes($val) { 
     204    *@access static 
     205    */ 
     206    static function wpvp_return_bytes($val) { 
    205207        $val = trim($val); 
    206208        switch (strtolower(substr($val, -1))){ 
     
    282284        } 
    283285    } 
     286    /** 
     287    *Output categories allowed for front-end uploading 
     288    *@access static 
     289    **/ 
     290    static function wpvp_upload_categories_dropdown($echo=true,$selected=0){ 
     291        $html = ''; 
     292        $wpvp_uploader_cats = get_option('wpvp_uploader_cats',''); 
     293        if($wpvp_uploader_cats==''){ 
     294            $uploader_cats = ''; 
     295        } else { 
     296            $uploader_cats = implode(", ",$wpvp_uploader_cats); 
     297        } 
     298        $args = array('hide_empty'=>0,'include'=>$uploader_cats); 
     299        $categories = get_categories($args); 
     300        if(is_array($categories)&&!empty($categories)): 
     301            $html = '<select name="wpvp_category" class="wpvp_select">'; 
     302            foreach($categories as $category){ 
     303                $html .= '<option '; 
     304                $html .= ' value="'.$category->term_id.'" '.selected($selected,$category->term_id,false).'>'; 
     305                $html .= $category->cat_name.'</option>'; 
     306            } 
     307            $html.= '</select>'; 
     308        endif; 
     309        if($echo) 
     310            echo $html; 
     311        else 
     312            return $html; 
     313    } 
     314    /** 
     315    *Load template file (include or require) 
     316    *@access static 
     317    **/ 
     318    static function wpvp_load_template_file($file_name,$include=true,$data=array()){ 
     319        $file_path = get_template_directory().'/'.$file_name.'.php'; 
     320        $plugin_base = plugin_basename( __FILE__ ); 
     321        $plugin_base = explode('/',$plugin_base); 
     322        if(!file_exists($file_path)){ 
     323            $file_path = plugin_dir_path(dirname(__FILE__)).'templates/'.$file_name.'.php'; 
     324        } 
     325        if(file_exists($file_path)): 
     326            if($include) 
     327                include($file_path); 
     328            else 
     329                require $file_path; 
     330        endif; 
     331    } 
    284332} 
    285333?> 
  • wp-video-posts/trunk/css/style.css

    r1017034 r1017663  
    4646} 
    4747.wpvp_upload_progress{ 
    48     font-weight:600; 
    4948    border-color: #999; 
    5049    background-color: #ffffff; 
     
    6059    background-image: -webkit-linear-gradient(top,white 0,#EBEBEB 100%); 
    6160    background-image: linear-gradient(to bottom,white 0,#EBEBEB 100%); 
    62     height:49px; 
     61    background-image: url('../images/upload_progress.gif'); 
     62    background-size: auto 100%; 
     63    background-repeat: no-repeat; 
     64    text-align: center; 
     65    font-weight: normal; 
    6366} 
    6467.wpvp_upload_progress img.wpvp_progress_gif{ 
  • wp-video-posts/trunk/js/wpvp-front-end.js

    r1017034 r1017663  
    22file_upload_limit = wpvp_vars.file_upload_limit; 
    33wpvp_ajax = wpvp_vars.wpvp_ajax; 
     4var files; 
    45jQuery(document).ready(function(){ 
    5     var fileSize; 
    6     jQuery('.wpvp-submit').click(function(e){ 
    7         e.preventDefault(); 
    8         var errors = false; 
    9         var form = jQuery('form.wpvp-processing-form'); 
    10         var action = form.attr('id'); 
    11         var formD = form.serialize(); 
    12         form.find('.wpvp_require').each(function(){ 
    13             jQuery(this).addClass('cjecled'); 
    14             if(!jQuery(this).val()){ 
    15                 errors = true; 
    16                 jQuery(this).next('.wpvp_error').html('This field is required.'); 
    17             } else { 
    18                 jQuery(this).next('.wpvp_error').html(''); 
    19             } 
    20         }).promise().done(function(){ 
    21             if(errors){ 
    22                 return false; 
    23             } else { 
    24                 if(window.fileSize>file_upload_limit){ 
    25                     errors = true; 
    26                     jQuery('.wpvp_file_error').html('Video size exceeds allowed '+upload_size); 
    27                     return false; 
    28                 } else{ 
     6    jQuery('.wpvp-submit').on('click',wpvp_uploadFiles); 
     7    jQuery('input#async-upload').on('change', wpvp_prepareUpload); 
     8}); 
     9// Grab the files and set them to our variable 
     10function wpvp_prepareUpload(event){ 
     11    if(typeof event==='undefined') 
     12        var event = e; 
     13    files = event.target.files; 
     14} 
     15// Catch the form submit and upload the files 
     16function wpvp_uploadFiles(event){ 
     17    if(typeof event==='undefined') 
     18        var event = e; 
     19    event.stopPropagation(); 
     20    event.preventDefault(); 
     21    var action = jQuery(this).attr('action'); 
     22    var deferred_validation = jQuery.Deferred(); 
     23    error = false; 
     24    var form = jQuery('form.wpvp-processing-form'); 
     25    var formData = form.serialize(); 
     26    form.find('.wpvp_require').each(function(){ 
     27        if(!jQuery(this).val()){ 
     28            error = true; 
     29            jQuery(this).next('.wpvp_error').html('This field is required.'); 
     30        } else { 
     31            jQuery(this).next('.wpvp_error').html(''); 
     32        } 
     33    }).promise().done(function(){ 
     34        deferred_validation.resolve(); 
     35    }); 
     36    deferred_validation.done(function(){ 
     37        if(error) 
     38            return false; 
     39        if(action=='update'){ 
     40            var data = { 
     41                action: 'wpvp_process_update', 
     42                'cookie': encodeURIComponent(document.cookie), 
     43                formData: formData 
     44            }; 
     45            jQuery.post(wpvp_ajax,data,function(response){ 
     46                var obj = JSON.parse(response); 
     47                var status = ''; 
     48                if(obj.hasOwnProperty('status')) 
     49                    status = obj.status; 
     50                var msg = []; 
     51                if(obj.hasOwnProperty('msg')) 
     52                    msg = obj.msg; 
     53                if(msg instanceof Array){ 
     54                    var msgBlock = jQuery('.wpvp_msg'); 
     55                    msgBlock.html(''); 
     56                    for(var i=0; i < msg.length; i++){ 
     57                        msgBlock.append(msg[i]); 
     58                    } 
     59                } 
     60            }); 
     61        } else if(action=='create'){ 
     62            var deferred = jQuery.Deferred(); 
     63            var errors = []; 
     64            // Pre-loader Start 
     65            wpvp_progressBar(1); 
     66            // Check files 
     67            error = false; 
     68            jQuery.each(files, function(key, value){ 
     69                if(value.size>file_upload_limit){ 
     70                    error = true; 
     71                    errors.push(value.name+' file exceeds allowed size.'); 
     72                } 
     73                if(key==(files.length-1)) 
     74                    deferred.resolve(); 
     75            }); 
     76            deferred.done(function(){ 
     77                if(error){ 
     78                    if(errors instanceof Array){ 
     79                        for(x=0;x<errors.length;x++){ 
     80                            jQuery('.wpvp_file_error').append(errors[x]+'<br />'); 
     81                        } 
     82                    } 
     83                    //hide loader 
     84                    wpvp_progressBar(0); 
     85                } else { 
     86                    //clear file errors 
    2987                    jQuery('.wpvp_file_error').html(''); 
    30                 } 
    31                 if(!errors){ 
    32                     console.log(action); 
    33                     if(action=='wpvp-update-video'){ 
    34                         var data = { 
    35                             action: 'wpvp_process_update', 
    36                             'cookie': encodeURIComponent(document.cookie), 
    37                             formData: formD 
    38                         }; 
    39                         jQuery.post(wpvp_ajax,data,function(response){ 
    40                             var obj = JSON.parse(response); 
    41                             var status = ''; 
    42                             if(obj.hasOwnProperty('status')) 
    43                                 status = obj.status; 
    44                             var msg = []; 
    45                             if(obj.hasOwnProperty('msg')) 
    46                                 msg = obj.msg; 
    47                             if(msg instanceof Array){ 
    48                                 var msgBlock = jQuery('.wpvp_msg'); 
    49                                 msgBlock.html(''); 
    50                                 for(var i=0; i < msg.length; i++){ 
    51                                     msgBlock.append(msg[i]); 
     88                    //process form 
     89                    var data = { 
     90                        action: 'wpvp_process_form', 
     91                        'cookie': encodeURIComponent(document.cookie), 
     92                        data: formData 
     93                    }; 
     94                    var wpvp_form_done = jQuery.post(wpvp_ajax,data); 
     95                    jQuery.when(wpvp_form_done).done(function(response){ 
     96                        var obj = JSON.parse(response); 
     97                        var status = ''; 
     98                        var msg = ''; 
     99                        var postid = 0; 
     100                        if(obj.hasOwnProperty('status')) 
     101                            status = obj.status; 
     102                        if(obj.hasOwnProperty('msg')) 
     103                            msg = obj.msg; 
     104                        if(obj.hasOwnProperty('post_id')) 
     105                            postid = obj.post_id;    
     106                        var data = new FormData(); 
     107                        jQuery.each(files, function(key, value){ 
     108                            data.append(key, value); 
     109                            data.append('postid',postid); 
     110                        }); 
     111                        jQuery.ajax({ 
     112                            url: wpvp_ajax+'?action=wpvp_process_files', 
     113                            type: 'POST', 
     114                            data: data, 
     115                            cache: false, 
     116                            dataType: 'json', 
     117                            processData: false, // Don't process the files 
     118                            contentType: false, // Set content type to false 
     119                            success: function(obj, textStatus, jqXHR){ 
     120                                var status = ''; 
     121                                var errors = []; 
     122                                var html = ''; 
     123                                var url = ''; 
     124                                if(obj.hasOwnProperty('status')) 
     125                                    status = obj.status; 
     126                                if(obj.hasOwnProperty('errors')) 
     127                                    errors = obj.errors; 
     128                                if(obj.hasOwnProperty('html')) 
     129                                    html = obj.html; 
     130                                if(obj.hasOwnProperty('url')) 
     131                                    url = obj.url; 
     132                                if(status=='success'){ 
     133                                    jQuery('.wpvp_file_error').html(''); 
     134                                    form.html(html); 
     135                                    if(url!=''){ 
     136                                        setTimeout(function(){ 
     137                                            window.location.href = url; 
     138                                        },5000); 
     139                                    } 
     140                                } else if(status=='error'){ 
     141                                    if( errors instanceof Array){ 
     142                                        for(i=1; i<errors.length ; i++){ 
     143                                            jQuery('.wpvp_file_error').append(errors[i]+'<br />'); 
     144                                        } 
     145                                    } 
    52146                                } 
     147                            }, 
     148                            error: function(jqXHR, textStatus, errorThrown){ 
     149                                // Handle errors here 
     150                                console.log('ERRORS: ' + textStatus); 
     151                                wpvp_progressBar(0); 
    53152                            } 
    54153                        }); 
    55                     } else { 
    56                         wpvp_progressBar(); 
    57                         form.submit(); 
    58                     } 
     154                    }); 
    59155                } 
    60             } 
    61         }); 
     156            }); 
     157        } 
    62158    }); 
    63     jQuery('input[name=async-upload]').bind('change', function() { 
    64         window.fileSize = this.files[0].size; 
    65     }); 
    66 }); 
    67  
    68 // TODO: js check if not implemented 
    69 function wpvp_openFile(file) { 
    70     var extension = file.substr( (file.lastIndexOf('.') +1) ); 
    71     switch(extension) { 
    72     case 'jpg': 
    73         case 'png': 
    74         case 'gif': 
    75             alert('was jpg png gif'); 
    76                 break; 
    77         case 'zip': 
    78         case 'rar': 
    79             alert('zip,rar'); 
    80                 break; 
    81         case 'pdf': 
    82                 alert('pdf'); 
    83                 break; 
    84         default: 
    85             alert('else'); 
     159} 
     160function wpvp_progressBar(show) { 
     161    if(show){ 
     162        jQuery('.wpvp_upload_progress').css('display','block'); 
     163    } else { 
     164        jQuery('.wpvp_upload_progress').css('display','none'); 
    86165    } 
    87 }; 
    88          
    89 function wpvp_progressBar() { 
    90     jQuery('.wpvp_upload_progress').css('display','block'); 
    91     return true; 
    92166};   
  • wp-video-posts/trunk/options/wpvp-options.php

    r1017034 r1017663  
    2121    $wpvp_splash = ($_POST['wpvp_splash']=='yes') ? true : false; 
    2222    $wpvp_clean_url = ($_POST['wpvp_clean_url']=='yes') ? true : false; 
     23    $wpvp_encode_format = empty($_POST['wpvp_encode_format']) ? array() : $_POST['wpvp_encode_format']; 
    2324    /* FFMPEG options */ 
    2425    $wpvp_ffmpeg_ar = isset($_POST['wpvp_ffmpeg_ar']) ? $_POST['wpvp_ffmpeg_ar'] : 44100; 
     
    5657    update_option('wpvp_splash',$wpvp_splash); 
    5758    update_option('wpvp_clean_url',$wpvp_clean_url); 
     59    update_option('wpvp_encode_format',$wpvp_encode_format); 
    5860?> 
    5961<div class="updated"><p><strong><?php _e('Options saved.' ); ?></strong></p></div> 
     
    7375    $wpvp_splash = get_option('wpvp_splash',true) ? get_option('wpvp_splash',true) : true; 
    7476    $wpvp_clean_url = get_option('wpvp_clean_url',false) ? get_option('wpvp_clean_url',false) : false; 
     77    $wpvp_encode_format = get_option('wpvp_encode_format',false) ? get_option('wpvp_encode_format') : array(); 
    7578    /* FFMPEG options */ 
    7679    $wpvp_ffmpeg_options = array(); 
     
    197200            </ul> 
    198201        </p> 
    199         <?php if($ffmpeg_ext):?> 
     202        <?php if($ffmpeg_ext): 
     203        ?> 
     204        <p style="display:none;"> 
     205            <strong><?php _e('Encode to additional formats:');?></strong> 
     206            <input type="checkbox" name="wpvp_encode_format[]" value="webm" <?php checked(in_array('webm',$wpvp_encode_format),1);?> /> <?php _e('webm');?><br /> 
     207            <input type="checkbox" name="wpvp_encode_format[]" value="ogg" <?php checked(in_array('ogg',$wpvp_encode_format),1);?> /> <?php _e('ogg/ogv');?> 
     208        </p> 
    200209        <p> 
    201210            <h3><?php _e('Advanced Options for FFMPEG');?></h3> 
  • wp-video-posts/trunk/readme.txt

    r1017034 r1017663  
    55Requires at least: 3.2.2 
    66Tested up to: 4.0 
    7 Stable tag: 3.2 
     7Stable tag: 3.3 
    88 
    99Upload videos to create custom video posts. With FFMPEG installed, it encodes 
     
    3030[wpvp_embed type=vimeo video_code=23117398 width=500 height=281] 
    3131 
     32You can also use our general shortcode to display a video player anywhere on your site (video need to be of mp4 format):  
     33[wpvp_player src=http://example.com/path/to/video/file.mp4 splash=http://example.com/path/to/image/file.jpg width=500 height=281] 
     34 
     35You can also overwrite our template files for the front end uploader / editor if you need to add your styling.  
     36If you're going to do so, please copy the files from wp-video-posts/templates/ into your own theme: 
     37 
     38- wpvp-frontend-uploader.php 
     39- wpvp-frontend-editor.php 
     40 
     41Remember to keep the fields and field names as is in order for the form processing to work properly. 
     42 
    3243= Instructions = 
    33441. After install, go to the Dashboard. 
     
    123134 
    124135== Changelog == 
     136= 3.3 =  
     137- Rewrote js processing of uploading / editing: added ajax forms processing including file uploading 
     138- Changed public functions to static: wpvp_return_bytes(), wpvp_max_upload_size() 
     139- Moved video upload / edit html into the template files. Users can now overwrite these template files with their own in their template. 
     140 
    125141= 3.2 =  
    126142- Added an option in the settings to make a video description field for the front end uploader optional. 
  • wp-video-posts/trunk/wpvp.php

    r1017034 r1017663  
    44Plugin URI: http://cmstactics.com 
    55Description: WP Video Posts creates a custom post for uploaded videos. You can upload videos of different formats (FLV, F4V, MP4, AVI, MOV, 3GP and WMV) and the plugin will convert it to MP4 and play it using Flowplayer.   
    6 Version: 3.2 
     6Version: 3.3 
    77Author: Alex Rayan, cmstactics 
    88Author URI: http://cmstactics.com 
     
    2424    * @var string WPVPMediaEncoder version 
    2525    */ 
    26     public $version = '3.2'; 
     26    public $version = '3.3'; 
    2727    public static function init(){ 
    2828        $class = __CLASS__; 
     
    8181        add_action('wp_ajax_wpvp_process_update',array(&$this,'wpvp_process_update')); 
    8282        add_action('wp_ajax_nopriv_wpvp_process_update',array(&$this,'wpvp_process_update')); 
     83        add_action('wp_ajax_wpvp_process_files',array(&$this,'wpvp_process_files')); 
     84        add_action('wp_ajax_wpvp_process_form',array(&$this,'wpvp_process_form')); 
     85        $wpvp_allow_guest = (get_option('wpvp_allow_guest','no')=='yes') ? true : false; 
     86        if($wpvp_allow_guest){ 
     87            add_action('wp_ajax_nopriv_wpvp_process_files',array(&$this,'wpvp_process_files')); 
     88            add_action('wp_ajax_nopriv_wpvp_process_form',array(&$this,'wpvp_process_form')); 
     89        } 
    8390    } 
    8491    /** 
     
    216223        } 
    217224        wp_enqueue_script( 'wpvp_front_end_js',plugins_url('/js/', __FILE__).'wpvp-front-end.js',array('jquery'),NULL ); 
    218         $helper = new WPVP_Helper();  
    219         $upload_size = $helper->wpvp_max_upload_size(); 
    220         $video_limit =  $helper->wpvp_return_bytes($upload_size); 
     225        $upload_size = WPVP_Helper::wpvp_max_upload_size(); 
     226        $video_limit =  WPVP_Helper::wpvp_return_bytes($upload_size); 
    221227        $wpvp_vars = array('upload_size'=>$upload_size,'file_upload_limit'=>$video_limit,'wpvp_ajax'=>admin_url( 'admin-ajax.php' )); 
    222228        wp_localize_script('wpvp_front_end_js','wpvp_vars',$wpvp_vars); 
     
    574580        die(); 
    575581    } 
     582    /** 
     583    *Ajax process files upload from the front end 
     584    *@access public 
     585    **/ 
     586    public function wpvp_process_files(){ 
     587        require_once( ABSPATH . 'wp-admin/includes/file.php' ); 
     588        $helper = new WPVP_Helper();  
     589        $options = $helper->wpvp_get_full_options(); 
     590        $newMedia = new WPVP_Encode_Media($options); 
     591        $upload_size_unit = WPVP_Helper::wpvp_max_upload_size(); 
     592        $error = false; 
     593        $errors = array(); 
     594        $video_limit = WPVP_Helper::wpvp_return_bytes($upload_size_unit); 
     595        $default_ext = array('video/mp4','video/x-flv'); 
     596        $video_types = get_option('wpvp_allowed_extensions',$default_ext) ? get_option('wpvp_allowed_extensions',$default_ext) : $default_ext; 
     597        $ext_list = implode(', ',$video_types); 
     598        $post_id = isset($_POST['postid']) ? (int)$_POST['postid'] : 0; 
     599        if(!$post_id){ 
     600            echo json_encode(array('status'=>'error','errors'=>array(0=>__('Invalid post id.')))); 
     601            die(); 
     602        } 
     603        foreach($_FILES as $file){ 
     604            if(in_array($file['type'],$video_types)){ 
     605                if($file['size']>$video_limit){ 
     606                    $error = true; 
     607                    $errors[] = __('The file exceeds the maximum upload size.'); 
     608                } else { 
     609                    //process file 
     610                    $override = array( 'test_form' => FALSE ); 
     611                    $uploaded_file = wp_handle_upload($file, $override); 
     612                    if($uploaded_file){ 
     613                        $attachment = array( 
     614                            'post_title' => $file['name'], 
     615                            'post_content' => '', 
     616                            'post_type' => 'attachment', 
     617                            'post_parent' => 0, 
     618                            'post_mime_type' => $file['type'], 
     619                            'guid' => $uploaded_file['url'] 
     620                        ); 
     621                        $id = wp_insert_attachment($attachment,$uploaded_file[ 'file' ]); 
     622                        wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $uploaded_file['file'] ) ); 
     623                        $encodedVideoPost = $newMedia->wpvp_encode($id,$post_id); 
     624                        if(!$encodedVideoPost){ 
     625                            $errors[] = __('There was an error creating a video post.'); 
     626                        } else{ 
     627                            $post_url = get_permalink($post_id); 
     628                            $msg= __('Successfully uploaded. You will be redirected in 5 seconds.'); 
     629                            $msg.= __('If you are not redirected in 5 seconds, go to ').'<a href="'.$post_url.'">'.__('uploaded video').'</a>.'; 
     630                        } 
     631                        $data=array(); 
     632                        $data['post_id'] = $post_id; 
     633                        $data['html'] = $msg; 
     634                        $data['url'] = $post_url; 
     635                        $data['status'] = 'success'; 
     636                    } else { 
     637                        $error = true; 
     638                        $errors[] = $uploaded_file['error']; 
     639                    } 
     640                    unset($file); 
     641                } 
     642            } else { 
     643                $error = true; 
     644                $errors[] = __('The file extension is not supported: '.$file['type'].'. Supported extensions are: '.$ext_list.'.'); 
     645            } 
     646        } 
     647        if($error){ 
     648            $data = array('status' => 'error', 'errors' => $errors); 
     649            //delete tmp post if video errored out 
     650            wp_delete_post( $post_id, true ); 
     651        } else { 
     652            // send email notification to an admin 
     653            $admin = get_bloginfo('admin_email'); 
     654            $subject = get_bloginfo('name').': New Video Submitted for Review'; 
     655            $message = __('New video uploaded for review on ').get_bloginfo('name').'. '.__('Moderate the ').'<a href="'.get_bloginfo('url').'/?post_type=videos&p='.$post_id.'">'.__('uploaded video').'</a>.'; 
     656            $send_draft_notice = wp_mail($admin, $subject, $message); 
     657        } 
     658        echo json_encode($data); 
     659        die(); 
     660    } 
     661    /** 
     662    *Ajax process form upload 
     663    *@access public 
     664    **/ 
     665    public function wpvp_process_form(){ 
     666        global $current_user; 
     667        get_currentuserinfo(); 
     668        $user_id = $current_user->ID; 
     669        $wpvp_allow_guest = get_option('wpvp_allow_guest','no') ? get_option('wpvp_allow_guest','no') : 'no'; 
     670        if($wpvp_allow_guest=='yes') 
     671            $user_id = (int)get_option('wpvp_guest_userid'); 
     672        $data = array(); 
     673        parse_str($_POST['data'],$data); 
     674        $helper = new WPVP_Helper(); 
     675        $category = (int)$data['wpvp_category']; 
     676        if ( wp_verify_nonce( $data['wpvp_file_upload_field'], 'wpvp_file_upload' ) ) { 
     677            $wpvp_post_status = get_option('wpvp_default_post_status','pending'); 
     678            $post = array( 
     679                'comment_status' => 'open', 
     680                'post_author' => $user_id, 
     681                'post_category' => array($category), 
     682                'post_content' => $data['wpvp_desc'], 
     683                'post_title' => $data['wpvp_title'], 
     684                'post_type' => 'videos', 
     685                'post_status' => $wpvp_post_status, 
     686                'tags_input' => $data['wpvp_tags'] 
     687            ); 
     688            $post_id = wp_insert_post($post); 
     689            if(!is_wp_error($post_id)){ 
     690                $response = array('status'=>'success','post_id'=>$post_id); 
     691            } else { 
     692                $response = array('status'=>'error','msg'=>$post_id->get_error_message()); 
     693            } 
     694        } else { 
     695            $response = array('status'=>'error','msg'=>__('Invalid referrer.')); 
     696        } 
     697        echo json_encode($response); 
     698        die(); 
     699    } 
    576700} 
    577701endif; 
Note: See TracChangeset for help on using the changeset viewer.