Your IP : 3.128.197.182


Current Path : /home/bitrix/ext_www/dev.klimatlend.ua/ajax/esolutions.importexcel/classes/general/
Upload File :
Current File : /home/bitrix/ext_www/dev.klimatlend.ua/ajax/esolutions.importexcel/classes/general/profile_fs.php

<?php
IncludeModuleLangFile(__FILE__);

class CKDAImportProfileFS extends CKDAImportProfileAll {
	protected static $moduleId = 'esolutions.importexcel';
	private $errors = array();
	
	function __construct($suffix='')
	{
		$this->suffix = $suffix;
		$this->pathProfiles = dirname(__FILE__).'/../../profiles'.(strlen($suffix) > 0 ? '_'.$suffix : '').'/';
		CheckDirPath($this->pathProfiles);
		$this->tmpdir = $_SERVER["DOCUMENT_ROOT"].'/upload/tmp/'.static::$moduleId.'/';
		CheckDirPath($this->tmpdir);
		$this->uploadDir = $_SERVER["DOCUMENT_ROOT"].'/upload/'.static::$moduleId.'/';
		CheckDirPath($this->uploadDir);
		
		$this->pathProfiles = realpath($this->pathProfiles).'/';
		$this->tmpdir = realpath($this->tmpdir).'/';
		$this->uploadDir = realpath($this->uploadDir).'/';
		$this->fileProfiles = $this->pathProfiles.'profiles.txt';
		
		if(!is_writable($this->pathProfiles)) $this->errors[] = sprintf(GetMessage('KDA_IE_DIR_NOT_WRITABLE'), $this->pathProfiles);
		if(!is_writable($this->tmpdir)) $this->errors[] = sprintf(GetMessage('KDA_IE_DIR_NOT_WRITABLE'), $this->tmpdir);
		if(!is_writable($this->uploadDir)) $this->errors[] = sprintf(GetMessage('KDA_IE_DIR_NOT_WRITABLE'), $this->uploadDir);
		if(file_exists($this->fileProfiles) && !is_writable($this->fileProfiles)) $this->errors[] = sprintf(GetMessage('KDA_IE_FILE_NOT_WRITABLE'), $this->fileProfiles);
	}
	
	public function GetList()
	{
		if(!file_exists($this->fileProfiles))
		{
			$arProfiles = array();
		}
		else
		{
			$arProfiles = unserialize(file_get_contents($this->fileProfiles));
			if(!is_array($arProfiles))
			{
				$arProfiles = array();
			}
		}
		
		return $arProfiles;
	}
	
	public function GetByID($ID)
	{
		$arProfiles = $this->GetList();
		$fn = $this->pathProfiles.$ID.'.txt';
		if($arProfiles[$ID] && file_exists($fn))
		{
			$arProfile = unserialize(file_get_contents($fn));
			if(!is_writable($fn)) $this->errors[] = sprintf(GetMessage('KDA_IE_FILE_NOT_WRITABLE'), $fn);
		}
		if(!isset($arProfile) || !is_array($arProfile))
		{
			$arProfile = array();
		}
		
		return $arProfile;
	}
	
	public function Add($name)
	{
		global $APPLICATION;
		$APPLICATION->ResetException();
		
		$name = trim($name);
		if(strlen($name)==0)
		{
			$APPLICATION->throwException(GetMessage("KDA_IE_NOT_SET_PROFILE_NAME"));
			return false;
		}
		
		$arProfiles = $this->GetList();
		
		if(in_array($name, $arProfiles))
		{
			$APPLICATION->throwException(GetMessage("KDA_IE_PROFILE_NAME_EXISTS"));
			return false;
		}
		
		$arProfiles[] = $name;
		file_put_contents($this->fileProfiles, serialize($arProfiles));
		
		$ID = array_search($name, $arProfiles);
		
		return $ID;
	}
	
	public function Update($ID, $settigs_default, $settings)
	{
		$arProfile = $this->GetByID($ID);
		if(is_array($settigs_default))
		{
			$arProfile['SETTINGS_DEFAULT'] = $settigs_default;
		}
		if(is_array($settings))
		{
			$arProfile['SETTINGS'] = $settings;
		}
		$fn = $this->pathProfiles.'/'.$ID.'.txt';
		file_put_contents($fn, serialize($arProfile));
	}
	
	public function UpdateExtra($ID, $extrasettings)
	{
		$arProfile = $this->GetByID($ID);
		if(!is_array($extrasettings)) $extrasettings = array();
		$arProfile['EXTRASETTINGS'] = $extrasettings;
		$fn = $this->pathProfiles.'/'.$ID.'.txt';
		file_put_contents($fn, serialize($arProfile));
	}
	
	public function Delete($ID)
	{
		$arProfiles = $this->GetList();
		unset($arProfiles[$ID]);
		file_put_contents($this->fileProfiles, serialize($arProfiles));
		
		$fn = $this->pathProfiles.'/'.$ID.'.txt';
		unlink($fn);
	}
	
	public function Copy($ID)
	{
		$arProfiles = $this->GetList();
		$newId = $this->Add($arProfiles[$ID].GetMessage("KDA_IE_PROFILE_COPY"));
		$fn = $this->pathProfiles.'/'.$newId.'.txt';
		copy($this->pathProfiles.'/'.$ID.'.txt', $fn);
		$arParams = unserialize(file_get_contents($fn));
		if($arParams['SETTINGS_DEFAULT']['DATA_FILE'])
		{
			$arParams['SETTINGS_DEFAULT']['DATA_FILE'] = CFile::CopyFile($arParams['SETTINGS_DEFAULT']['DATA_FILE']);
			$arFile = CFile::GetFileArray($arParams['SETTINGS_DEFAULT']['DATA_FILE']);
			$arParams['SETTINGS_DEFAULT']['URL_DATA_FILE'] = $arFile['SRC'];
			file_put_contents($fn, serialize($arParams));
		}
		return $newId;
	}
	
	public function Rename($ID, $name)
	{
		$arProfiles = $this->GetList();
		$arProfiles[$ID] = $name;
		file_put_contents($this->fileProfiles, serialize($arProfiles));
	}
	
	public function ApplyToLists($ID, $listFrom, $listTo)
	{
		if(!is_numeric($listFrom) || !is_array($listTo) || count($listTo)==0) return;
		$listTo = preg_grep('/^\d+$/', $listTo);
		if(count($listTo)==0) return;
		
		$fn = $this->pathProfiles.'/'.$ID.'.txt';
		$arParams = unserialize(file_get_contents($fn));
		foreach($listTo as $key)
		{
			$arParams['SETTINGS']['FIELDS_LIST'][$key] = $arParams['SETTINGS']['FIELDS_LIST'][$listFrom];
			$arParams['EXTRASETTINGS'][$key] = $arParams['EXTRASETTINGS'][$listFrom];
		}
		file_put_contents($fn, serialize($arParams));
	}
	
	public function GetProcessedProfiles()
	{
		$arProfiles = $this->GetList();
		foreach($arProfiles as $k=>$v)
		{
			$tmpfile = $this->tmpdir.$k.($this->suffix ? '_'.$this->suffix : '').'.txt';
			if(!file_exists($tmpfile) || filesize($tmpfile)>10*1024 || (time() - filemtime($tmpfile) < 4*60) || filemtime($tmpfile) < mktime(0, 0, 0, 12, 24, 2015))
			{
				unset($arProfiles[$k]);
				continue;
			}
			
			$arParams = CUtil::JsObjectToPhp(file_get_contents($tmpfile));
			$percent = round(((int)$arParams['total_read_line'] / (int)$arParams['total_file_line']) * 100);
			$percent = min($percent, 99);
			$arProfiles[$k] = array(
				'key' => $k,
				'name' => $v,
				'percent' => $percent
			);
		}
		if(!is_array($arProfiles)) $arProfiles = array();
		return $arProfiles;
	}
	
	public function RemoveProcessedProfile($id)
	{
		$tmpfile = $this->tmpdir.$id.($this->suffix ? '_'.$this->suffix : '').'.txt';
		if(file_exists($tmpfile))
		{
			$arParams = CUtil::JsObjectToPhp(file_get_contents($tmpfile));
			if($arParams['tmpdir'])
			{
				DeleteDirFilesEx(substr($arParams['tmpdir'], strlen($_SERVER['DOCUMENT_ROOT'])));
			}
			unlink($tmpfile);
		}
	}
	
	public function GetProccessParams($id)
	{
		$tmpfile = $this->tmpdir.$id.($this->suffix ? '_'.$this->suffix : '').'.txt';
		if(file_exists($tmpfile))
		{
			$arParams = CUtil::JsObjectToPhp(file_get_contents($tmpfile));
			$paramFile = $arParams['tmpdir'].'params.txt';
			$arParams = unserialize(file_get_contents($paramFile));
			return $arParams;
		}
		return false;
	}
	
	public function GetProccessParamsFromPidFile($id)
	{
		$tmpfile = $this->tmpdir.$id.'.txt';
		if(file_exists($tmpfile))
		{
			if(time() - filemtime($tmpfile) < 3*60)
			{
				return false;
			}
			$arParams = CUtil::JsObjectToPhp(file_get_contents($tmpfile));
			return $arParams;
		}
		return array();
	}
}