formatting

This commit is contained in:
Miles Lott 2002-03-19 02:58:50 +00:00
parent 31e6ac71a4
commit 33549dcf9e
3 changed files with 104 additions and 98 deletions

View File

@ -26,7 +26,7 @@
$GLOBALS['phpgw']->template->set_block('import','ffooter','ffooterhandle'); $GLOBALS['phpgw']->template->set_block('import','ffooter','ffooterhandle');
$GLOBALS['phpgw']->template->set_block('import','imported','importedhandle'); $GLOBALS['phpgw']->template->set_block('import','imported','importedhandle');
if ($action == 'download' && (!$fieldsep || !$csvfile || !($fp=fopen($csvfile,'r')))) if($action == 'download' && (!$fieldsep || !$csvfile || !($fp=fopen($csvfile,'rb'))))
{ {
$action = ''; $action = '';
} }
@ -39,20 +39,20 @@
$CPre = '|['; $CPreReg = '\|\['; // |{csv-fieldname} is expanded to the value of the csv-field $CPre = '|['; $CPreReg = '\|\['; // |{csv-fieldname} is expanded to the value of the csv-field
$CPos = ']'; $CPosReg = '\]'; // if used together with @ (replacement is eval-ed) value gets autom. quoted $CPos = ']'; $CPosReg = '\]'; // if used together with @ (replacement is eval-ed) value gets autom. quoted
function dump_array( $arr ) function dump_array($arr)
{ {
while (list($key,$val) = each($arr)) while(is_array($arr) && (list($key,$val) = each($arr)))
{ {
$ret .= ($ret ? ',' : '(') . "'$key' => '$val'\n"; $ret .= ($ret ? ',' : '(') . "'$key' => '$val'\n";
} }
return $ret.')'; return $ret.')';
} }
function index( $value,$arr ) function index($value,$arr)
{ {
while (list ($key,$val) = each($arr)) while(is_array($arr) && (list($key,$val) = each($arr)))
{ {
if ($value == $val) if($value == $val)
{ {
return $key; return $key;
} }
@ -61,19 +61,19 @@
} }
// find in Addressbook, at least n_family AND (n_given OR org_name) have to match // find in Addressbook, at least n_family AND (n_given OR org_name) have to match
function addr_id( $n_family,$n_given,$org_name ) function addr_id($n_family,$n_given,$org_name)
{ {
$addrs = $GLOBALS['phpgw']->contacts->read( 0,0,array('id'),'',"n_family=$n_family,n_given=$n_given,org_name=$org_name" ); $addrs = $GLOBALS['phpgw']->contacts->read(0,0,array('id'),'',"n_family=$n_family,n_given=$n_given,org_name=$org_name");
if (!count($addrs)) if(!count($addrs))
{ {
$addrs = $GLOBALS['phpgw']->contacts->read( 0,0,array('id'),'',"n_family=$n_family,n_given=$n_given" ); $addrs = $GLOBALS['phpgw']->contacts->read(0,0,array('id'),'',"n_family=$n_family,n_given=$n_given");
} }
if (!count($addrs)) if(!count($addrs))
{ {
$addrs = $GLOBALS['phpgw']->contacts->read( 0,0,array('id'),'',"n_family=$n_family,org_name=$org_name" ); $addrs = $GLOBALS['phpgw']->contacts->read(0,0,array('id'),'',"n_family=$n_family,org_name=$org_name");
} }
if (count($addrs)) if(count($addrs))
{ {
return $addrs[0]['id']; return $addrs[0]['id'];
} }
@ -81,50 +81,50 @@
return False; return False;
} }
$cat2id = array( ); $cat2id = array();
function cat_id($cats) function cat_id($cats)
{ {
if (!$cats) if(!$cats)
{ {
return ''; return '';
} }
$cats = split('[,;]',$cats); $cats = split('[,;]',$cats);
while (list($k,$cat) = each($cats)) while(list($k,$cat) = each($cats))
{ {
if (isset($cat2id[$cat])) if(isset($cat2id[$cat]))
{ {
$ids[$cat] = $cat2id[$cat]; // cat is in cache $ids[$cat] = $cat2id[$cat]; // cat is in cache
} }
else else
{ {
if (!is_object($GLOBALS['phpgw']->categories)) if(!is_object($GLOBALS['phpgw']->categories))
{ {
$GLOBALS['phpgw']->categories = createobject('phpgwapi.categories'); $GLOBALS['phpgw']->categories = createobject('phpgwapi.categories');
} }
if ($id = $GLOBALS['phpgw']->categories->name2id( addslashes($cat) )) if($id = $GLOBALS['phpgw']->categories->name2id(addslashes($cat)))
{ // cat exists { // cat exists
$cat2id[$cat] = $ids[$cat] = $id; $cat2id[$cat] = $ids[$cat] = $id;
} }
else else
{ // create new cat { // create new cat
$GLOBALS['phpgw']->categories->add( array('name' => $cat,'descr' => $cat )); $GLOBALS['phpgw']->categories->add(array('name' => $cat,'descr' => $cat));
$cat2id[$cat] = $ids[$cat] = $GLOBALS['phpgw']->categories->name2id( addslashes($cat) ); $cat2id[$cat] = $ids[$cat] = $GLOBALS['phpgw']->categories->name2id(addslashes($cat));
} }
} }
} }
$id_str = implode( ',',$ids ); $id_str = implode(',',$ids);
if (count($ids) > 1) // multiple cats need to be in ',' if(count($ids) > 1) // multiple cats need to be in ','
{ {
$id_str = ",$id_str,"; $id_str = ",$id_str,";
} }
return $id_str; return $id_str;
} }
switch ($action) switch($action)
{ {
case '': // Start, ask Filename case '': // Start, ask Filename
$GLOBALS['phpgw']->template->set_var('lang_csvfile',lang('CSV-Filename')); $GLOBALS['phpgw']->template->set_var('lang_csvfile',lang('CSV-Filename'));
@ -141,7 +141,7 @@
case 'download': case 'download':
$GLOBALS['phpgw']->preferences->read_repository(); $GLOBALS['phpgw']->preferences->read_repository();
$defaults = $GLOBALS['phpgw_info']['user']['preferences']['addressbook']['cvs_import']; $defaults = $GLOBALS['phpgw_info']['user']['preferences']['addressbook']['cvs_import'];
if (!is_array($defaults)) if(!is_array($defaults))
{ {
$defaults = array(); $defaults = array();
} }
@ -160,16 +160,16 @@
'owner' => 'Owner: defaults to user' 'owner' => 'Owner: defaults to user'
); );
while (list($field,$name) = each($addr_names)) while(list($field,$name) = each($addr_names))
{ {
if ($dn = display_name($field)) if($dn = display_name($field))
{ {
$addr_names[$field] = $dn; $addr_names[$field] = $dn;
} }
} }
$addr_name_options = "<option value=\"\">none\n"; $addr_name_options = "<option value=\"\">none\n";
reset($addr_names); reset($addr_names);
while (list($field,$name) = each($addr_names)) while(list($field,$name) = each($addr_names))
{ {
$addr_name_options .= "<option value=\"$field\">".$GLOBALS['phpgw']->strip_html($name)."\n"; $addr_name_options .= "<option value=\"$field\">".$GLOBALS['phpgw']->strip_html($name)."\n";
} }
@ -177,13 +177,13 @@
$csv_fields[] = 'no CSV 1'; // eg. for static assignments $csv_fields[] = 'no CSV 1'; // eg. for static assignments
$csv_fields[] = 'no CSV 2'; $csv_fields[] = 'no CSV 2';
$csv_fields[] = 'no CSV 3'; $csv_fields[] = 'no CSV 3';
while (list($csv_idx,$csv_field) = each($csv_fields)) while(list($csv_idx,$csv_field) = each($csv_fields))
{ {
$GLOBALS['phpgw']->template->set_var('csv_field',$csv_field); $GLOBALS['phpgw']->template->set_var('csv_field',$csv_field);
$GLOBALS['phpgw']->template->set_var('csv_idx',$csv_idx); $GLOBALS['phpgw']->template->set_var('csv_idx',$csv_idx);
if ($def = $defaults[$csv_field]) if($def = $defaults[$csv_field])
{ {
list( $addr,$trans ) = explode($PSep,$def,2); list($addr,$trans) = explode($PSep,$def,2);
$GLOBALS['phpgw']->template->set_var('trans',$trans); $GLOBALS['phpgw']->template->set_var('trans',$trans);
$GLOBALS['phpgw']->template->set_var('addr_fields',str_replace('="'.$addr.'">','="'.$addr.'" selected>',$addr_name_options)); $GLOBALS['phpgw']->template->set_var('addr_fields',str_replace('="'.$addr.'">','="'.$addr.'" selected>',$addr_name_options));
} }
@ -238,19 +238,19 @@
$GLOBALS['phpgw']->template->set_var('help_on_trans',lang($help_on_trans)); // I don't think anyone will translate this $GLOBALS['phpgw']->template->set_var('help_on_trans',lang($help_on_trans)); // I don't think anyone will translate this
break; break;
case 'import': case 'import':
$fp=fopen($csvfile,"r"); $fp=fopen($csvfile,'rb');
$csv_fields = fgetcsv($fp,8000,$fieldsep); $csv_fields = fgetcsv($fp,8000,$fieldsep);
$csv_fields[] = 'no CSV 1'; // eg. for static assignments $csv_fields[] = 'no CSV 1'; // eg. for static assignments
$csv_fields[] = 'no CSV 2'; $csv_fields[] = 'no CSV 2';
$csv_fields[] = 'no CSV 3'; $csv_fields[] = 'no CSV 3';
$addr_fields = array_diff($addr_fields,array( '' )); // throw away empty / not assigned entrys $addr_fields = array_diff($addr_fields,array('')); // throw away empty / not assigned entrys
$defaults = array(); $defaults = array();
while (list($csv_idx,$addr) = each($addr_fields)) while(list($csv_idx,$addr) = each($addr_fields))
{ // convert $trans[$csv_idx] into array of pattern => value { // convert $trans[$csv_idx] into array of pattern => value
$defaults[$csv_fields[$csv_idx]] = $addr; $defaults[$csv_fields[$csv_idx]] = $addr;
if ($trans[$csv_idx]) if($trans[$csv_idx])
{ {
$defaults[$csv_fields[$csv_idx]] .= $PSep.$trans[$csv_idx]; $defaults[$csv_fields[$csv_idx]] .= $PSep.$trans[$csv_idx];
} }
@ -263,17 +263,17 @@
$log = "<table border=1>\n\t<tr><td>#</td>\n"; $log = "<table border=1>\n\t<tr><td>#</td>\n";
reset($addr_fields); reset($addr_fields);
while (list($csv_idx,$addr) = each($addr_fields)) while(list($csv_idx,$addr) = each($addr_fields))
{ // convert $trans[$csv_idx] into array of pattern => value { // convert $trans[$csv_idx] into array of pattern => value
// if (!$debug) echo "<p>$csv_idx: ".$csv_fields[$csv_idx].": $addr".($trans[$csv_idx] ? ': '.$trans[$csv_idx] : '')."</p>"; // if (!$debug) echo "<p>$csv_idx: ".$csv_fields[$csv_idx].": $addr".($trans[$csv_idx] ? ': '.$trans[$csv_idx] : '')."</p>";
$pat_reps = explode($PSep,stripslashes($trans[$csv_idx])); $pat_reps = explode($PSep,stripslashes($trans[$csv_idx]));
$replaces = ''; $values = ''; $replaces = ''; $values = '';
if ($pat_reps[0] != '') if($pat_reps[0] != '')
{ {
while (list($k,$pat_rep) = each($pat_reps)) while(list($k,$pat_rep) = each($pat_reps))
{ {
list($pattern,$replace) = explode($ASep,$pat_rep,2); list($pattern,$replace) = explode($ASep,$pat_rep,2);
if ($replace == '') if($replace == '')
{ {
$replace = $pattern; $pattern = '^.*$'; $replace = $pattern; $pattern = '^.*$';
} }
@ -288,42 +288,47 @@
} }
$log .= "\t\t<td><b>$addr</b></td>\n"; $log .= "\t\t<td><b>$addr</b></td>\n";
} }
if ($start < 1) $start = 1; if($start < 1)
for ($i = 1; $i < $start && fgetcsv($fp,8000,$fieldsep); ++$i); // overread lines before our start-record {
$start = 1;
}
for($i = 1; $i < $start && fgetcsv($fp,8000,$fieldsep); ++$i); // overread lines before our start-record
for ($anz = 0; $anz < $max && ($fields = fgetcsv($fp,8000,$fieldsep)); ++$anz) for($anz = 0; $anz < $max && ($fields = fgetcsv($fp,8000,$fieldsep)); ++$anz)
{ {
$log .= "\t</tr><tr><td>".($start+$anz)."</td>\n"; $log .= "\t</tr><tr><td>".($start+$anz)."</td>\n";
reset($addr_fields); $values = array(); reset($addr_fields); $values = array();
while (list($csv_idx,$addr) = each($addr_fields)) while(list($csv_idx,$addr) = each($addr_fields))
{ {
//echo "<p>$csv: $addr".($trans[$csv] ? ': '.$trans[$csv] : '')."</p>"; //echo "<p>$csv: $addr".($trans[$csv] ? ': '.$trans[$csv] : '')."</p>";
$val = $fields[$csv_idx]; $val = $fields[$csv_idx];
if (isset($trans[$csv_idx])) if(isset($trans[$csv_idx]))
{ {
$trans_csv = $trans[$csv_idx]; $trans_csv = $trans[$csv_idx];
while (list($pattern,$replace) = each($trans_csv)) while(list($pattern,$replace) = each($trans_csv))
{ {
if (ereg((string) $pattern,$val)) if(ereg((string) $pattern,$val))
{ {
// echo "<p>csv_idx='$csv_idx',info='$addr',trans_csv=".dump_array($trans_csv).",ereg_replace('$pattern','$replace','$val') = "; // echo "<p>csv_idx='$csv_idx',info='$addr',trans_csv=".dump_array($trans_csv).",ereg_replace('$pattern','$replace','$val') = ";
$val = ereg_replace((string) $pattern,str_replace($VPre,'\\',$replace),(string) $val); $val = ereg_replace((string) $pattern,str_replace($VPre,'\\',$replace),(string) $val);
// echo "'$val'</p>"; // echo "'$val'</p>";
$reg = $CPreReg.'([a-zA-Z_0-9]+)'.$CPosReg; $reg = $CPreReg.'([a-zA-Z_0-9]+)'.$CPosReg;
while (ereg($reg,$val,$vars)) while(ereg($reg,$val,$vars))
{ // expand all CSV fields { // expand all CSV fields
$val = str_replace($CPre.$vars[1].$CPos,$val[0] == '@' ? "'".addslashes($fields[index($vars[1],$csv_fields)])."'" : $fields[index($vars[1],$csv_fields)],$val); $val = str_replace($CPre . $vars[1] . $CPos, $val[0] == '@' ? "'"
. addslashes($fields[index($vars[1], $csv_fields)])
. "'" : $fields[index($vars[1], $csv_fields)], $val);
} }
if ($val[0] == '@') if($val[0] == '@')
{ {
$val = 'return '.substr($val,1).';'; $val = 'return '.substr($val,1).';';
// echo "<p>eval('$val')="; // echo "<p>eval('$val')=";
$val = eval($val); $val = eval($val);
// echo "'$val'</p>"; // echo "'$val'</p>";
} }
if ($pattern[0] != '@' || $val) if($pattern[0] != '@' || $val)
{ {
break; break;
} }
@ -336,7 +341,7 @@
} }
// if (!isset($values['datecreated'])) $values['datecreated'] = $values['startdate']; // if (!isset($values['datecreated'])) $values['datecreated'] = $values['startdate'];
if (!$debug) if(!$debug)
{ {
$GLOBALS['phpgw']->contacts->add( $values['owner'] ? $values['owner'] : $GLOBALS['phpgw_info']['user']['account_id'], $GLOBALS['phpgw']->contacts->add( $values['owner'] ? $values['owner'] : $GLOBALS['phpgw_info']['user']['account_id'],
$values,$values['access'],$values['cat_id']); $values,$values['access'],$values['cat_id']);
@ -345,9 +350,9 @@
} }
$log .= "\t</tr>\n</table>\n"; $log .= "\t</tr>\n</table>\n";
$GLOBALS['phpgw']->template->set_var('anz_imported',$debug ? lang( '%1 records read (not yet imported, you may go back and uncheck Test Import)', $GLOBALS['phpgw']->template->set_var('anz_imported',$debug ? lang('%1 records read (not yet imported, you may go back and uncheck Test Import)',
$anz,'<a href="javascript:history.back()">','</a>' ) : $anz,'<a href="javascript:history.back()">','</a>') :
lang( '%1 records imported',$anz )); lang('%1 records imported',$anz));
$GLOBALS['phpgw']->template->set_var('log',$log); $GLOBALS['phpgw']->template->set_var('log',$log);
$GLOBALS['phpgw']->template->parse('importedhandle','imported'); $GLOBALS['phpgw']->template->parse('importedhandle','imported');
break; break;

View File

@ -20,6 +20,7 @@
$setup_info['addressbook']['author'] = 'Joseph Engo, Miles Lott'; $setup_info['addressbook']['author'] = 'Joseph Engo, Miles Lott';
$setup_info['addressbook']['note'] = 'The phpgwapi manages contact data. Addressbook manages servers for its remote capability.'; $setup_info['addressbook']['note'] = 'The phpgwapi manages contact data. Addressbook manages servers for its remote capability.';
/* Tables */ /* Tables */
$setup_info['addressbook']['tables'][] = 'phpgw_addressbook_servers'; $setup_info['addressbook']['tables'][] = 'phpgw_addressbook_servers';