AnonSec Shell
Server IP : 54.36.91.62  /  Your IP : 216.73.217.112
Web Server : Apache
System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User : coopiak ( 151928)
PHP Version : 8.3.23
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/coopiak/amisdesseniors-fr/aix/administrator/components/com_hikashop/classes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/coopiak/amisdesseniors-fr/aix/administrator/components/com_hikashop/classes/view.php
<?php
/**
 * @package	HikaShop for Joomla!
 * @version	6.1.0
 * @author	hikashop.com
 * @copyright	(C) 2010-2025 HIKARI SOFTWARE. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php
class hikashopViewClass extends hikashopClass {

	public function saveForm() {
		$id = hikaInput::get()->getString('id');
		$element = $this->get($id);

		if(!$element) return false;

		$duplicate = trim(hikaInput::get()->post->getCmd('duplicate', ''));
		if(!empty($duplicate) && substr($duplicate,0,1) != '.' && substr($duplicate,0,1) != '/' && substr($duplicate,0,1) != '\\' ) {
			$name = explode('_', $element->filename, 2);
			$override = substr($element->override, 0, - strlen($name[1])) . $duplicate.'.php';

			if($element->override != $override) {
				if(file_exists($override)) {
					$app = JFactory::getApplication();
					$app->enqueueMessage(JText::_('CANT_DUPLICATE_ON_EXISTING_FILE'));
					return false;
				}

				$element->override = $override;
			}
		}

		$element->content = hikaInput::get()->post->getRaw('filecontent', '');
		$result = $this->save($element);
		return $result;
	}

	public function save(&$element) {
		jimport('joomla.client.helper');

		if(HIKASHOP_J50 && !class_exists('JClientHelper'))
			class_alias('Joomla\CMS\Client\ClientHelper', 'JClientHelper');
		JClientHelper::setCredentialsFromRequest('ftp');
		$ftp = JClientHelper::getCredentials('ftp');

		if(!JPath::check($element->override))
			return false;

		$do = true;
		JPluginHelper::importPlugin('hikashop');
		$app = JFactory::getApplication();
		$app->triggerEvent('onBeforeViewUpdate', array( &$element, &$do ));

		if(!$do)
			return false;

		jimport('joomla.filesystem.file');
		$result = JFile::write($element->override, $element->content);

		if(!$result) {
			if(!$ftp['enabled'] && !JPath::setPermissions($element->override, '0755')) {
				$app = JFactory::getApplication();
				$app->enqueueMessage(JText::sprintf('FILE_NOT_WRITABLE',$element->override), 'error');
				return false;
			}

			$result = JFile::write($element->override, $element->content);

			if(!$ftp['enabled']) {
				JPath::setPermissions($element->override, '0555');
			}
		}

		if($result)
			$app->triggerEvent('onAfterViewUpdate', array( &$element ));

		return $result;
	}

	public function delete(&$id) {
		$element = $this->get(reset($id));
		if(!$element)
			return false;

		jimport('joomla.filesystem.file');
		if(!is_file($element->override))
			return true;

		jimport('joomla.client.helper');

		if(HIKASHOP_J50 && !class_exists('JClientHelper'))
			class_alias('Joomla\CMS\Client\ClientHelper', 'JClientHelper');
		JClientHelper::setCredentialsFromRequest('ftp');
		$ftp = JClientHelper::getCredentials('ftp');
		if (!$ftp['enabled'] && !JPath::setPermissions($element->override, '0755')) {
			$app = JFactory::getApplication();
			$app->enqueueMessage(JText::sprintf('FILE_NOT_WRITABLE',$element->override), 'error');
			return false;
		}

		$do = true;
		JPluginHelper::importPlugin('hikashop');
		$app = JFactory::getApplication();
		$app->triggerEvent('onBeforeViewDelete', array(&$element));

		if(!$do)
			return false;

		$result = JFile::delete($element->override);
		if($result)
			$app->triggerEvent('onAfterViewDelete', array(&$element));
		return $result;
	}

	public function get($id, $default = null) {

		JPluginHelper::importPlugin('hikashop');
		$app = JFactory::getApplication();
		$templates = array();
		$pageInfo = new stdClass();
		$app->triggerEvent('onViewsListingLoad', array(&$templates, &$pageInfo));
		if(isset($templates[$id])) {
			return $templates[$id];
		}

		$parts = explode('|',$id);
		if(count($parts)!=6){
			return false;
		}
		$obj = new stdClass();
		$obj->id = $id;
		$obj->client_id = (int)$parts[0];
		$obj->template = $parts[1];
		$obj->type = $parts[2];
		$obj->type_name = $parts[3];
		$obj->view = $parts[4];
		$obj->filename = $parts[5];

		if(substr($obj->filename, -4) != '.php')
			$obj->filename .= '.php';

		if($obj->type == 'plugin') {
			$obj->folder = rtrim(JPATH_PLUGINS,DS).DS.$obj->type_name.DS;
		} else {
			$layout_mode = false;
			if($obj->type_name == HIKASHOP_COMPONENT) {
				switch($obj->client_id){
					case 0:
						$view = HIKASHOP_FRONT.'views'.DS;
						break;
					case 1:
						$view = HIKASHOP_BACK.'views'.DS;
						break;
					default:
						return false;
				}
			} else {
				$view = '';
				$pluginViews = array();
				$app->triggerEvent('onViewsListingFilter', array(&$pluginViews, $obj->client_id));
				if(!empty($pluginViews)) {
					foreach($pluginViews as $pluginView) {
						if($pluginView['client_id'] == $obj->client_id && $pluginView['component'] == $obj->type_name) {
							$view = $pluginView['view'];
							if(!empty($pluginView['layout']))
								$layout_mode = true;
							$obj->type_pretty_name = $pluginView['name'];
							break;
						}
					}
				}
				if(empty($view)) {
					return false;
				}
			}
			$obj->folder = $view.$obj->view.DS.'tmpl'.DS;
			if($layout_mode)
				$obj->folder = $view;
		}
		$obj->path = $obj->folder.$obj->filename;

		if(!JPath::check($obj->path))
			return false;

		$obj->file = substr($obj->filename,0,strlen($obj->filename)-4);
		$client	= JApplicationHelper::getClientInfo($obj->client_id);
		$tBaseDir = $client->path.DS.'templates';
		$templateFolder = $tBaseDir.DS.$obj->template.DS;
		$obj->override = $templateFolder.'html'.DS.$obj->type_name.DS;
		if($obj->type=='component') {
			$obj->override .= $obj->view.DS;
		}
		$obj->override .= $obj->filename;
		$obj->overriden = false;
		if(file_exists($obj->override)) {
			$obj->overriden = true;
			$obj->edit = $obj->override;
		} else {
			$obj->edit = $obj->path;
		}
		return $obj;
	}

	public function initStructure(&$file) {
		if(empty($file->content)) {
			return false;
		}

		$structure = array();

		$length = mb_strlen($file->content);

		$in_block = false;

		$current_block = new stdClass();
		$current_block->code = '';
		$current_block->type = 'normal';


		for($i = 0; $i < $length; $i++) {
			switch($file->content[$i]) {
				case '<':
					if($file->content[$i+1] == '!' && $file->content[$i+2] == '-' && $file->content[$i+3] == '-' && $file->content[$i+4] == ' ' ) {
						if(!$in_block) {
							$structure[] = $current_block;
							$current_block = new stdClass();
							$current_block->code = '';
							$current_block->type = 'block';
							$current_block->name = '';
							$in_block = true;

							for($j = $i+4; $j < $length; $j++) {
								switch($file->content[$j]) {
									case '-':
										if($file->content[$j+1] == '-' && $file->content[$j+2] == '>') {
											$i = $j+2;
											$current_block->name = trim($current_block->name);
											break 2;
										}
									default:
										$current_block->name .= $file->content[$j];
										break;
								}
							}
							if($current_block->name == 'END GRID') {
								$current_block->type = 'grid_end';
								$in_block = false;
								$structure[] = $current_block;
								$current_block = new stdClass();
								$current_block->code = '';
								$current_block->type = 'normal';
								$current_block->name = '';
								$in_block = false;
							}elseif(preg_match('#POSITION ([0-9]+)#', $current_block->name, $matches)) {
								$current_block->type = 'empty';
								$current_block->id = $matches[1];
								$structure[] = $current_block;
								$current_block = new stdClass();
								$current_block->code = '';
								$current_block->type = 'normal';
								$current_block->name = '';
								$in_block = false;
							}
							break;
						} else {

							$length_name = strlen('EO '.$current_block->name);
							$end_name = substr($file->content, $i+5, $length_name);
							if($end_name == 'EO '.$current_block->name) {
								$structure[] = $current_block;
								$current_block = new stdClass();
								$current_block->code = '';
								$current_block->type = 'normal';
								$i = $i + 5 + $length_name + 4; // length of <!-- + space + EO + space + name + space + -->
								$in_block = false;
							}
						}
					}
				default:
					$current_block->code .= $file->content[$i];
					break;
			}
		}
		if($in_block) {
			return false;
		}

		$structure[] = $current_block;

		$group_structure = array();

		$in_group = false;

		$current_group = new stdClass();
		$current_group->width = 'full';
		$current_group->blocks = array();

		foreach($structure as $block) {
			if(preg_match_all('#hkc-[^-]+-([0-9]+)#iU', $block->code, $matches)) {
				$group_structure[] = $current_group;
				$current_group = new stdClass();
				$current_group->width = end($matches[1]);
				$current_group->blocks = array();
			} elseif($block->type=='normal') {
				$empty = trim($block->code,"\r\t\n ");
				if(!empty($empty)) {
					$block->type = 'separator';
				}
			}
			if($block->type == 'grid_end') {
				$group_structure[] = $current_group;
				$current_group = new stdClass();
				$current_group->width = 'full';
				$current_group->blocks = array();
				continue;
			}
			if(!empty($block->id))
				$current_group->id = $block->id;

			$current_group->blocks[] = $block;
		}
		$group_structure[] = $current_group;

		$file->structure = $group_structure;
		if(count($group_structure)<=1) {
			$group_structure = array();
			$in_group = false;
			$current_group = new stdClass();
			$current_group->width = 'full';
			$current_group->columns = 0;
			$current_group->blocks = array();
			foreach($structure as $i => $block) {
				if(preg_match('#</?tr#iU', $block->code, $matches)) {
					if($in_group) {
						if(!empty($current_group->columns)) {
							$current_subgroup = new stdClass();
							$current_subgroup->width = floor(12 / $current_group->columns);
							$left = 0;
							if($current_subgroup->width >= 12)
								$current_subgroup->width = 'full';
							else
								$left = 12 - ($current_group->columns * $current_subgroup->width);
							$current_subgroup->blocks = array();
							foreach($current_group->blocks as $current_group_block) {
								$current_subgroup->blocks[] = $current_group_block;
								if(!empty($current_group_block->column)) {
									$group_structure[] = $current_subgroup;
									$current_subgroup = new stdClass();
									$current_subgroup->width = floor(12 / $current_group->columns);
									$current_subgroup->blocks = array();
								}
							}
							if($left>0) {
								$group_structure[array_key_last($group_structure)]->width += $left;
							}
							$current_subgroup->blocks[] = $block;
							$group_structure[] = $current_subgroup;
						} else {
							$current_group->width = 'full';
							$group_structure[] = $current_group;
						}
						$current_group = new stdClass();
						$current_group->columns = 0;
						$current_group->width = 'full';
						$current_group->blocks = array();
					} else {
						$group_structure[] = $current_group;
						$current_group = new stdClass();
						$current_group->columns = 0;
						$current_group->width = 'full';
						$current_group->blocks = array();
					}
					$current_group->code_blocks_with_td = 0;
					$in_group = true;
				}elseif($block->type=='block' && preg_match_all('#</t(d|h)>#iU', $block->code, $matches)) {
					$current_group->columns++;
					$block->column = true;
				}elseif($block->type=='block' && preg_match('#\{(TXT:CUSTOMFIELD_NAME|LINEVAR:CUSTOMFIELD_VALUE)\}#iU', $block->code, $matches)) {
					$current_group->columns++;
					$block->column = true;
				}
				$current_group->blocks[] = $block;
			}
			if(count($group_structure))
				$file->structure = $group_structure;
		}
		return true;
	}
}

Anon7 - 2022
AnonSec Team