Your IP : 10.10.0.253


Current Path : /var/www/components/com_yendifvideoshare/
Upload File :
Current File : /var/www/components/com_yendifvideoshare/router.php

<?php
/**
 * @version    1.2.9
 * @package    Com_YendifVideoShare
 * @author     PluginsWare Interactive Pvt. Ltd <admin@yendifplayer.com>
 * @copyright  Copyright (c) 2012 - 2021 PluginsWare Interactive Pvt. Ltd. All Rights Reserved.
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

// Prevent direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

class YendifVideoShareRouter extends JComponentRouterBase {

	public function build( &$query ) {	
		$segments = array();	
		
		$menu = JFactory::getApplication()->getMenu();		
		
	    // Detect the active menu item
	    if ( empty( $query['Itemid'] ) ) {		
			$menuItem = $menu->getActive();
	    } else {
			$menuItem = $menu->getItem( $query['Itemid'] );
	    }	
		
	    $option = ! empty( $menuItem->component ) ? $menuItem->component : null;        
	    $view   = ! empty( $query['view'] )       ? $query['view']       : null;
	    $layout = ! empty( $query['layout'] )     ? $query['layout']     : null;
	    $id     = ! empty( $query['id'] )         ? $query['id']         : null;		

		// JoomSEF bug workaround
	    if ( isset( $query['start'] ) && isset( $query['limitstart'] ) ) {
			if ( (int) $query['limitstart'] != (int) $query['start'] && (int) $query['start'] > 0 ) {
				// let's make it clear - 'limitstart' has higher priority than 'start' parameter, 
				// however ARTIO JoomSEF doesn't seem to respect that.
				$query['start'] = $query['limitstart'];
				unset( $query['limitstart'] );
			}
	    }
	    // JoomSEF workaround - end
	 	 
		if ( isset( $query['view'] ) ) {
			$segments[] = $query['view'];
			unset( $query['view'] );
	    }
	    
	    if ( isset( $query['task'] ) ) {
			$segments[] = $query['task'];
			unset( $query['task'] );
	    }
	    
	    if ( isset( $query['action'] ) ) {
			$segments[] = $query['action'];
			unset( $query['action'] );
	    }
	    
	    if ( isset( $query['id'] ) ) {
			$segments[] = $query['id'];
			unset( $query['id'] );
	    }
		
	    if ( isset( $query['layout'] ) ) {
			$segments[] = $query['layout'];
			unset( $query['layout'] );
	    }
			
		$config    = $this->getYendifConfig();
		$catName   = $config->sef_cat;
		$videoName = $config->sef_video_prefix;	
		$isPos     = $config->sef_position;
		$sptr      = $config->sef_sptr ? '/' : '-';   
		
		if ( $view && $option == 'com_yendifvideoshare' || $option != 'com_yendifvideoshare' ) {		 
			if ( ! empty( $segments ) ) {			
				if ( $segments[0] == 'category' ) {
					$segments[0] = $catName;			
					$segments[1] = JString::str_ireplace( ':', $sptr, @$segments[1] ); 

					if ( $isPos ) {	
						$temp = explode( $sptr, $segments[1], 2 );					
						$segments[1] = @$temp[1].$sptr.$temp[0];	
					}				
				} elseif ( $segments[0] == 'video' ) {
					if ( $config->sef_video == '0' ) {
						$segments[0] = $videoName;	
					} elseif ( $config->sef_video == '1' ) {
						@$catid = explode( ':', $segments[1] );					
						$segments[0] = $this->getYendifCategorySlug( (int) $catid[0] );    				
					} else {
						$segments[0] = 'video';
					}	

					$segments[1] = JString::str_ireplace(':', $sptr, @$segments[1]);    		
					if ( $isPos ) {	
						$temp = explode( $sptr, $segments[1], 2 );					
						$segments[1] = @$temp[1] . $sptr . $temp[0];	
					}							
				}
			}	    
		}

		return $segments;		
	}

	public function parse( &$segments ) {	
		$vars  = array();
		
		$config  = $this->getYendifConfig();
		$catName = $config->sef_cat;	
		$isPos   = $config->sef_position;
		$sptr    = $config->sef_sptr ? '/' : '-' ;		
		
		if ( $config->sef_video > 0 && $segments[0] != $catName && $segments[0] != 'category' && $segments[0] != 'user' && $segments[0] != 'search' ) {
			$videoN = array_splice( $segments, 0, 1, 'video' );
			$videoName = $videoN[0];
		} else {
			$videoName = $config->sef_video_prefix;	
		}
			
		 switch ( $segments[0] ) {    
			case 'categories':
				$vars['view'] = 'categories';	

				if ( isset( $segments[1] ) ) {
					$vars['id'] = $segments[1];
				}			
				break;
			case 'category':
			case $catName:
				$vars['view'] = 'category';
											
				if ( ! isset( $segments[1] ) || $segments[1] == '' ) {
					JFactory::getApplication()->enqueueMessage( JText::_( 'JGLOBAL_CATEGORY_NOT_FOUND' ), 'error' );
				} 

				$alias = null;
				if ( $sptr == '-' ) {
					if ( $isPos > 0 && $sptr == 0 ) { 
						$temp = explode( $sptr, $segments[1] );	 
						$vars['id'] = end( $temp );
						$alias = join( $sptr, explode( $sptr, $segments[1], -1 ) );
				     } else {
						$temp = explode( $sptr, $segments[1], 2 );	 
						$vars['id'] = $temp[0];	
						$alias = isset( $temp[1] ); 

				     }
				} elseif ( $sptr == '/' ) {
					if ( $isPos > 0 && $sptr == 0 ) {
						$vars['id'] = $segments[2];
						$alias = $segments[1];
				    } else {
						$vars['id'] = $segments[1];
						$alias = $segments[2];
				    }
				}
				break;
			case 'videos':
				$vars['view'] = 'videos';
				if ( isset( $segments[1] ) ) {
					$vars['id'] = $segments[1];
				}	
				break;
			case 'video':
			case $videoName:			 			
				$vars['view'] = 'video';				
				
				if ( ! isset( $segments[1] ) || $segments[1] == '' ) {
					JFactory::getApplication()->enqueueMessage( JText::_( 'JERROR_PAGE_NOT_FOUND' ), 'error' );
				} 

				$alias = null;
				if ( $sptr == '-' ) {
					if ( $isPos > 0 && $sptr == 0 ) { 
						$temp = explode( $sptr, $segments[1] );	 
						$vars['id'] = end( $temp );
						$alias = join( $sptr, explode( $sptr, $segments[1],-1 ) );
				     } else {
						$temp = explode( $sptr, $segments[1], 2);	 
						$vars['id'] = $temp[0] ;
						$alias = $temp[1]; 
				     }
				} elseif ( $sptr == '/' ) {
				    if ( $isPos > 0 && $sptr == 0 ) {
						$vars['id'] = $segments[2];
						$alias = $segments[1];
				     } else {
						$vars['id'] = $segments[1];
						$alias = $segments[2];
				     }
				}
				break;		
			case 'user':
				$vars['view'] = 'user';
				
				if ( isset( $segments[1] ) == 'add' ) {
					$vars['task'] = $segments[1];
				}
					
				if ( isset( $segments[1] ) == 'edit' && $segments[1] != 'add' ) {												
					$vars['task'] = $segments[1];
					@$vars['id']  = $segments[2];
				}
					
				if ( isset( $segments[1] ) == 'delete' && $segments[1] != 'add' ) {										
					$vars['task'] = $segments[1];
					@$vars['id']  = $segments[2];					
				}								
				break;
			case 'search':
				$vars['view'] = 'search';				
				break;
			case 'upload':
				$vars['view'] = 'upload';				
				break;
			case 'ajax':
				$vars['view'] = 'ajax';				
				break;
			default:
				JFactory::getApplication()->enqueueMessage( JText::_( 'JERROR_PAGE_NOT_FOUND' ) );
	    }
	
	    return $vars;			
	}

	private function getYendifConfig() {	
		$db = JFactory::getDbo();      

		$query = 'SELECT name,value FROM #__yendifvideoshare_options';

		$db->setQuery( $query );		
		$items = $db->loadObjectList(); 
					
		$item = new JObject();
		foreach ( $items as $option ) {
			$item->{$option->name} = $option->value;			
		}		
	
        return $item;		
	}
		
	private function getYendifCategorySlug( $catid ) {	
	    $db = JFactory::getDbo();
			
       	$query  = 'SELECT v.catid, c.alias as catalias FROM #__yendifvideoshare_videos AS v';
    	$query .= ' LEFT JOIN #__yendifvideoshare_categories AS c ON v.catid = c.id';
    	$query .= ' WHERE v.id=' . (int) $catid;

   		$db->setQuery( $query );
		$item = $db->loadObject();
		
		if ( ! empty( $item->catalias ) ) {
			return $item->catalias;
		}
		
		return 'video';				
	} 
	 
}