Server IP : 180.180.241.3 / Your IP : 216.73.216.252 Web Server : Microsoft-IIS/7.5 System : Windows NT NETWORK-NHRC 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /AppServ/www/news/components/com_youtubegallery/includes/ |
Upload File : |
<?php /** * YoutubeGallery Joomla! 3.0 Native Component * @version 3.8.3 * @author DesignCompass corp< <support@joomlaboat.com> * @link http://www.joomlaboat.com * @GNU General Public License **/ // No direct access to this file defined('_JEXEC') or die('Restricted access'); if(!defined('DS')) define('DS',DIRECTORY_SEPARATOR); class YouTubeGalleryMisc { var $videolist_row; var $theme_row; function getVideoListTableRow($listid) { $db = JFactory::getDBO(); //Load Video List $query = 'SELECT '; $query .= '#__youtubegallery_videolists.id AS id, '; $query .= '#__youtubegallery_videolists.listname AS listname, '; $query .= '#__youtubegallery_videolists.videolist AS videolist, '; $query .= '#__youtubegallery_videolists.catid AS catid, '; $query .= '#__youtubegallery_videolists.updateperiod AS updateperiod, '; $query .= '#__youtubegallery_videolists.lastplaylistupdate AS lastplaylistupdate, '; // $query .= 'COUNT(#__youtubegallery_videos.listid) AS TotalVideos FROM `#__youtubegallery_videolists`'; $query .= ' LEFT JOIN #__youtubegallery_videos ON #__youtubegallery_videos.listid=#__youtubegallery_videolists.id AND #__youtubegallery_videos.isvideo'; $query .= ' WHERE #__youtubegallery_videolists.id='.$listid.' '; $query .= ' GROUP BY `id`'; $query .= ' LIMIT 1'; $db->setQuery($query); if (!$db->query()) die ( $db->stderr()); $videolist_rows = $db->loadObjectList(); if(count($videolist_rows)==0) return false;//'<p>No video list found</p>'; $this->videolist_row=$videolist_rows[0]; return true; } function getThemeTableRow($themeid) { $db = JFactory::getDBO(); //Load Theme Row $query = 'SELECT `id`, `themename`, `width`, `height`, `playvideo`, `repeat`, `fullscreen`, `autoplay`, `related`, `allowplaylist`, `showinfo`, `bgcolor`, `cols`, `showtitle`, `cssstyle`, `navbarstyle`, `thumbnailstyle`, `linestyle`, `showlistname`, `listnamestyle`, `showactivevideotitle`, `activevideotitlestyle`, `description`, `descr_position`, `descr_style`, `color1`, `color2`, `border`, `openinnewwindow`, `rel`, `hrefaddon`, `pagination`, `customlimit`, `controls`, `youtubeparams`, `playertype`, `useglass`, `logocover`, `customlayout`, `prepareheadtags`, `muteonplay`, `volume`, `orderby`, `customnavlayout`, `responsive`, `mediafolder`, `readonly`, `headscript`, `themedescription`, `nocookie`, `changepagetitle` FROM `#__youtubegallery_themes` WHERE `id`='.$themeid.' LIMIT 1'; $db->setQuery($query); if (!$db->query()) die ( $db->stderr()); $theme_rows = $db->loadObjectList(); if(count($theme_rows)==0) return false;//'<p>No theme found</p>'; $this->theme_row=$theme_rows[0]; return true; } function formVideoList($rawList,&$firstvideo) { $getinfomethod=YouTubeGalleryMisc::getSettingValue('getinfomethod'); $gallery_list=array(); $main_ordering=10000; //10000 step foreach($rawList as $b) { $datalink=''; $playlistid=''; $b=str_replace("\n",'',$b); $b=trim(str_replace("\r",'',$b)); $listitem=$this->csv_explode(',', $b, '"', false); $theLink=trim($listitem[0]); if(!(strpos($theLink, '/embed/')===false)) { //Convert Embed links to Address bar version $theLink=str_replace('www.youtube.com/embed/','youtu.be/',$theLink); $theLink=str_replace('youtube.com/embed/','youtu.be/',$theLink); } $vsn=$this->getVideoSourceName($theLink); if(isset($listitem[4])) $specialparams=$listitem[4]; else $specialparams=''; if($vsn=='youtubeplaylist') { require_once('youtubeplaylist.php'); $newlist=VideoSource_YoutubePlaylist::getVideoIDList($theLink, $specialparams, $playlistid,$datalink); } elseif($vsn=='youtubeshow') { require_once('youtubeshow.php'); $newlist=VideoSource_YoutubeShow::getVideoIDList($theLink, $specialparams, $playlistid,$datalink); } elseif($vsn=='youtubeuserfavorites') { require_once('youtubeuserfavorites.php'); $newlist=VideoSource_YoutubeUserFavorites::getVideoIDList($theLink, $specialparams, $playlistid,$datalink); } elseif($vsn=='youtubeuseruploads') { require_once('youtubeuseruploads.php'); $newlist=VideoSource_YoutubeUserUploads::getVideoIDList($theLink, $specialparams, $playlistid,$datalink); } elseif($vsn=='youtubestandard') { require_once('youtubestandard.php'); $newlist=VideoSource_YoutubeStandard::getVideoIDList($theLink, $specialparams, $playlistid,$datalink); } elseif($vsn=='youtubesearch') { require_once('youtubesearch.php'); $newlist=VideoSource_YoutubeSearch::getVideoIDList($theLink, $specialparams, $playlistid,$datalink); if(!is_array($newlist)) { echo 'Youtube Search: '.$newlist; die; } } elseif($vsn=='vimeouservideos') { require_once('vimeouservideos.php'); $newlist=VideoSource_VimeoUserVideos::getVideoIDList($theLink, $specialparams, $playlistid,$datalink); } elseif($vsn=='vimeochannel') { require_once('vimeochannel.php'); $newlist=VideoSource_VimeoChannel::getVideoIDList($theLink, $specialparams, $playlistid,$datalink); } elseif($vsn=='vimeoalbum') { require_once('vimeoalbum.php'); $newlist=VideoSource_VimeoAlbum::getVideoIDList($theLink, $specialparams, $playlistid,$datalink); } elseif($vsn=='dailymotionplaylist') { require_once('dailymotionplaylist.php'); $newlist=VideoSource_DailymotionPlaylist::getVideoIDList($theLink, $specialparams, $playlistid,$datalink); } $channels_youtube=array('youtubeuseruploads','youtubestandard','youtubeplaylist','youtubeshow','youtubeuserfavorites','youtubesearch'); $channels_other=array('vimeouservideos','vimeochannel','vimeoalbum','dailymotionplaylist'); $channels_vimeo=array('vimeouservideos','vimeochannel','vimeoalbum'); if(in_array($vsn,$channels_youtube) or in_array($vsn,$channels_other)) { if(in_array($vsn,$channels_youtube)) $video_source='youtube'; if(in_array($vsn,$channels_vimeo)) $video_source='vimeo'; if($vsn=='dailymotionplaylist') $video_source='dailymotion'; $new_List_Clean=array(); $ordering=1; $startsecond=0; $endsecond=0; if(isset($listitem[5])) $startsecond=$listitem[5]; if(isset($listitem[6])) $endsecond=$listitem[6]; // if(is_array($newlist)){ foreach($newlist as $theLinkItem) { $item=$this->GrabVideoData($theLinkItem,$video_source,'',$getinfomethod); if($item['videoid']!='') { if($firstvideo=='') $firstvideo=$item['videoid']; $item['ordering']=$main_ordering+$ordering; if(isset($listitem[1])) { $item['title']=$listitem[1]; $item['custom_title']=$listitem[1]; } if(isset($listitem[2])) { $item['description']=$listitem[2]; $item['custom_description']=$listitem[2]; } if(isset($listitem[3])) { if(strpos($listitem[3],'#')===false) $item['imageurl']=$listitem[3]; $item['custom_imageurl']=$listitem[3]; } $item['startsecond']=$startsecond; $item['endsecond']=$endsecond; $new_List_Clean[]=$item; $ordering++; } } $item=array( 'datalink'=>$datalink, 'videosource'=>$vsn, 'videoid'=>$playlistid, 'imageurl'=>'', 'title'=>'', 'description'=>'', 'specialparams'=>$specialparams, 'count'=>count($new_List_Clean), 'link'=>'', 'ordering'=>$main_ordering, 'channel_username'=>'', 'channel_title'=>'', 'channel_subscribers'=>'', 'channel_subscribed'=>'', 'channel_location'=>'', 'channel_commentcount'=>'', 'channel_viewcount'=>'', 'channel_videocount'=>'', 'channel_description'=>'', 'channel_totaluploadviews'=>'', ); if($vsn=='youtubeuseruploads' and !(strpos($specialparams,'moredetails=true')===false)) { //Try to get channel info require_once('youtubeuseruploads.php'); $datalink=$item['datalink']; $user_info=VideoSource_YoutubeUserUploads::getUserInfo($theLink,$item); if($user_info!='') $item['channel_title']=$user_info; $item['datalink']=$datalink.','.$item['datalink']; } $gallery_list[]=$item; $gallery_list=array_merge($gallery_list,$new_List_Clean); }//for } elseif($vsn=='videolist') { $linkPair=explode(':',$theLink); if(isset($linkPair[1])) { if(trim($linkPair[1])=='all') $vID=-1; elseif(trim($linkPair[1])=='category') { if(isset($linkPair[2])) $vID='category='.$linkPair[2]; } elseif(trim($linkPair[1])=='catid') { if(isset($linkPair[2])) $vID='catid='.(int)$linkPair[2]; } else { $vID=(int)$linkPair[1]; } $item=array( 'videosource'=>$vsn, 'videoid'=>$vID, 'isvideo'=>"0", 'imageurl'=>'', 'title'=>'', 'description'=>'', 'specialparams'=>'', 'count'=>'', 'link'=>'', 'ordering'=>'' ); $gallery_list[]=$item; } } else { $item=$this->GrabVideoData($listitem,$vsn,'',$getinfomethod); if(isset($item['videoid']) and $item['videoid']!='') { if($firstvideo=='') $firstvideo=$item['videoid']; $item['ordering']=$main_ordering; $gallery_list[]=$item; } } $main_ordering+=10000; }//foreach($rawList as $b) return $gallery_list; } static public function getRawData($videoid) { $db = JFactory::getDBO(); $query = 'SELECT `rawdata` FROM `#__youtubegallery_videos` WHERE `videoid`="'.$videoid.'" LIMIT 1'; $db->setQuery($query); if (!$db->query()) die( $db->stderr()); $values=$db->loadAssocList(); if(count($values)==0) return ""; $v=$values[0]; return $v['rawdata']; } static public function setDelayedRequest($videoid,$link) { if($videoid!='') { $value='*youtubegallery_request*';//.$link;//md5(mt_rand()); $db = JFactory::getDBO(); $query = 'UPDATE `#__youtubegallery_videos` SET `rawdata`="'.$value.'" WHERE `videoid`="'.$videoid.'"'; $db->setQuery($query); if (!$db->query()) die ( $db->stderr()); } } static public function setRawData($videoid,$videoData) { if($videoid!='') { $db = JFactory::getDBO(); $query = 'UPDATE `#__youtubegallery_videos` SET `rawdata`="'.$videoData.'" WHERE `videoid`="'.$videoid.'"'; $db->setQuery($query); if (!$db->query()) die ( $db->stderr()); } } function GrabVideoData($listitem,$vsn,$videoid_optional='',$getinfomethod='') { $query_video_host=true; //Return Video Data Array separated with commma //extract title if it's needed for navigation (thumbnail) or for active video. $videoitem=array(); $customtitle=''; $customdescription=''; $customimage=''; $startsecond=0; $endsecond=0; if(is_array($listitem)) { $theLink=trim($listitem[0]); if(isset($listitem[1])) $customtitle=$listitem[1]; if(isset($listitem[2])) $customdescription=$listitem[2]; if(isset($listitem[3])) $customimage=$listitem[3]; if(isset($listitem[5])) $startsecond=$listitem[5]; if(isset($listitem[6])) $endsecond=$listitem[6]; } else $theLink=$listitem; if($vsn=='youtube' and !(strpos($theLink, '/embed/')===false)) { //Convert Embed links to Address bar version $theLink=str_replace('www.youtube.com/embed/','youtu.be/',$theLink); $theLink=str_replace('youtube.com/embed/','youtu.be/',$theLink); } switch($vsn) { case 'break' : require_once('break.php'); $HTML_SOURCE=''; $videoid=VideoSource_Break::extractBreakID($theLink,$HTML_SOURCE); if($videoid!='') { if($query_video_host) { $videoitem=VideoSource_Break::getVideoData($videoid, $customimage, $customtitle, $customdescription, $HTML_SOURCE); $videoitem['link']=$theLink; } else $videoitem=array('videosource'=>'break', 'videoid'=>$videoid, 'imageurl'=>$customimage, 'title'=>$customtitle,'description'=>$customdescription,'link'=>$theLink); } break; case 'vimeo' : require_once('vimeo.php'); if($videoid_optional=='') $videoid=VideoSource_Vimeo::extractVimeoID($theLink); else $videoid=$videoid_optional; if($videoid!='') { if($query_video_host) { $videoitem=VideoSource_Vimeo::getVideoData($videoid,$customimage,$customtitle,$customdescription); $videoitem['link']=$theLink; } else $videoitem=array('videosource'=>'vimeo', 'videoid'=>$videoid, 'imageurl'=>$customimage, 'title'=>$customtitle,'description'=>$customdescription,'link'=>$theLink); } break; case 'own3dtvlive' : require_once('own3dtvlive.php'); if($videoid_optional=='') $videoid=VideoSource_Own3DTvLive::extractOwn3DTvLiveID($theLink); else $videoid=$videoid_optional; if($videoid!='') { if($query_video_host) { $videoitem=VideoSource_Own3DTvLive::getVideoData($videoid,$customimage,$customtitle,$customdescription); $videoitem['link']=$theLink; } else $videoitem=array('videosource'=>'own3dtvlive', 'videoid'=>$videoid, 'imageurl'=>$customimage, 'title'=>$customtitle,'description'=>$customdescription,'link'=>$theLink); } break; case 'own3dtvvideo' : require_once('own3dtvvideo.php'); if($videoid_optional=='') $videoid=VideoSource_Own3DTvVideo::extractOwn3DTvVideoID($theLink); else $videoid=$videoid_optional; if($videoid!='') { if($query_video_host) { $videoitem=VideoSource_Own3DTvVideo::getVideoData($videoid,$customimage,$customtitle,$customdescription); $videoitem['link']=$theLink; } else $videoitem=array('videosource'=>'own3dtvvideo', 'videoid'=>$videoid, 'imageurl'=>$customimage, 'title'=>$customtitle,'description'=>$customdescription,'link'=>$theLink); } break; case 'youtube' : require_once('youtube.php'); if($videoid_optional=='') $videoid=VideoSource_Youtube::extractYouTubeID($theLink); else $videoid=$videoid_optional; if($videoid!='') { if($query_video_host) { if(isset($this->theme_row->thumbnailstyle)) $theme_row_thumbnailstyle=$this->theme_row->thumbnailstyle; else $theme_row_thumbnailstyle=''; $videoitem=VideoSource_Youtube::getVideoData( $videoid, $customimage, $customtitle, $customdescription, $theme_row_thumbnailstyle, $getinfomethod ); $videoitem['link']=$theLink; } else{ if(strpos($customimage, '#')===false) $customimage_=$customimage; else $customimage_=''; $videoitem=array('videosource'=>'youtube', 'videoid'=>$videoid, 'imageurl'=>$customimage_, 'title'=>$customtitle,'description'=>$customdescription,'link'=>$theLink); } } break; case 'google' : require_once('google.php'); if($videoid_optional=='') $videoid=VideoSource_Google::extractGoogleID($theLink); else $videoid=$videoid_optional; if($videoid!='') { if($query_video_host) { $videoitem=VideoSource_Google::getVideoData($videoid,$customimage,$customtitle,$customdescription); $videoitem['link']=$theLink; } else $videoitem=array('videosource'=>'google', 'videoid'=>$videoid, 'imageurl'=>$customimage, 'title'=>$customtitle,'description'=>$customdescription,'link'=>$theLink); } break; case 'yahoo' : require_once('yahoo.php'); if($videoid_optional=='') $videoid=VideoSource_Yahoo::extractYahooID($theLink); else $videoid=$videoid_optional; if($videoid!='') { if($query_video_host) { $videoitem=VideoSource_Yahoo::getVideoData($videoid,$customimage,$customtitle,$customdescription,$theLink); $videoitem['link']=$theLink; } else $videoitem=array('videosource'=>'yahoo', 'videoid'=>$videoid, 'imageurl'=>$customimage, 'title'=>$customtitle,'description'=>$customdescription,'link'=>$theLink); } break; case 'collegehumor' : require_once('collegehumor.php'); if($videoid_optional=='') $videoid=VideoSource_CollegeHumor::extractCollegeHumorID($theLink); else $videoid=$videoid_optional; if($videoid!='') { if($query_video_host) { $videoitem=VideoSource_CollegeHumor::getVideoData($videoid,$customimage,$customtitle,$customdescription); $videoitem['link']=$theLink; } else $videoitem=array('videosource'=>'collegehumor', 'videoid'=>$videoid, 'imageurl'=>$customimage, 'title'=>$customtitle,'description'=>$customdescription,'link'=>$theLink); } break; case 'dailymotion' : require_once('dailymotion.php'); if($videoid_optional=='') $videoid=VideoSource_DailyMotion::extractDailyMotionID($theLink); else $videoid=$videoid_optional; if($videoid!='') { if($query_video_host) { $videoitem=VideoSource_DailyMotion::getVideoData($videoid,$customimage,$customtitle,$customdescription); $videoitem['link']=$theLink; } else $videoitem=array('videosource'=>'dailymotion', 'videoid'=>$videoid, 'imageurl'=>$customimage, 'title'=>$customtitle,'description'=>$customdescription,'link'=>$theLink); } break; case 'presentme' : require_once('presentme.php'); if($videoid_optional=='') $videoid=VideoSource_PresentMe::extractPresentMeID($theLink); else $videoid=$videoid_optional; if($videoid!='') { if($query_video_host) { $videoitem=VideoSource_PresentMe::getVideoData($videoid,$customimage,$customtitle,$customdescription); $videoitem['link']=$theLink; } else $videoitem=array('videosource'=>'presentme', 'videoid'=>$videoid, 'imageurl'=>$customimage, 'title'=>$customtitle,'description'=>$customdescription,'link'=>$theLink); } break; case 'ustream' : require_once('ustream.php'); if($videoid_optional=='') $videoid=VideoSource_Ustream::extractUstreamID($theLink); else $videoid=$videoid_optional; if($videoid!='') { if($query_video_host) { $videoitem=VideoSource_Ustream::getVideoData($videoid,$customimage,$customtitle,$customdescription); $videoitem['link']=$theLink; } else $videoitem=array('videosource'=>'ustream', 'videoid'=>$videoid, 'imageurl'=>$customimage, 'title'=>$customtitle,'description'=>$customdescription,'link'=>$theLink); } break; case 'ustreamlive' : require_once('ustreamlive.php'); if($videoid_optional=='') $videoid=VideoSource_UstreamLive::extractUstreamLiveID($theLink); else $videoid=$videoid_optional; if($videoid!='') { if($query_video_host) { $videoitem=VideoSource_UstreamLive::getVideoData($videoid,$customimage,$customtitle,$customdescription); $videoitem['link']=$theLink; } else $videoitem=array('videosource'=>'ustreamlive', 'videoid'=>$videoid, 'imageurl'=>$customimage, 'title'=>$customtitle,'description'=>$customdescription,'link'=>$theLink); } break; case 'soundcloud' : require_once('soundcloud.php'); if($videoid_optional=='') $videoid=VideoSource_soundcloud::extractID($theLink); else $videoid=$videoid_optional; if($videoid!='') { if($query_video_host) { $videoitem=VideoSource_soundcloud::getVideoData($videoid,$customimage,$customtitle,$customdescription); $videoitem['link']=$theLink; } else $videoitem=array('videosource'=>'soundcloud', 'videoid'=>$videoid, 'imageurl'=>$customimage, 'title'=>$customtitle,'description'=>$customdescription,'link'=>$theLink); } break; case '.flv' : require_once('flv.php'); if($videoid_optional=='') $videoid=VideoSource_FLV::extractFLVID($theLink); else $videoid=$videoid_optional; if($videoid!='') { if($query_video_host) { $videoitem=VideoSource_FLV::getVideoData($videoid,$theLink,$customimage,$customtitle,$customdescription); $videoitem['link']=$theLink; } else $videoitem=array('videosource'=>'.flv', 'videoid'=>$videoid, 'imageurl'=>$customimage, 'title'=>$customtitle,'description'=>$customdescription,'link'=>$theLink); } break; }//switch($vsn) if(!isset($videoitem['title'])) $videoitem['title']=''; if(!isset($videoitem['description'])) $videoitem['description']=''; if(!isset($videoitem['imageurl'])) $videoitem['imageurl']=''; $videoitem['custom_title']=$customtitle; $videoitem['custom_description']=$customdescription; $videoitem['custom_imageurl']=$customimage; $videoitem['startsecond']=$startsecond; $videoitem['endsecond']=$endsecond; return $videoitem; } function isVideo_record_exist($videosource,$videoid,$listid) { $db = JFactory::getDBO(); $query = 'SELECT id, allowupdates FROM #__youtubegallery_videos WHERE `videosource`="'.$videosource.'" AND `videoid`="'.$videoid.'" AND `listid`='.$listid.' LIMIT 1'; $db->setQuery($query); if (!$db->query()) die( $db->stderr()); $videos_rows=$db->loadAssocList(); if(count($videos_rows)==0) return 0; $videos_row=$videos_rows[0]; if($videos_row['allowupdates']!=1) return -1; //Updates disable return $videos_row['id']; } function getVideoList_FromCache_From_Table(&$videoid,&$total_number_of_rows) { $listIDs=array(); $listIDs[]=$this->videolist_row->id; $db = JFactory::getDBO(); $where=array(); $where[]='`listid`="'.$this->videolist_row->id.'"'; $where[]='`isvideo`=0'; $where[]='`videosource`="videolist"'; $query = 'SELECT `videoid` FROM `#__youtubegallery_videos` WHERE '.implode(' AND ', $where); $db->setQuery($query); if (!$db->query()) die( $db->stderr()); $videos_lists=$db->loadAssocList(); if(count($videos_lists)>0) { foreach($videos_lists as $v) { if($v['videoid']==-1) { //all videos $listIDs=array(); break; } elseif(!(strpos($v['videoid'],'catid=')===false)) { //Video Lists of selected category by id $listIDs=array(); $catid=intval(str_replace('catid=','',$v['videoid'])); $query = 'SELECT `id` FROM `#__youtubegallery_videolists` WHERE `catid`='.$catid; $db->setQuery($query); if (!$db->query()) die( $db->stderr()); $videos_lists_=$db->loadAssocList(); foreach($videos_lists_ as $vl) { $listIDs[]=$vl['id']; } } elseif(!(strpos($v['videoid'],'category=')===false)) { //Video Lists of selected category by id $listIDs=array(); $categoryname=str_replace('category=','',$v['videoid']); $query = 'SELECT #__youtubegallery_videolists.id AS `computedcatid` FROM `#__youtubegallery_videolists` INNER JOIN `#__youtubegallery_categories` ON #__youtubegallery_categories.id=#__youtubegallery_videolists.catid WHERE #__youtubegallery_categories.categoryname="'.$categoryname.'"'; $db->setQuery($query); if (!$db->query()) die( $db->stderr()); $videos_lists_=$db->loadAssocList(); foreach($videos_lists_ as $vl) { $listIDs[]=$vl['computedcatid']; } } else $listIDs[]=$v['videoid']; } } return $this->getVideoList_FromCacheFromTable($videoid,$total_number_of_rows,$listIDs); } function addSearchQuery() { $search_fields=JRequest::getVar('ygsearchfields'); if($search_fields!='') { $search_query=str_replace('"','',JRequest::getVar('ygsearchquery')); $search_query=str_replace(' ',',',$search_query); $search_query_array=explode(',',$search_query); $search_fields_array=explode(',',$search_fields); $possible_fields=array('videoid','title','description','publisheddate','keywords','channel_username','channel_title','channel_description','channel_totaluploadviews'); $q_where=array(); foreach($search_query_array as $q) { if($q!='') { $f_where=array(); foreach($search_fields_array as $f) { if(in_array($f,$possible_fields)) $f_where[]='INSTR(`'.$f.'`,"'.$q.'")'; }//f if(count($f_where)==1) $q_where[]=implode(' OR ',$f_where); elseif(count($f_where)>1) $q_where[]='('.implode(' OR ',$f_where).')'; } }//q if(count($q_where)==1) return implode(' AND ',$q_where); elseif(count($q_where)>1) return '('.implode(' AND ',$q_where).')'; else return ''; } } function getVideoList_FromCacheFromTable(&$videoid,&$total_number_of_rows,&$listIDs) { $where=array(); //Only for search module $wq=$this->addSearchQuery(); if($wq!='') $where[]=$wq; if(count($listIDs)>0) $where[]='(`listid`="'.implode('" OR `listid`="',$listIDs).'")'; $where[]='`isvideo`'; $db = JFactory::getDBO(); if($this->theme_row->rel!='' and JRequest::getCmd('tmpl')=='component') { // Get only one video, because video opens in Shadow/Lightbox $where[]='`videoid`="'.$videoid.'"'; $limitstart=0; $limit=1; } else { if(((int)$this->theme_row->customlimit)==0) $limit=0; // UNLIMITED else $limit = (int)$this->theme_row->customlimit; $limitstart = JRequest::getVar('ygstart', 0, '', 'int'); } if($this->theme_row->orderby!='') { if($this->theme_row->orderby=='randomization') $orderby='RAND()'; else $orderby=$this->theme_row->orderby; } else $orderby='ordering'; $query = 'SELECT * FROM `#__youtubegallery_videos` WHERE 1=1 and '.implode(' AND ', $where).' GROUP BY `videoid` ORDER BY '.$orderby; $db->setQuery($query); if (!$db->query()) die( $db->stderr()); //$db->query(); $total_number_of_rows = $db->getNumRows(); if($limit==0) $db->setQuery($query); else $db->setQuery($query, $limitstart, $limit); if (!$db->query()) die( $db->stderr()); $videos_rows=$db->loadAssocList(); //if($this->theme_row->orderby=='randomization') // shuffle($videos_rows); $firstvideo=''; if($firstvideo=='' and count($videos_rows)>0) { $videos_row=$videos_rows[0]; $firstvideo=$videos_row['videoid']; } if($videoid!='') { /* $found=false; foreach($videos_rows as $videos_row) { if($videos_row['videoid']==$videoid) { $found=true; break; } } if(!$found) { if($firstvideo!='') $videoid=$firstvideo; } */ } else { if($firstvideo!='') $videoid=$firstvideo; } //echo 'videoid='.$videoid.'<br/>'; return $videos_rows; } function update_playlist($force_update = false) { $start = strtotime( $this->videolist_row->lastplaylistupdate ); $end = strtotime( date( 'Y-m-d H:i:s') ); $days_diff = ($end-$start)/86400; $updateperiod=(float)$this->videolist_row->updateperiod; if($updateperiod==0) $updateperiod=1; if($days_diff>abs($updateperiod) or $force_update) { $this->update_cache_table($this->videolist_row,$updateperiod>0); //$updateperiod>0 ? refresh : get new videos $this->videolist_row->lastplaylistupdate =date( 'Y-m-d H:i:s'); $db = JFactory::getDBO(); $query = 'UPDATE #__youtubegallery_videolists SET `lastplaylistupdate`="'.$this->videolist_row->lastplaylistupdate.'" WHERE `id`="'.$this->videolist_row->id.'"'; $db->setQuery($query); if (!$db->query()) die( $db->stderr()); } } function update_cache_table(&$videolist_row,$update_videolist=true) { //$update_videolist=true - update //$update_videolist=false - refresh $videolist_array=$this->csv_explode("\n", $videolist_row->videolist, '"', true); $firstvideo=''; $videolist=$this->formVideoList($videolist_array, $firstvideo); $ListOfVideos=array(); $db = JFactory::getDBO(); $parent_id=0; $parent_details=array(); $this_is_a_list=false; $list_count_left=0; foreach($videolist as $g) { $g_title=str_replace('"','"',$g['title']); $g_description=str_replace('"','"',$g['description']); if(isset($g['custom_title'])) $custom_g_title=str_replace('"','"',$g['custom_title']); else $custom_g_title=''; if(isset($g['custom_description'])) $custom_g_description=str_replace('"','"',$g['custom_description']); else $custom_g_description=''; $fields=array(); if( $g['videosource']=='youtubeuseruploads' or $g['videosource']=='youtubestandard' or $g['videosource']=='youtubeplaylist' or $g['videosource']=='youtubeshow' or $g['videosource']=='youtubeuserfavorites' or $g['videosource']=='youtubesearch' or $g['videosource']=='vimeouservideos' or $g['videosource']=='vimeochannel' or $g['videosource']=='vimeoalbum' or $g['videosource']=='videolist' or $g['videosource']=='dailymotionplaylist' ) { //parent $parent_id=0; $this_is_a_list=true; $list_count_left=(int)$g['count']; } else { $this_is_a_list=false; } $fields[]='`listid`="'.$videolist_row->id.'"'; $fields[]='`parentid`="'.$parent_id.'"'; $fields[]='`videosource`="'.$g['videosource'].'"'; $fields[]='`videoid`="'.$g['videoid'].'"'; if(isset($g['datalink'])) $fields[]='`datalink`="'.$g['datalink'].'"'; if($g['imageurl']!='') $fields[]='`imageurl`="'.$g['imageurl'].'"'; if($g['title']!='') $fields[]='`title`="'.$g_title.'"'; if($g['description']!='') $fields[]='`description`="'.$g_description.'"'; if(isset($g['custom_imageurl'])) $fields[]='`custom_imageurl`="'.$g['custom_imageurl'].'"'; else $fields[]='`custom_imageurl`=""'; if($g['title']!='') $fields[]='`alias`="'.YouTubeGalleryMisc::get_alias($g_title,$g['videoid']).'"'; $fields[]='`custom_title`="'.$custom_g_title.'"'; $fields[]='`custom_description`="'.$custom_g_description.'"'; if(isset($g['specialparams'])) $fields[]='`specialparams`="'.$g['specialparams'].'"'; else $fields[]='`specialparams`=""'; if(isset($g['startsecond'])) $fields[]='`startsecond`="'.$g['startsecond'].'"'; else $fields[]='`startsecond`="0"'; if(isset($g['endsecond'])) $fields[]='`endsecond`="'.$g['endsecond'].'"'; else $fields[]='`endsecond`="0"'; $fields[]='`link`="'.$g['link'].'"'; $fields[]='`ordering`="'.$g['ordering'].'"'; if($this_is_a_list) $fields[]='`lastupdate`="'.date( 'Y-m-d H:i:s').'"'; $fields[]='`isvideo`="'.($this_is_a_list ? '0' : '1').'"'; if(isset($g['publisheddate'])) $fields[]='`publisheddate`="'.$g['publisheddate'].'"'; //else // $fields[]='`publisheddate`=""'; if(isset($g['duration'])) $fields[]='`duration`="'.$g['duration'].'"'; //else // $fields[]='`duration`=0'; if(isset($g['rating_average'])) $fields[]='`rating_average`="'.$g['rating_average'].'"'; //else // $fields[]='`rating_average`=0'; if(isset($g['rating_max'])) $fields[]='`rating_max`="'.$g['rating_max'].'"'; //else // $fields[]='`rating_max`=0'; if(isset($g['rating_min'])) $fields[]='`rating_min`="'.$g['rating_min'].'"'; //else // $fields[]='`rating_min`=0'; if(isset($g['rating_numRaters'])) $fields[]='`rating_numRaters`="'.$g['rating_numRaters'].'"'; //else // $fields[]='`rating_numRaters`=0'; if(isset($g['statistics_favoriteCount'])) $fields[]='`statistics_favoriteCount`="'.$g['statistics_favoriteCount'].'"'; if(isset($g['statistics_viewCount'])) $fields[]='`statistics_viewCount`="'.$g['statistics_viewCount'].'"'; if(isset($g['keywords'])) $fields[]='`keywords`="'.str_replace('"','"',$g['keywords']).'"'; if(isset($g['likes'])) $fields[]='`likes`="'.$g['likes'].'"'; if(isset($g['dislikes'])) $fields[]='`dislikes`="'.$g['dislikes'].'"'; if($this_is_a_list) { $parent_details=$g; } if(isset($parent_details['channel_username'])) $fields[]='`channel_username`="'.$parent_details['channel_username'].'"'; if(isset($parent_details['channel_title'])) $fields[]='`channel_title`="'.$parent_details['channel_title'].'"'; if(isset($parent_details['channel_subscribers'])) $fields[]='`channel_subscribers`="'.$parent_details['channel_subscribers'].'"'; if(isset($parent_details['channel_subscribed'])) $fields[]='`channel_subscribed`="'.$parent_details['channel_subscribed'].'"'; if(isset($parent_details['channel_location'])) $fields[]='`channel_location`="'.$parent_details['channel_location'].'"'; if(isset($parent_details['channel_commentcount'])) $fields[]='`channel_commentcount`="'.$parent_details['channel_commentcount'].'"'; if(isset($parent_details['channel_viewcount'])) $fields[]='`channel_viewcount`="'.$parent_details['channel_viewcount'].'"'; if(isset($parent_details['channel_videocount'])) $fields[]='`channel_videocount`="'.$parent_details['channel_videocount'].'"'; if(isset($parent_details['channel_description'])) $fields[]='`channel_description`="'.$parent_details['channel_description'].'"'; //if(isset($parent_details['channel_totaluploadviews'])) //$fields[]='`channel_totaluploadviews`="'.$parent_details['channel_totaluploadviews'].'"'; $record_id=$this->isVideo_record_exist($g['videosource'],$g['videoid'],$videolist_row->id); $query=''; if($record_id==0) { $query="INSERT #__youtubegallery_videos SET ".implode(', ', $fields).', `allowupdates`="1"'; $db->setQuery($query); if (!$db->query()) die( $db->stderr()); $record_id_new=$this->isVideo_record_exist($g['videosource'],$g['videoid'],$videolist_row->id); $ListOfVideos[]=$record_id_new; if($this_is_a_list) { $parent_id=$record_id_new; $parent_details=$g; } } elseif($record_id>0) { if($g_title!='***Video not found***') { //Don't update info, if cannot get the info $query="UPDATE #__youtubegallery_videos SET ".implode(', ', $fields).' WHERE id='.$record_id; $db->setQuery($query); if (!$db->query()) die( $db->stderr()); $ListOfVideos[]=$record_id; if($this_is_a_list) { $parent_id=$record_id; $parent_details=$g; } } } if(!$this_is_a_list) { if($list_count_left>0) $list_count_left-=1; if($list_count_left==0) $parent_id=0; } } if(!$update_videolist) { //Delete All videos of this video list that has been deleted form the list and allowed for updates. //`isvideo` AND $query='DELETE FROM `#__youtubegallery_videos` WHERE `listid`='.((int)$videolist_row->id).' AND `allowupdates`'; if(count($ListOfVideos)>0) $query.=' AND id!='.implode(' AND id!=',$ListOfVideos).' '; $db->setQuery($query); if (!$db->query()) die( $db->stderr()); } } function RefreshVideoData(&$gallery_list,$getinfomethod,$force_refresh=false) { $db = JFactory::getDBO(); $count=count($gallery_list); for($i=0;$i<$count;$i++) { $listitem=$gallery_list[$i]; if(!$force_refresh) { $start = strtotime( $listitem['lastupdate'] ); $end = strtotime( date( 'Y-m-d H:i:s') ); $days_diff = ($end-$start)/86400; $updateperiod=$this->videolist_row->updateperiod; } else $updateperiod=0; if($updateperiod==0) $updateperiod=1; if($getinfomethod=='js' or $getinfomethod=='jsmanual') { $rd=YouTubeGalleryMisc::getRawData($listitem['videoid']); //if($rd=='') //{ //YouTubeGalleryMisc::setDelayedRequest($listitem['videoid']) //$days_dif=0; if($rd=='*youtubegallery_request*') $days_dif=0; } if($force_refresh or $listitem['status']==0 or $days_diff>$updateperiod) { $listitem_temp=array(); $listitem_temp[]=$listitem['link']; $listitem_temp[]=$listitem['custom_title']; $listitem_temp[]=$listitem['custom_description']; $listitem_temp[]=$listitem['custom_imageurl']; $listitem_new=$this->GrabVideoData($listitem_temp,$listitem['videosource'],$listitem['videoid'],$getinfomethod); if($listitem_new['title']!='') $listitem['title']=$listitem_new['title']; if($listitem_new['description']!='') $listitem['description']=$listitem_new['description']; if($listitem_new['imageurl']!='') $listitem['imageurl']=$listitem_new['imageurl']; $fields=array(); $fields[]='`title`="'.$this->mysqlrealescapestring($listitem_new['title']).'"'; if($listitem_new['title']!='') $fields[]='`alias`="'.YouTubeGalleryMisc::get_alias($listitem_new['title'],$listitem['videoid']).'"'; $fields[]='`description`="'.$this->mysqlrealescapestring($listitem_new['description']).'"'; $fields[]='`imageurl`="'.$listitem_new['imageurl'].'"'; $fields[]='`lastupdate`="'.date( 'Y-m-d H:i:s').'"'; $fields[]='`status`="200"'; if(isset($listitem_new['startsecond'])) $fields[]='`startsecond`="'.$listitem_new['startsecond'].'"'; if(isset($listitem_new['endsecond'])) $fields[]='`endsecond`="'.$listitem_new['endsecond'].'"'; if(isset($listitem_new['publisheddate'])) $fields[]='`publisheddate`="'.$listitem_new['publisheddate'].'"'; if(isset($listitem_new['duration'])) $fields[]='`duration`="'.$listitem_new['duration'].'"'; if(isset($listitem_new['rating_average'])) $fields[]='`rating_average`="'.$listitem_new['rating_average'].'"'; if(isset($listitem_new['rating_max'])) $fields[]='`rating_max`="'.$listitem_new['rating_max'].'"'; if(isset($listitem_new['rating_min'])) $fields[]='`rating_min`="'.$listitem_new['rating_min'].'"'; if(isset($listitem_new['rating_numRaters'])) $fields[]='`rating_numRaters`="'.$listitem_new['rating_numRaters'].'"'; if(isset($listitem_new['statistics_favoriteCount'])) $fields[]='`statistics_favoriteCount`="'.$listitem_new['statistics_favoriteCount'].'"'; if(isset($listitem_new['statistics_viewCount'])) $fields[]='`statistics_viewCount`="'.$listitem_new['statistics_viewCount'].'"'; if(isset($listitem_new['keywords'])) $fields[]='`keywords`="'.str_replace('"','"',$listitem_new['keywords']).'"'; if(isset($listitem_new['likes'])) $fields[]='`likes`="'.$listitem_new['likes'].'"'; if(isset($listitem_new['dislikes'])) $fields[]='`dislikes`="'.$listitem_new['dislikes'].'"'; if(isset($listitem_new['commentcount'])) $fields[]='`commentcount`="'.$listitem_new['commentcount'].'"'; $query="UPDATE `#__youtubegallery_videos` SET ".implode(', ', $fields).' WHERE `id`='.(int)$listitem['id']; $db->setQuery($query); if (!$db->query()) die( $db->stderr()); $gallery_list[$i]=$listitem; } }//foreach($gallery_list as $listitem) } function getVideoSourceName($link) { if(!(strpos($link,'://youtube.com')===false) or !(strpos($link,'://www.youtube.com')===false)) { if(!(strpos($link,'/playlist')===false)) return 'youtubeplaylist'; elseif(!(strpos($link,'/favorites')===false)) return 'youtubeuserfavorites'; elseif(!(strpos($link,'/user')===false)) return 'youtubeuseruploads'; elseif(!(strpos($link,'/results')===false)) return 'youtubesearch'; elseif(!(strpos($link,'youtube.com/show/')===false)) return 'youtubeshow'; else return 'youtube'; } if(!(strpos($link,'://youtu.be')===false) or !(strpos($link,'://www.youtu.be')===false)) return 'youtube'; if(!(strpos($link,'youtubestandard:')===false)) return 'youtubestandard'; if(!(strpos($link,'videolist:')===false)) return 'videolist'; if(!(strpos($link,'://vimeo.com/user')===false) or !(strpos($link,'://www.vimeo.com/user')===false)) return 'vimeouservideos'; elseif(!(strpos($link,'://vimeo.com/channels/')===false) or !(strpos($link,'://www.vimeo.com/channels/')===false)) return 'vimeochannel'; elseif(!(strpos($link,'://vimeo.com/album/')===false) or !(strpos($link,'://www.vimeo.com/album/')===false)) return 'vimeoalbum'; elseif(!(strpos($link,'://vimeo.com')===false) or !(strpos($link,'://www.vimeo.com')===false)) { preg_match('/http:\/\/vimeo.com\/(\d+)$/', $link, $matches); if (count($matches) != 0) { //single video return 'vimeo'; } else { preg_match('/https:\/\/vimeo.com\/(\d+)$/', $link, $matches); if (count($matches) != 0) { //single video return 'vimeo'; } else { preg_match('/http:\/\/vimeo.com\/(\d+)$/', $link, $matches); return 'vimeouservideos'; //or anything else } } return ''; } if(!(strpos($link,'://own3d.tv/l/')===false) or !(strpos($link,'://www.own3d.tv/l/')===false)) return 'own3dtvlive'; if(!(strpos($link,'://own3d.tv/v/')===false) or !(strpos($link,'://www.own3d.tv/v/')===false)) return 'own3dtvvideo'; if(!(strpos($link,'video.google.com')===false)) return 'google'; if(!(strpos($link,'video.yahoo.com')===false)) return 'yahoo'; if(!(strpos($link,'://break.com')===false) or !(strpos($link,'://www.break.com')===false)) return 'break'; if(!(strpos($link,'://collegehumor.com')===false) or !(strpos($link,'://www.collegehumor.com')===false)) return 'collegehumor'; //http://www.dailymotion.com/playlist/x1crql_BigCatRescue_funny-action-big-cats/1#video=x7k9rx if(!(strpos($link,'://dailymotion.com/playlist/')===false) or !(strpos($link,'://www.dailymotion.com/playlist/')===false)) return 'dailymotionplaylist'; if(!(strpos($link,'://dailymotion.com')===false) or !(strpos($link,'://www.dailymotion.com')===false)) return 'dailymotion'; if(!(strpos($link,'://present.me')===false) or !(strpos($link,'://www.present.me')===false)) return 'presentme'; if(!(strpos($link,'://ustream.tv/recorded')===false) or !(strpos($link,'://www.ustream.tv/recorded')===false)) return 'ustream'; if(!(strpos($link,'://ustream.tv/channel')===false) or !(strpos($link,'://www.ustream.tv/channel')===false)) return 'ustreamlive'; //http://api.soundcloud.com/tracks/49931.json - accepts only resolved links if(!(strpos($link,'://api.soundcloud.com/tracks/')===false) ) return 'soundcloud'; //if(!(strpos($link,'://soundcloud.com')===false) or !(strpos($link,'://www.soundcloud.com')===false)) //return 'soundcloud'; if(!(strpos(strtolower($link),'.flv')===false)) return '.flv'; return ''; } public static function parse_query($var) { $arr = array(); $var = parse_url($var); $varquery=$var['query']; if($varquery=='') return $arr; $var = html_entity_decode($varquery); $var = explode('&', $var); foreach($var as $val) { $x = explode('=', $val); $arr[$x[0]] = $x[1]; } unset($val, $x, $var); return $arr; } function csv_explode($delim=',', $str, $enclose='"', $preserve=false) { $resArr = array(); $n = 0; $expEncArr = explode($enclose, $str); foreach($expEncArr as $EncItem) { if($n++%2){ array_push($resArr, array_pop($resArr) . ($preserve?$enclose:'') . $EncItem.($preserve?$enclose:'')); }else{ $expDelArr = explode($delim, $EncItem); array_push($resArr, array_pop($resArr) . array_shift($expDelArr)); $resArr = array_merge($resArr, $expDelArr); } } return $resArr; } function mysqlrealescapestring($inp) { if(is_array($inp)) return array_map(__METHOD__, $inp); if(!empty($inp) && is_string($inp)) { return str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'), $inp); } return $inp; } public static function getURLData($url) { $getinfomethod=YouTubeGalleryMisc::getSettingValue('getinfomethod'); if($getinfomethod=='js' or $getinfomethod=='jsmanual') { $db = JFactory::getDBO(); $query = 'SELECT `rawdata` FROM `#__youtubegallery_videos` WHERE INSTR(`datalink`,"'.$url.'") LIMIT 1'; $db->setQuery($query); if (!$db->query()) die( $db->stderr()); $values=$db->loadAssocList(); if(count($values)==1) { $v=$values[0]; $rd=$v['rawdata']; if($rd!='' and $rd!='*youtubegallery_request*') return $rd; } return ''; } else { $htmlcode=''; if (function_exists('curl_init')) { $ch = curl_init(); $timeout = 150; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $htmlcode = curl_exec($ch); curl_close($ch); } elseif (ini_get('allow_url_fopen') == true) { $htmlcode = file_get_contents($url); } else { echo '<p style="color:red;">Cannot load data, enable "allow_url_fopen" or install cURL<br/> <a href="http://joomlaboat.com/youtube-gallery/f-a-q/why-i-see-allow-url-fopen-message" target="_blank">Here</a> is what to do. </p> '; } return $htmlcode; } } public static function ApplyPlayerParameters(&$settings,$youtubeparams) { if($youtubeparams=='') return; $a=str_replace("\n",'',$youtubeparams); $a=trim(str_replace("\r",'',$a)); $l=explode(';',$a); foreach($l as $o) { if($o!='') { $pair=explode('=',$o); if(count($pair)==2) { $option=trim(strtolower($pair[0])); $found=false; for($i=0;$i<count($settings);$i++) { if($settings[$i][0]==$option) { $settings[$i][1]=$pair[1]; $found=true; break; } } if(!$found) $settings[]=array($option,$pair[1]); }//if(count($pair)==2) }//if($o!='') } } public static function CreateParamLine(&$settings) { $a=array(); foreach($settings as $s) { if(isset($s[1])) $a[]=$s[0].'='.$s[1]; } return implode('&',$a); } public static function getSettingValue($option) { $db = JFactory::getDBO(); $query = 'SELECT `value` FROM `#__youtubegallery_settings` WHERE `option`="'.$option.'" LIMIT 1'; $db->setQuery($query); if (!$db->query()) die( $db->stderr()); $values=$db->loadAssocList(); if(count($values)==0) return ""; $v=$values[0]; return $v['value']; } public static function get_alias($title,$videoid) { if($videoid!='') { $alias=YouTubeGalleryMisc::slugify($title); if($alias!="") { $db = JFactory::getDBO(); $db->setQuery('SELECT `alias` FROM `#__youtubegallery_videos` WHERE `alias`="'.$alias.'"'); if (!$db->query()) die ('yg get_alias err:'. $db->stderr()); $rows = $db->loadObjectList(); if(count($rows)>1) $alias.="_".$videoid; } else return $videoid; if($alias=='') return 'x-'.$videoid; else return $alias; } else return '-wrong video id-'; } public static function slugify($text) { //or use //JFilterOutput::stringURLSafe($this->alias); // replace non letter or digits by - $text = preg_replace('~[^\\pL\d]+~u', '-', $text); //ini_set('mbstring.substitute_character', "none"); //$text= mb_convert_encoding($text, 'UTF-8', 'UTF-8'); // transliterate $text = iconv('utf-8', 'us-ascii//IGNORE//TRANSLIT', $text); //$text = iconv('utf-8', 'ISO-8859-1//TRANSLIT', $text); // trim $text = trim($text, '-'); // lowercase $text = strtolower($text); // remove unwanted characters $text = preg_replace('~[^-\w]+~', '', $text); if (empty($text)) return ''; return $text; } public static function getVideoIDbyAlias($alias) { $db = JFactory::getDBO(); $db->setQuery('SELECT `videoid` FROM `#__youtubegallery_videos` WHERE `alias`="'.$alias.'" LIMIT 1'); if (!$db->query()) die ('yg router.php 2 err:'. $db->stderr()); $rows = $db->loadObjectList(); if(count($rows)==0) return ''; else { $row=$rows[0]; return $row->videoid; } } /* USER-AGENTS ================================================== */ //http://stackoverflow.com/questions/6524301/detect-mobile-browser public static function check_user_agent ( $type = NULL ) { $user_agent = strtolower ( $_SERVER['HTTP_USER_AGENT'] ); if ( $type == 'bot' ) { // matches popular bots if ( preg_match ( "/googlebot|adsbot|yahooseeker|yahoobot|msnbot|watchmouse|pingdom\.com|feedfetcher-google/", $user_agent ) ) { return true; // watchmouse|pingdom\.com are "uptime services" } } else if ( $type == 'browser' ) { // matches core browser types if ( preg_match ( "/mozilla\/|opera\//", $user_agent ) ) { return true; } } else if ( $type == 'mobile' ) { // matches popular mobile devices that have small screens and/or touch inputs // mobile devices have regional trends; some of these will have varying popularity in Europe, Asia, and America // detailed demographics are unknown, and South America, the Pacific Islands, and Africa trends might not be represented, here if ( preg_match ( "/phone|iphone|itouch|ipod|symbian|android|htc_|htc-|palmos|blackberry|opera mini|iemobile|windows ce|nokia|fennec|hiptop|kindle|mot |mot-|webos\/|samsung|sonyericsson|^sie-|nintendo/", $user_agent ) ) { // these are the most common return true; } else if ( preg_match ( "/mobile|pda;|avantgo|eudoraweb|minimo|netfront|brew|teleca|lg;|lge |wap;| wap /", $user_agent ) ) { // these are less common, and might not be worth checking return true; } } return false; } public static function check_user_agent_for_apple () { $user_agent = strtolower ( $_SERVER['HTTP_USER_AGENT'] ); if ( preg_match ( "/iphone|itouch|ipod|ipad/", $user_agent ) ) { // these are the most common return true; } return false; } } ?>