Skip to content

Commit 910715d

Browse files
authored
Merge pull request #93 from hathitrust/ETT-1116-smarty3
ETT-1116 - migrate from smarty 2 to 3
2 parents 1322398 + 6e193ca commit 910715d

28 files changed

Lines changed: 2727 additions & 420 deletions

Dockerfile

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ RUN apt-get update && apt-get install -y \
1919
php-xsl \
2020
php-mbstring \
2121
pear-channels \
22-
php-yaml
22+
php-yaml \
23+
smarty3
2324

2425
# Actual stuff installed on bullseye for ht-web-preview
2526

@@ -38,11 +39,6 @@ RUN pear channel-update pear.php.net && pear install \
3839
PHP_Compat \
3940
Structures_LinkedList-beta
4041

41-
RUN apt-get install -y wget && wget -q -O /usr/share/keyrings/hathitrust-archive-keyring.gpg https://hathitrust.github.io/debian/hathitrust-archive-keyring.gpg && \
42-
echo "deb [signed-by=/usr/share/keyrings/hathitrust-archive-keyring.gpg] https://hathitrust.github.io/debian/ bullseye main" > /etc/apt/sources.list.d/hathitrust.list
43-
44-
RUN apt-get update && apt-get install php-smarty
45-
4642
# Default PHP config:
4743
# -> class { 'php::apache_config':
4844
#

docker/nginx-default.conf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ server {
1010
# Translated from .htaccess
1111
location @rewrite {
1212

13+
# Static assets to simulate full babel environment (For development only)
14+
rewrite ^/cgi/imgsrv/cover /static/dev/sample-cover.png last;
15+
rewrite ^/cgi/ping /static/dev/ping.js last;
16+
rewrite ^/common/firebird/alerts/alert.json /static/dev/alert.json last;
17+
1318
# common -> common/web
1419

1520
rewrite ^/common/firebird/(.+)$ /firebird-common/$1 last;
@@ -21,8 +26,11 @@ server {
2126
# Efficient marcxml output
2227
rewrite ^/Record/([0-9]+).xml$ /static/api/marcxml_from_bibnum.php?id=$1 last;
2328
rewrite ^/MARCXML/(.+)$ /static/api/marcxml_from_htid.php?id=$1 last;
29+
30+
# static files
2431
rewrite ^/images/(.*) /images/$1 last;
2532
rewrite ^/favicon.ico$ /static/favicon.ico last;
33+
2634
rewrite ^/unapi$ /static/unapi.php last;
2735

2836
# Redirect to record from htid
@@ -46,6 +54,7 @@ server {
4654
rewrite ^/F /static/rewrite.php last;
4755
rewrite ^/cgi-bin/(.+)$ /static/rewrite.php last;
4856

57+
4958
# Hold
5059
rewrite ^/(Record)/([^/]+)/(Hold)/(.+)$ /index.php?module=$1&id=$2&action=$3&barcode=$4 last;
5160

@@ -60,6 +69,7 @@ server {
6069
rewrite ^/(Search)/(Advanced)/(.+)$ /index.php?module=$1&action=$2&inst=$3 last;
6170

6271
rewrite ^/([^/]+)/(.+)$ /index.php?module=$1&action=$2 last;
72+
6373
}
6474

6575
location ~ ^(.+\.php)(.*)$ {

index.php

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,8 @@
3838
require_once 'sys/Solr.php';
3939
require_once 'sys/GeoIP.php';
4040

41-
// Set up for autoload
42-
function sample_autoloader($class) {
43-
require str_replace('_', '/', $class) . '.php';
44-
}
45-
spl_autoload_register('sample_autoloader');
41+
// Autoloader removed - all dependencies now explicitly required
42+
// This eliminates the conflict with Smarty 3's internal autoloader
4643

4744
// Sets global error handler for PEAR errors
4845
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'handlePEARError');

interface/plugins/function.firebird_manifest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*/
1111
function smarty_function_firebird_manifest($params, &$smarty)
1212
{
13-
$manifest = $smarty->get_template_vars('firebird_manifest');
13+
$manifest = $smarty->getTemplateVars('firebird_manifest'); // Smarty 3 method
1414

1515
if ( $manifest ) {
1616
$output['stylesheet'] = '/common/firebird/dist/' . $manifest['index.css']['file'];

interface/themes/firebird/Record/view-alt.tpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@
4242
{foreach from=$field->getSubfields() item=subfield key=subcode name=subloop}
4343
{if $subcode >= 'a' and $subcode <= 'z'}
4444
<span>{$subfield->getData()}</span>
45-
{if ! $smarty.foreach.last}<br />{/if}
45+
{if ! $subfield@last}<br />{/if}
4646
{/if}
4747
{/foreach}
4848
{/foreach}
49-
{if $record.vtitle}
49+
{if array_key_exists('vtitle', $record) && $record.vtitle}
5050
<br /><span>{$record.vtitle}</span>
5151
{/if}
5252
</h1>

interface/themes/firebird/Record/view.summary.tpl

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -67,17 +67,13 @@
6767
</div>
6868
{/if}
6969

70-
<!-- <tr valign="top">
71-
<th>{translate text='Format'}: </th>
72-
<td><span class="{$recordFormat}">{$recordFormat}</span></td>
73-
</tr> -->
7470
{assign var=lang value=$recordLanguage}
7571
{if $recordLanguage}
7672
<div class="grid">
7773
<dt class="g-col-lg-4 g-col-12">{translate text='Language(s)'}</dt>
7874
<dd class="g-col-lg-8 g-col-12">
7975
{foreach from=$lang item=field name=loop}
80-
{if $smarty.foreach.loop.first}{$field}{else}; {$field}{/if}
76+
{if $field@first}{$field}{else}; {$field}{/if}
8177
{/foreach}
8278
</dd>
8379
</div>
@@ -229,10 +225,10 @@
229225
<dt class="g-col-lg-4 g-col-12">{translate text='Original Format'}: </dt>
230226
<dd class="g-col-lg-8 g-col-12">
231227
{foreach from=$marcField item=field name=loop}
232-
{if $smarty.foreach.loop.iteration eq 1}
233-
{if $field|getvalue:'b' neq 'Electronic Resource'}{$field|getvalue:'b'}{/if}
234-
{elseif $smarty.foreach.loop.iteration gt 1}
235-
{if $field|getvalue:'b' neq 'Electronic Resource'}<br>{$field|getvalue:'b'}{/if}
228+
{if $field@iteration eq 1}
229+
{if $field|getvalue:'b' neq 'Electronic Resource'}{$field|getvalue:'b'}{/if}
230+
{elseif $field@iteration gt 1}
231+
{if $field|getvalue:'b' neq 'Electronic Resource'}<br>{$field|getvalue:'b'}{/if}
236232
{/if}
237233
{/foreach}
238234
</dd>
@@ -242,7 +238,7 @@
242238
{assign var=852Field value=$marc->getFields('852')}
243239
{if isset($852Field)}
244240
{foreach from=$852Field item=field name=loop}
245-
{if $smarty.foreach.loop.iteration lt 2}
241+
{if $field@iteration lt 2}
246242
{if $field|getvalue:'a' eq 'MiU'}
247243
{if $field|getvalue:'h'}
248244
<div class="grid">
@@ -255,7 +251,7 @@
255251
{else}
256252
{assign var=050Field value=$marc->getFields('050')}
257253
{foreach from=$050Field item=field name=loop}
258-
{if $smarty.foreach.loop.iteration lt 2}
254+
{if $field@iteration lt 2}
259255
{if $field|getvalue:'a'}
260256
<div class="grid">
261257
<dt class="g-col-lg-4 g-col-12">{translate text='Original Classification Number'}</dt>
@@ -286,19 +282,20 @@
286282
<div class="grid">
287283
<dt class="g-col-lg-4 g-col-12">{translate text='Locate a Print Version'}</dt>
288284
<dd class="g-col-lg-8 g-col-12">
289-
{if is_array($record.oclc)}
290-
<!-- title array -->
291-
{foreach from=$record.oclc item=title loop=1 name=loop}
292-
{if $smarty.foreach.loop.iteration lt 3}
293-
<a href="http://www.worldcat.org/oclc/{$title}" data-toggle="tracking" data-tracking-category="outLinks" data-tracking-action="Catalog Find in a Library" data-tracking-label="{$title}">Find in a library</a><br>
294-
{/if}
295-
{/foreach}
296-
{else}
297-
<!-- title non-array -->
298-
{if $record.oclc}
299-
<a href="http://www.worldcat.org/oclc/{$record.oclc}" data-toggle="tracking" data-tracking-category="outLinks" data-tracking-action="Catalog Find in a Library" data-tracking-label="{$record.oclc}">Find in a library</a>
300-
{else} Find in a library service is not available from this catalog. <a href="http://www.worldcat.org/" data-toggle="tracking" data-tracking-category="outLinks" data-tracking-action="Catalog Search Worldcat" data-tracking-label="worldcat" target="_blank">Search Worldcat</a>
285+
{if array_key_exists('oclc', $record)}
286+
{if is_array($record.oclc)}
287+
<!-- title array -->
288+
{foreach from=$record.oclc item=title name=loop}
289+
{if $title@iteration lt 3}
290+
<a href="http://www.worldcat.org/oclc/{$title}" data-toggle="tracking" data-tracking-category="outLinks" data-tracking-action="Catalog Find in a Library" data-tracking-label="{$title}">Find in a library</a><br>
291+
{/if}
292+
{/foreach}
293+
{else}
294+
<!-- title non-array -->
295+
<a href="http://www.worldcat.org/oclc/{$record.oclc}" data-toggle="tracking" data-tracking-category="outLinks" data-tracking-action="Catalog Find in a Library" data-tracking-label="{$record.oclc}">Find in a library</a>
301296
{/if}
297+
{else}
298+
Find in a library service is not available from this catalog. <a href="http://www.worldcat.org/" data-toggle="tracking" data-tracking-category="outLinks" data-tracking-action="Catalog Search Worldcat" data-tracking-label="worldcat" target="_blank">Search Worldcat</a>
302299
{/if}
303300
</dd>
304301
</div>

interface/themes/firebird/Record/view.tpl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
{include file="header.tpl"}
1414
<hathi-alert-banner></hathi-alert-banner>
1515

16-
{if $mergeset}
16+
{if isset($mergeset) and $mergeset}
1717
{assign var="mhtj" value=$mergeset->combined_ht_json() }
1818
{assign var="htjson" value=$mhtj}
1919
{else}
@@ -29,8 +29,8 @@
2929
{* <div class="container container-medium flex-container flex-container-expanded container-boxed"> *}
3030
<div class="twocol mt-1">
3131

32-
<section class="twocol-main" id="section" data-record-count="{$recordCount}">
33-
<article class="record d-flex flex-column gap-3 p-3 mb-3 mt-3" data-hdl="{$hdl.handle}">
32+
<section class="twocol-main" id="section" data-record-count="{$recordCount|default:"0"}">
33+
<article class="record d-flex flex-column gap-3 p-3 mb-3 mt-3" data-hdl="{$ld.handle}">
3434
<div class="article-heading d-flex gap-3">
3535

3636
<div class="cover d-none d-md-block">
@@ -48,11 +48,11 @@
4848
{foreach from=$field->getSubfields() item=subfield key=subcode name=subloop}
4949
{if $subcode >= 'a' and $subcode <= 'z'}
5050
<span>{$subfield->getData()}</span>
51-
{if ! $smarty.foreach.last}<br />{/if}
51+
{if ! $subfield@last}<br />{/if}
5252
{/if}
5353
{/foreach}
5454
{/foreach}
55-
{if $record.vtitle}
55+
{if array_key_exists('vtitle', $record)}
5656
<br /><span>{$record.vtitle}</span>
5757
{/if}
5858
</h1>
@@ -92,10 +92,10 @@
9292
<tbody>
9393
{foreach from=$htjson item=e}
9494
{assign var=ld value=$ru->ht_link_data_from_json($e)}
95-
{if $record_is_tombstone || !($ld.is_tombstone)}
95+
{if (isset($record_is_tombstone) and $record_is_tombstone) || !($ld.is_tombstone)}
9696
<tr>
9797
<td>
98-
{if $record_is_tombstone}
98+
{if (isset($record_is_tombstone) and $record_is_tombstone) }
9999
This item is no longer available (<a href="//babel.hathitrust.org/cgi/pt?id={$ld.handle}">why not?</a>)
100100
{elseif ( $ld.is_resource_sharing )}
101101
<a data-activated-role="true" href="{$handle_prefix}{$ld.handle}" referrerpolicy="unsafe-url"><i aria-hidden="true" class="fa-solid fa-lock-open"></i> <span>Registered Access</span> &nbsp; <span class="IndItem">{$ld.enumchron}</span></a>
@@ -158,14 +158,14 @@
158158
<div class="d-flex gap-3 p-3 mb-3 mt-3 shadow-sm rounded">
159159
<div class="container-fluid p-1">
160160
<h3 class="record-title h4 mb-3 fw-normal"><a href="{$url}/Record/{$similar.id}">{$similarTitle}</a></h3>
161-
{if $similar.author or $similar.publishDate}
161+
{if array_key_exists('author', $similar) or array_key_exists('publishDate', $similar)}
162162
<dl class="metadata mb-0">
163163
<div class="grid gap-2">
164-
{if $similar.author}
164+
{if array_key_exists('author', $similar)}
165165
<dt class="g-col-lg-4 g-col-12">Author</dt>
166166
<dd class="g-col-lg-8 g-col-12">{$similar.author.0}</dd>
167167
{/if}
168-
{if $similar.publishDate}
168+
{if array_key_exists('publishDate', $similar)}
169169
<dt class="g-col-lg-4 g-col-12">Published</dt>
170170
<dd class="g-col-lg-8 g-col-12">{$similar.publishDate.0}</dd>
171171
{/if}

interface/themes/firebird/Search/advanced_search_field.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
</select>
3131
<div class="advanced-input-container">
3232
<label for="field-search-text-input-{$index}" class="offscreen">Search Term {$index}</label>
33-
<input id="field-search-text-input-{$index}" placeholder="Search Term {$index}" type="text" value="{$lookfor}" name="lookfor[]" />
33+
<input id="field-search-text-input-{$index}" placeholder="Search Term {$index}" type="text" value="{$lookfor|default:''}" name="lookfor[]" />
3434
</div>
3535
</div>
3636
</fieldset>

interface/themes/firebird/Search/list-list.tpl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,42 +28,42 @@
2828
{if is_array($record.title)}
2929
{foreach from=$record.title item=title}
3030
<h3 class="record-title">
31-
<span class="title">{$title|truncate:180:"..."|highlight:$lookfor|default:'Title not available'}</span>
31+
<span class="title">{$title|truncate:180:"..."|default:'Title not available'}</span>
3232
</h3>
3333
{/foreach}
3434
{else}
35-
<h3 class="record-title">{$record.title|truncate:180:"..."|highlight:$lookfor|default:'Title not available'}</h3>
35+
<h3 class="record-title">{$record.title|truncate:180:"..."|default:'Title not available'}</h3>
3636
{/if}
3737
</div>
38-
{if $record.title2}
38+
{if array_key_exists('title2', $record)}
3939
<blockquote>
40-
<p class="results_title2">{$record.title2|truncate:180:"..."|highlight:$lookfor}</p>
40+
<p class="results_title2">{$record.title2|truncate:180:"..."}</p>
4141
</blockquote>
4242
{/if}
4343

44-
{if $record.vtitle}
44+
{if array_key_exists('vtitle', $record)}
4545
<blockquote>
4646
<span class="results_title2">{$record.vtitle}</span>
4747
</blockquote>
4848
{/if}
4949

5050
<dl class="metadata">
51-
{if $record.publishDate}
51+
{if array_key_exists('publishDate', $record)}
5252
<div class="grid">
5353
<dt class="g-col-lg-4 g-col-12">{translate text='Published'}</dt>
5454
<dd class="g-col-lg-4 g-col-12">{$record.publishDate.0}</dd>
5555
</div>
5656
{/if}
5757

58-
{if $record.author}
58+
{if array_key_exists('author', $record)}
5959
<div class="grid">
6060
<dt class="g-col-lg-4 g-col-12">Author</dt>
6161
{if is_array($record.author)}
6262
{foreach from=$record.author item=author}
63-
<dd class="g-col-lg-4 g-col-12">{$author|highlight:$lookfor}</dd>
63+
<dd class="g-col-lg-4 g-col-12">{$author}</dd>
6464
{/foreach}
6565
{else}
66-
<dd class="g-col-lg-4 g-col-12">{$record.author|highlight:$lookfor}</dd>
66+
<dd class="g-col-lg-4 g-col-12">{$record.author}</dd>
6767
</div>
6868
{/if}
6969
{/if}

interface/themes/firebird/Search/list-none.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
<div>
2525

26-
{if $fixedUnbalancedQuotes}
26+
{if isset($fixedUnbalancedQuotes) and $fixedUnbalancedQuotes}
2727
<div class="alert alert-info">
2828
<p>Your query contained ambiguous quotes and was modified by removing the last one.</p>
2929
</div>

0 commit comments

Comments
 (0)