/[cvs]/nfo/patches/horde/turba/csv-mapping/data.php.patch
ViewVC logotype

Annotation of /nfo/patches/horde/turba/csv-mapping/data.php.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Mon Oct 21 11:20:18 2002 UTC (21 years, 10 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
initial checkin

1 joko 1.1 --- data.php.orig 2002-05-27 19:05:20.000000000 +0200
2     +++ data.php.patched 2002-10-21 12:33:59.000000000 +0200
3     @@ -20,6 +20,7 @@
4     }
5    
6     $error = false;
7     +$errors_import = array();
8     $actionID = Horde::getFormData('actionID', NO_ACTION);
9    
10     if ($actionID == HORDE_IMPORT) {
11     @@ -100,6 +101,12 @@
12     $hash = array();
13     reset($cfgSources[$dest]['map']);
14     while (list($key, ) = each($cfgSources[$dest]['map'])) {
15     + // determine if appKey contains expression
16     + if ( isset($map[$key]) && substr($map[$key], 0, 6) == 'expr: ') {
17     + // patch "$row[$map[$key]]"
18     + $val = evaluateExpression(substr($map[$key], 6), $row);
19     + $row[$map[$key]] = $val;
20     + }
21     if (isset($map[$key]) && !empty($row[$map[$key]])) {
22     if ($attributes[$key]['type'] == 'date' ||
23     $attributes[$key]['type'] == 'time' ||
24     @@ -116,19 +123,59 @@
25     } elseif ($attributes[$key]['type'] == 'datetime') {
26     $hash[$key] = mktime($dt_arr['hour'], $dt_arr['min'], $dt_arr['sec'], $dt_arr['month'], $dt_arr['mday'], $dt_arr['year']);
27     } else {
28     - $hash[$key] = $row[$map[$key]];
29     + $hash[$key] = $row[$map[$key]];
30     }
31     }
32     }
33     $hash['__owner'] = Auth::getAuth();
34     - if (!$driver->addObject($hash)) {
35     +
36     + $result = $driver->addObject($hash);
37     + // $driver->addObject may return a PEAR-Error-Object
38     + if ( is_object($result) && get_class($result) == 'pear_error' ) {
39     + $error_row = array(
40     + 'error_source' => 'PEAR',
41     + 'message' => $result->message,
42     + 'sourcedata_dump' => showvar($row),
43     + 'mapping_dump' => showvar($map),
44     + 'importhash_dump' => showvar($hash),
45     + );
46     + array_push($errors_import, $error_row);
47     $error = true;
48     - }
49     + }
50     +
51     +# if ($result == true) {
52     +# $error = false;
53     +# }
54     }
55     }
56    
57     if ($error) {
58     - Horde::raiseMessage(_("There was an error importing the data."), HORDE_ERROR);
59     + $error_idx = 0;
60     + ?>
61     + <script language="javascript">
62     + function toggleDetails(obj) {
63     + sel = obj.style.getAttribute('display');
64     + if (sel == 'none') {
65     + obj.style.setAttribute('display', 'inline');
66     + } else {
67     + obj.style.setAttribute('display', 'none');
68     + }
69     + }
70     + </script>
71     + <?
72     + $msg_append = '';
73     + foreach ($errors_import as $error_item) {
74     + $msg_append .= $error_item['message'] . "
75     +<a href=\"javascript:toggleDetails(document.all.details$error_idx);\">details</a>
76     +<span id=\"details$error_idx\" style=\"display:none; font-size:10px;\">
77     +<pre><blockquote>
78     +sourcedata:<br>$error_item[sourcedata_dump]<br>
79     +mapping:<br>$error_item[mapping_dump]<br>
80     +import-hash:<br>$error_item[importhash_dump]<br>
81     +</pre></blockquote></span><hr>";
82     + $error_idx++;
83     + }
84     + Horde::raiseMessage(_("There was an error importing the data.<hr>" . $msg_append), HORDE_ERROR);
85     } else {
86     $import_type = Horde::getFormData('import_type');
87     switch ($import_type) {
88     @@ -384,4 +431,65 @@
89     $registry->shutdown();
90     require TURBA_TEMPLATES . '/common-footer.inc';
91    
92     +
93     +// dumps a variable
94     +function showvar($var, $string = '$var')
95     +{
96     + $out = "";
97     + // TRUE, FALSE, NULL and empty arrays: return this value
98     + if($var === true) {
99     + $out .= htmlentities($string . ' = TRUE;') . "\n";
100     + } else if($var === false) {
101     + $out .= htmlentities($string . ' = FALSE;') . "\n";
102     + } else if($var === null) {
103     + $out .= htmlentities($string . ' = NULL;') . "\n";
104     + } else if($var === array()) {
105     + $out .= htmlentities($string . ' = array();') . "\n";
106     + // array or object - foreach element of $var
107     + } else if ( is_array( $var ) || is_object($var) ) {
108     + foreach($var as $k=>$v) {
109     + // Format the string which stands next to the ' = '.
110     + // [] for arrays and -> for objects
111     + if(is_array($var)) {
112     + if(is_string($k)) {
113     + $k = "'" . str_replace('\"', '"',
114     + addslashes($k)) . "'";
115     + }
116     + $new_string = $string . '[' . $k . ']';
117     + } else if(is_object($var)) {
118     + $new_string = $string . '->' . $k;
119     + }
120     + // dive
121     + $out .= showvar($v, $new_string);
122     + }
123     + // not object, not array
124     + } else {
125     + // Format as a string if it is one
126     + if(is_string($var)) {
127     + $var = "'" . str_replace('\"', '"',
128     + addslashes($var)) . "'";
129     + }
130     + $out .= htmlentities($string . ' = ' . $var) . ";\n";
131     + }
132     + return $out;
133     +}
134     +
135     +
136     +// evaluates field-expression
137     +function evaluateExpression($expr, $row) {
138     + $expr = str_replace('+', '.', $expr);
139     + preg_match_all("/{.+?}/", $expr, $matches);
140     + foreach ($matches[0] as $match_item) {
141     + $key = substr($match_item, 1, -1);
142     + $replacement = "''";
143     + if (isset($row[$key])) {
144     + $replacement = "'" . $row[$key] . "'";
145     + }
146     + $expr = str_replace($match_item, $replacement, $expr);
147     + }
148     + $expr_evalcmd = 'return ' . $expr . ';';
149     + $expr_evalres = eval($expr_evalcmd);
150     + return $expr_evalres;
151     +}
152     +
153     ?>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed