/**
  * @return string
  */
 public function process()
 {
     if (isset($_POST['SourceURL'])) {
         $sourceURL = $_POST['SourceURL'];
         $bIsCloudinary = CloudinaryVideo::isCloudinary($sourceURL);
         $bIsYoutube = YoutubeVideo::is_youtube($sourceURL);
         $bIsVimeo = VimeoVideo::is_vimeo($sourceURL);
         $video = null;
         if ($bIsYoutube || $bIsVimeo || $bIsCloudinary) {
             if ($bIsCloudinary) {
                 $filterClass = 'CloudinaryVideo';
                 $fileType = 'video';
             } elseif ($bIsYoutube) {
                 $filterClass = 'YoutubeVideo';
                 $fileType = 'youtube';
             } else {
                 $filterClass = 'VimeoVideo';
                 $fileType = 'vimeo';
             }
             $funcForID = $bIsYoutube ? 'youtube_id_from_url' : 'vimeo_id_from_url';
             $funcForDetails = $bIsYoutube ? 'youtube_video_details' : 'vimeo_video_details';
             if ($bIsCloudinary) {
                 $arr = Config::inst()->get('CloudinaryConfigs', 'settings');
                 if (isset($arr['CloudName']) && !empty($arr['CloudName'])) {
                     $arrPieces = explode('/', $sourceURL);
                     $arrFileName = array_slice($arrPieces, 7);
                     $fileName = implode('/', $arrFileName);
                     $publicID = substr($fileName, 0, strrpos($fileName, '.'));
                     $video = $filterClass::get()->filterAny(array('URL' => $sourceURL, 'PublicID' => $publicID))->first();
                     if (!$video) {
                         $api = new \Cloudinary\Api();
                         $resource = $api->resource($publicID, array("resource_type" => "video"));
                         //qoogjqs9ksyez7ch8sh5
                         $json = json_encode($resource);
                         $arrResource = Convert::json2array($json);
                         $video = new $filterClass(array('Title' => $arrResource['public_id'] . '.' . $arrResource['format'], 'PublicID' => $arrResource['public_id'], 'Version' => $arrResource['version'], 'URL' => $arrResource['url'], 'SecureURL' => $arrResource['secure_url'], 'FileType' => $arrResource['resource_type'], 'FileSize' => $arrResource['bytes'], 'Format' => $arrResource['format'], 'Signature' => isset($arrResource['signature']) ? $arrResource['signature'] : ''));
                         $video->write();
                     }
                 }
             } else {
                 $video = $filterClass::get()->filter('URL', $sourceURL)->first();
                 if (!$video) {
                     $sourceID = $filterClass::$funcForID($sourceURL);
                     $details = $filterClass::$funcForDetails($sourceID);
                     $video = new $filterClass(array('Title' => $details['title'], 'Duration' => $details['duration'], 'URL' => $sourceURL, 'secure_url' => $sourceURL, 'PublicID' => $sourceID, 'FileType' => $fileType));
                     $video->write();
                 }
             }
             if ($video) {
                 $this->value = $iVideoID = $video->ID;
                 $file = $this->customiseCloudinaryFile($video);
                 return Convert::array2json(array('colorselect_url' => $file->UploadFieldImageURL, 'thumbnail_url' => $file->UploadFieldThumbnailURL, 'fieldname' => $this->getName(), 'id' => $file->ID, 'url' => $file->URL, 'buttons' => $file->UploadFieldFileButtons, 'more_files' => $this->canUploadMany(), 'field_id' => $this->ID()));
             }
         }
     }
     return Convert::array2json(array());
 }
 /**
  * Update or create the database entries for each element of the given videos array
  * @param $videos: Array with all videos to update
  */
 protected function updateVideoEntries($videos)
 {
     // Holder for all updated or newly created entries
     $processed = ArrayList::create();
     // Loop over the given videos fetched from the API
     foreach ($videos as $video) {
         // Get the entry or create new one
         if (!($yv = YoutubeVideo::get()->filter('PlaylistItemID', $video->id)->first())) {
             $yv = new YoutubeVideo();
             $yv->Title = $video->snippet->title;
             $yv->Description = $video->snippet->description;
         }
         $yv->PlaylistItemID = $video->id;
         $yv->VideoID = $video->contentDetails->videoId;
         $thumbs = $video->snippet->thumbnails->toMap();
         $yv->ThumbnailURL = end($thumbs)->url;
         // Write to the db and store as processed item
         $yv->write();
         $processed->push($yv);
     }
     /**
      * Loop over all video entries from the database
      * delete all entries, which are found in the db but not processed above
      */
     foreach (YoutubeVideo::get() as $video) {
         if (!$processed->find('ID', $video->ID)) {
             $video->delete();
         }
     }
 }
 public function getYoutubeVideos()
 {
     return YoutubeVideo::get()->filter('Visible', 1);
 }
<?php

defined('_JEXEC') or die('Direct Access Denied');
require_once dirname(__FILE__) . '/helper.php';
if (isset($_POST['my_youtube_btn'])) {
    $jinput = JFactory::getApplication()->input;
    $youtube_link = $jinput->get('yt_link');
    $helper = new YoutubeVideo($params);
    $youtube_duration =& $helper->youtube_duration($youtube_link);
    $youtube_title =& $helper->youtube_title($youtube_link);
    $youtube_description =& $helper->youtube_description($youtube_link);
    $youtube_publishedAt =& $helper->youtube_publishedAt($youtube_link);
    $youtube_statistics_dislikeCount =& $helper->youtube_statistics_dislikeCount($youtube_link);
    $youtube_statistics_likeCount =& $helper->youtube_statistics_likeCount($youtube_link);
    $youtube_statistics_viewCount =& $helper->youtube_statistics_viewCount($youtube_link);
    echo '<h1>' . $youtube_title . '</h1>';
    echo '<p>Opis: <br> ' . $youtube_description . '</p>';
    echo '<h3>Opublikowane: ' . $youtube_publishedAt . '</h3>';
    echo '<span>Czas trwania: ' . $youtube_duration . '</span>';
    echo '<p><span>Obejrzane: ' . $youtube_statistics_viewCount . '</span> | <span>Like:  ' . $youtube_statistics_likeCount . '</span> | <span>DisLike: ' . $youtube_statistics_dislikeCount . '</span></p>';
    echo '<iframe width="560" height="315" src="https://www.youtube.com/embed/' . $youtube_link . '" frameborder="0" allowfullscreen></iframe><br><hr>';
} else {
    require JModuleHelper::getLayoutPath('mod_youtubevideo');
}