fixed bug with resource testing and include_path

This commit is contained in:
mohrt
2002-05-01 15:40:45 +00:00
parent 9a701e8243
commit 97dff11384
4 changed files with 140 additions and 128 deletions

2
NEWS
View File

@@ -1,3 +1,5 @@
- fixed bug with resource testing, and include_path (Monte)
Version 2.1.0
-------------

View File

@@ -804,13 +804,18 @@ function _generate_debug_output() {
if ($resource_type == 'file') {
$readable = false;
$include_paths = preg_split('![:;]!', ini_get('include_path'));
foreach ($include_paths as $path) {
if (@is_file($path . DIRECTORY_SEPARATOR . $resource_name)) {
$readable = true;
break;
}
}
if(@is_file($resource_name)) {
$readable = true;
} else {
// test for file in include_path
$include_paths = preg_split('![:;]!', ini_get('include_path'));
foreach ($include_paths as $path) {
if (@is_file($path . DIRECTORY_SEPARATOR . $resource_name)) {
$readable = true;
break;
}
}
}
} else if ($resource_type != 'file') {
$readable = true;
$resource_func = $this->_plugins['resource'][$resource_type][0][0];

View File

@@ -1393,6 +1393,120 @@ s m o k e r s a r e p. . .</programlisting>
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.foreach">
<title>foreach,foreachelse</title>
<informaltable frame=all>
<tgroup cols=5>
<colspec colname=param align=center>
<colspec colname=type align=center>
<colspec colname=required align=center>
<colspec colname=default align=center>
<colspec colname=desc>
<thead>
<row>
<entry>Attribute Name</entry>
<entry>Type</entry>
<entry>Required</entry>
<entry>Default</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>from</entry>
<entry>string</entry>
<entry>Yes</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>The name of the array you are looping through</entry>
</row>
<row>
<entry>item</entry>
<entry>string</entry>
<entry>Yes</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>The name of the variable that is the current
element</entry>
</row>
<row>
<entry>key</entry>
<entry>string</entry>
<entry>No</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>The name of the variable that is the current key</entry>
</row>
<row>
<entry>name</entry>
<entry>string</entry>
<entry>No</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>The name of the foreach loop for accessing
foreach properties</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
<emphasis>foreach</emphasis> loops are an alternative to
<emphasis>section</emphasis> loops. <emphasis>foreach</emphasis> is
used to loop over a single associative array. The syntax for
<emphasis>foreach</emphasis> is much easier than
<emphasis>section</emphasis>, but as a tradeoff it can only be used
for a single array. <emphasis>foreach</emphasis> tags must be
paired with <emphasis>/foreach</emphasis> tags. Required parameters
are <emphasis>from</emphasis> and <emphasis>item</emphasis>. The
name of the foreach loop can be anything you like, made up of
letters, numbers and underscores. <emphasis>foreach</emphasis>
loops can be nested, and the nested foreach names must be unique
from each other. The <emphasis>from</emphasis> variable (usually an
array of values) determines the number of times
<emphasis>foreach</emphasis> will loop.
<emphasis>foreachelse</emphasis> is executed when there are no
values in the <emphasis>from</emphasis> variable.
</para>
<example>
<title>foreach</title>
<programlisting>
{* this example will print out all the values of the $custid array *}
{foreach from=$custid item=curr_id}
id: {$curr_id}&lt;br&gt;
{/foreach}
OUTPUT:
id: 1000&lt;br&gt;
id: 1001&lt;br&gt;
id: 1002&lt;br&gt;</programlisting>
</example>
<example>
<title>foreach key</title>
<programlisting>
{* The key contains the key for each looped value
assignment looks like this:
$smarty->assign("contacts", array(array("phone" =&gt; "1", "fax" =&gt; "2", "cell" =&gt; "3"),
array("phone" =&gt; "555-4444", "fax" =&gt; "555-3333", "cell" =&gt; "760-1234")));
*}
{foreach name=outer item=contact from=$contacts}
{foreach key=key item=item from=$contact}
{$key}: {$item}&lt;br&gt;
{/foreach}
{/foreach}
OUTPUT:
phone: 1&lt;br&gt;
fax: 2&lt;br&gt;
cell: 3&lt;br&gt;
phone: 555-4444&lt;br&gt;
fax: 555-3333&lt;br&gt;
cell: 760-1234&lt;br&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.include">
@@ -2407,120 +2521,6 @@ e-mail: jane@mydomain.com&lt;p&gt;</programlisting>
</example>
</sect2>
</sect1>
<sect1 id="language.function.foreach">
<title>foreach,foreachelse</title>
<informaltable frame=all>
<tgroup cols=5>
<colspec colname=param align=center>
<colspec colname=type align=center>
<colspec colname=required align=center>
<colspec colname=default align=center>
<colspec colname=desc>
<thead>
<row>
<entry>Attribute Name</entry>
<entry>Type</entry>
<entry>Required</entry>
<entry>Default</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>from</entry>
<entry>string</entry>
<entry>Yes</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>The name of the array you are looping through</entry>
</row>
<row>
<entry>item</entry>
<entry>string</entry>
<entry>Yes</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>The name of the variable that is the current
element</entry>
</row>
<row>
<entry>key</entry>
<entry>string</entry>
<entry>No</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>The name of the variable that is the current key</entry>
</row>
<row>
<entry>name</entry>
<entry>string</entry>
<entry>No</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>The name of the foreach loop for accessing
foreach properties</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
<emphasis>foreach</emphasis> loops are an alternative to
<emphasis>section</emphasis> loops. <emphasis>foreach</emphasis> is
used to loop over a single associative array. The syntax for
<emphasis>foreach</emphasis> is much easier than
<emphasis>section</emphasis>, but as a tradeoff it can only be used
for a single array. <emphasis>foreach</emphasis> tags must be
paired with <emphasis>/foreach</emphasis> tags. Required parameters
are <emphasis>from</emphasis> and <emphasis>item</emphasis>. The
name of the foreach loop can be anything you like, made up of
letters, numbers and underscores. <emphasis>foreach</emphasis>
loops can be nested, and the nested foreach names must be unique
from each other. The <emphasis>from</emphasis> variable (usually an
array of values) determines the number of times
<emphasis>foreach</emphasis> will loop.
<emphasis>foreachelse</emphasis> is executed when there are no
values in the <emphasis>from</emphasis> variable.
</para>
<example>
<title>foreach</title>
<programlisting>
{* this example will print out all the values of the $custid array *}
{foreach from=$custid item=curr_id}
id: {$curr_id}&lt;br&gt;
{/foreach}
OUTPUT:
id: 1000&lt;br&gt;
id: 1001&lt;br&gt;
id: 1002&lt;br&gt;</programlisting>
</example>
<example>
<title>foreach key</title>
<programlisting>
{* The key contains the key for each looped value
assignment looks like this:
$smarty->assign("contacts", array(array("phone" =&gt; "1", "fax" =&gt; "2", "cell" =&gt; "3"),
array("phone" =&gt; "555-4444", "fax" =&gt; "555-3333", "cell" =&gt; "760-1234")));
*}
{foreach name=outer item=contact from=$contacts}
{foreach key=key item=item from=$contact}
{$key}: {$item}&lt;br&gt;
{/foreach}
{/foreach}
OUTPUT:
phone: 1&lt;br&gt;
fax: 2&lt;br&gt;
cell: 3&lt;br&gt;
phone: 555-4444&lt;br&gt;
fax: 555-3333&lt;br&gt;
cell: 760-1234&lt;br&gt;</programlisting>
</example>
</sect1>
<sect1 id="language.function.strip">
<title>strip</title>
<para>

View File

@@ -804,13 +804,18 @@ function _generate_debug_output() {
if ($resource_type == 'file') {
$readable = false;
$include_paths = preg_split('![:;]!', ini_get('include_path'));
foreach ($include_paths as $path) {
if (@is_file($path . DIRECTORY_SEPARATOR . $resource_name)) {
$readable = true;
break;
}
}
if(@is_file($resource_name)) {
$readable = true;
} else {
// test for file in include_path
$include_paths = preg_split('![:;]!', ini_get('include_path'));
foreach ($include_paths as $path) {
if (@is_file($path . DIRECTORY_SEPARATOR . $resource_name)) {
$readable = true;
break;
}
}
}
} else if ($resource_type != 'file') {
$readable = true;
$resource_func = $this->_plugins['resource'][$resource_type][0][0];