| Server IP : 180.180.241.3 / Your IP : 216.73.216.216 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 : C:/AppServ/www/news/administrator/components/com_youtubegallery/models/ |
Upload File : |
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.model');
jimport('joomla.filesystem.file');
jimport('joomla.filesystem.folder' );
jimport('joomla.filesystem.archive' );
/**
* YoutubeGallery - Theme Import Model
*/
class YoutubeGalleryModelThemeImport extends JModel
{
function upload_theme(&$msg)
{
$themecode = JRequest::getVar( 'themecode', '');
if($themecode!='')
{
$themecode=urldecode($_POST['themecode']);
$themecode=str_replace('\"','"',$themecode);
$themecode=str_replace('\\\'','\'',$themecode);
return $this->createTheme($themecode,$msg);
}
$file = JRequest::getVar( 'themefile', '', 'files', 'array');
$uploadedfile= basename( $file['name']);
echo 'Uploaded file: "'.$uploadedfile.'"<br/>';
$folder_name=$this->getFolderNameOnly($file['name']);
if($folder_name=='')
{
$msg='Wrong file format, expecting ".zip"';
return false; //wrong file format, expecting .zip
}
$this->prepareFolderYG();
$path=JPATH_SITE.DS.'tmp'.DS.'youtubegallery'.DS;
if(file_exists($path.$uploadedfile))
{
echo 'Existing "'.$uploadedfile.'" file deleted.<br/>';
unlink($path.$uploadedfile);
}
if(!move_uploaded_file($file['tmp_name'], $path.$uploadedfile))
{
$msg='Cannot Move File';
return false;
}
echo 'File "'.$uploadedfile.'" moved form temporary location.<br/>';
$folder_name_created=$this->prepareFolder($folder_name,$path);
echo 'Folder "tmp'.DS.'youtubegallery'.DS.$folder_name_created.'" created.<br/>';
//echo '$folder_name='.$folder_name.'<br/>';
$zip =JArchive::getAdapter('zip');
$zip->extract($path.$uploadedfile, $path.$folder_name_created);
echo 'File "'.$uploadedfile.'" extracted.<br/>';
unlink($path.$uploadedfile);
echo 'File "'.$uploadedfile.'" deleted.<br/>';
if(file_exists($path.$folder_name_created.DS.'theme.txt'))
{
//Ok archive is fine, looks like it is really YG theme.
$filedata=file_get_contents ($path.$folder_name_created.DS.'theme.txt');
if($filedata=='')
{
//Archive doesn't containe Gallery Data
$msg='Gallery Data file is empty';
JFolder::delete($path.'youtubegallery');
return false;
}
$theme_row=unserialize($filedata);
$theme_row->themedescription=file_get_contents ($path.$folder_name_created.DS.'about.txt');
echo 'Theme Data Found<br/>';
if($theme_row->mediafolder!='')
{
//prepare media folder
$theme_row->mediafolder=$this->prepareFolder($theme_row->mediafolder,JPATH_SITE.DS.'images'.DS);
echo 'Media Folder "'.$theme_row->mediafolder.'" created.<br/>';
//move files
$this->moveFiles('tmp'.DS.'youtubegallery'.DS.$folder_name_created,'images'.DS.$theme_row->mediafolder);
}
}
else
{
$msg='Archive doesnt containe Gallery Data';
return false;
}
JFolder::delete($path);
//Add record to database
$theme_row->themename=$this->getThemeName(str_replace('"','',$theme_row->themename));
echo 'Theme Name: '.$theme_row->themename.'<br/>';
$this->saveTheme($theme_row);
echo 'Theme Imported<br/>';
return true;
}
function createTheme($themecode, &$msg)
{
$theme_row=unserialize($themecode);
if($theme_row===false)
{
$msg='Theme Code is corrupted.';
return false;
}
if($theme_row->themename=='')
{
$msg= 'Theme Code is incorrect.';
return false;
}
//Add record to database
$theme_row->themename=$this->getThemeName(str_replace('"','',$theme_row->themename));
echo 'Theme Name: '.$theme_row->themename.'<br/>';
$this->saveTheme($theme_row);
echo 'Theme Imported<br/>';
return true;
}
function saveTheme(&$theme_row)
{
$fields=array();
$fields[]='`themename`="'.$this->mysqlrealescapestring($theme_row->themename).'"';
$fields[]='`width`="'.$this->mysqlrealescapestring($theme_row->width).'"';
$fields[]='`height`="'.$this->mysqlrealescapestring($theme_row->height).'"';
$fields[]='`playvideo`="'.$this->mysqlrealescapestring($theme_row->playvideo).'"';
$fields[]='`repeat`="'.$this->mysqlrealescapestring($theme_row->repeat).'"';
$fields[]='`fullscreen`="'.$this->mysqlrealescapestring($theme_row->fullscreen).'"';
$fields[]='`autoplay`="'.$this->mysqlrealescapestring($theme_row->autoplay).'"';
$fields[]='`related`="'.$this->mysqlrealescapestring($theme_row->related).'"';
$fields[]='`showinfo`="'.$this->mysqlrealescapestring($theme_row->showinfo).'"';
$fields[]='`bgcolor`="'.$this->mysqlrealescapestring($theme_row->bgcolor).'"';
$fields[]='`cols`="'.$this->mysqlrealescapestring($theme_row->cols).'"';
$fields[]='`showtitle`="'.$this->mysqlrealescapestring($theme_row->showtitle).'"';
$fields[]='`cssstyle`="'.$this->mysqlrealescapestring($theme_row->cssstyle).'"';
$fields[]='`navbarstyle`="'.$this->mysqlrealescapestring($theme_row->navbarstyle).'"';
$fields[]='`thumbnailstyle`="'.$this->mysqlrealescapestring($theme_row->thumbnailstyle).'"';
$fields[]='`linestyle`="'.$this->mysqlrealescapestring($theme_row->linestyle).'"';
$fields[]='`showlistname`="'.$this->mysqlrealescapestring($theme_row->showlistname).'"';
$fields[]='`listnamestyle`="'.$this->mysqlrealescapestring($theme_row->listnamestyle).'"';
$fields[]='`showactivevideotitle`="'.$this->mysqlrealescapestring($theme_row->showactivevideotitle).'"';
$fields[]='`activevideotitlestyle`="'.$this->mysqlrealescapestring($theme_row->activevideotitlestyle).'"';
$fields[]='`description`="'.$this->mysqlrealescapestring($theme_row->description).'"';
$fields[]='`descr_position`="'.$this->mysqlrealescapestring($theme_row->descr_position).'"';
$fields[]='`descr_style`="'.$this->mysqlrealescapestring($theme_row->descr_style).'"';
$fields[]='`color1`="'.$this->mysqlrealescapestring($theme_row->color1).'"';
$fields[]='`color2`="'.$this->mysqlrealescapestring($theme_row->color2).'"';
$fields[]='`border`="'.$this->mysqlrealescapestring($theme_row->border).'"';
$fields[]='`openinnewwindow`="'.$this->mysqlrealescapestring($theme_row->openinnewwindow).'"';
$fields[]='`rel`="'.$this->mysqlrealescapestring($theme_row->rel).'"';
$fields[]='`hrefaddon`="'.$this->mysqlrealescapestring($theme_row->hrefaddon).'"';
$fields[]='`pagination`="'.$this->mysqlrealescapestring($theme_row->pagination).'"';
$fields[]='`customlimit`="'.$this->mysqlrealescapestring($theme_row->customlimit).'"';
$fields[]='`controls`="'.$this->mysqlrealescapestring($theme_row->controls).'"';
$fields[]='`youtubeparams`="'.$this->mysqlrealescapestring($theme_row->youtubeparams).'"';
$fields[]='`playertype`="'.$this->mysqlrealescapestring($theme_row->playertype).'"';
$fields[]='`useglass`="'.$this->mysqlrealescapestring($theme_row->useglass).'"';
$fields[]='`logocover`="'.$this->mysqlrealescapestring($theme_row->logocover).'"';
$fields[]='`customlayout`="'.$this->mysqlrealescapestring($theme_row->customlayout).'"';
$fields[]='`prepareheadtags`="'.$this->mysqlrealescapestring($theme_row->prepareheadtags).'"';
$fields[]='`muteonplay`="'.$this->mysqlrealescapestring($theme_row->muteonplay).'"';
$fields[]='`volume`="'.$this->mysqlrealescapestring($theme_row->volume).'"';
$fields[]='`orderby`="'.$this->mysqlrealescapestring($theme_row->orderby).'"';
$fields[]='`customnavlayout`="'.$this->mysqlrealescapestring($theme_row->customnavlayout).'"';
$fields[]='`responsive`="'.$this->mysqlrealescapestring($theme_row->responsive).'"';
$fields[]='`mediafolder`="'.$this->mysqlrealescapestring($theme_row->mediafolder).'"';
$fields[]='`readonly`="'.$this->mysqlrealescapestring($theme_row->readonly).'"';
$fields[]='`headscript`="'.$this->mysqlrealescapestring($theme_row->headscript).'"';
$fields[]='`themedescription`="'.$this->mysqlrealescapestring($theme_row->themedescription).'"';
if(isset($theme_row->nocookie))
$fields[]='`nocookie`="'.$this->mysqlrealescapestring($theme_row->nocookie).'"';
if(isset($theme_row->changepagetitle))
$fields[]='`changepagetitle`="'.$this->mysqlrealescapestring($theme_row->changepagetitle).'"';
$query='INSERT `#__youtubegallery_themes` SET '.implode(', ',$fields);
$db = JFactory::getDBO();
$db->setQuery($query);
if (!$db->query()) die ( $db->stderr());
}
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;
}
function getThemeName($themename)
{
//echo 'Get Theme Name<br/>';
if(!$this->checkIfThemenameExist($themename))
return $themename;
$i=0;
do
{
$i++;
}while($this->checkIfThemenameExist($themename.' ('.$i.')'));
return $themename.' ('.$i.')';
}
function checkIfThemenameExist($themename)
{
$db = JFactory::getDBO();
//echo 'Theme name "'.$themename.'" checking..<br/>';
$query = 'SELECT `id` FROM `#__youtubegallery_themes` WHERE `themename`="'.$themename.'" LIMIT 1';
$db->setQuery($query);
if (!$db->query()) die ( $db->stderr());
return $db->getNumRows()>0;
}
function moveFiles($dirpath_from,$dirpath_to)
{
//$siteURL = JURI::base();
$files_to_archive=array();
$sys_path=JPATH_SITE.DS.$dirpath_from;
if(file_exists($sys_path)===false)
{
echo '<p>Media Folder "'.$dirpath_from.' ('.$sys_path.')" not found.</p>';
return $files_to_archive;
}
if ($handle = opendir($sys_path)) {
while (false !== ($file = readdir($handle))) {
if($file!='.' and $file!='..' and $file!='theme.txt' and $file!='about.txt')
{
if(!is_dir($sys_path.DS.$file))
{
$destination_file=JPATH_SITE.DS.$dirpath_to.DS.$file;
if(file_exists($sys_path.DS.$file)===false)
{
echo '<span style="color:red;">file "'.$file.'" ('.$sys_path.DS.$file.') not found.</span><br/>';
}
else
{
if(!(file_exists($destination_file)===false))
unlink($destination_file);
if(rename($sys_path.DS.$file,$destination_file)===false)
echo '<span style="color:red;">file "'.$file.'" cannot be moved.</span><br/>';
else
echo 'File "'.$file.'" moved.<br/>';
}
}
}
}
}
}
function getFolderNameOnly($filename)
{
//echo 'File name: '.$filename.'<br/>';
$p=explode('.',$filename);
if(count($p)<2)
return '';
if(strtolower($p[1])!='zip')
return '';
return $p[0];
}
function prepareFolderYG()
{
$path=JPATH_SITE.DS.'tmp'.DS;
if(file_exists($path.'youtubegallery'))
{
//JFolder::delete($path.'youtubegallery');
}
else
{
echo 'Folder "tmp/youtubegallery" created.<br/>';
mkdir($path.'youtubegallery');
}
}
function prepareFolder($folder_base_name, $path)
{
$this->prepareFolderYG();
if(file_exists($path.$folder_base_name) or file_exists($path.$folder_base_name.'.zip'))
{
$i=0;
do
{
$i++;
$folder=$folder_base_name.'_'.$i;
}while(file_exists($path.$folder) or file_exists($path.$folder.'.zip'));
}
else
$folder=$folder_base_name;
if(mkdir($path.$folder)===false)
{
echo '<p>Cannot create temporary folder in "tmp/"</p>';
return '';
}
return $folder;
}
}