591 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			591 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /*
 | |
|  * @package Joomla 1.5
 | |
|  * @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
 | |
|  * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
 | |
|  *
 | |
|  * @component Phoca Component
 | |
|  * @copyright Copyright (C) Jan Pavelka www.phoca.cz
 | |
|  * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
 | |
|  */
 | |
| defined('_JEXEC') or die();
 | |
| use Joomla\CMS\MVC\Model\AdminModel;
 | |
| use Joomla\CMS\Factory;
 | |
| use Joomla\CMS\Component\ComponentHelper;
 | |
| use Joomla\CMS\Filesystem\Path;
 | |
| use Joomla\CMS\Language\Text;
 | |
| use Joomla\CMS\Router\Route;
 | |
| use Joomla\CMS\Object\CMSObject;
 | |
| use Joomla\CMS\Filesystem\Folder;
 | |
| use Joomla\CMS\Filesystem\File;
 | |
| use Joomla\CMS\Table\Table;
 | |
| jimport('joomla.application.component.modeladmin');
 | |
| jimport('joomla.filesystem.folder');
 | |
| jimport('joomla.filesystem.file');
 | |
| 
 | |
| class PhocaDownloadCpModelPhocaDownloadM extends AdminModel
 | |
| {
 | |
| 
 | |
| 	protected $option 		= 'com_phocadownload';
 | |
| 	protected $text_prefix 	= 'com_phocadownload';
 | |
| 	public 		$typeAlias 	= 'com_phocadownload.phocadownloadm';
 | |
| 
 | |
| 	protected $fileCount		= 0;
 | |
| 	protected $categoryCount	= 0;
 | |
| 
 | |
| 	function __construct() {
 | |
| 		$this->fileCount 		= 0;
 | |
| 		$this->categoryCount 	= 0;
 | |
| 		parent::__construct();
 | |
| 	}
 | |
| 
 | |
| 		function setFileCount($count) {
 | |
| 		$this->fileCount = $this->fileCount + $count;
 | |
| 	}
 | |
| 
 | |
| 	function setCategoryCount($count) {
 | |
| 		$this->categoryCount = $this->categoryCount + $count;
 | |
| 	}
 | |
| 
 | |
| 	function save($data) {
 | |
| 
 | |
| 		$app		= Factory::getApplication();
 | |
| 
 | |
| 		$foldercid	= $app->input->get('foldercid', array(), 'raw');
 | |
| 		$cid		= $app->input->get('cid', 0, 'raw');
 | |
| 		$data		= $app->input->get('jform', array(0), 'post', 'array');
 | |
| 
 | |
| 
 | |
| 		// =================================================
 | |
| 		// Make a copy for play and preview
 | |
| 		$paramsC 	= ComponentHelper::getParams('com_phocadownload') ;
 | |
| 		$papCopy 	= $paramsC->get( 'pap_copy', 0 );
 | |
| 		$data['pap_copy_m'] = 0;
 | |
| 		if ($papCopy == 2 || $papCopy == 3) {
 | |
| 			$data['pap_copy_m'] = 1;
 | |
| 		}
 | |
| 		// =================================================
 | |
| 
 | |
| 
 | |
| 		if(isset($foldercid)) {
 | |
| 			$data['foldercid']	= $foldercid;
 | |
| 		}
 | |
| 		if(isset($cid)) {
 | |
| 			$data['cid']		= $cid;
 | |
| 		}
 | |
| 
 | |
| 		if (isset($data['catid']) && (int)$data['catid'] > 0) {
 | |
| 			$data['catid']		= (int)$data['catid'];
 | |
| 		} else {
 | |
| 			$data['catid']		= 0;
 | |
| 		}
 | |
| 
 | |
| 		//Get folder variables from Helper
 | |
| 		$path 			= PhocaDownloadPath::getPathSet();
 | |
| 		$origPath 		= $path['orig_abs_ds'];
 | |
| 		$origPathServer = str_replace('\\', '/', Path::clean($path['orig_abs_ds']));
 | |
| 
 | |
| 
 | |
| 
 | |
| 		// Cache all existing categories
 | |
| 		$query = 'SELECT id, title, parent_id'
 | |
| 	    . ' FROM #__phocadownload_categories' ;
 | |
| 		$this->_db->setQuery( $query );
 | |
| 	    $existingCategories = $this->_db->loadObjectList() ;
 | |
| 
 | |
| 		// Cache all existing files
 | |
| 		$query = 'SELECT catid, filename'
 | |
| 	    . ' FROM #__phocadownload';
 | |
| 		$this->_db->setQuery( $query );
 | |
| 	    $existingFiles = $this->_db->loadObjectList() ;
 | |
| 
 | |
| 		$result					= new StdClass();
 | |
| 		$result->category_count = 0;
 | |
| 		$result->image_count 	= 0;
 | |
| 
 | |
| 
 | |
| 
 | |
| 		// Category will be saved - Files will be saved in recursive function
 | |
| 		if (isset($data['foldercid'])) {
 | |
| 			foreach ($data['foldercid'] as $foldername) {
 | |
| 				if (strlen($foldername) > 0) {
 | |
| 					$fullPath 		= $path['orig_abs_ds'].$foldername;
 | |
| 
 | |
| 					$result 		= $this->_createCategoriesRecursive( $origPathServer, $fullPath, $existingCategories, $existingFiles, $data['catid'], $data );
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		// Only Files will be saved
 | |
| 
 | |
| 		if (!empty($data['cid'])) {
 | |
| 
 | |
| 			// Make a copy for play and preview (1) --------
 | |
| 			if (isset($data['pap_copy_m']) && $data['pap_copy_m'] == 1) {
 | |
| 				//$paramsC 				= JComponentHelper::getParams('com_phocadownload') ;
 | |
| 				$overwriteExistingFiles = $paramsC->get( 'overwrite_existing_files', 0 );
 | |
| 			}
 | |
| 			// ------------------------------------------------
 | |
| 
 | |
| 			foreach ($data['cid'] as $filename) {
 | |
| 				if ($filename) {
 | |
| 					//$ext = strtolower(JFile::getExt($filename));
 | |
| 					$row = $this->getTable('phocadownload');
 | |
| 
 | |
| 					$datam = array();
 | |
| 					$datam['published']		= $data['published'];
 | |
| 					$datam['catid']			= $data['catid'];
 | |
| 					$datam['approved']		= $data['approved'];
 | |
| 					$datam['language']		= $data['language'];
 | |
| 					$datam['filename']		= $filename;
 | |
| 
 | |
| 
 | |
| 					if ($data['title']	!= '') {
 | |
| 						$datam['title']		= $data['title'];
 | |
| 					} else {
 | |
| 						$datam['title']		= PhocaDownloadFile::getTitleFromFilenameWithoutExt($filename);
 | |
| 					}
 | |
| 
 | |
| 					if ($data['alias']	!= '') {
 | |
| 						$datam['alias']		= $data['alias'];
 | |
| 					} else {
 | |
| 						$datam['alias']		= $data['alias']; // PhocaDownloadFile::getAliasName($datam['title']);
 | |
| 					}
 | |
| 					$datam['token']			= PhocaDownloadUtils::getToken($datam['title'].$datam['filename']);
 | |
| 					// Make a copy for play and preview (2)
 | |
| 					if (isset($data['pap_copy_m']) && $data['pap_copy_m'] == 1) {
 | |
| 						$filenameExt 		= PhocaDownloadFile::getTitleFromFilenameWithExt($filename);
 | |
| 						$storedfilename		= $filename;
 | |
| 						$storedfoldername	= str_replace($filenameExt, '', $storedfilename);
 | |
| 						$o = $this->_copyPreviewAndPlay($filenameExt, $storedfilename, $storedfoldername, $path, $overwriteExistingFiles);
 | |
| 						$datam['filename_play']		= $o['filename_play'];
 | |
| 						$datam['filename_preview'] 	= $o['filename_preview'];
 | |
| 					}
 | |
| 
 | |
| 
 | |
| 					// Save
 | |
| 					// Bind the form fields to the Phoca download table
 | |
| 					if (!$row->bind($datam)) {
 | |
| 						//throw new Exception($this->_db->getError());
 | |
| 						$this->setError($row->getError());
 | |
| 						return false;
 | |
| 					}
 | |
| 
 | |
| 					// Create the timestamp for the date
 | |
| 					//$row->date = gmdate('Y-m-d H:i:s');
 | |
| 					$nullDate	= $this->_db->getNullDate();
 | |
| 					$date	= Factory::getDate();
 | |
| 					$row->date = $date->toSql();
 | |
| 
 | |
| 
 | |
| 
 | |
| 					if(intval($row->publish_up) == 0) {
 | |
| 						$row->publish_up = $row->date;//Factory::getDate()->toSql();
 | |
| 					}
 | |
| 
 | |
| 					// Handle never unpublish date
 | |
| 					if (trim((string)$row->publish_down) == Text::_('Never') || trim( (string)$row->publish_down ) == '') {
 | |
| 						$row->publish_down = $nullDate;
 | |
| 					} else {
 | |
| 						if (strlen(trim( $row->publish_down )) <= 10) {
 | |
| 							$row->publish_down .= ' 00:00:00';
 | |
| 						}
 | |
| 						//$date = JFactory::getDate($row->publish_down, $tzoffset);
 | |
| 						$date = Factory::getDate($row->publish_down);
 | |
| 						$row->publish_down = $date->toSql();
 | |
| 					}
 | |
| 					// - - - - - -
 | |
| 
 | |
| 
 | |
| 					// if new item, order last in appropriate group
 | |
| 
 | |
| 					if (!$row->id) {
 | |
| 						$where = 'catid = ' . (int) $row->catid ;
 | |
| 						$row->ordering = $row->getNextOrder( $where );
 | |
| 					}
 | |
| 
 | |
| 
 | |
| 					// Make sure the Phoca download table is valid
 | |
| 					if (!$row->check()) {
 | |
| 						//throw new Exception($this->_db->getError());
 | |
| 						$this->setError($row->getError());
 | |
| 						return false;
 | |
| 					}
 | |
| 
 | |
| 					// Store the Phoca download table to the database
 | |
| 					if (!$row->store()) {
 | |
| 						//throw new Exception($this->_db->getError());
 | |
| 						$this->setError($row->getError());
 | |
| 						return false;
 | |
| 					}
 | |
| 					$result->image_count++;
 | |
| 
 | |
| 				}
 | |
| 			}
 | |
| 			$this->setfileCount($result->image_count);
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		$msg = $this->categoryCount. ' ' .Text::_('COM_PHOCADOWNLOAD_CATEGORIES_ADDED') .', '.$this->fileCount. ' ' . Text::_('COM_PHOCADOWNLOAD_FILES_ADDED');
 | |
| 		$app->enqueueMessage($msg);
 | |
| 		$app->redirect(Route::_('index.php?option=com_phocadownload&view=phocadownloadfiles', false));
 | |
| 
 | |
| 		return true;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	protected function _createCategoriesRecursive(&$origPathServer, $path, &$existingCategories, &$existingFiles, $parentId = 0, $data = array() ) {
 | |
| 
 | |
| 		$totalresult					= new StdClass();
 | |
| 		$totalresult->files_count 		= 0 ;
 | |
| 		$totalresult->category_count	= 0 ;
 | |
| 		$totalresult->image_count		= 0 ;
 | |
| 
 | |
| 		$categoryName 	= basename($path);
 | |
| 		$id 			= $this->_getCategoryId( $existingCategories, $categoryName, $parentId ) ;
 | |
| 		$category 		= null;
 | |
| 
 | |
| 		// Full path: eg. "/home/www/joomla/files/categ/subcat/"
 | |
| 		$fullPath	   	= str_replace('\\', '/', Path::clean('/' . $path));
 | |
| 		// Relative path eg "categ/subcat"
 | |
| 		$relativePath 	= str_replace($origPathServer, '', $fullPath);
 | |
| 
 | |
| 		// Category doesn't exist
 | |
| 		if ( $id == -1 ) {
 | |
| 		  $row = $this->getTable('phocadownloadcat');
 | |
| 
 | |
| 		  $row->published 	= $data['published'];
 | |
| 		 // $row->approved	= $data['approved'];
 | |
| 		  $row->language	= $data['language'];
 | |
| 		  $row->parent_id 	= $parentId;
 | |
| 		  $row->title 		= $categoryName;
 | |
| 
 | |
| 		  // Create the timestamp for the date
 | |
| 		  $row->date 		= gmdate('Y-m-d H:i:s');
 | |
| 		 // $row->alias 		= $row->title; //PhocaDownloadFile::getAliasName($categoryName);
 | |
| 		  //$row->userfolder	= ltrim(str_replace('\\', '/', JPath::clean($relativePath )), '/');
 | |
| 		  $row->ordering 	= $row->getNextOrder( "parent_id = " . $this->_db->Quote($row->parent_id) );
 | |
| 
 | |
| 		  if (!$row->check()) {
 | |
| 			throw new Exception($row->getError('Check Problem'), 500);
 | |
| 			return false;
 | |
| 		  }
 | |
| 
 | |
| 		  if (!$row->store()) {
 | |
| 			throw new Exception($row->getError('Check Problem'), 500);
 | |
| 			return false;
 | |
| 		  }
 | |
| 
 | |
| 		  $category 			= new CMSObject();
 | |
| 		  $category->title 		= $categoryName ;
 | |
| 		  $category->parent_id 	= $parentId;
 | |
| 		  $category->id 		= $row->id;
 | |
| 		  $totalresult->category_count++;
 | |
| 		  $id = $category->id;
 | |
| 		  $existingCategories[] = &$category ;
 | |
| 		  $this->setCategoryCount(1);//This subcategory was added
 | |
| 		}
 | |
| 
 | |
| 
 | |
| 
 | |
| 		// Add all files from this folder
 | |
| 		$totalresult->image_count += $this->_addAllFilesFromFolder( $existingFiles, $id, $path, $relativePath, $data );
 | |
| 		$this->setfileCount($totalresult->image_count);
 | |
| 
 | |
| 		// Do sub folders
 | |
| 		$parentId 		= $id;
 | |
| 		$folderList 	= Folder::folders( $path, $filter = '.', $recurse = false, $fullpath = true, $exclude = array() );
 | |
| 		// Iterate over the folders if they exist
 | |
| 		if ($folderList !== false) {
 | |
| 			foreach ($folderList as $folder) {
 | |
| 				//$this->setCategoryCount(1);//This subcategory was added
 | |
| 				$folderName = $relativePath .'/' . str_replace($origPathServer, '', $folder);
 | |
| 				$result = $this->_createCategoriesRecursive( $origPathServer, $folder, $existingCategories, $existingFiles, $id , $data);
 | |
| 				$totalresult->image_count += $result->image_count ;
 | |
| 				$totalresult->category_count += $result->category_count ;
 | |
| 			}
 | |
| 		}
 | |
| 		return $totalresult ;
 | |
| 	}
 | |
| 
 | |
| 	protected function _getCategoryId( &$existingCategories, &$title, $parentId ) {
 | |
| 	    $id = -1;
 | |
| 		$i 	= 0;
 | |
| 		$count = count($existingCategories);
 | |
| 		while ( $id == -1 && $i < $count ) {
 | |
| 
 | |
| 			if ( $existingCategories[$i]->title == $title &&
 | |
| 			     $existingCategories[$i]->parent_id == $parentId ) {
 | |
| 				$id = $existingCategories[$i]->id ;
 | |
| 			}
 | |
| 			$i++;
 | |
| 		}
 | |
| 		return $id;
 | |
| 	}
 | |
| 
 | |
| 	protected function _FileExist( &$existing_image, &$filename, $catid ) {
 | |
| 	    $result = false ;
 | |
| 		$i 		= 0;
 | |
| 		$count = count($existing_image);
 | |
| 
 | |
| 		while ( $result == false && $i < $count ) {
 | |
| 			if ( $existing_image[$i]->filename == $filename &&
 | |
| 			     $existing_image[$i]->catid == $catid ) {
 | |
| 				$result = true;
 | |
| 			}
 | |
| 			$i++;
 | |
| 		}
 | |
| 		return $result;
 | |
| 	}
 | |
| 
 | |
| 	protected function _addAllFilesFromFolder(&$existingImages, $category_id, $fullPath, $rel_path, $data = array()) {
 | |
| 		$count = 0;
 | |
| 		$fileList = Folder::files( $fullPath );
 | |
| 		natcasesort($fileList);
 | |
| 		// Iterate over the files if they exist
 | |
| 		//file - abc.img, file_no - folder/abc.img
 | |
| 
 | |
| 		// Make a copy for play and preview (1) --------
 | |
| 		if (isset($data['pap_copy_m']) && $data['pap_copy_m'] == 1) {
 | |
| 			$path					= PhocaDownloadPath::getPathSet();
 | |
| 			$storedfoldername		= ltrim(str_replace('\\', '/', Path::clean($rel_path  )), '/');
 | |
| 			$paramsC 				= ComponentHelper::getParams('com_phocadownload') ;
 | |
| 			$overwriteExistingFiles = $paramsC->get( 'overwrite_existing_files', 0 );
 | |
| 		}
 | |
| 		// ------------------------------------------------
 | |
| 
 | |
| 		if ($fileList !== false) {
 | |
| 			foreach ($fileList as $filename) {
 | |
| 			    $storedfilename	= ltrim(str_replace('\\', '/', Path::clean($rel_path . '/' . $filename )), '/');
 | |
| 
 | |
| 				//$ext = strtolower(JFile::getExt($filename));
 | |
| 
 | |
| 				if (File::exists($fullPath.'/'.$filename) &&
 | |
| 					substr($filename, 0, 1) != '.' &&
 | |
| 					strtolower($filename) !== 'index.html' &&
 | |
| 					!$this->_FileExist($existingImages, $storedfilename, $category_id) ) {
 | |
| 
 | |
| 					$row = $this->getTable('phocadownload');
 | |
| 
 | |
| 					$datam = array();
 | |
| 					$datam['published']		= $data['published'];
 | |
| 					$datam['catid']			= $category_id;
 | |
| 					$datam['filename']		= $storedfilename;
 | |
| 					$datam['approved']		= $data['approved'];
 | |
| 					$datam['language']		= $data['language'];
 | |
| 
 | |
| 					// Default values
 | |
| 					if (!isset($data['publish_up']) || $data['publish_up'] == '0' || $data['publish_up'] == '') {
 | |
| 						$datam['publish_up']		= '0000-00-00 00:00:00';
 | |
| 					} else {
 | |
| 						$datam['publish_up']		= $data['publish_up'];
 | |
| 					}
 | |
| 
 | |
| 					if (!isset($data['publish_down']) || $data['publish_down'] == '0' || $data['publish_down'] == '') {
 | |
| 						$datam['publish_down']		= '0000-00-00 00:00:00';
 | |
| 					} else {
 | |
| 						$datam['publish_down']		= $data['publish_down'];
 | |
| 					}
 | |
| 
 | |
| 					if ($data['title']	!= '') {
 | |
| 						$datam['title']		= $data['title'];
 | |
| 					} else {
 | |
| 						$datam['title']		= PhocaDownloadFile::getTitleFromFilenameWithoutExt($filename);
 | |
| 					}
 | |
| 
 | |
| 					if ($data['alias']	!= '') {
 | |
| 						$datam['alias']		= $data['alias'];
 | |
| 					} else {
 | |
| 						$datam['alias']		= $data['alias'];//PhocaDownloadFile::get AliasName($datam['title']);
 | |
| 					}
 | |
| 					$datam['token']			= PhocaDownloadUtils::getToken($datam['title'].$datam['filename']);
 | |
| 
 | |
| 					$image 				= new CMSObject();
 | |
| 
 | |
| 					// Make a copy for play and preview (2)
 | |
| 					if (isset($data['pap_copy_m']) && $data['pap_copy_m'] == 1) {
 | |
| 						$o = $this->_copyPreviewAndPlay($filename, $storedfilename, $storedfoldername, $path, $overwriteExistingFiles);
 | |
| 						$datam['filename_play']		= $o['filename_play'];
 | |
| 						$datam['filename_preview'] 	= $o['filename_preview'];
 | |
| 					}
 | |
| 
 | |
| 
 | |
| 					// Save
 | |
| 					// Bind the form fields to the Phoca download table
 | |
| 					if (!$row->bind($datam)) {
 | |
| 						//throw new Exception($this->_db->getError());
 | |
| 						$this->setError($row->getError());
 | |
| 						return false;
 | |
| 					}
 | |
| 
 | |
| 					// Create the timestamp for the date
 | |
| 					$row->date = gmdate('Y-m-d H:i:s');
 | |
| 
 | |
| 					// if new item, order last in appropriate group
 | |
| 					if (!$row->id) {
 | |
| 						$where = 'catid = ' . (int) $row->catid ;
 | |
| 						$row->ordering = $row->getNextOrder( $where );
 | |
| 					}
 | |
| 
 | |
| 					// Make sure the Phoca download table is valid
 | |
| 					if (!$row->check()) {
 | |
| 						//throw new Exception($this->_db->getError());
 | |
| 						$this->setError($row->getError());
 | |
| 						return false;
 | |
| 					}
 | |
| 
 | |
| 					// Store the Phoca download table to the database
 | |
| 					if (!$row->store()) {
 | |
| 						//throw new Exception($this->_db->getError());
 | |
| 						$this->setError($row->getError());
 | |
| 						return false;
 | |
| 					}
 | |
| 					// --------------------------------------------
 | |
| 
 | |
| 					/*if ($this->firstImageFolder == '') {
 | |
| 						$this->setFirstImageFolder($row->filename);
 | |
| 					}*/
 | |
| 
 | |
| 					$image->filename 	= $storedfilename;
 | |
| 					$image->catid 		= $category_id;
 | |
| 
 | |
| 					$existingImages[] 	= &$image ;
 | |
| 					$count++ ;
 | |
| 
 | |
| 				}
 | |
| 
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 	//	$this->setfileCount($count);
 | |
| 		return $count;
 | |
| 	}
 | |
| 
 | |
| 	protected function _copyPreviewAndPlay($filename, $storedfilename, $storedfoldername, $path, $overwriteExistingFiles) {
 | |
| 
 | |
| 		$o['filename_play']		= '';
 | |
| 		$o['filename_preview'] 	= '';
 | |
| 		$canPlay			= PhocaDownloadFile::canPlay($filename);
 | |
| 		$canPreview 		= PhocaDownloadFile::canPreview($filename);
 | |
| 		$filepathPAP 		= Path::clean($path['orig_abs_pap_ds']. $storedfilename);
 | |
| 		//$filepathUserFolderPAP 		= JPath::clean($path['orig_abs_pap_ds']. $storedfoldername);
 | |
| 		$filepath 			= Path::clean($path['orig_abs_ds']. $storedfilename);
 | |
| 		$filepathPAPFolder	= Path::clean($path['orig_abs_pap_ds'] . '/'. PhocaDownloadFile::getFolderFromTheFile($storedfilename));
 | |
| 
 | |
| 		if ($canPlay || $canPreview) {
 | |
| 
 | |
| 			// 1. UPLOAD - this is real upload to folder
 | |
| 			// 2. STORE - this is storing info to database (e.g. download and play/preview files are identical, then there will be no copy of the file but only storing DB info
 | |
| 			$uploadPAP = 1;// upload file for preview and play
 | |
| 			$storePAP = 0;
 | |
| 
 | |
| 
 | |
| 			// 1. Care about upload
 | |
| 			if (File::exists($filepathPAP) && $overwriteExistingFiles == 0) {
 | |
| 				//$errUploadMsg = JText::_("COM_PHOCADOWNLOAD_FILE_ALREADY_EXISTS");
 | |
| 				//return false;
 | |
| 				$uploadPAP = 0; // don't upload if it exists, it is not main file, don't do false and exit
 | |
| 			}
 | |
| 
 | |
| 			// Overwrite file and add no new item to database
 | |
| 				$fileExistsPAP = 0;
 | |
| 				if (File::exists($filepathPAP) && $overwriteExistingFiles == 1) {
 | |
| 					$fileExistsPAP = 1;
 | |
| 
 | |
| 					if ($canPlay == 1) {
 | |
| 						// set new file only no other is set or it is the same like currect - to overwrite updated version of the same file
 | |
| 						if ($o['filename_play'] == '' || $o['filename_play'] == $o['filename']) {
 | |
| 							$o['filename_play']		=  $storedfilename;
 | |
| 						} else {
 | |
| 							$uploadPAP = 0;
 | |
| 						}
 | |
| 					} else if ($canPreview == 1) {
 | |
| 						// set new file only no other is set or it is the same like currect - to overwrite updated version of the same file
 | |
| 						if ($o['filename_preview'] == '' || $o['filename_preview'] == $o['filename']) {
 | |
| 							$o['filename_preview']	=  $storedfilename;
 | |
| 						} else {
 | |
| 							$uploadPAP = 0;
 | |
| 						}
 | |
| 					}
 | |
| 				}
 | |
| 
 | |
| 			if ($uploadPAP == 0) {
 | |
| 
 | |
| 			} else {
 | |
| 				if (!Folder::exists($filepathPAPFolder)) {
 | |
| 					if (Folder::create($filepathPAPFolder)) {
 | |
| 						$dataFile = "<html>\n<body bgcolor=\"#FFFFFF\">\n</body>\n</html>";
 | |
| 						File::write($filepathPAPFolder . '/' ."index.html", $dataFile);
 | |
| 					}
 | |
| 					// else {
 | |
| 						//$errUploadMsg = JText::_("COM_PHOCADOWNLOAD_UNABLE_TO_CREATE_FOLDER");
 | |
| 						//return false;
 | |
| 					//}
 | |
| 				}
 | |
| 
 | |
| 				if ($filepath === $filepathPAP) {
 | |
| 					// Don't try to copy the same file to the same file (including path) because you get error
 | |
| 					$storePAP = 1;
 | |
| 				} else if (!File::copy($filepath, $filepathPAP)) {
 | |
| 
 | |
| 					//$errUploadMsg = JText::_("COM_PHOCADOWNLOAD_UNABLE_TO_UPLOAD_FILE");
 | |
| 					//return false;
 | |
| 				} else {
 | |
| 					$storePAP = 1;
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			// 2. Care about store
 | |
| 			if ($filepath === $filepathPAP) {
 | |
| 
 | |
| 				// SPECIFIC CASE - administrator set the download folder the same like preview/play folder
 | |
| 				//               - in such case, there will be no copy because both files including path are identical
 | |
| 				//               - but we still write the info about play/preview into database
 | |
| 				//               - so no set uploadPAP to 0
 | |
| 				$storePAP = 1;
 | |
| 			}
 | |
| 
 | |
| 			if ($storePAP == 1) {
 | |
| 				if ($canPlay == 1) {
 | |
| 					$o['filename_play']		=  $storedfilename;
 | |
| 				} else if ($canPreview == 1) {
 | |
| 					$o['filename_preview']	=  $storedfilename;
 | |
| 				}
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		return $o;
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 	public function getForm($data = array(), $loadData = true) {
 | |
| 
 | |
| 		$form 	= $this->loadForm('com_phocadownload.phocadownloadmanager', 'phocadownloadmanager', array('control' => 'jform', 'load_data' => $loadData));
 | |
| 		if (empty($form)) {
 | |
| 			return false;
 | |
| 		}
 | |
| 		return $form;
 | |
| 	}
 | |
| 
 | |
| 	public function getTable($type = 'PhocaDownload', $prefix = 'Table', $config = array())
 | |
| 	{
 | |
| 		return Table::getInstance($type, $prefix, $config);
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 
 | |
| 	protected function loadFormData()
 | |
| 	{
 | |
| 		// Check the session for previously entered form data.
 | |
| 		$data = Factory::getApplication()->getUserState('com_phocadownloadm.edit.phocadownloadm.data', array());
 | |
| 
 | |
| 		if (empty($data)) {
 | |
| 			$data = $this->getItem();
 | |
| 		}
 | |
| 
 | |
| 		return $data;
 | |
| 	}
 | |
| 
 | |
| }
 | |
| ?>
 |