Видео (модуль phpFOX 3)

Форум поддержки движка социальной сети phpFOX.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Видео (модуль phpFOX 3)

Сообщение Slash » Вт мар 22, 2016 10:25 am

Удаление лайков видеоролика - если удаляем новость о добавленном видео со стены, видео остается в разделе видео (полностью удалить видео можно только в разделе видео). Но разработчики написали код таким образом, что при удалении видео со стены, так же удаляются его лайки полностью, то есть видео осталось, мы удалили только лайки. По моему, если осталось видео, то должны остаться и лайки. Я решил так эту проблему:
Открываем: module/feed/include/service/process.class.php, находим:

Код: Выделить всё

            // Delete likes that belonged to this feed 
            
$this->database()->delete(Phpfox::getT('like'), 'type_id = "'$aFeed['type_id'] .'" AND item_id = ' $aFeed['item_id']); 

Меняем на:

Код: Выделить всё

            # Delete likes that belonged to this feed
            
if ($aFeed['type_id'] != 'video')
            {
                
$this->database()->delete(Phpfox::getT('like'), 'type_id = "'$aFeed['type_id'] .'" AND item_id = ' $aFeed['item_id']);
            } 

Открываем: module/video/include/service/process.class.php, находим:

Код: Выделить всё

            (Phpfox::isModule('comment') ? Phpfox::getService('comment.process')->deleteForItem(null$aVideo['video_id'], 'video') : null);        
            (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->delete('video'$aVideo['video_id']) : null);
            (
Phpfox::isModule('feed') ? Phpfox::getService('feed.process')->delete('comment_video'$aVideo['video_id']) : null); 

Добавляем выше:

Код: Выделить всё

            # Удаление лайков видео (Таблица: like)
            
$this->database()->delete(Phpfox::getT('like'), 'type_id = \'video\' AND item_id = ' . (int) $aVideo['video_id']); 

Читайте ещё: При добавлении видео с YouTube выходит ошибка
Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Видео (модуль phpFOX 3)

Сообщение Slash » Ср июл 06, 2016 10:13 pm

Изменил отображение видео на стене, сделал его более красивее, по моему мнению, конечно.
И так, открываем: module/video/include/service/callback.class.php, находим и заменяем полностью код функции getActivityFeed, так:

Код: Выделить всё

    public function getActivityFeed($aItem, $aCallback = null, $bIsChildItem = false)
    {                
        if 
(!Phpfox::getUserParam('video.can_access_videos'))
        {
            return false;
        }

        if ($aCallback === null)
        {
            $this->database()->select(Phpfox::getUserField('u', 'parent_') . ', ')->leftJoin(Phpfox::getT('user'), 'u', 'u.user_id = v.parent_user_id');
        }

        if ($bIsChildItem)
        {
            $this->database()->select(Phpfox::getUserField('u2') . ', ')->join(Phpfox::getT('user'), 'u2', 'u2.user_id = v.user_id');
        }

        if (Phpfox::getParam('video.vidly_support'))
        {
            $this->database()->select('vidly.vidly_url_id, ')->leftJoin(Phpfox::getT('vidly_url'), 'vidly', 'vidly.video_id = v.video_id');
        }

        if(Phpfox::isModule('like'))
        {
            $this->database()->select('l.like_id AS is_liked, ')
                ->leftJoin(Phpfox::getT('like'), 'l', 'l.type_id = \'video\' AND l.item_id = v.video_id AND l.user_id = ' . Phpfox::getUserId());
        }

        $aRow = $this->database()->select('v.video_id, v.module_id, v.item_id, v.title, v.time_stamp, v.total_comment, v.total_like, v.image_path, v.image_server_id, vt.text_parsed')
            ->from(Phpfox::getT('video'), 'v')
            ->leftJoin(Phpfox::getT('video_text'), 'vt', 'vt.video_id = v.video_id')
            ->where('v.video_id = ' . (int) $aItem['item_id'])
            ->execute('getSlaveRow');        

        if 
(!isset($aRow['video_id']))
        {
            return false;
        }

        if ($bIsChildItem)
        {
            $aItem = $aRow;
        }

        if ((defined('PHPFOX_IS_PAGES_VIEW') && !Phpfox::getService('pages')->hasPerm(null, 'video.view_browse_videos'))
            || (!defined('PHPFOX_IS_PAGES_VIEW') && $aRow['module_id'] == 'pages' && !Phpfox::getService('pages')->hasPerm($aRow['item_id'], 'video.view_browse_videos'))    
            
)
        {
            return false;
        }            

        $aReturn 
= array(
            'feed_title'        => $aRow['title'],
            'feed_link'         => Phpfox::permalink('video', $aRow['video_id'], $aRow['title']),
            'feed_content'      => $aRow['text_parsed'],
            'total_comment'     => $aRow['total_comment'],
            'feed_total_like'   => $aRow['total_like'],
            'feed_is_liked'     => (isset($aRow['is_liked']) ? $aRow['is_liked'] : false),
            'feed_icon'         => Phpfox::getLib('image.helper')->display(array('theme' => 'module/video.png', 'return_url' => true)),
            'time_stamp'        => $aRow['time_stamp'],            
            
'enable_like'       => true,            
            
'comment_type_id'   => 'video',
            'like_type_id'      => 'video',
            'custom_data_cache' => $aRow
        
);
        
        if 
($aRow['module_id'] == 'pages')
        {
            $aRow['parent_user_id']   = '';
            $aRow['parent_user_name'] = '';
        }        

        if 
(empty($aRow['parent_user_id']))
        {
            $aReturn['feed_info'] = Phpfox::getPhrase('feed.shared_a_video');
        }    

        if 
($aCallback === null)
        {            
            if 
(!empty($aRow['parent_user_name']) && !defined('PHPFOX_IS_USER_PROFILE') && empty($_POST))
            {
                $aReturn['parent_user'] = Phpfox::getService('user')->getUserFields(true, $aRow, 'parent_');
            }

            if (!PHPFOX_IS_AJAX && defined('PHPFOX_IS_USER_PROFILE') && !empty($aRow['parent_user_name']) && $aRow['parent_user_id'] != Phpfox::getService('profile')->getProfileUserId())
            {
                $aReturn['feed_mini']         = true;
                $aReturn['feed_mini_content'] = Phpfox::getPhrase('feed.full_name_posted_a_href_link_a_video_a_on_a_href_profile_parent_full_name_a_s_a_href_profile_link_wall_a', array('full_name' => Phpfox::getService('user')->getFirstName($aItem['full_name']), 'link' => Phpfox::permalink('video', $aRow['video_id'], $aRow['title']), 'profile' => Phpfox::getLib('url')->makeUrl($aRow['parent_user_name']), 'parent_full_name' => $aRow['parent_full_name'], 'profile_link' => Phpfox::getLib('url')->makeUrl($aRow['parent_user_name'])));
                $aReturn['feed_title']        = '';

                unset($aReturn['feed_status'], $aReturn['feed_image'], $aReturn['feed_content']);
            }        
        
}        

        if 
(!PHPFOX_IS_AJAX && defined('PHPFOX_IS_USER_PROFILE') && !empty($aRow['parent_user_name']) && $aRow['parent_user_id'] != Phpfox::getService('profile')->getProfileUserId())
        {
            
        
}
        else
        
{
            if (!empty($aRow['image_path']))
            {
                $sImage = Phpfox::getLib('image.helper')->display(array(
                        'server_id'  => $aRow['image_server_id'],
                        'path'       => 'video.url_image',
                        'file'       => $aRow['image_path'],
                        'suffix'     => '_120',
                        'max_width'  => 450,
                        'max_height' => 337                    
                    
)
                );

                $aReturn['feed_image'] = $sImage;
            }

            if (Phpfox::getParam('video.vidly_support') && !empty($aRow['vidly_url_id']))
            {
                $aReturn['feed_image'] = '<img src="https://vid.ly/' . $aRow['vidly_url_id'] . '/thumbnail1" alt="{$aVideo.title|clean}" style="max-width: 450px; max-height: 337px;" />';
            }

            if (!Phpfox::isMobile())
            {
                $aReturn['feed_image_onclick'] = '$Core.box(\'video.play\', 700, \'id=' . $aRow['video_id'] . '&amp;feed_id=' . (isset($aItem['feed_id']) ? $aItem['feed_id'] : 0) . '&amp;popup=true\', \'GET\'); return false;';
            }
            else
            
{
                $aReturn['no_target_blank'] = true;
            }
        }

        if ($bIsChildItem)
        {
            $aReturn = array_merge($aReturn, $aItem);
        }        

        
(($sPlugin = Phpfox_Plugin::get('video.component_service_callback_getactivityfeed__1')) ? eval($sPlugin) : false);

        return $aReturn;
    }

Затем в файле: theme/frontend/default/style/default/css/layout.css, находим:

Код: Выделить всё

.timeline_holder .activity_feed_content_image img
{
    max-width:300px;    
}

Ниже добавляем:

Код: Выделить всё

.wrapper
{
    display: inline-block; 
    position
: relative;
}

.
band
{
    display: inline-block;
    position: absolute;
    max-width: 440px;
    top: 0px;
    left: 0px;
    color: #FFFFFF;
    font-family: Arial; 
    font
-size: 15px; 
    background
-color: rgba(0, 0, 0, 0.4); 
    padding
: 5px;
}

Открываем файл: module/feed/template/default/block/content.html.php, находим:

Код: Выделить всё

            <div class="activity_feed_content_image"{if isset($aFeed.feed_custom_width)} style="width:{$aFeed.feed_custom_width};"{/if}>
                {if is_array($aFeed.feed_image)}
                    <ul class="activity_feed_multiple_image">
                        {foreach from=$aFeed.feed_image item=sFeedImage}
                            <li>{$sFeedImage}</li>
                        {/foreach}
                    </ul>
                    <div class="clear"></div>
                {else}
                    <a href="{if isset($aFeed.feed_link_actual)}{$aFeed.feed_link_actual}{else}{$aFeed.feed_link}{/if}"{if !isset($aFeed.no_target_blank)} target="_blank"{/if} class="{if isset($aFeed.custom_css)} {$aFeed.custom_css} {/if}{if !empty($aFeed.feed_image_onclick)}{if !isset($aFeed.feed_image_onclick_no_image)}play_link {/if} no_ajax_link{/if}"{if !empty($aFeed.feed_image_onclick)} onclick="{$aFeed.feed_image_onclick}"{/if}{if !empty($aFeed.custom_rel)} rel="{$aFeed.custom_rel}"{/if}{if isset($aFeed.custom_js)} {$aFeed.custom_js} {/if}{if Phpfox::getParam('core.no_follow_on_external_links')} rel="nofollow"{/if}>{if !empty($aFeed.feed_image_onclick)}{if !isset($aFeed.feed_image_onclick_no_image)}<span class="play_link_img">{phrase var='feed.play'}</span>{/if}{/if}{$aFeed.feed_image}</a>                        
                
{/if}
            </div>

И меняем на:

Код: Выделить всё

            <div class="activity_feed_content_image"{if isset($aFeed.feed_custom_width)} style="width:{$aFeed.feed_custom_width};"{/if}>
                {if is_array($aFeed.feed_image)}
                    <ul class="activity_feed_multiple_image">
                        {foreach from=$aFeed.feed_image item=sFeedImage}
                            <li>{$sFeedImage}</li>
                        {/foreach}
                    </ul>
                    <div class="clear"></div>
                {else}
                    {if !empty($aFeed.feed_image_onclick) && !isset($aFeed.feed_image_onclick_no_image)}<div class="wrapper">{/if}
                        <a href="{if isset($aFeed.feed_link_actual)}{$aFeed.feed_link_actual}{else}{$aFeed.feed_link}{/if}"{if !isset($aFeed.no_target_blank)} target="_blank"{/if} class="{if isset($aFeed.custom_css)} {$aFeed.custom_css} {/if}{if !empty($aFeed.feed_image_onclick)}{if !isset($aFeed.feed_image_onclick_no_image)}play_link {/if} no_ajax_link{/if}"{if !empty($aFeed.feed_image_onclick)} onclick="{$aFeed.feed_image_onclick}"{/if}{if !empty($aFeed.custom_rel)} rel="{$aFeed.custom_rel}"{/if}{if isset($aFeed.custom_js)} {$aFeed.custom_js} {/if}{if Phpfox::getParam('core.no_follow_on_external_links')} rel="nofollow"{/if}>
                            {if !empty($aFeed.feed_image_onclick) && !isset($aFeed.feed_image_onclick_no_image)}<span class="play_link_img">{phrase var='feed.play'}</span>{/if}
                            {$aFeed.feed_image}
                        </a>
                    {if !empty($aFeed.feed_image_onclick) && !isset($aFeed.feed_image_onclick_no_image)}
                        <span class="band">{$aFeed.feed_title|shorten:'50':'...'}</span>
                    </div>
                    {/if}                    
                
{/if}
            </div

Чистим кэш движка, готово.

Видео модуль phpFOX 3  - Видео на стене.jpg
 
Видео модуль phpFOX 3  - Видео на стене 2.jpg
 

Если обновить эскиз, то он будет 120 пикселей в ширину. Исправляем:
Открываем: module/video/include/service/process.class.php, находим:

Код: Выделить всё

                    $iSize = 120;            
                    $oImage
->createThumbnail(Phpfox::getParam('video.dir_image') . sprintf($sFileName, ''), Phpfox::getParam('video.dir_image') . sprintf($sFileName, '_' . $iSize), $iSize, $iSize);

И меняем на:

Код: Выделить всё

                    $iSize = 1024;
                    $oImage->createThumbnail(Phpfox::getParam('video.dir_image') . sprintf($sFileName, ''), Phpfox::getParam('video.dir_image') . sprintf($sFileName, '_' . '120'), $iSize, $iSize);
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Видео (модуль phpFOX 3)

Сообщение Slash » Ср июл 13, 2016 1:25 pm

Под видео находится блок, который можно развернуть не зависимо есть у видео описание, теги и категория или нет:
Видео модуль phpFOX 3  - Video.jpg
 

По моему это не правильно, если у видео нет описания, тегов и категории, то и пустой блок незачем выводить.
Я это исправил, немного изменив файл: module/video/template/default/block/detail.html.php, сейчас он у меня выглядит так:

Код: Выделить всё

{if !empty($aVideo.text) || count($aVideo.breadcrumb) || !empty($aVideo.tag_list)}
<
div class="video_info_box">
    <div class="video_info_box_content">
        <div class="video_info_view" itemprop="interactionCount">{if $aVideo.total_view == 0}1{else}{$aVideo.total_view|number_format}{/if}</div>    

        
<ul class="video_info_box_list">
            <li class="full_name first">{$aVideo|user:'':'':50:'':'author'}</li>
            {foreach from=$aVideoDetails key=sKey item=sValue}
            <li>{$sValue} ({$sKey})</li>
            {/foreach}
        </ul>

        {if !empty($aVideo.text)}
        <div class="video_info_box_text" itemprop="description">
            {$aVideo.text|parse|shorten:'100':'video.view_more':true}
        </div>
        {/if}

        {if count($aVideo.breadcrumb) || !empty($aVideo.tag_list)}
        <div class="video_info_box_extra">    
            
{if count($aVideo.breadcrumb)}
            <div class="table">
                <div class="table_left">
                    {phrase var='video.category'}:
                </div>
                <div class="table_right js_allow_video_click">
                {foreach from=$aVideo.breadcrumb name=breadcrumbs item=aBredcrumb}
                {if $phpfox.iteration.breadcrumbs != 1}<div class="p_2">&raquo; {/if}
                    <a href="{$aBredcrumb.1}">{$aBredcrumb.0}</a>
                    {if $phpfox.iteration.breadcrumbs != 1}</div>{/if}
                {/foreach}
                </div>
            </div>
            {/if}

            {if !empty($aVideo.tag_list)}
            <div class="table">
                <div class="table_left">
                    {phrase var='video.tags'}:
                </div>
                <div class="table_right js_allow_video_click">
                {foreach from=$aVideo.tag_list name=tags item=aTag}
                    {if $phpfox.iteration.tags != 1}, {/if}<a href="{if isset($sGroup) && $sGroup !=''}{url link='group.'$sGroup'.video.tag.'$aTag.tag_url''}{else}{url link='video.tag.'$aTag.tag_url''}{/if}">{$aTag.tag_text}</a>
                {/foreach}
                </div>
            </div>
            {/if}    
        
</div>
        {/if}
    </div>    
    
<a href="#" class="video_info_toggle">
        <span class="js_info_toggle_show_more">{phrase var='video.show_more'} {img theme='layout/video_show_more.png'}</span>
        <span class="js_info_toggle_show_less">{phrase var='video.show_less'} {img theme='layout/video_show_less.png'}</span>
    </a>
</
div>
{else}
<
div class="video_info_box_content">
    <div class="video_info_view" itemprop="interactionCount">{if $aVideo.total_view == 0}1{else}{$aVideo.total_view|number_format}{/if}</div>    

    
<ul class="video_info_box_list">
        <li class="full_name first">{$aVideo|user:'':'':50:'':'author'}</li>
        {foreach from=$aVideoDetails key=sKey item=sValue}
        <li>{$sValue} ({$sKey})</li>
        {/foreach}
    </ul>
</
div>
{/if}

Результат:
Видео модуль phpFOX 3  - Video.jpg
 
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Видео (модуль phpFOX 3)

Сообщение Slash » Ср июл 13, 2016 11:03 pm

При просмотре списка видеозаписей с одинаковым тегом, вместо названия, выводится URL тега:
Тег: 1058-1072-1085-1077-1094

Я исправил это так:
Открыть: module/video/include/component/controller/index.class.php, найти:

Код: Выделить всё

            $this->template()->setBreadcrumb(Phpfox::getPhrase('video.topic') . ': ' . $sTagSearchValue, $this->url()->makeUrl('video.tag', $sTagSearchValue), true);

Заменить на:

Код: Выделить всё

            $tagname = Phpfox::getLib('database')
                ->select('*')
                ->from(Phpfox::getT('tag'))
                ->where('category_id = \'video\' AND tag_url = \'' . $sTagSearchValue . '\' OR category_id = \'video_pages\' AND tag_url = \'' . $sTagSearchValue . '\'')
                ->execute('getRow');

            $this->template()->setBreadcrumb(Phpfox::getPhrase('video.topic') . ': ' . $tagname['tag_text'], $this->url()->makeUrl('video.tag', $sTagSearchValue), true);

Теперь выводится название тега:
Тег: Танец
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Видео (модуль phpFOX 3)

Сообщение Slash » Вс июл 17, 2016 9:05 am

Если автор видео на YouTube запретил встраивать видео на сторонние сайты, то вставив его, будет только картинка данного видео, чтобы просмотреть само видео придется переходить на YouTube. Я подумал о том, что это не правильно, что если стоит запрет на видео, то и возможности его добавлять не должно. Я сделал так:
Открываю: include/library/phpfox/xml/parser.class.php, нахожу:

Код: Выделить всё

        if ($bError)
        {            
            $this
->_iErrorCode = @xml_get_error_code($this->_oXml);
            $this->_iErrorLine = @xml_get_current_line_number($this->_oXml);
            
            xml_parser_free
($this->_oXml);

            return Phpfox_Error::trigger($this->errorString(), E_USER_ERROR);
        

Меняю на:

Код: Выделить всё

        if ($bError)
        {    
            $this
->_iErrorCode = xml_get_error_code($this->_oXml);
            $this->_iErrorLine = xml_get_current_line_number($this->_oXml);

            xml_parser_free($this->_oXml);

            # return Phpfox_Error::trigger($this->errorString(), E_USER_ERROR);
            return false;
        

Открываю: module/link/include/service/link.class.php, нахожу:

Код: Выделить всё

            $aXml = Phpfox::getLib('xml.parser')->parse(Phpfox::getLib('request')->send($oLink->getAttribute('href'), array(), 'GET', $_SERVER['HTTP_USER_AGENT'])); 

ниже добавляю:

Код: Выделить всё

            if (!$aXml)
            {
                return false;
            

Открываю: module/video/include/service/grab.class.php, нахожу:

Код: Выделить всё

                $this->_aCustom = Phpfox::getService('link')->getLink($this->_aData['url']);

Ниже вставляю:

Код: Выделить всё

                if (!$this->_aCustom)
                {
                    return false;
                }

Готово. Теперь при попытки добавить видео, на которое стоит запрет, пользователь получит соответствующее сообщение об ошибке:
Недопустимый URL видеозаписи.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Видео (модуль phpFOX 3)

Сообщение Slash » Вт июл 26, 2016 10:19 pm

С некоторых пор YouTube внес изменения для работы со вставкой видео на сторонние сайты, и теперь phpFOX 3 не может получить продолжительность видеоролика. Я немного исправил функцию duration(), в файле: module/video/include/service/grab.class.php, и теперь она у меня выглядит так:

Код: Выделить всё

    public function duration()
    {
        if (isset($this->_aCustom['duration']))
        {
            $duration    = preg_replace('|PT(.*?)M(.*?)S|', '$1:$2', $this->_aCustom['duration']);
            list($m, $s) = explode(':', $duration);
            $duration    = ((mb_strlen($m) == 1) ? '0' . $m : $m) . ':' . ((mb_strlen($s) == 1) ? '0' . $s : $s);

            unset($m, $s);            
    
            return $duration
;
        }

        return false;
    }

В файле: module/link/include/service/link.class.php, найти:

Код: Выделить всё

        $oMeta  = $oXpath->query("//meta[@name='description']")->item(0);
        if (method_exists($oMeta, 'getAttribute'))
        {
            $sMeta = $oMeta->getAttribute('content');
            if (!empty($sMeta))
            {
                $aReturn['description'] = strip_tags($sMeta);
            }
        }

Нижи добавить:

Код: Выделить всё

        $meta = $oXpath->query("//meta[@itemprop='duration']")->item(0);
        if (method_exists($meta, 'getAttribute'))
        {
            $duration = $meta->getAttribute('content');
            if (!empty($duration))
            {                
                $aReturn
['duration'] = strip_tags($duration);
            }
        }

Готово.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Видео (модуль phpFOX 3)

Сообщение Slash » Ср июл 27, 2016 3:11 pm

Из-за своего нескромного любопытства попробовал я нажать на ссылку Update Video Thumbnails, что находится в админ панели по адресу: /admincp/maintain/counter/. Запустился процесс обновления эскизов видеороликов, но видимо это обновление, как и многое в этом движке написано очень криво, так как после обновления эскизов, у меня их было всего два на все, что набралось за немалый период. Все ролики имели не свой эскиз. Печально конечно, пришлось восстанавливать эскизы, слава Богу существуют бэкапы... Тут я подумал - зачем вообще может потребоваться пересоздание эскизов, во многие эскизы я вносил изменения и тут я буду их пересоздавать, тем более обновление кривое, после которого будут неприятности. Я решил "вырвать" опцию обновления картинок видеороликов.
Значит, открываю: module/video/include/service/callback.class.php, нахожу и удаляю:

Код: Выделить всё

        $aList[] = array(
            
// Hardcoded phrase. We need to change it later.
            
'name' => 'Update Video Thumbnails',
            
'id' => 'video-thumbnails'            
        
); 

Так же нахожу и удаляю:

Код: Выделить всё

        if ($iId == 'video-thumbnails')
        {        
            
// get total videos
            
$iCnt $this->database()->select('COUNT(*)')
                ->
from(Phpfox::getT('video'))
                ->
where("in_process = 0 AND image_path IS NOT NULL OR image_path != ''")
                ->
execute('getSlaveField');    
            
            
// get the videos
            
$aRows $this->database()->select('m.video_id, m.is_stream, m.destination, m.server_id, m.image_path')
                ->
from(Phpfox::getT('video'), 'm')
                ->
where("m.in_process = 0 AND m.image_path IS NOT NULL OR m.image_path != ''")
                ->
limit($iPage$iPageLimit$iCnt)
                ->
execute('getSlaveRows');
            
            foreach (
$aRows as $aRow)
            {        
                
$sFilename Phpfox::getParam('video.dir_image') . sprintf($aRow['image_path'], '_120');
                
// Video streamed from sites like youtube
                
if($aRow['is_stream'])
                {
                    
// get the video URL
                    
$sVideoURL $this->database()->select('video_url')
                        ->
from(Phpfox::getT('video_embed'))
                        ->
where('video_id = ' $aRow['video_id'])
                        ->
execute('getSlaveField');
                    
                    if(!empty(
$sVideoURL))
                    {
                        
$oGrab Phpfox::getService('video.grab');
                        
// load the data to get the thumbnail
                        
$oGrab->get($sVideoURL);
                        
// get the thumbnail
                        
$oGrab->image($aRow['video_id'], true$sFilename);
                    }
                }
                
// Video uploaded from a user computer
                
else
                {
                    
// prepare locations
                    
$sImageLocation Phpfox::getParam('video.dir_image') . $aRow['image_path'];
                    
$sVideoSource Phpfox::getParam('video.dir') . $aRow['destination'];
                    
                    
// If the video is html5 compliant
                    
if(Phpfox::getParam('video.upload_for_html5'))
                    {
                        
// Change the extension to MP4.
                        
$sVideoSource str_replace('flv''mp4'$sVideoSource);
                    }
                    
                    
// If the video was uploaded to the CDN and it cannot be found locally
                    
if (Phpfox::getParam('core.allow_cdn') && !empty($aVideo['server_id']))
                    {
                        
// make it URL for FFMPEG to get the thumbnail
                        
$sVideoSource '"' Phpfox::getLib('cdn')->getUrl($sVideoSource$aRow['server_id']) . '"';
                    }
                    
                    
// If the video is HTML5 compliant
                    
if(Phpfox::getParam('video.upload_for_html5'))
                    {
                        
// there is no thumbnail
                        
if (!file_exists(sprintf($sImageLocation'')))
                        {
                            
// Create the thumbnail using FFMPEG at console level
                            
$sLastLineCode exec(Phpfox::getParam('video.ffmpeg_path') . ' -ss 00:00:01 -i ' $sVideoSource ' -t 1 -s 480x300 ' sprintf($sImageLocation'') . ' 2>&1'$aOutput);
                        }
                    }
                    
// Normal FLV video
                    
else
                    {
                        
// No thumbnail
                        
if (!file_exists(sprintf($sImageLocation'')))
                        {
                            
// Try this FFMPEG command first
                            
$sLastLineCode exec(Phpfox::getParam('video.ffmpeg_path') . ' -y -i ' $sVideoSource ' -t 00:00:01 -r 1 -f mjpeg ' sprintf($sImageLocation'') . ' 2>&1'$aOutput);    
                        }
                        
// Still no thumbnail
                        
if (!file_exists(sprintf($sImageLocation'')))
                        {
                            
// Trt this other FFMPEG command
                            
$sLastLineCode exec(Phpfox::getParam('video.ffmpeg_path') . ' -y -i ' $sVideoSource ' -t 00:00:01 -r 1 -f image2 ' sprintf($sImageLocation'') . ' 2>&1'$aOutput);
                        }
                    }
                    
                    
// Create the 120 pixel thumbnail that will be in use.
                    
Phpfox::getLib('image')->createThumbnail(sprintf($sImageLocation''), sprintf($sImageLocation'_120'), 120120);
                    
Phpfox::getLib('image')->createThumbnail(sprintf($sImageLocation''), sprintf($sImageLocation'_12090'), 12090false);
                    
// http://www.phpfox.com/tracker/view/14924/
                    
Phpfox::getLib('image')->createThumbnail(sprintf($sImageLocation''), sprintf($sImageLocation'_200'), 200200false);
                    
// Remove the original image not resized
                    
Phpfox::getLib('file')->unlink(sprintf($sImageLocation''));                        
                    
                    
// If still no thumbnail, and the ffmpeg_movie class exists
                    
if (class_exists('ffmpeg_movie') && !file_exists(sprintf($sImageLocation'_120')))
                    {
                        
// create new object
                        
$oFfmpegMovie = new ffmpeg_movie($sDestination);
                        
// If method "getFrame" exists for the ffmpeg_movie object
                        
if (is_object($oFfmpegMovie) && method_exists($oFfmpegMovie'getFrame'))
                        {
                            
// Get the frame 24 => 1 second
                            
$oFrame $oFfmpegMovie->getFrame(24);
                            
// If method "toGDImage" exists for the ffmpeg_movie object
                            
if (is_object($oFrame) && method_exists($oFrame'toGDImage'))
                            {
                                
// Create a GD image
                                
$mImage $oFrame->toGDImage();            
                                if (
$mImage)
                                {
                                    
// create the JPG thumbnail
                                    
@imagejpeg($mImagesprintf($sImageLocation''), 120);
                                    
// remove the original image
                                    
@imagedestroy($mImage);
                                }
                            }
                        }
                    }
                }
            }
            
            return 
$iCnt;
        } 

Всё, голова о том, что в будущем забуду об этой неприятности, а любопытство меня затянет в эту неприятность опять.

Вернуться в «phpFOX»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость