forked from joomla/Component-Builder
Further fix to the search of customcode placeholders accross the system.
This commit is contained in:
parent
fdd1cf7390
commit
043686814c
@ -129,7 +129,7 @@ Watch the [proposed development workflow](https://vdm.bz/proposed-development-wo
|
|||||||
+ *Version*: 2.9.6
|
+ *Version*: 2.9.6
|
||||||
+ *Copyright*: Copyright (C) 2015 - 2018 Vast Development Method. All rights reserved.
|
+ *Copyright*: Copyright (C) 2015 - 2018 Vast Development Method. All rights reserved.
|
||||||
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
|
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
|
||||||
+ *Line count*: **195705**
|
+ *Line count*: **195803**
|
||||||
+ *Field count*: **1087**
|
+ *Field count*: **1087**
|
||||||
+ *File count*: **1278**
|
+ *File count*: **1278**
|
||||||
+ *Folder count*: **201**
|
+ *Folder count*: **201**
|
||||||
|
@ -129,7 +129,7 @@ Watch the [proposed development workflow](https://vdm.bz/proposed-development-wo
|
|||||||
+ *Version*: 2.9.6
|
+ *Version*: 2.9.6
|
||||||
+ *Copyright*: Copyright (C) 2015 - 2018 Vast Development Method. All rights reserved.
|
+ *Copyright*: Copyright (C) 2015 - 2018 Vast Development Method. All rights reserved.
|
||||||
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
|
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
|
||||||
+ *Line count*: **195705**
|
+ *Line count*: **195803**
|
||||||
+ *Field count*: **1087**
|
+ *Field count*: **1087**
|
||||||
+ *File count*: **1278**
|
+ *File count*: **1278**
|
||||||
+ *Folder count*: **201**
|
+ *Folder count*: **201**
|
||||||
|
@ -2075,23 +2075,8 @@ class ComponentbuilderModelAjax extends JModelList
|
|||||||
if (isset($target['base64_search']) && isset($target['base64_search'][$key])
|
if (isset($target['base64_search']) && isset($target['base64_search'][$key])
|
||||||
&& isset($target['base64_search'][$key]['start']) && strpos($value, $target['base64_search'][$key]['start']) !== false)
|
&& isset($target['base64_search'][$key]['start']) && strpos($value, $target['base64_search'][$key]['start']) !== false)
|
||||||
{
|
{
|
||||||
// first get the start property (if dynamic)
|
// search and open the base64 strings
|
||||||
if (isset($target['base64_search'][$key]['_start']))
|
$this->searchOpenBase64($value, $target['base64_search'][$key]);
|
||||||
{
|
|
||||||
$_start_property = $target['base64_search'][$key]['start'];
|
|
||||||
$_start_property .= ComponentbuilderHelper::getBetween($value, $target['base64_search'][$key]['start'], $target['base64_search'][$key]['_start']);
|
|
||||||
$_start_property .= $target['base64_search'][$key]['_start'];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$_start_property = $target['base64_search'][$key]['start'];
|
|
||||||
}
|
|
||||||
// get the base64 string
|
|
||||||
$_base64 = ComponentbuilderHelper::getBetween($value, $_start_property, $target['base64_search'][$key]['end']);
|
|
||||||
// now open the base64 text
|
|
||||||
$_tmp = ComponentbuilderHelper::openValidBase64($_base64);
|
|
||||||
// insert it back into the value (so we still search the whole string)
|
|
||||||
$value = str_replace($_base64, $_tmp, $value);
|
|
||||||
}
|
}
|
||||||
// check if place holder set
|
// check if place holder set
|
||||||
if (strpos($value, '[CUSTOMC' . 'ODE=' . (string) $functioName . ']') !== false || strpos($value, '[CUSTOMC' . 'ODE=' . (int) $id . ']') !== false ||
|
if (strpos($value, '[CUSTOMC' . 'ODE=' . (string) $functioName . ']') !== false || strpos($value, '[CUSTOMC' . 'ODE=' . (int) $id . ']') !== false ||
|
||||||
@ -2125,6 +2110,70 @@ class ComponentbuilderModelAjax extends JModelList
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Search for base64 strings and decode them
|
||||||
|
*
|
||||||
|
* @param string $value The string to search
|
||||||
|
* @param array $target The target search values
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
protected function searchOpenBase64(&$value, &$target)
|
||||||
|
{
|
||||||
|
// first get the start property (if dynamic)
|
||||||
|
$starts = array();
|
||||||
|
if (isset($target['_start']))
|
||||||
|
{
|
||||||
|
// get all values
|
||||||
|
$allBetween = ComponentbuilderHelper::getAllBetween($value, $target['start'], $target['_start']);
|
||||||
|
// just again make sure we found some
|
||||||
|
if (ComponentbuilderHelper::checkArray($allBetween))
|
||||||
|
{
|
||||||
|
if (count((array) $allBetween) > 1)
|
||||||
|
{
|
||||||
|
// search for many
|
||||||
|
foreach ($allBetween as $between)
|
||||||
|
{
|
||||||
|
// load the starting property
|
||||||
|
$start = $target['start'];
|
||||||
|
$start .= $between;
|
||||||
|
$start .= $target['_start'];
|
||||||
|
|
||||||
|
$starts[] = $start;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// load the starting property
|
||||||
|
$start = $target['start'];
|
||||||
|
$start .= array_values($allBetween)[0];
|
||||||
|
$start .= $target['_start'];
|
||||||
|
|
||||||
|
$starts[] = $start;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$starts[] = $target['start'];
|
||||||
|
}
|
||||||
|
// has any been found
|
||||||
|
if (ComponentbuilderHelper::checkArray($starts))
|
||||||
|
{
|
||||||
|
foreach ($starts as $_start)
|
||||||
|
{
|
||||||
|
// get the base64 string
|
||||||
|
$base64 = ComponentbuilderHelper::getBetween($value, $_start, $target['end']);
|
||||||
|
// now open the base64 text
|
||||||
|
$tmp = ComponentbuilderHelper::openValidBase64($base64);
|
||||||
|
// insert it back into the value (so we still search the whole string)
|
||||||
|
$value = str_replace($base64, $tmp, $value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The code search keys/targets
|
* The code search keys/targets
|
||||||
*
|
*
|
||||||
|
@ -1397,23 +1397,8 @@ class ComponentbuilderModelJoomla_components extends JModelList
|
|||||||
if (isset($target['base64_search']) && isset($target['base64_search'][$key])
|
if (isset($target['base64_search']) && isset($target['base64_search'][$key])
|
||||||
&& isset($target['base64_search'][$key]['start']) && strpos($value, $target['base64_search'][$key]['start']) !== false)
|
&& isset($target['base64_search'][$key]['start']) && strpos($value, $target['base64_search'][$key]['start']) !== false)
|
||||||
{
|
{
|
||||||
// first get the start property (if dynamic)
|
// search and open the base64 strings
|
||||||
if (isset($target['base64_search'][$key]['_start']))
|
$this->searchOpenBase64($value, $target['base64_search'][$key]);
|
||||||
{
|
|
||||||
$_start_property = $target['base64_search'][$key]['start'];
|
|
||||||
$_start_property .= ComponentbuilderHelper::getBetween($value, $target['base64_search'][$key]['start'], $target['base64_search'][$key]['_start']);
|
|
||||||
$_start_property .= $target['base64_search'][$key]['_start'];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$_start_property = $target['base64_search'][$key]['start'];
|
|
||||||
}
|
|
||||||
// get the base64 string
|
|
||||||
$_base64 = ComponentbuilderHelper::getBetween($value, $_start_property, $target['base64_search'][$key]['end']);
|
|
||||||
// now open the base64 text
|
|
||||||
$_tmp = ComponentbuilderHelper::openValidBase64($_base64);
|
|
||||||
// insert it back into the value (so we still search the whole string)
|
|
||||||
$value = str_replace($_base64, $_tmp, $value);
|
|
||||||
}
|
}
|
||||||
// search the value to see if it has custom code
|
// search the value to see if it has custom code
|
||||||
$codeArray = ComponentbuilderHelper::getAllBetween($value, '[CUSTOMC' . 'ODE=',']');
|
$codeArray = ComponentbuilderHelper::getAllBetween($value, '[CUSTOMC' . 'ODE=',']');
|
||||||
@ -1572,6 +1557,70 @@ class ComponentbuilderModelJoomla_components extends JModelList
|
|||||||
return str_replace(array_keys(ComponentbuilderHelper::$constantPaths), array_values(ComponentbuilderHelper::$constantPaths), $path);
|
return str_replace(array_keys(ComponentbuilderHelper::$constantPaths), array_values(ComponentbuilderHelper::$constantPaths), $path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Search for base64 strings and decode them
|
||||||
|
*
|
||||||
|
* @param string $value The string to search
|
||||||
|
* @param array $target The target search values
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
protected function searchOpenBase64(&$value, &$target)
|
||||||
|
{
|
||||||
|
// first get the start property (if dynamic)
|
||||||
|
$starts = array();
|
||||||
|
if (isset($target['_start']))
|
||||||
|
{
|
||||||
|
// get all values
|
||||||
|
$allBetween = ComponentbuilderHelper::getAllBetween($value, $target['start'], $target['_start']);
|
||||||
|
// just again make sure we found some
|
||||||
|
if (ComponentbuilderHelper::checkArray($allBetween))
|
||||||
|
{
|
||||||
|
if (count((array) $allBetween) > 1)
|
||||||
|
{
|
||||||
|
// search for many
|
||||||
|
foreach ($allBetween as $between)
|
||||||
|
{
|
||||||
|
// load the starting property
|
||||||
|
$start = $target['start'];
|
||||||
|
$start .= $between;
|
||||||
|
$start .= $target['_start'];
|
||||||
|
|
||||||
|
$starts[] = $start;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// load the starting property
|
||||||
|
$start = $target['start'];
|
||||||
|
$start .= array_values($allBetween)[0];
|
||||||
|
$start .= $target['_start'];
|
||||||
|
|
||||||
|
$starts[] = $start;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$starts[] = $target['start'];
|
||||||
|
}
|
||||||
|
// has any been found
|
||||||
|
if (ComponentbuilderHelper::checkArray($starts))
|
||||||
|
{
|
||||||
|
foreach ($starts as $_start)
|
||||||
|
{
|
||||||
|
// get the base64 string
|
||||||
|
$base64 = ComponentbuilderHelper::getBetween($value, $_start, $target['end']);
|
||||||
|
// now open the base64 text
|
||||||
|
$tmp = ComponentbuilderHelper::openValidBase64($base64);
|
||||||
|
// insert it back into the value (so we still search the whole string)
|
||||||
|
$value = str_replace($base64, $tmp, $value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The code search keys/targets
|
* The code search keys/targets
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user