%PDF- %PDF-
| Direktori : /home1/lightco1/www/administrator/components/com_jmap/models/ |
| Current File : //home1/lightco1/www/administrator/components/com_jmap/models/htaccess.php |
<?php
// namespace administrator\components\com_jmap\models;
/**
* @package JMAP::HTACCESS::administrator::components::com_jmap
* @subpackage models
* @author Joomla! Extensions Store
* @copyright (C) 2015 - Joomla! Extensions Store
* @license GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html
*/
defined ( '_JEXEC' ) or die ( 'Restricted access' );
jimport('joomla.filesystem.file');
/**
* Htaccess model concrete implementation
*
* @package JMAP::HTACCESS::administrator::components::com_jmap
* @subpackage models
* @since 3.0
*/
class JMapModelHtaccess extends JMapModel {
/**
* Load entity from ORM table
*
* @access public
* @param int $id
* @return Object&
*/
public function loadEntity($id) {
try {
// Load htaccess file, finding it
$targetHtaccess = null;
// Try to check for an active htaccess file
if(JFile::exists(JPATH_ROOT . '/.htaccess')) {
$targetHtaccess = JPATH_ROOT . '/.htaccess';
} elseif (JFile::exists(JPATH_ROOT . '/htaccess.txt')) { // Fallback on txt dummy version
$targetHtaccess = JPATH_ROOT . '/htaccess.txt';
$this->setState('htaccess_version', 'textual');
} else {
throw new JMapException(JText::_('COM_JMAP_HTACCESS_NOTFOUND'), 'error');
}
// htaccess found!
if($targetHtaccess !== false) {
// If file permissions ko
if(!$htaccessContents = JFile::read($targetHtaccess)) {
throw new JMapException(JText::_('COM_JMAP_ERROR_READING_HTACCESS'), 'error');
}
}
} catch(JMapException $e) {
$this->setError($e);
return false;
} catch(Exception $e) {
$jmapException = new JMapException($e->getMessage(), 'error');
$this->setError($jmapException);
return false;
}
return $htaccessContents;
}
/**
* Storing entity by ORM table
*
* @access public
* @return boolean
*/
public function storeEntity($buffer = null) {
try {
// Data posted required, otherwise avoid write anything
if(!$buffer) {
throw new JMapException(JText::_('COM_JMAP_HTACCESS_NO_DATA'), 'error');
}
$targetHtaccess = null;
// Find htaccess file
if(JFile::exists(JPATH_ROOT . '/.htaccess')) {
$targetHtaccess = JPATH_ROOT . '/.htaccess';
} elseif (JFile::exists(JPATH_ROOT . '/htaccess.txt')) { // Fallback on txt dummy version
$targetHtaccess = JPATH_ROOT . '/htaccess.txt';
$this->setState('htaccess_version', 'textual');
} else {
throw new JMapException(JText::_('COM_JMAP_HTACCESS_NOTFOUND'), 'error');
}
// If file permissions ko on rewrite updated contents
$originalPermissions = null;
if(!is_writable($targetHtaccess)) {
$originalPermissions = intval(substr(sprintf('%o', fileperms($targetHtaccess)), -4), 8);
@chmod($targetHtaccess, 0755);
}
if(@!JFile::write($targetHtaccess, $buffer)) {
throw new JMapException(JText::_('COM_JMAP_ERROR_WRITING_HTACCESS'), 'error');
}
// Check if permissions has been changed and recover the original in that case
if($originalPermissions) {
@chmod($targetHtaccess, $originalPermissions);
}
} catch(JMapException $e) {
$this->setError($e);
return false;
} catch(Exception $e) {
$jmapException = new JMapException($e->getMessage(), 'error');
$this->setError($jmapException);
return false;
}
return true;
}
/**
* Change the status of the htaccess from inactive to active
*
* @access public
* @return boolean
*/
public function activateHtaccessEntity() {
try {
$targetHtaccess = null;
// Find htaccess file
if(JFile::exists(JPATH_ROOT . '/.htaccess')) {
throw new JMapException(JText::_('COM_JMAP_HTACCESS_ACTIVE_ALREADYFOUND'), 'error');
} elseif (JFile::exists(JPATH_ROOT . '/htaccess.txt')) { // Fallback on txt dummy version
$targetHtaccess = JPATH_ROOT . '/htaccess.txt';
} else {
throw new JMapException(JText::_('COM_JMAP_HTACCESS_NOTFOUND'), 'error');
}
// If file permissions ko on rewrite updated contents
$originalPermissions = null;
if(!is_writable($targetHtaccess)) {
$originalPermissions = intval(substr(sprintf('%o', fileperms($targetHtaccess)), -4), 8);
@chmod($targetHtaccess, 0755);
}
if(@!rename($targetHtaccess, JPATH_ROOT . '/.htaccess')) {
throw new JMapException(JText::_('COM_JMAP_ERROR_RENAMING_HTACCESS'), 'error');
}
// Check if permissions has been changed and recover the original in that case
if($originalPermissions) {
@chmod($targetHtaccess, $originalPermissions);
}
} catch(JMapException $e) {
$this->setError($e);
return false;
} catch(Exception $e) {
$jmapException = new JMapException($e->getMessage(), 'error');
$this->setError($jmapException);
return false;
}
return true;
}
}