<?php
/**
* СодеÑÐ¶Ð¸Ñ ÐºÐ»Ð°ÑÑ Processor
*
* @package energine
* @subpackage configurator
* @author Tigrenok
* @copyright ColoCall 2007
* @version $Id: Processor.class.php,v 1.5 2007/12/11 10:58:45 pavka Exp $
*/
require_once('Model.class.php');
/**
* ÐапиÑÑÐ²Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе в ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии
*
* @package energine
* @subpackage configurator
*/
class Processor extends Model {
/**
* ÐÐ°Ð±Ð¾Ñ Ð´Ð°Ð½Ð½ÑÑ
*
* @var array
* @access private
*/
private $dataset;
/**
* XML даннÑе коÑигÑÑаÑии
*
* @var SimpleXML
* @access private
*/
private $xmlConfig;
/**
* ÐÑÑÑ Ðº ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии
*
* @var string
* @access private
*/
private $systemConfigPath;
/**
* Шаблон Ñайла htaccess
*
* @var string
* @access private
*/
private $htaccessTPL;
/**
* ÐÑÑÑ Ðº Ñаблон Ñайла htaccess
*
* @var string
* @access private
*/
private $htaccessTPLPath = 'data/htaccess.sample';
/**
* СпиÑок папок, коÑоÑÑе необÑ
одимо ÑоздаÑÑ Ð¿Ð¾Ñле ÑÑÑановки
*
* @var array
* @access private
*/
private $foldersList = array(
'/images',
'/logs',
'/scripts',
'/stylesheets',
'/templates',
'/templates/content',
'/templates/layout',
'/tmp',
//'/uploads'
);
/**
* ÐонÑÑÑÑкÑÐ¾Ñ ÐºÐ»Ð°ÑÑа
*
* @param array
* @param SimpleXML
* @return void
* @access public
*/
public function __construct($data,$xmlconf) {
if (!empty($data) && is_array($data)) {
$this->dataset = $data;
} else {
throw new Exception('ÐаннÑе не веÑнÑ, либо оÑÑÑÑÑÑвÑÑÑ!');
}
$this->systemConfigPath = $this->dataset['serverRoot'].'/'.PATH_SYSTEM_CONFIG;
$this->xmlConfig = $xmlconf;
if (!file_exists($this->htaccessTPLPath) || !($this->htaccessTPL = file_get_contents($this->htaccessTPLPath))) {
throw new Exception('Шаблон Ñайла htaccess оÑÑÑÑÑÑвÑеÑ!');
}
}
/**
* ÐапÑÑÐºÐ°ÐµÑ Ð¼Ð¾Ð´ÐµÐ»Ñ
*
* @return void
* @access public
*/
public function run() {
$this->getViewer()->addBlock('РабоÑа Ñ Ð´Ð°Ð½Ð½Ñми:',Viewer::TPL_HEADER);
array_walk($this->foldersList,array($this,'systemFoldersCreate'));
$this->getViewer()->addBlock('ÐеобÑ
одимÑе папки ÑÑпеÑно ÑозданÑ.',Viewer::TPL_CHECKER_CONFIRM);
$this->xmlConfig->project->name = $this->dataset['siteName'];
$this->xmlConfig->database->host = $this->dataset['host'];
$this->xmlConfig->database->name = $this->dataset['DBName'];
$this->xmlConfig->database->username = $this->dataset['username'];
$this->xmlConfig->database->password = $this->dataset['password'];
$this->xmlConfig->site->root = $this->dataset['siteRoot'];
if (!($this->xmlConfig->asXML($this->systemConfigPath))) {
throw new Exception('Ðевозможно пÑоизвеÑÑи запиÑÑ Ð² Ñайл конÑигÑÑаÑии!');
} else {
$this->getViewer()->addBlock('Файл конÑигÑÑаÑии ÑÑпеÑно обновлен.',Viewer::TPL_CHECKER_CONFIRM);
}
$htaccessPath = $this->dataset['serverRoot'].'/.htaccess';
if (!@file_put_contents($htaccessPath,str_replace('#{siteRoot}',$this->dataset['siteRoot'],$this->htaccessTPL))) {
throw new CheckerException(array('Ðевозможно ÑоздаÑÑ Ñайл .htaccess! ÐÑовеÑÑе пÑава.','ÐеобÑ
одимо измениÑÑ Ð¿Ñава на коÑневÑÑ Ð´Ð¸ÑекÑоÑÐ¸Ñ Ð´Ð»Ñ Ð¿ÑÐ¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð½ÑÑалÑÑии.'),Viewer::TPL_ERROR);
} else {
$this->getViewer()->addBlock('Файл .htaccess ÑÑпеÑно обновлен.',Viewer::TPL_CHECKER_CONFIRM);
}
}
/**
* СоздаÑÑ ÑиÑÑемнÑе папки и ÑаÑÑÑавлÑÐµÑ Ð¿Ñава
*
* @param string Ð¸Ð¼Ñ Ð¿Ð°Ð¿ÐºÐ¸
* @param string поÑÑдковй номеÑ
* @return void
* @access private
*/
private function systemFoldersCreate($folder) {
$fname = $this->dataset['serverRoot'].$folder;
if (!file_exists($fname) && !@mkdir($fname,0755)) {
throw new CheckerException(array('Ðевозможно ÑоздаÑÑ Ð´Ð¸ÑекÑоÑÐ¸Ñ ('.$fname.')!','ÐеобÑ
одимо измениÑÑ Ð¿Ñава на коÑневÑÑ Ð´Ð¸ÑекÑоÑÐ¸Ñ Ð´Ð»Ñ Ð¿ÑÐ¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð½ÑÑалÑÑии.',Viewer::TPL_ERROR));
} elseif(!is_writable($fname) && !@chmod($fname,0755)) {
throw new Exception('Ðевозможно измениÑÑ Ð¿Ñава на диÑекÑоÑÐ¸Ñ ('.$fname.')!');
}
}
}