Your IP : 216.73.217.81


Current Path : /home/semix18/public_html/pogtech.pl/app/plugins/admin/controller/
Upload File :
Current File : /home/semix18/public_html/pogtech.pl/app/plugins/admin/controller/adminToolsController.class.php

<?php /*windu.org admin controller*/
Class adminToolsController Extends adminMainConfigController{
	public function __construct($request){
		parent::__construct($request);
		$configDB = new configDB();
		$config = $configDB->getByGroup(configDB::CONFIG_BUCKET_TOOLS);
		$this->smarty->assign('configList',$config);

		$this->smarty->assign('sitePath',__SITE_PATH);
		

		//Mailing
		$mailingTemplatesDB = new mailingtemplatesDB();
		$this->mailingTemplatesList = $mailingTemplatesDB->fetchAll();
		$this->smarty->assign('mailingTemplatesList',$this->mailingTemplatesList);

		$contactgroupsDB = new contactgroupsDB();
		$this->contactsGroups = $contactgroupsDB->fetchAll();
		$this->smarty->assign('contactsGroups',$this->contactsGroups);

		$mailingsDB = new mailingsDB();
		$this->mailingList = $mailingsDB->fetchAll(null,"status DESC, createTime ASC");
		$this->smarty->assign('mailingList',$this->mailingList);
		
		$this->smarty->assign('pagesDB',new pagesDB());
		$this->smarty->assign('logDB',new logDB());
		$this->smarty->assign('ratesDB',new ratesDB());
		$this->smarty->assign('commentsDB',new commentsDB());
		$this->smarty->assign('filesDB',new filesDB());
		$this->smarty->assign('filesLogDB',new filesLogDB());
		$this->smarty->assign('imagesDB',new imagesDB());
		$this->smarty->assign('mailingsDB',new mailingsDB());
		$this->smarty->assign('mailDB',new mailDB());
		$this->smarty->assign('contactDB',new contactDB());
		$this->smarty->assign('redirectDB',new redirectDB());

		
		$systemStatusDB = new systemStatusDB();
		$systemStatusColumns = $systemStatusDB->fetchRow();
		unset($systemStatusColumns->id);
		unset($systemStatusColumns->date);

		$this->smarty->assign('systemStatusColumns',$systemStatusColumns);
		$this->smarty->assign('systemStatusDB',$systemStatusDB);
		
		
		
		$formAddFile = new form('addFile','addFileSuccess',$_POST,'POST','form-horizontal');
		$formAddFile->add('file', 'input-file',lang::read('admin.tools.controller.file'),null,array("tooltip" => lang::read('admin.tools.controller.filedescription')));	
		$formAddFile->setHandler($this);
		$formAddFile->handle();
		
		//SEO///////////////////////////
		$formSEO = new form('seo','seoSuccess',$_POST,'POST','form-horizontal');
		
		$formSEO->add('analiticsContent', 'input-text',lang::read('admin.common.seo.tpl.analcode'),config::get('analiticsCode'),array('class'=>'span11'));
		$formSEO->add('googleverifyContent', 'input-text',lang::read('admin.common.seo.tpl.verificationcode'),config::get('googleverifyCode'),array('class'=>'span11'));
		$formSEO->add('robotsContent', 'textarea',lang::read('admin.common.seo.tpl.robots'),baseFile::readFile(__SITE_PATH.'/robots.txt'),array('class'=>'span11 textarea-medium'));
				
		$formSEO->setHandler($this);
		$formSEO->handle();
		$this->smarty->assign('formSEO',$formSEO);
	
		
		$this->smarty->assign('formAddFile',$formAddFile);	
		
		if (cache::isCached('dbFileList')) {
			$dbList = cache::read('dbFileList');
		}else{
			$dbList = baseFile::getFilesList(__SITE_PATH . '/app/model/');
			foreach (explode(',',PLUGINS) as $plugin){
				if (is_dir(__SITE_PATH . '/app/plugins/'.$plugin.'/model/')) {
					$dbPluginList = baseFile::getFilesList(__SITE_PATH . '/app/plugins/'.$plugin.'/model/');
					if (is_array($dbPluginList)) {
						$dbList = array_merge($dbList,$dbPluginList);
					}
				}
			}
			cache::write('dbFileList', $dbList);
		}	
		$this->smarty->assign('dbList',$dbList);
		
		//RSS/////////////////////////////
		$formRSS = new form('rss','addRssSuccess',$_POST,'POST','form-horizontal');
		
		$formRSS->add('rssUrl', 'input-text',lang::read('admin.content.controller.rssfeed'));
		$formRSS->addRule('rssUrl', 'url', null,lang::read('admin.content.controller.givecorrecturl'));	
		
		$pagesDB = new pagesDB();
		$newsGroups = $pagesDB->fetchAll("status=".pagesDB::STATUS_ACTIVE." and type=".pagesDB::TYPE_NEWS_GROUP);
		foreach ($newsGroups as $newsGroup){
			$newsGroupArray[$newsGroup->id] = $newsGroup->name;			
		}
		$formRSS->add('rssParentId', 'select',lang::read('admin.content.controller.parentgroup'),config::get('rssParentId'),array('option' => $newsGroupArray,"tooltip" => lang::read('admin.content.controller.parentgrptooltip')));		
				
		$formRSS->setHandler($this);
		$formRSS->handle();
		$this->smarty->assign('formRSS',$formRSS);	
		
		
		//Database/////////////////////////////
		$formDatabaseSearch = new form('databaseSearch','databaseSearchSuccess',$_POST,'POST','form-inline');
		
		$formDatabaseSearch->add('searchText', 'input-text',null,null,array('placeholder'=>lang::read('admin.content.controller.searchedphrase')));
		$formDatabaseSearch->addRule('searchText', 'required', null,lang::read('admin.content.controller.giveelementname'));
		$formDatabaseSearch->addButton('search',lang::read('admin.content.controller.search'),'btn btn-small');
		$formDatabaseSearch->setHandler($this);
		$formDatabaseSearch->handle();
		$this->smarty->assign('formDatabaseSearch',$formDatabaseSearch);		

		$this->smarty->assign('subpage',$this->request->getVariable('subpage'));	
		$this->smarty->assign('controllerShortName','tools');
		
		//Contact/////////////////////////////
		$formContactSearch = new form('searchContact','searchContactSuccess',$_POST,'POST','form-inline');
		
		$formContactSearch->add('searchText', 'input-text',null,null,array('placeholder'=>lang::read('admin.content.controller.searchedphrase')));
		$formContactSearch->addRule('searchText', 'required', null,lang::read('admin.content.controller.giveelementname'));
		$formContactSearch->addButton('search',lang::read('admin.content.controller.search'),'btn btn-small');
		$formContactSearch->setHandler($this);
		$formContactSearch->handle();
		$this->smarty->assign('formContactSearch',$formContactSearch);
	}
	public function databaseSearchSuccess($data){
		router::redirect('admin-tools-action-id',array('action'=>'searchResult','subpage'=>'database','id'=>base64_encode($data['searchText'])));
	}
	public function addRssSuccess($data) {
		$urls = unserialize(config::get('rssUrls'));
		$urls[] = $data['rssUrl'].'|'.$data['rssParentId'];
		config::set('rssUrls', serialize($urls));
		router::reload();
	}	
	
	public function editConfig() {
		parent::editConfig();
		$this->pageDisplay('tools');
	}		
	public function index(){
		$this->pageDisplay('tools');
	}
	
		
	
	public function redirectAdd() {
		$logDB = new logDB();
		$redirectDB = new redirectDB();

		$source = $logDB->fetchRow("id='{$this->request->getVariable('id')}'");
		$sourceUrl = str_replace(HOME,'{{$HOME}}', $source->data);
		$redirectId = $redirectDB->fetchRow("source='{$sourceUrl}'");
		
		$form = new form('redirectAdd','redirectAddSuccess',$_POST,'POST','form-horizontal');
		$form->add('source', 'input-text','Source',$source->data);
		$form->addRule('source', 'required', null,lang::read('admin.content.controller.giveelementname'));
		
		$pagesDB = new pagesDB();
		$pagesArray = $pagesDB->getGroupsArrayForWidgetInserter('type>=0','name');

		$form->add('target', 'select','Target',$redirectId->target,array('option'=>$pagesArray));
		$form->addRule('target', 'required', null,lang::read('admin.content.controller.giveelementname'));

		$form->setHandler($this);
		$form->handle();

		$this->smarty->assign('formRedirect',$form);
		$this->pageDisplay('tools');
	}
	public function redirectAddSuccess($data) {
		$redirectDB = new redirectDB();
		$redirectDB->add($data);
		router::reload();
	}	
	
	public function seoSuccess($data) {
		config::set('analiticsCode', $data['analiticsContent']);
		config::set('googleverifyCode', $data['googleverifyContent']);
		baseFile::saveFile(__SITE_PATH.'/robots.txt',$data['robotsContent']);
		router::reload();
	}
				
	public function addFileSuccess($data) {
		if ($_FILES['file']['error']==0) {
			file::saveIncomingFile($_FILES['file']);
		}
		router::reload();
	}
	
	//////////////////////////////////////////////////////////////////////
	//Mailing/////////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////
	public function addMailingTemplate() {
		$form = new form('add','addMailingTemplateSuccess',$_POST,'POST','form-horizontal');
		$form->add('name', 'input-text',lang::read('admin.content.controller.elementname'));
		$form->addRule('name', 'required', null,lang::read('admin.content.controller.giveelementname'));

		$form->add('content', 'textareaCKEditor','',null,array('editorType'=>'basic'));

		$form->setHandler($this);
		$form->handle();

		$this->smarty->assign('formMailing',$form);
		$this->smarty->assign('titleForm',lang::read('admin.tools.controller.addtemplate'));

		$this->pageDisplay('tools');
	}
	public function addMailingTemplateSuccess($data) {
		$mailingTemplatesDB = new mailingtemplatesDB();
		$mailingTemplatesDB->add($data);
		router::reload();
	}

	public function editMailingTemplate() {
		$mailingTemplatesDB = new mailingtemplatesDB();
		$template = $mailingTemplatesDB->fetchRow("id={$this->request->getVariable('id')}");

		$form = new form('add','editMailingTemplateSuccess',$_POST,'POST','form-horizontal');
		$form->add('name', 'input-text',lang::read('admin.content.controller.elementname'),$template->name);
		$form->addRule('name', 'required', null,lang::read('admin.content.controller.giveelementname'));

		$form->add('content', 'textareaCKEditor','',$template->content,array('editorType'=>'basic'));

		$form->setHandler($this);
		$form->handle();

		$this->smarty->assign('formMailing',$form);
		$this->smarty->assign('titleForm',lang::read('admin.tools.controller.edittemplate'));

		$this->pageDisplay('tools');
	}
	public function editMailingTemplateSuccess($data) {
		$mailingTemplatesDB = new mailingtemplatesDB();
		$mailingTemplatesDB->updateRow($data, "id={$this->request->getVariable('id')}");
		router::reload();
	}
	public function addMailingContactGroup() {
		$form = new form('add','addMailingContactGroupSuccess',$_POST,'POST','form-horizontal');
		$form->add('name', 'input-text',lang::read('admin.content.controller.elementname'));
		$form->addRule('name', 'required', null,lang::read('admin.content.controller.giveelementname'));

		$form->setHandler($this);
		$form->handle();

		$this->smarty->assign('formMailing',$form);
		$this->smarty->assign('titleForm',lang::read('admin.tools.controller.addmailinggroup'));

		$this->pageDisplay('tools');
	}
	public function addMailingContactGroupSuccess($data) {
		$contactgroupsDB = new contactgroupsDB();
		$contactgroupsDB->add($data);
		router::reload();
	}
	public function editMailingContactGroup() {
		$contactGroupDB = new contactgroupsDB();
		$contactGroup = $contactGroupDB->fetchRow("id={$this->request->getVariable('id')}");

		$form = new form('add','editMailingContactGroupSuccess',$_POST,'POST','form-horizontal');
		$form->add('name', 'input-text',lang::read('admin.content.controller.elementname'),$contactGroup->name);
		$form->addRule('name', 'required', null,lang::read('admin.content.controller.giveelementname'));

		$form->setHandler($this);
		$form->handle();

		$this->smarty->assign('formMailing',$form);
		$this->smarty->assign('titleForm',lang::read('admin.tools.controller.editmailinggroup'));

		$this->pageDisplay('tools');
	}
	public function editMailingContactGroupSuccess($data) {
		$contactGroupDB = new contactgroupsDB();
		$contactGroupDB->updateRow($data,"id={$this->request->getVariable('id')}");
		router::reload();
	}
	public function addMailingContact() {
		$form = new form('add','addMailingContactSuccess',$_POST,'POST','form-horizontal');
		$form->add('name', 'input-text',lang::read('admin.content.controller.elementname'));
		$form->addRule('name', 'required', null,lang::read('admin.content.controller.giveelementname'));

		$form->add('email', 'input-text',lang::read('admin.users.controller.email'),null,array());
		$form->addRule('email', 'required', null, lang::read('admin.users.controller.giveemail'));
		$form->addRule('email', 'email', null, lang::read('admin.users.controller.givecorrectemail'));

		$form->setHandler($this);
		$form->handle();

		$this->smarty->assign('formMailing',$form);
		$this->smarty->assign('titleForm',lang::read('admin.tools.controller.addcontact'));

		$this->pageDisplay('tools');
	}
	public function addMailing() {
		foreach($this->mailingTemplatesList as $mailingTemplate){
			$mailingTemplateListArray[$mailingTemplate->id]=$mailingTemplate->name;
		}
		foreach($this->contactsGroups as $contactsGroup){
			$contactsGroupsArray[$contactsGroup->id]=$contactsGroup->name;
		}

		$form = new form('add','addMailingSuccess',$_POST,'POST','form-horizontal');
		$form->add('name', 'input-text',lang::read('admin.tools.mailing.controller.mailingname'));
		$form->addRule('name', 'required', null,lang::read('admin.content.controller.giveelementname'));

		$form->add('contactGroup', 'select',lang::read('admin.tools.mailing.controller.contactsgroup'),$page->type, array("option"=>$contactsGroupsArray));
		$form->add('contentId', 'select',lang::read('admin.tools.mailing.controller.template'),$page->type, array("option"=>$mailingTemplateListArray));

		$form->add('subject', 'input-text',lang::read('admin.tools.mailing.controller.subject'));
		$form->addRule('subject', 'required', null,lang::read('admin.content.controller.giveelementname'));

		$form->add('from', 'input-text',lang::read('admin.tools.mailing.controller.senderemail'),$contact->email,array());
		$form->addRule('from', 'required', null, lang::read('admin.users.controller.giveemail'));
		$form->addRule('from', 'email', null, lang::read('admin.users.controller.givecorrectemail'));

		$form->add('senderName', 'input-text',lang::read('admin.tools.mailing.controller.sendername'));
		$form->addRule('senderName', 'required', null,lang::read('admin.content.controller.giveelementname'));

		$form->setHandler($this);
		$form->handle();

		$this->smarty->assign('formMailing',$form);

		$this->pageDisplay('tools');
	}
	public function addMailingSuccess($data) {
		$data['replay'] = $data['from'];
		$data['return'] = $data['from'];

		$mailingsDB = new mailingsDB();
		$mailingsDB->add($data);
		router::reload();
	}	
	
	public function addMailingContactSuccess($data) {
		$contactDB = new contactDB();
		$contactDB->add($data,$this->request->getVariable('id'));
		router::reload();
	}

	public function addMailingMassContact() {
		$form = new form('add','addMailingMassContactSuccess',$_POST,'POST','form-horizontal');
		$form->add('emails', 'textarea',lang::read('admin.system.controller.emails'));
		$form->addRule('emails', 'required', null,lang::read('admin.content.controller.giveelementname'));

		$form->setHandler($this);
		$form->handle();

		$this->smarty->assign('formMailing',$form);
		$this->smarty->assign('titleForm',lang::read('admin.tools.controller.addmasscontact'));

		$this->pageDisplay('tools');
	}
	public function addMailingMassContactSuccess($data) {
		$contactDB = new contactDB();

		$data['emails'] = str_replace(' ','',$data['emails']);
		$emailArray = explode(',', $data['emails']);
		$bucket = $this->request->getVariable('id');

		foreach ($emailArray as $email) {
			$emailData['email'] = $email;
			$contactDB->add($emailData,$bucket);
		}
		router::reload();
	}
	
	public function addMailingMassContactFromUsers() {
		$form = new form('add','addMailingMassContactFromUsersSuccess',$_POST,'POST','form-horizontal');
		$form->add('where', 'textarea',lang::read('admin.system.controller.where'),"active=1");
	
		$form->setHandler($this);
		$form->handle();
	
		$this->smarty->assign('formMailing',$form);
		$this->smarty->assign('titleForm',lang::read('admin.tools.controller.addmasscontactusers'));
	
		$this->pageDisplay('tools');
	}
	public function addMailingMassContactFromUsersSuccess($data) {
		$usersDB = new usersDB();
		$contactDB = new contactDB();
		$users = $usersDB->fetchAll($data['where']);
		$bucket = $this->request->getVariable('id');
		
		foreach ($users as $user) {
			$emailData['email'] = $user->email;
			$contactDB->add($emailData,$bucket);
		}
		router::reload();
	}		
	//////////////////////////////////////////////////////////////////////
	//Contact - Mailings//////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////	
	public function addContact() {
		$form = new form('add','addMailingContactSuccess',$_POST,'POST','form-horizontal');
		$form->add('name', 'input-text',lang::read('admin.content.controller.elementname'));
		$form->addRule('name', 'required', null,lang::read('admin.content.controller.giveelementname'));

		$form->add('email', 'input-text',lang::read('admin.users.controller.email'),null,array());
		$form->addRule('email', 'required', null, lang::read('admin.users.controller.giveemail'));
		$form->addRule('email', 'email', null, lang::read('admin.users.controller.givecorrectemail'));
		
		$form->add('telephone', 'input-text',lang::read('admin.tools.controller.telephone'));
		$form->add('mobile', 'input-text',lang::read('admin.tools.controller.mobile'));
		$form->add('adress', 'input-text',lang::read('admin.tools.controller.adress'));
		$form->add('city', 'input-text',lang::read('admin.tools.controller.city'));
		$form->add('code', 'input-text',lang::read('admin.tools.controller.code'));
		$form->add('country', 'input-text',lang::read('admin.tools.controller.country'));
		$form->add('taxid', 'input-text',lang::read('admin.tools.controller.taxid'));
		$form->add('other', 'input-text',lang::read('admin.tools.controller.other'));
		

		$form->setHandler($this);
		$form->handle();

		$this->smarty->assign('formContact',$form);
		$this->smarty->assign(lang::read('admin.tools.controller.editcontact'),$title);

		$this->pageDisplay('tools');
	}	


	public function editContact() {
		$contactDB = new contactDB();
		$contact = $contactDB->fetchRow("id={$this->request->getVariable('id')}");
		$contactColumns = $contactDB->contactColumns;
		
		$form = new form('editContact','editContactSuccess',$_POST,'POST','form-horizontal');
		
		foreach ($contactColumns as $contactColumn){
			$form->add($contactColumn, 'input-text',$contactColumn,$contact->$contactColumn);
		}
		
		$form->add('name', 'input-text',lang::read('admin.content.controller.elementname'),$contact->name);
		$form->addRule('name', 'required', null,lang::read('admin.content.controller.giveelementname'));

		$form->add('email', 'input-text',lang::read('admin.users.controller.email'),$contact->email,array());
		$form->addRule('email', 'required', null, lang::read('admin.users.controller.giveemail'));
		$form->addRule('email', 'email', null, lang::read('admin.users.controller.givecorrectemail'));		
		
		$form->setHandler($this);
		$form->handle();

		$this->smarty->assign('formContact',$form);
		$this->smarty->assign(lang::read('admin.tools.controller.editcontact'),$title);

		$this->pageDisplay('tools');
	}	
	public function editMailingContact() {
		$contactDB = new contactDB();
		$contact = $contactDB->fetchRow("id={$this->request->getVariable('id')}");


		$form = new form('editMailingContact','editContactSuccess',$_POST,'POST','form-horizontal');

		$form->add('name', 'input-text',lang::read('admin.content.controller.elementname'),$contact->name);
		$form->addRule('name', 'required', null,lang::read('admin.content.controller.giveelementname'));

		$form->add('email', 'input-text',lang::read('admin.users.controller.email'),$contact->email,array());
		$form->addRule('email', 'required', null, lang::read('admin.users.controller.giveemail'));
		$form->addRule('email', 'email', null, lang::read('admin.users.controller.givecorrectemail'));		

		$form->setHandler($this);
		$form->handle();

		$this->smarty->assign('formMailing',$form);
		$this->smarty->assign(lang::read('admin.tools.controller.editcontact'),$title);

		$this->pageDisplay('tools');
	}
	public function editContactSuccess($data) {
		$contactDB = new contactDB();
		$contactDB->updateRow($data,"id={$this->request->getVariable('id')}");
		router::reload();
	}
	public function showMailingContact() {
		$pageCount = 15;

		$contactDB = new contactDB();
		$page = $pageCount*$this->request->getVariable('p');
		$emails = $contactDB->getEmails($this->request->getVariable('id'),0,"{$page},{$pageCount}");
		$emailsCount = $contactDB->getEmailsCount($this->request->getVariable('id'));

		$this->smarty->assign('emails',$emails);
		$this->smarty->assign('emailsCount',$emailsCount);
		$this->smarty->assign('pageCount',$pageCount);
		$this->pageDisplay('tools');
	}
	public function showContacts() {
		$pageCount = 15;

		$contactDB = new contactDB();
		$page = $pageCount*$this->request->getVariable('p');
		$emails = $contactDB->getEmails($this->request->getVariable('id'),0,"{$page},{$pageCount}",1,0,'*');
		$emailsCount = $contactDB->getEmailsCount($this->request->getVariable('id'));

		$this->smarty->assign('emails',$emails);
		$this->smarty->assign('emailsCount',$emailsCount);
		$this->smarty->assign('pageCount',$pageCount);
		$this->pageDisplay('tools');
	}	

	////Search/////////////////////

	public function searchContactSuccess($data){
		router::redirect('admin-tools-action-id',array('action'=>'searchContact','subpage'=>'contacts','id'=>base64_encode($data['searchText'])));
	}
	public function searchContact() {
		$contactDB = new contactDB();
		$searchString = base64_decode($this->request->getVariable('id'));
		$searchResult=$contactDB->fetchTextSearch($searchString,array('name','email','bucket','telephone','mobile','adress','city','code','country','taxid','other','createTime','updateTime','createIP','updateIP','ekey'));
	
		$this->smarty->assign('searchString',$searchString);
		$this->smarty->assign('emails',$searchResult);
		$this->pageDisplay('tools');
	}


	
	////////////////////////////////
	/////CSV export inport//////////
	////////////////////////////////
	
	public function exportToCSVContacts() {
		$contactDB = new contactDB();
		$emailsArray = $contactDB->getEmails($this->request->getVariable('id'),0,100000,1,0,$contactDB->contactColumns,PDO::FETCH_ASSOC);
		$contactGroupsDB = new contactgroupsDB();
		$contactGroup = $contactGroupsDB->fetchRow("id={$this->request->getVariable('id')}");
		
		array_unshift($emailsArray, $contactDB->contactColumns);

		csv::getCsvFile(generate::cleanFileName($contactGroup->name.'_'.generate::sqlDatetime()), $emailsArray);
	}		
	
	public function importContactGroup() {
		$form = new form('import','importContactGroupSuccess',$_POST,'POST','form-horizontal');
		$form->add('csvFile', 'input-file',lang::read('admin.tools.controller.csv'),null,array("tooltip" => lang::read('admin.tools.controller.csv.description')));	
		
		$form->setHandler($this);
		$form->handle();

		$this->smarty->assign('formContact',$form);

		$this->pageDisplay('tools');
	}	
	public function importContactGroupSuccess($data) {
		if ($_FILES['csvFile']['error']==0) {
			$arrayFromCsv = csv::toArray($_FILES['csvFile']['tmp_name']);

			$contactDB = new contactDB();
			$contactGroupsDB = new contactgroupsDB();
			$contactGroupsDB->add(array('name'=>$_FILES['csvFile']['name']));
			
			$group = $contactGroupsDB->fetchRow("name = '{$_FILES['csvFile']['name']}'",'id DESC');
			unset($arrayFromCsv[0]);
			foreach ($arrayFromCsv as $row) {
				if (count($row)>=2) {
					$contactDB->add(array_combine($contactDB->contactColumns,$row), $group->id);
				}				
			}
			
		}
		router::reload();	
	}

	public function mergeContactGroup() {
		$contactGroupsDB = new contactgroupsDB();
		
		$form = new form('merge','mergeContactGroupSuccess',$_POST,'POST','form-horizontal');
		
		$form->add('list1', 'select',lang::read('admin.tools.mailing.controller.mailinglist').' 1',null,array('option' => $contactGroupsDB->getArray()));
		$form->add('list2', 'select',lang::read('admin.tools.mailing.controller.mailinglist').' 2',null,array('option' => $contactGroupsDB->getArray()));

		$form->setHandler($this);
		$form->handle();
		
		$this->smarty->assign('formContact',$form);

		$this->pageDisplay('tools');
	}	
	public function mergeContactGroupSuccess($data) {
		
		$groupId1 = $data['list1'];
		$groupId2 = $data['list2'];

		router::reload();	
	}	

	////////////////////////////////
	/////DB explorer////////////////
	////////////////////////////////
	
	public function showTable() {
		$tableName = $this->request->getVariable('id');
		$this->smarty->assign('dbTableObject',new $tableName());
		$this->pageDisplay('tools');
	}
	public function editRow() {
		
		$tableName = $this->request->getVariable('id');
		$this->smarty->assign('dbTableObject',new $tableName());		
		
		$tableName = $this->request->getVariable('id');
		$rowId =  $this->request->getVariable('secoundId');
		
		$table = new $tableName();
		$row = $table->fetchRow("id={$rowId}");
		unset($row->id);
		
		$formEdit = new form('editRow','editRowSuccess',$_POST,'POST','form-horizontal');
		foreach ($row as $key=>$val){
			if ($key=='content' or $key=='description') {
				$formEdit->add($key, 'textarea',$key,$val);
			}else{
				$formEdit->add($key, 'input-text',$key,$val);
			}
						
		}
		$formEdit->setHandler($this);
		$formEdit->handle();
		
		
		$this->smarty->assign('formTableRowEdit',$formEdit);
		$this->pageDisplay('tools');
	}
	public function editRowSuccess($data) {
		$tableName = $this->request->getVariable('id');
		$rowId =  $this->request->getVariable('secoundId');
		$table = new $tableName();
		unset($data['id']);
		
		$table->updateRow($data, "id={$rowId}");
		router::reload();
	}
	public function migrationConnectionSetup() {
		$form = new form('setupMySQL','migrationSetupMySQLSuccess',$_POST,'POST','form-vertical');
		$form->add('host', 'input-text',null,null,array("class" => "input-medium","placeholder" => 'database host (localhost)'));
		$form->addRule('host', 'required', null, lang::read('validator.required'));

        $form->add('port', 'input-text',null,null,array("class" => "input-medium","placeholder" => 'database port (3306)'));
        $form->addRule('port', 'required', null, lang::read('validator.required'));
		
		$form->add('name', 'input-text',null,null,array("class" => "input-medium","placeholder" => 'database name'));
		$form->addRule('name', 'required', null, lang::read('validator.required'));
		
		$form->add('user', 'input-text',null,null,array("class" => "input-medium","placeholder" => 'username'));
		$form->addRule('user', 'required', null, lang::read('validator.required'));
		
		$form->add('password', 'input-text',null,null,array("class" => "input-medium","placeholder" => 'password'));
		$form->addRule('password', 'required', null, lang::read('validator.required'));
		
		$form->addButton('save','Rozpocznij migracje','btn btn-primary btn-large', null, null, 'fa fa-upload ');
		
		$form->setHandler($this);
		$form->handle();
		
		$this->smarty->assign('formMySQL',$form);		
				
		$this->pageDisplay('tools');
	}
	public function migrationSetupMySQLSuccess($data=null){
		if ($data==null) {
			$dataPom = unserialize(config::get('MySQLmigrationDatabaseConfig'));
			$server   = $dataPom['DB_HOST'];
            $port     = $dataPom['DB_PORT'];
			$database = $dataPom['DB_NAME'];
			$username = $dataPom['DB_USER'];
			$password = $dataPom['DB_PASSWORD'];			
		}else{
			$server   = $data['host'];
            $port     = $data['port'];
			$database = $data['name'];
			$username = $data['user'];
			$password = $data['password'];
		}
		$mysqlConnection = @mysql_connect($server.':'.$port, $username, $password);
		mysql_select_db($database, $mysqlConnection);
		
		if (!$mysqlConnection){
			config::set('MySQLmigrationDatabaseConfig',null);
			router::reload('admin.message.error.mysql.conection','mn');
		}else{		
			$dataFinal['DB_HOST'] = $server;
            $dataFinal['DB_PORT'] = $port;
			$dataFinal['DB_NAME'] = $database;
			$dataFinal['DB_USER'] = $username;
			$dataFinal['DB_PASSWORD'] = $password;
			
			$sql = baseFile::readFile(__SITE_PATH.'/app/plugins/database/sql/db_structure.sql');
			$sqlParts = explode(';', $sql);
			unset($sqlParts[0]);
			unset($sqlParts[count($sqlParts)]);
			$error=0;
			foreach ($sqlParts as $sqlPart){
				if (mysql_query($sqlPart,$mysqlConnection)!=1) {
					$error=1;
				}
			}
			
			mysql_close($mysqlConnection);

			if ($error==1) {
				router::reload('admin.message.error.mysql.createstructure','mn');
			}			
			
			config::set('MySQLmigrationDatabaseConfig', $dataFinal);
			router::redirect('admin-tools-action',array('subpage'=>'database','action'=>'migrationCopyData'));
		}	
	}
	public function migrationCopyData() {
		$dbList = cache::read('dbFileList');
		$rowsCountPomSum = 0;
        $tablesToMigrateComma = '';
        $tablesToMigrateRowsCountComma = '';

		foreach ($dbList as $dbFile){
			$tableName = rtrim($dbFile->name,'.class.php');
			if (method_exists($tableName, 'fetchAll')){
				$tablesToMigrateComma.='"'.$tableName.'",';
				
				$tablePom = new $tableName;
				$rowsCountPom = $tablePom->fetchCount();
				$rowsCountPomSum = $rowsCountPomSum+$rowsCountPom;
				$tablesToMigrateRowsCountComma.='"'.$tablePom->fetchCount().'",';
			}
		}
		$tablesToMigrateComma = rtrim($tablesToMigrateComma,',');
		$tablesToMigrateRowsCountComma = rtrim($tablesToMigrateRowsCountComma,',');
		
		$this->smarty->assign('rowsCountPomSum',$rowsCountPomSum);
		$this->smarty->assign('tablesToMigrateComma',$tablesToMigrateComma);
		$this->smarty->assign('tablesToMigrateRowsCountComma',$tablesToMigrateRowsCountComma);
		$this->pageDisplay('tools');
	}
	public function migrationCheck(){
		$dbList = cache::read('dbFileList');
		$dbConfig = unserialize(config::get('MySQLmigrationDatabaseConfig'));

		foreach ($dbList as $value) {
			
			$tableName = rtrim($value->name,'.class.php');
			if (method_exists($tableName, 'fetchAll')){
				$newTable = new $tableName($dbConfig);
				$tablesCheckResult[$tableName]['newCount'] = $newTable->fetchCount();
				
				$oldTable = new $tableName();
				$tablesCheckResult[$tableName]['oldCount'] = $oldTable->fetchCount();
			}	
		}
		$this->smarty->assign('tablesCheckResult',$tablesCheckResult);
		$this->pageDisplay('tools');
	}
	public function migrationFinish(){
		$dbConfig = unserialize(config::get('MySQLmigrationDatabaseConfig'));
		$server = $dbConfig['DB_HOST'];
        $port   = $dbConfig['DB_PORT'];
		$database = $dbConfig['DB_NAME'];
		$username = $dbConfig['DB_USER'];
		$password = $dbConfig['DB_PASSWORD'];
		
		$configFilePath = __SITE_PATH.'/app/includes/configDB.php';
			
		$configContent = "<?php
		define('DB_TYPE', 'mysql');
		
		//MySQL Database
		define('DB_HOST', '{$server}');
		define('DB_PORT', '{$port}');
		define('DB_NAME', '{$database}');
		define('DB_USER', '{$username}');
		define('DB_PASSWORD', '{$password}');
		?>";
		
		baseFile::saveFile($configFilePath, $configContent);
		router::redirect('admin');		
	}
	public function searchResult() {
		$excludedTables = array('cacheDB','sessionDB','accesslogDB');
		$searchString = base64_decode($this->request->getVariable('id'));
		
		$dbList = cache::read('dbFileList');
		foreach ($dbList as $table) {
			$tableName = str_replace('.class.php', '', $table->name);
			if (!in_array($tableName, $excludedTables)) {
				
				$table = @new $tableName();
				
				if (method_exists ( $table ,'fetchAll')) {
					$columnsPom = $table->fetchRow();
					if ($columnsPom!=null) {
						$columns = array();
						foreach ($columnsPom as $kay=>$column){
							$columns[] = '`'.$kay.'`';
						}
	
						$searchResult[$tableName]=$table->fetchTextSearch($searchString,$columns);
					}
				}
			}
		}
		$this->smarty->assign('searchString',$searchString);
		$this->smarty->assign('searchResult',$searchResult);
		$this->pageDisplay('tools');
	}	
	////////////////////////////////
	/////Monitoring/////////////////
	////////////////////////////////		
	
	public function showStatChart() {
		$chartType = $this->request->getVariable('id');
		$this->smarty->assign('chartType',$chartType);
		$this->pageDisplay('tools');
		
	}
}
?>