r4175 bugfix: call to undefined getImageHREF() in standalone scripts
authorAlexey Andriyanov <alan@al-an.info>
Mon, 31 Jan 2011 13:11:11 +0000 (13:11 +0000)
committerAlexey Andriyanov <alan@al-an.info>
Mon, 31 Jan 2011 13:11:11 +0000 (13:11 +0000)
formatAttributeValue: reduced parameters number, added logic to render external href
renderRackObject: removed parameter in call to formatAttributeValue
renderSearchResults: idem
parseWikiLink: changed function logic, now it sets additional fields in record and does not try to render HTML
readChapter: changed call to parseWikiLink
fetchAttrsForObjects: idem

inc/database.php
inc/functions.php
inc/interface.php

index e32cc4e..e6ff936 100644 (file)
@@ -2338,13 +2338,16 @@ function readChapter ($chapter_id = 0, $style = '')
 {
        $result = usePreparedSelectBlade
        (
-               "select dict_key, dict_value from Dictionary " .
+               "select dict_key, dict_value as value from Dictionary " .
                "where chapter_id = ?",
                array ($chapter_id)
        );
        $chapter = array();
        while ($row = $result->fetch (PDO::FETCH_ASSOC))
-               $chapter[$row['dict_key']] = $style == '' ? $row['dict_value'] : parseWikiLink ($row['dict_value'], $style);
+       {
+               parseWikiLink ($row);
+               $chapter[$row['dict_key']] = ($style == 'a' ? $row['a_value'] : $row['o_value']);
+       }
        // SQL ORDER BY had no sense, because we need to sort after link rendering, not before.
        asort ($chapter);
        return $chapter;
@@ -2498,8 +2501,7 @@ function fetchAttrsForObjects($object_set)
                        case 'float':
                        case 'string':
                                $record['value'] = $row[$row['attr_type'] . '_value'];
-                               $record['o_value'] = parseWikiLink ($record['value'], 'o');
-                               $record['a_value'] = parseWikiLink ($record['value'], 'a');
+                               parseWikiLink ($record);
                                break;
                        default:
                                $record['value'] = NULL;
index 6aa9b30..b898636 100644 (file)
@@ -867,27 +867,22 @@ function findAllEndpoints ($object_id, $fallback = '')
 // 1. word
 // 2. [[word URL]] // FIXME: this isn't working
 // 3. [[word word word | URL]]
-// This function parses the line and returns text suitable for either A
-// (rendering <A HREF>) or O (for <OPTION>).
-function parseWikiLink ($line, $which)
-{
-       if (preg_match ('/^\[\[.+\]\]$/', $line) == 0)
+// This function parses the line in $record['value'] and modifies $record:
+// $record['o_value'] is set to be the first part of link (word word word)
+// $record['a_value'] is the same, but with %GPASS and %GSKIP macros applied
+// $record['href'] is set to URL if it is specified in the input value
+function parseWikiLink (&$record)
+{
+       if (! preg_match ('/^\[\[(.+)\]\]$/', $record['value'], $matches))
+               $record['o_value'] = $record['value'];
+       else
        {
-               // always strip the marker for A-data, but let cookOptgroup()
-               // do this later (otherwise it can't sort groups out)
-               if ($which == 'a')
-                       return preg_replace ('/^.+%GSKIP%/', '', preg_replace ('/^(.+)%GPASS%/', '\\1 ', $line));
-               else
-                       return $line;
+               $s = explode ('|', $matches[1]);
+               if (isset ($s[1]))
+                       $record['href'] = trim ($s[1]);
+               $record['o_value'] = trim ($s[0]);
        }
-       $line = preg_replace ('/^\[\[(.+)\]\]$/', '$1', $line);
-       $s = explode ('|', $line);
-       $o_value = trim ($s[0]);
-       if ($which == 'o')
-               return $o_value;
-       $o_value = preg_replace ('/^.+%GSKIP%/', '', preg_replace ('/^(.+)%GPASS%/', '\\1 ', $o_value));
-       $a_value = trim ($s[1]);
-       return $o_value . " <a class='img-link' href='${a_value}'>" . getImageHREF ('html', 'vendor`s info page') . "</a>";
+       $record['a_value'] = execGMarker ($record['o_value']);
 }
 
 // FIXME: should this be saved as "P-data"?
index 1124d1e..9a4ea02 100644 (file)
@@ -1025,11 +1025,11 @@ function renderRackObject ($object_id)
        }
        if ($info['has_problems'] == 'yes')
                echo "<tr><td colspan=2 class=msg_error>Has problems</td></tr>\n";
-       foreach (getAttrValues ($object_id) as $attr_id => $record)
+       foreach (getAttrValues ($object_id) as $record)
                if (strlen ($record['value']))
                {
                        echo "<tr><th width='50%' class=sticker>${record['name']}:</th><td class=sticker>" .
-                               formatAttributeValue($attr_id, $record) .
+                               formatAttributeValue ($record) .
                                "</td></tr>\n";
                }
        printTagTRs
@@ -3854,7 +3854,7 @@ function renderSearchResults ($terms, $summary)
                                                        {
                                                                $record = $aval[$attr_id];
                                                                echo "<tr><th width='50%' class=sticker>${record['name']}:</th>";
-                                                               echo "<td class=sticker>" . formatAttributeValue($attr_id, $record) . "</td></tr>";
+                                                               echo "<td class=sticker>" . formatAttributeValue ($record) . "</td></tr>";
                                                        }
                                                        echo '</table>';
                                                }
@@ -9211,10 +9211,10 @@ function renderDiscoveredNeighbors ($object_id)
        echo '</table></form>';
 }
 
-function formatAttributeValue($attribute_id, $record)
+function formatAttributeValue ($record)
 {
        if (! isset ($record['key'])) // if record is a dictionary value, generate href with autotag in cfe
-               return $record['a_value'];      
+               return execGMarker ($record['o_value']);
        else
        {
                $href = makeHref
@@ -9224,13 +9224,13 @@ function formatAttributeValue($attribute_id, $record)
                                'page'=>'depot',
                                'tab'=>'default',
                                'andor' => 'and',
-                               'cfe' => '{$attr_' . $attribute_id . '_' . $record['key'] . '}',
+                               'cfe' => '{$attr_' . $record['id'] . '_' . $record['key'] . '}',
                        )
                );
-               if (preg_match ('#(.*?)\s*(<a[^<]+.*</a>)$#', $record['a_value'], $matches))
-                       return "<a href=\"$href\">${matches[1]}</a>&nbsp;${matches[2]}";
-               else
-                       return "<a href=\"$href\">${matches[1]}</a>";
+               $result = "<a href='$href'>" . $record['a_value'] . "</a>";
+               if (isset ($record['href']))
+                       $result .= "&nbsp;<a class='img-link' href='${record['href']}'>" . getImageHREF ('html', 'vendor`s info page') . "</a>";
+               return $result;
        }
 }