<?php
    /*
    * Composant AjaxDropFilesFP pour Joomla! 3.x
    * Version J3.7F
    * Creation date: Mars 2017
    * Author: Fabrice4821 - www.gmapfp.org
    * Author email: webmaster@gmapfp.org
	* License GNU/GPL
    */

defined('_JEXEC') or die;
jimport( 'joomla.filesystem.folder' ); 
jimport( 'joomla.filesystem.file' ); 

// Reference global application object
$app = JFactory::getApplication();
$input = $app->input;
// Load language file for module
$lang     = JFactory::getLanguage();

$task = $input->get('task', '');
$module_id = $input->getInt('module_id', '');

$file_dir = 'media/mod_galleryfp/galleries/'.$module_id;
$allowed_ext = array('jpeg','jpg','png','gif','tif');

if ($task == 'add') {

	$data_info = '';

	if(!file_exists(JPATH_ROOT.'/'.$file_dir)){
		JFolder::create(JPATH_ROOT.'/'.$file_dir);
		$data = '<html><body bgcolor="#FFFFFF"></body></html>';
		JFile::write(JPATH_ROOT.'/'.$file_dir.'/index.html', $data);
	}

	if(strtolower($_SERVER['REQUEST_METHOD']) != 'post'){            
		exit_upload(JText::_('COM_AJAXDROPFILESFP_CTRL_FILES_WRONG_HTTP_RESPONSE'));
	}

	$existing_files = JFolder::files(JPATH_ROOT.'/'.$file_dir);
	if (count($existing_files)> 3+3) 	exit_upload(JText::_('COM_AJAXDROPFILESFP_TOO_MANY_FILES'));

	if(array_key_exists('fpfile',$_FILES) && $_FILES['fpfile']['error'] == 0 ){

			$fpfile = $_FILES['fpfile'];
			if(!in_array(strtolower(JFile::getExt($fpfile['name'])),$allowed_ext)){
				exit_upload(JText::_('COM_AJAXDROPFILESFP_CTRL_FILES_WRONG_FILE_EXTENSION').' : '.strtolower(JFile::getExt($fpfile['name'])));
			}
		   
			if(!JFile::upload($fpfile['tmp_name'], JPATH_ROOT.'/'.$file_dir.'/'.utf8_decode(urldecode($fpfile['name'])))){
				exit_upload(JText::_('COM_AJAXDROPFILESFP_CTRL_FILES_CANT_MOVE_FILE'));
			}

		jimport('joomla.language.helper');
		$langues = JLanguageHelper::createLanguageList('', constant('JPATH_SITE'), true, true);
		
		$json_name = 'json'.rtrim(strtr(base64_encode(urldecode($fpfile['name'])), '+/', '-_'), '=');
		$data_info = '<div class="control-group span12" id="'.$json_name.'">';
			$data_info .= '<div class="span3 control-group">';
				$data_info .= '<label name="files_galleryfp">'.urldecode($fpfile['name']).' </label>';
				$data_info .= '<img src="'.JURI::base().$file_dir.'/'.urldecode($fpfile['name']).'" style="height:60px"  /><span onclick="jQuery(\'#'.$json_name.'\').addClass(\'alert-danger\');delete_file(\''.urldecode($fpfile['name']).'\');" class="icon-trash"></span>';
			$data_info .= '</div>';
			$data_info .= '<div class="span9 control-group">';
			foreach ($langues as $langue) {
				$json_lang = str_replace('-', '_', $langue['value']);
				eval('$json_value = @$param_json->'.$json_name.'->'.$json_lang.';');
				$data_info .= '<div class="span4 langue">';
					$data_info .= $langue['value'].' <textarea name="'.$json_name.'_'.$langue['value'].'" file="'.$json_name.'" lang="'.$json_lang.'" id="'.$json_name.'_'.$langue['value'].'" onChange="update_json_value(this)">'.$json_value.'</textarea>';
				$data_info .= '</div>';
			}
			$data_info .= '</div>';
		$data_info .= '</div>';
		
		$json_file = '{"json'.rtrim(strtr(base64_encode(urldecode($fpfile['name'])), '+/', '-_'), '=').'": {'."\n";
		$json_name = 'json'.rtrim(strtr(base64_encode(urldecode($fpfile['name'])), '+/', '-_'), '=');
		$json_langage = array();
		foreach ($langues as $langue) {
			$json_lang = str_replace('-', '_', $langue['value']);
			eval('$json_value = @$param_json->'.$json_name.'->'.$json_lang.';');
			$json_langage[] = '"'.str_replace('-', '_', $langue['value']).'":'.'"'.$json_value.'"';
		}
		$json_file .= implode(','."\n", $json_langage);
		$json_file .= '}}';
		
		$data_info = array('content' => $data_info, 'json_data' => $json_file);
	}

	exit_upload(true, $data_info);
}

if ($task == 'delete') {
	$data = explode(',', $input->getString('data', ''));
	if (JFile::delete(JPATH_ROOT.'/'.$file_dir.'/'.utf8_decode($data[0]))) {
		$json_name = 'json'.rtrim(strtr(base64_encode($data[0]), '+/', '-_'), '=');
		exit_upload(true, $json_name);
	} else 
		exit_upload(false, $json_name);
	JFactory::getApplication()->close();
}

function exit_upload($status,$datas='') {
	$response = array('response'=>$status,'datas'=>$datas);            
	echo json_encode($response);
	JFactory::getApplication()->close();
}
