<?php

/**
 * AVE.cms - Модуль Gmap
 *
 * @package AVE.cms
 * @subpackage module_gmap
 * @filesource
 */

if(!defined('BASE_DIR')) exit;

if (defined('ACP'))
{
    $modul['ModuleName'] = 'GMap';
    $modul['ModuleSysName'] = 'gmap';
    $modul['ModuleVersion'] = '1.0.9b';
    $modul['ModuleDescription'] = 'Gmap<br/>Для того, чтобы осуществить просмотр карты, необходимо разместить системный тег <strong>[mod_gmap:XXX]</strong> в теле какого-либо документа';
    $modul['ModuleAutor'] = 'OcPh | Project Manager Duncan | Upgrade module 2016-2017 Repellent';
    $modul['ModuleCopyright'] = '&copy; 2016-2017 AVE.cms Team';
    $modul['ModuleIsFunction'] = 1;
    $modul['ModuleAdminEdit'] = 1;
    $modul['ModuleFunction'] = 'mod_gmap';
    $modul['ModuleTag'] = '[mod_gmap:XXX]';
    $modul['ModuleTagLink'] = null;
    $modul['ModuleAveTag'] = '#\\\[mod_gmap:([\\\d-]+)]#';
    $modul['ModulePHPTag'] = "<?php mod_gmap(''$1''); ?>";
}

/**
 * Функция вывода карты
 *
 * @param string $gmap_id идентификатор карты
  */
function mod_gmap($gmap_id)
{
	global $AVE_Template;

	require_once(BASE_DIR . '/modules/gmap/class.gmap.php');
	$gmap = new Gmap;

	$tpl_dir = BASE_DIR . '/modules/gmap/templates/';
	$lang_file = BASE_DIR . '/modules/gmap/lang/' . $_SESSION['user_language'] . '.txt';

	$AVE_Template->config_load($lang_file);

	$gmap->gmapShow($tpl_dir, $gmap_id);
}

//=======================================================
// Действия в админ-панели
//=======================================================
if (defined('ACP') && !empty($_REQUEST['moduleaction']))
{
	require_once(BASE_DIR . '/modules/gmap/class.gmap.php');
	$gmap = new Gmap;

	$tpl_dir = BASE_DIR . '/modules/gmap/templates/';
	$lang_file = BASE_DIR . '/modules/gmap/lang/' . $_SESSION['admin_language'] . '.txt';

	$AVE_Template->config_load($lang_file, 'admin');

	switch($_REQUEST['moduleaction'])
	{
		case '1': // Просмотр списка карт
			$gmap->gmapListShow($tpl_dir);
			break;

		case 'show': // Просмотр маркеров карты
		    $_SESSION['use_editor'] = get_settings('use_editor');
			$gmap->gmapMarkersShow($tpl_dir, intval($_REQUEST['id']));
			break;

		case 'showcategory': // Просмотр категорий
			$gmap->gmapCategoryShow($tpl_dir);
			break;
		case 'editmarker': // Редактирование маркера
			$gmap->gmapMarkerEdit($tpl_dir, intval($_REQUEST['id']));
			break;

			case 'saveeditmarker': // Сохранение отредактированного маркера
			$gmap->gmapMarkerEditSave(intval($_REQUEST['id']));
			break;	

		case 'addnewcategory': // Добавление новой категории
			$gmap->gmapCategoryNewAdd(intval($_REQUEST['id']));
			break;

		case 'gcatdel': // Удаление категории
			$gmap->gmapCategoryDel(intval($_REQUEST['id']));
			break;		

		case 'addmarker': // Добавление маркера
			$gmap->gmapMarkersAdd(intval($_REQUEST['id']));
			break;
		case 'savemarker': // Сохранение маркера
			$gmap->gmapMarkerSave(intval($_REQUEST['id']));
			break;
		case 'getmarker': // Получение описания маркера
			$gmap->gmapMarkersGet(intval($_REQUEST['id']));
			break;
		case 'delmarker': // Удаление маркера
			$gmap->gmapMarkersDel(intval($_REQUEST['id']));
			break;

		case 'new': // Создать новую карту
			$gmap->gmapNew();
			break;

		case 'delgmap': // Удаление карты
			$gmap->gmapDelete(intval($_REQUEST['id']));
			break;

		case 'editgmap': // Редактирование карты
			$gmap->gmapEdit($tpl_dir, intval($_REQUEST['id']));
			break;

	}

}
// подключаем файловый менеджер проверяем , если файла нет - создаем, если есть ничего не делаем
$filename = BASE_DIR . '/lib/redactor/elfinder/php/connector_module_gmap.php';
if (!file_exists($filename)) {
$gmfmen = '<?php
error_reporting(E_ALL); // Set E_ALL for debuging
if (function_exists("date_default_timezone_set")) {
	date_default_timezone_set("Europe/Moscow");
}
include_once dirname(__FILE__).DIRECTORY_SEPARATOR."elFinderConnector.class.php";
include_once dirname(__FILE__).DIRECTORY_SEPARATOR."elFinder.class.php";
include_once dirname(__FILE__).DIRECTORY_SEPARATOR."elFinderVolumeDriver.class.php";
include_once dirname(__FILE__).DIRECTORY_SEPARATOR."elFinderVolumeLocalFileSystem.class.php";
include_once dirname(__FILE__).DIRECTORY_SEPARATOR."elFinderVolumeMySQL.class.php";
include_once "../../../../inc/config.php";
include_once "../../../../inc/config.inc.php";
function debug($o) {
	echo "<pre>";
	print_r($o);
}
function logger($cmd, $voumes, $result) {
	$log = $cmd.": [".date("d.m H:s")."] ".$voumes[0]->id()." ";
	
	if (isset($voumes[1])) {
		$log .= $voumes[1]->id()." ";
	}
	switch ($cmd) {
		case "mkdir":
		case "mkfile":
		case "upload":
			$log .= $result["added"][0]["name"];
			break;
		case "rename":
			$log .= "from ".$result["removedDetails"][0]["name"]." to ".$result["added"][0]["name"];
			break;
		case "duplicate":
			$log .= "src: ".$result["src"]["name"]." copy: ".$result["added"][0]["name"];
			break;
		case "rm":
			$log .= $result["removedDetails"][0]["name"];
			break;
		default:
			$log = "";
	}
	if ($log && is_dir("../../../../cache/redactor") || @mkdir("../../../../cache/redactor")) {
		$fp = fopen("../../../../cache/redactor/log.txt", "a");
		if ($fp) {
			fwrite($fp, $log."\n");
			fclose($fp);
		}
	}
	return $result;
}
class elFinderSimpleLogger {
	public function write($cmd, $voumes, $result) {
		$log = $cmd.": [".date("d.m H:s")."] ".$voumes[0]->id()." ";

		if (isset($voumes[1])) {
			$log .= $voumes[1]->id()." ";
		}
		switch ($cmd) {
			case "mkdir":
			case "mkfile":
			case "upload":
			case "paste":
				$log .= $result["added"][0]["name"];
				break;
			case "rename":
				$log .= "from ".$result["removedDetails"][0]["name"]." to ".$result["added"][0]["name"];
				break;
			case "duplicate":
				$log .= "src: ".$result["src"]["name"]." copy: ".$result["added"][0]["name"];
				break;
			case "rm":
				$log .= $result["removedDetails"][0]["name"];
				break;
			default:
				$log = "";
		}
		if ($log && is_dir("../../../../cache/redactor") || @mkdir("../../../../cache/redactor")) {
			$fp = fopen("../../../../cache/redactor/log.txt", "a");
			if ($fp) {
				fwrite($fp, $log."\n");
				fclose($fp);
			}
		}
		return $result;
	}
} // END class 
function access($attr, $path, $data, $volume) {
	return strpos(basename($path), ".") === 0
		? !($attr == "read" || $attr == "write")
		: $attr == "read" || $attr == "write";
}
class elFinderTestACL {
	public function fsAccess($attr, $path, $data, $volume) {
		
		if ($volume->name() == "localfilesystem") {
			return strpos(basename($path), ".") === 0
				? !($attr == "read" || $attr == "write")
				: $attr == "read" || $attr == "write";
		}
		return true;
	}
} 
$acl = new elFinderTestACL();
function validName($name) {
	return strpos($name, ".") !== 0;
}
$opts = array(
	"locale" => "en_US.UTF-8",
	"bind" => array(
		"mkdir mkfile  rename duplicate upload rm paste" => array(new elFinderSimpleLogger(), "write"), 
	),
	"debug" => true,
	"roots" => array(
		array(
			// "id" => "x5",
			"driver"  => "LocalFileSystem", // driver for accessing file system (REQUIRED)
			"path"    => "../../../../".UPLOAD_DIR, // path to files (REQUIRED)
			"URL"     => "/".UPLOAD_DIR."/", // URL to files (REQUIRED)
			"alias"  => UPLOAD_DIR,
			"disabled" => array(),
			"acceptedName" => "validName",
			"uploadAllow" => array("all"),
			"uploadDeny"  => array("all"),
			"uploadOrder" => "deny,allow",
			"uploadOverwrite" => false,
			"uploadMaxSize" => "128m",
			"copyOverwrite" => false,
			"copyJoin" => true,
			"mimeDetect" => "internal",
			"tmbCrop" => false,
			"imgLib" => "gd",
			"utf8fix" => true,
			"attributes" => array(
				array(
					"pattern" => "/^\/\./",
					"read" => false,
					"write" => false,
					"hidden" => true,
					"locked" => true
				),
                array(
                    "pattern" => "/.tmb/",
                    "read" => false,
                    "write" => false,
                    "hidden" => true,
                    "locked" => false
                ),
                array(
                    "pattern" => "/\.php$/",
                    "read" => false,
                    "write" => false,
                    "hidden" => true,
                    "locked" => false
                ),
				array(
                    "pattern" => "/.quarantine/",
                    "read" => false,
                    "write" => false,
                    "hidden" => true,
                    "locked" => false
                ),
                array(
                    "pattern" => "/\.htaccess$/",
                    "write" => false,
                    "locked" => false,
                    "hidden" => true
                ),
                array(
                    "pattern" => "/.uploader/",
                    "read" => false,
                    "write" => false,
                    "hidden" => true,
                    "locked" => false
                ),
                array(
                    "pattern" => "/.temp/",
                    "read" => false,
                    "write" => false,
                    "hidden" => true,
                    "locked" => false
                )
			),
		)
	)
);
header("Access-Control-Allow-Origin: *");
$connector = new elFinderConnector(new elFinder($opts), true);
$connector->run();
?>';

    $gfo = fopen(BASE_DIR . "/lib/redactor/elfinder/php/connector_module_gmap.php", "w");
    flock($gfo,2);
    fwrite($gfo, $gmfmen);
    flock($gfo,3);
    fclose($gfo);
    chmod(BASE_DIR . "/lib/redactor/elfinder/php/connector_module_gmap.php", 0755);
}
   
?>