$ids) { //Load Settings $settings = (array)get_option("webtv_".$service); foreach ($ids as $post_id) { //GetEmbedCode $resp = webtv_getembed_code($post_id,$service,$settings); if ($resp) unset($ids[$post_id]); } $webtvembedqueue[$service] = $ids; if (!empty($ids)) $reschedule = true; } update_option( 'webtv_embed_queue', $webtvembedqueue ); //Si existen elementos en la cola de getEmbed programa el cron para dentro de 5 minutos if ($reschedule) { wp_clear_scheduled_hook( 'webtv_getembed' ); wp_schedule_single_event(time()+300, 'webtv_getembed'); } } function webtv_getembed_code($post_id,$service,$settings) { $poststatus = (array)get_post_meta($post_id, '_webtv_status', true); $uploadstatus = $poststatus[$service]['upload']; $embedstatus = $poststatus[$service]['embed']; $videodata = $poststatus[$service]['data']; if (function_exists('getembed_'.$service)) { $response = call_user_func('getembed_'.$service,$settings,$videodata); if ($response['retry'] == 0) { $return = true; //sacarlo de la cola } else { $return = false; //intentar de nuevo publicar } if(empty($response)) { $embedstatus['status'] = 'error'; $embedstatus['status_msg'] = _("No response from $service"); } if($response['error']) { $embedstatus['status'] = 'error'; $embedstatus['status_msg'] = $response['error_description'] . " " . $response['status_description']; $uploadstatus['status_msg'] = $response['error_description'] . " " . $response['status_description']; } else { $embedstatus['status'] = 'queued'; $embedstatus['status_msg'] = $response['error_description'] . " " . $response['status_description']; } if(!empty($response['embed'])) { $embedstatus['status'] = 'completed'; $embedstatus['status_msg'] = _("check custom fields"); $uploadstatus['status_msg'] = _("completed"); //unset basic data unset($response['service']); unset($response['status']); unset($response['status_description']); unset($response['error']); unset($response['error_description']); unset($response['retry']); //Insert into custom fields foreach ($response as $customfield => $data) { add_post_meta($post_id,'webtv_'.$service.'_'.$customfield,$data,true); $videodata[$customfield] = $data; } //Autopublish post if enabled $postoptions = get_post_meta($post_id, '_webtv_post_options',true); $autopublish = false; if (!empty($postoptions)) { $globalopts = $postoptions['global']; if ((isset($globalopts['autopost'])) && ($globalopts['autopost'] == 'on')) $autopublish = true; } if (($autopublish) && (get_post_status($post_id) === 'draft')) { wp_publish_post($post_id); } } $poststatus[$service]['upload'] = $uploadstatus; $poststatus[$service]['embed'] = $embedstatus; $poststatus[$service]['data'] = $videodata; add_post_meta($post_id, '_webtv_status', $poststatus, true) or update_post_meta($post_id, '_webtv_status', $poststatus); return $return; } return true; //Sacarlo de la cola } function webtv_publish_video($entry,$service,$settings,$options) { $post_id = $entry['post_id']; $publish = false; if (isset($settings['enabled']) && ($settings['enabled'] == 1)) { $publish = true; } if($publish) { unset($settings['enabled']); $poststatus = (array)get_post_meta($post_id, '_webtv_status', true); $driver = $poststatus[$service]['upload']; if ($driver['status'] == 'error') return true; //sacarlo de la cola $driver['count']++; if ($driver['count'] > $options['attemps']) { $driver['status'] = 'error'; $driver['status_msg'] = sprintf(_('Impossible to upload video on %d attemps'),$options['attemps']); $poststatus[$service]['upload'] = $driver; add_post_meta($post_id, '_webtv_status', $poststatus, true) or update_post_meta($post_id, '_webtv_status', $poststatus); return true; //sacarlo de la cola } if (function_exists('upload_'.$service)) { $response = call_user_func('upload_'.$service,$settings,$entry); if ($response['retry'] == 0) { $return = true; //sacarlo de la cola } else { $return = false; //intentar de nuevo publicar } if(empty($response)) { $driver['status'] = 'error'; $driver['status_msg'] = _("No response from $service"); } if($response['error']) { $driver['status'] = 'error'; $driver['status_msg'] = $response['error_description']; } if(!empty($response['video_id'])) { $driver['status'] = 'completed'; $driver['status_msg'] = $response['status'] . " " . $response['status_description']; $poststatus[$service]['embed'] = array( 'status' => 'queued', 'status_msg' => 'scheduled to get the embed code'); //unset basic data unset($response['service']); unset($response['status']); unset($response['status_description']); unset($response['error']); unset($response['error_description']); unset($response['retry']); //Insert into custom fields foreach ($response as $customfield => $data) { add_post_meta($post_id,'webtv_'.$service.'_'.$customfield,$data,true); $poststatus[$service]['data'][$customfield] = $data; } //Insert into GetEmbed queue here if some upload gives a timeout, just to be sure $webtvembedqueue = (array)get_option( 'webtv_embed_queue' ); if (empty($webtvembedqueue)) add_option('webtv_embed_queue', array()); $post_ids = (array)$webtvembedqueue[$service]; if( !array_key_exists( $post_id, $post_ids ) ) { $post_ids[ $post_id ] = $post_id; $webtvembedqueue[$service] = $post_ids; } update_option( 'webtv_embed_queue', $webtvembedqueue ); } $poststatus[$service]['upload'] = $driver; add_post_meta($post_id, '_webtv_status', $poststatus, true) or update_post_meta($post_id, '_webtv_status', $poststatus); return $return; } } $poststatus = (array)get_post_meta($post_id, '_webtv_status', true); $driver = $poststatus[$service]['upload']; $driver['status'] = 'error'; $driver['status_msg'] = _("Please check webtv settings"); $poststatus[$service]['upload'] = $driver; add_post_meta($post_id, '_webtv_status', $poststatus, true) or update_post_meta($post_id, '_webtv_status', $poststatus); return true; //sacarlo de la cola } function webtv_upload_video() { $webtvqueue = (array)get_option( 'webtv_upload_queue' ); $reschedule = false; if (!empty($webtvqueue)) { $options = get_option("webtv"); foreach ($webtvqueue as $service => $ids) { //Load Settings $settings = (array)get_option("webtv_".$service); foreach ($ids as $post_id) { //Get Post info $post = wp_get_single_post($post_id); $entry['post_id'] = $post_id; $entry['titulo'] = $post->post_title; $entry['desc'] = $post->post_content; $entry['tags'] = implode (',', $post->tags_input); //Get File info $fdetails = (array)get_post_meta($post_id,"_webtv_file_details",true); $entry['fileinfo'] = $fdetails['full_path']; $entry['content_type'] = $fdetails['content_type']; $entry['filesize'] = $fdetails['size']; //Upload file $resp = webtv_publish_video($entry,$service,$settings,$options); if ($resp) unset($ids[$post_id]); //descomentar al terminar pruebas } $webtvqueue[$service] = $ids; if (!empty($ids)) $reschedule = true; } if (isset($webtvqueue[0])) unset($webtvqueue[0]); update_option( 'webtv_upload_queue', $webtvqueue ); } //Si existen elementos en la cola de subida programa el cron de subida para dentro de 5 minutos if ($reschedule) { wp_clear_scheduled_hook( 'webtv_upload' ); wp_schedule_single_event(time()+300, 'webtv_upload'); } //Se programa el cron para obtener el embed code de los videos if( !wp_next_scheduled( 'webtv_getembed' ) ) { wp_clear_scheduled_hook( 'webtv_getembed' ); wp_schedule_single_event(time(), 'webtv_getembed'); } } function webtv_display_status() { global $post_ID, $temp_ID; $post_id = (int) (0 == $post_ID ? $temp_ID : $post_ID); /*$url = get_settings('siteurl'); $url = 'http://webtv.webstratega.com/wp-content/plugins/'.$plugin = dirname(plugin_basename(__FILE__)).'/includes/'; $uploaddir = '/'.get_option( 'upload_path' );*/ //$uploaddir = '/'.get_option( 'upload_path' ).'/webtv'; //A decidir si guardar dentro de subdir if ($post_id < 1) { $message = _("You need to Save Draft before upload a video"); echo '
Debug
"; $options = get_option("webtv"); foreach ($options['services'] as $driver) { print_r($driver); echo "