@@ -36,7 +36,7 @@ discard block |
||
| 36 | 36 | * |
| 37 | 37 | * @param string $_identifier |
| 38 | 38 | */ |
| 39 | - public function __construct( $_identifier='' ); |
|
| 39 | + public function __construct($_identifier = ''); |
|
| 40 | 40 | |
| 41 | 41 | /** |
| 42 | 42 | * magic method to set attributes of record |
@@ -97,7 +97,7 @@ discard block |
||
| 97 | 97 | * |
| 98 | 98 | * @return string identifier |
| 99 | 99 | */ |
| 100 | - public function save ( $_dst_identifier ); |
|
| 100 | + public function save($_dst_identifier); |
|
| 101 | 101 | |
| 102 | 102 | /** |
| 103 | 103 | * copys current record to record identified by $_dst_identifier |
@@ -105,7 +105,7 @@ discard block |
||
| 105 | 105 | * @param string $_dst_identifier |
| 106 | 106 | * @return string dst_identifier |
| 107 | 107 | */ |
| 108 | - public function copy ( $_dst_identifier ); |
|
| 108 | + public function copy($_dst_identifier); |
|
| 109 | 109 | |
| 110 | 110 | /** |
| 111 | 111 | * moves current record to record identified by $_dst_identifier |
@@ -114,14 +114,14 @@ discard block |
||
| 114 | 114 | * @param string $_dst_identifier |
| 115 | 115 | * @return string dst_identifier |
| 116 | 116 | */ |
| 117 | - public function move ( $_dst_identifier ); |
|
| 117 | + public function move($_dst_identifier); |
|
| 118 | 118 | |
| 119 | 119 | /** |
| 120 | 120 | * delets current record from backend |
| 121 | 121 | * @return void |
| 122 | 122 | * |
| 123 | 123 | */ |
| 124 | - public function delete (); |
|
| 124 | + public function delete(); |
|
| 125 | 125 | |
| 126 | 126 | /** |
| 127 | 127 | * destructor |
@@ -32,25 +32,25 @@ discard block |
||
| 32 | 32 | * Relative date ranges for filtering |
| 33 | 33 | */ |
| 34 | 34 | public static $relative_dates = array( // Start: year,month,day,week, End: year,month,day,week |
| 35 | - 'Today' => array(0,0,0,0, 0,0,1,0), |
|
| 36 | - 'Yesterday' => array(0,0,-1,0, 0,0,0,0), |
|
| 37 | - 'This week' => array(0,0,0,0, 0,0,0,1), |
|
| 38 | - 'Last week' => array(0,0,0,-1, 0,0,0,0), |
|
| 39 | - 'This month' => array(0,0,0,0, 0,1,0,0), |
|
| 40 | - 'Last month' => array(0,-1,0,0, 0,0,0,0), |
|
| 41 | - 'Last 3 months' => array(0,-3,0,0, 0,0,0,0), |
|
| 42 | - 'This quarter'=> array(0,0,0,0, 0,0,0,0), // Just a marker, needs special handling |
|
| 43 | - 'Last quarter'=> array(0,-4,0,0, 0,-4,0,0), // Just a marker |
|
| 44 | - 'This year' => array(0,0,0,0, 1,0,0,0), |
|
| 45 | - 'Last year' => array(-1,0,0,0, 0,0,0,0), |
|
| 46 | - '2 years ago' => array(-2,0,0,0, -1,0,0,0), |
|
| 47 | - '3 years ago' => array(-3,0,0,0, -2,0,0,0), |
|
| 48 | - ); |
|
| 35 | + 'Today' => array(0,0,0,0, 0,0,1,0), |
|
| 36 | + 'Yesterday' => array(0,0,-1,0, 0,0,0,0), |
|
| 37 | + 'This week' => array(0,0,0,0, 0,0,0,1), |
|
| 38 | + 'Last week' => array(0,0,0,-1, 0,0,0,0), |
|
| 39 | + 'This month' => array(0,0,0,0, 0,1,0,0), |
|
| 40 | + 'Last month' => array(0,-1,0,0, 0,0,0,0), |
|
| 41 | + 'Last 3 months' => array(0,-3,0,0, 0,0,0,0), |
|
| 42 | + 'This quarter'=> array(0,0,0,0, 0,0,0,0), // Just a marker, needs special handling |
|
| 43 | + 'Last quarter'=> array(0,-4,0,0, 0,-4,0,0), // Just a marker |
|
| 44 | + 'This year' => array(0,0,0,0, 1,0,0,0), |
|
| 45 | + 'Last year' => array(-1,0,0,0, 0,0,0,0), |
|
| 46 | + '2 years ago' => array(-2,0,0,0, -1,0,0,0), |
|
| 47 | + '3 years ago' => array(-3,0,0,0, -2,0,0,0), |
|
| 48 | + ); |
|
| 49 | 49 | |
| 50 | 50 | /** |
| 51 | - * Files known to cause problems, and will be skipped in a plugin scan |
|
| 52 | - * If you put appname => true, the whole app will be skipped. |
|
| 53 | - */ |
|
| 51 | + * Files known to cause problems, and will be skipped in a plugin scan |
|
| 52 | + * If you put appname => true, the whole app will be skipped. |
|
| 53 | + */ |
|
| 54 | 54 | protected static $blacklist_files = array( |
| 55 | 55 | 'api' => true, |
| 56 | 56 | 'etemplate' => true, |
@@ -64,10 +64,10 @@ discard block |
||
| 64 | 64 | ); |
| 65 | 65 | |
| 66 | 66 | /** |
| 67 | - * Class used to provide extra conversion functions |
|
| 68 | - * |
|
| 69 | - * Passed in as a param to conversion() |
|
| 70 | - */ |
|
| 67 | + * Class used to provide extra conversion functions |
|
| 68 | + * |
|
| 69 | + * Passed in as a param to conversion() |
|
| 70 | + */ |
|
| 71 | 71 | protected static $cclass = null; |
| 72 | 72 | |
| 73 | 73 | /** |
@@ -445,7 +445,7 @@ discard block |
||
| 445 | 445 | return $plugins; |
| 446 | 446 | } |
| 447 | 447 | |
| 448 | - public static function _get_plugins(Array $appnames, Array $types) { |
|
| 448 | + public static function _get_plugins(array $appnames, array $types) { |
|
| 449 | 449 | $plugins = array(); |
| 450 | 450 | foreach ($appnames as $appname) { |
| 451 | 451 | if(array_key_exists($appname, self::$blacklist_files) && self::$blacklist_files[$appname] === true) continue; |
@@ -562,7 +562,7 @@ discard block |
||
| 562 | 562 | } |
| 563 | 563 | |
| 564 | 564 | // Api\Cache needs this public |
| 565 | - public static function _has_definitions(Array $appnames, Array $types) { |
|
| 565 | + public static function _has_definitions(array $appnames, array $types) { |
|
| 566 | 566 | $def = new importexport_definitions_bo(array('application'=>$appnames, 'type' => $types)); |
| 567 | 567 | $list = array(); |
| 568 | 568 | foreach((array)$def->get_definitions() as $id) { |
@@ -32,19 +32,19 @@ discard block |
||
| 32 | 32 | * Relative date ranges for filtering |
| 33 | 33 | */ |
| 34 | 34 | public static $relative_dates = array( // Start: year,month,day,week, End: year,month,day,week |
| 35 | - 'Today' => array(0,0,0,0, 0,0,1,0), |
|
| 36 | - 'Yesterday' => array(0,0,-1,0, 0,0,0,0), |
|
| 37 | - 'This week' => array(0,0,0,0, 0,0,0,1), |
|
| 38 | - 'Last week' => array(0,0,0,-1, 0,0,0,0), |
|
| 39 | - 'This month' => array(0,0,0,0, 0,1,0,0), |
|
| 40 | - 'Last month' => array(0,-1,0,0, 0,0,0,0), |
|
| 41 | - 'Last 3 months' => array(0,-3,0,0, 0,0,0,0), |
|
| 42 | - 'This quarter'=> array(0,0,0,0, 0,0,0,0), // Just a marker, needs special handling |
|
| 43 | - 'Last quarter'=> array(0,-4,0,0, 0,-4,0,0), // Just a marker |
|
| 44 | - 'This year' => array(0,0,0,0, 1,0,0,0), |
|
| 45 | - 'Last year' => array(-1,0,0,0, 0,0,0,0), |
|
| 46 | - '2 years ago' => array(-2,0,0,0, -1,0,0,0), |
|
| 47 | - '3 years ago' => array(-3,0,0,0, -2,0,0,0), |
|
| 35 | + 'Today' => array(0, 0, 0, 0, 0, 0, 1, 0), |
|
| 36 | + 'Yesterday' => array(0, 0, -1, 0, 0, 0, 0, 0), |
|
| 37 | + 'This week' => array(0, 0, 0, 0, 0, 0, 0, 1), |
|
| 38 | + 'Last week' => array(0, 0, 0, -1, 0, 0, 0, 0), |
|
| 39 | + 'This month' => array(0, 0, 0, 0, 0, 1, 0, 0), |
|
| 40 | + 'Last month' => array(0, -1, 0, 0, 0, 0, 0, 0), |
|
| 41 | + 'Last 3 months' => array(0, -3, 0, 0, 0, 0, 0, 0), |
|
| 42 | + 'This quarter'=> array(0, 0, 0, 0, 0, 0, 0, 0), // Just a marker, needs special handling |
|
| 43 | + 'Last quarter'=> array(0, -4, 0, 0, 0, -4, 0, 0), // Just a marker |
|
| 44 | + 'This year' => array(0, 0, 0, 0, 1, 0, 0, 0), |
|
| 45 | + 'Last year' => array(-1, 0, 0, 0, 0, 0, 0, 0), |
|
| 46 | + '2 years ago' => array(-2, 0, 0, 0, -1, 0, 0, 0), |
|
| 47 | + '3 years ago' => array(-3, 0, 0, 0, -2, 0, 0, 0), |
|
| 48 | 48 | ); |
| 49 | 49 | |
| 50 | 50 | /** |
@@ -85,22 +85,22 @@ discard block |
||
| 85 | 85 | * @param string $_format format of time string e.g.: d.m.Y H:i |
| 86 | 86 | * @param int $_is_dst is day light saving time? 0 = no, 1 = yes, -1 = system default |
| 87 | 87 | */ |
| 88 | - public static function custom_strtotime( $_string, $_format='', $_is_dst = -1) { |
|
| 89 | - if ( empty( $_format ) ) return strtotime( $_string ); |
|
| 90 | - $fparams = explode( ',', chunk_split( $_format, 1, ',' ) ); |
|
| 88 | + public static function custom_strtotime($_string, $_format = '', $_is_dst = -1) { |
|
| 89 | + if (empty($_format)) return strtotime($_string); |
|
| 90 | + $fparams = explode(',', chunk_split($_format, 1, ',')); |
|
| 91 | 91 | $spos = 0; |
| 92 | - foreach ( $fparams as $fparam ) { |
|
| 93 | - |
|
| 94 | - switch ( $fparam ) { |
|
| 95 | - case 'd': (int)$day = substr( $_string, $spos, 2 ); $spos += 2; break; |
|
| 96 | - case 'm': (int)$mon = substr( $_string, $spos, 2 ); $spos += 2; break; |
|
| 97 | - case 'y': (int)$year = substr( $_string, $spos, 2 ); $spos += 2; break; |
|
| 98 | - case 'Y': (int)$year = substr( $_string, $spos, 4 ); $spos += 4; break; |
|
| 99 | - case 'H': (int)$hour = substr( $_string, $spos, 2 ); $spos += 2; break; |
|
| 100 | - case 'h': (int)$hour = substr( $_string, $spos, 2 ); $spos += 2; break; |
|
| 101 | - case 'i': (int)$min = substr( $_string, $spos, 2 ); $spos += 2; break; |
|
| 102 | - case 's': (int)$sec = substr( $_string, $spos, 2 ); $spos += 2; break; |
|
| 103 | - case 'O': (int)$offset = $year = substr( $_string, $spos, 5 ); $spos += 5; break; |
|
| 92 | + foreach ($fparams as $fparam) { |
|
| 93 | + |
|
| 94 | + switch ($fparam) { |
|
| 95 | + case 'd': (int)$day = substr($_string, $spos, 2); $spos += 2; break; |
|
| 96 | + case 'm': (int)$mon = substr($_string, $spos, 2); $spos += 2; break; |
|
| 97 | + case 'y': (int)$year = substr($_string, $spos, 2); $spos += 2; break; |
|
| 98 | + case 'Y': (int)$year = substr($_string, $spos, 4); $spos += 4; break; |
|
| 99 | + case 'H': (int)$hour = substr($_string, $spos, 2); $spos += 2; break; |
|
| 100 | + case 'h': (int)$hour = substr($_string, $spos, 2); $spos += 2; break; |
|
| 101 | + case 'i': (int)$min = substr($_string, $spos, 2); $spos += 2; break; |
|
| 102 | + case 's': (int)$sec = substr($_string, $spos, 2); $spos += 2; break; |
|
| 103 | + case 'O': (int)$offset = $year = substr($_string, $spos, 5); $spos += 5; break; |
|
| 104 | 104 | case 'a': (int)$hour = $fparam == 'am' ? $hour : $hour + 12; break; |
| 105 | 105 | case 'A': (int)$hour = $fparam == 'AM' ? $hour : $hour + 12; break; |
| 106 | 106 | default: $spos++; // seperator |
@@ -111,11 +111,11 @@ discard block |
||
| 111 | 111 | $timestamp = mktime($hour, $min, $sec, $mon, $day, $year, $_is_dst); |
| 112 | 112 | |
| 113 | 113 | // offset given? |
| 114 | - if ( isset( $offset ) && strlen( $offset == 5 ) ) { |
|
| 114 | + if (isset($offset) && strlen($offset == 5)) { |
|
| 115 | 115 | $operator = $offset{0}; |
| 116 | - $ohour = 60 * 60 * (int)substr( $offset, 1, 2 ); |
|
| 117 | - $omin = 60 * (int)substr( $offset, 3, 2 ); |
|
| 118 | - if ( $operator == '+' ) $timestamp += $ohour + $omin; |
|
| 116 | + $ohour = 60 * 60 * (int)substr($offset, 1, 2); |
|
| 117 | + $omin = 60 * (int)substr($offset, 3, 2); |
|
| 118 | + if ($operator == '+') $timestamp += $ohour + $omin; |
|
| 119 | 119 | else $timestamp -= $ohour + $omin; |
| 120 | 120 | } |
| 121 | 121 | return $timestamp; |
@@ -126,11 +126,11 @@ discard block |
||
| 126 | 126 | * @param mixed $_account_lid comma seperated list or array with lids |
| 127 | 127 | * @return mixed comma seperated list or array with ids |
| 128 | 128 | */ |
| 129 | - public static function account_name2id( &$_account_lids ) { |
|
| 130 | - $account_lids = is_array( $_account_lids ) ? $_account_lids : explode( ',', $_account_lids ); |
|
| 129 | + public static function account_name2id(&$_account_lids) { |
|
| 130 | + $account_lids = is_array($_account_lids) ? $_account_lids : explode(',', $_account_lids); |
|
| 131 | 131 | $skip = false; |
| 132 | - foreach ( $account_lids as $key => $account_lid ) { |
|
| 133 | - if($skip) { |
|
| 132 | + foreach ($account_lids as $key => $account_lid) { |
|
| 133 | + if ($skip) { |
|
| 134 | 134 | unset($account_lids[$key]); |
| 135 | 135 | $skip = false; |
| 136 | 136 | continue; |
@@ -138,15 +138,15 @@ discard block |
||
| 138 | 138 | $account_lid = trim($account_lid); |
| 139 | 139 | |
| 140 | 140 | // Handle any IDs that slip in |
| 141 | - if(is_numeric($account_lid) && $GLOBALS['egw']->accounts->id2name($account_lid)) { |
|
| 141 | + if (is_numeric($account_lid) && $GLOBALS['egw']->accounts->id2name($account_lid)) { |
|
| 142 | 142 | unset($account_lids[$key]); |
| 143 | 143 | $account_ids[] = (int)$account_lid; |
| 144 | 144 | continue; |
| 145 | 145 | } |
| 146 | 146 | // Check for [username] |
| 147 | - if(strpos($account_lid,'[') !== false) |
|
| 147 | + if (strpos($account_lid, '[') !== false) |
|
| 148 | 148 | { |
| 149 | - if(preg_match('/\[(.+)\]/',$account_lid,$matches)) |
|
| 149 | + if (preg_match('/\[(.+)\]/', $account_lid, $matches)) |
|
| 150 | 150 | { |
| 151 | 151 | $account_id = $GLOBALS['egw']->accounts->name2id($matches[1]); |
| 152 | 152 | unset($account_lids[$key]); |
@@ -157,59 +157,59 @@ discard block |
||
| 157 | 157 | |
| 158 | 158 | // Handle users listed as Lastname, Firstname instead of login ID |
| 159 | 159 | // Do this first, in case their first name matches a username |
| 160 | - if ( $account_lids[$key+1][0] == ' ') |
|
| 160 | + if ($account_lids[$key + 1][0] == ' ') |
|
| 161 | 161 | { |
| 162 | 162 | $query = array('type' => 'accounts', 'query_type' => 'exact'); |
| 163 | - $given = $GLOBALS['egw']->accounts->search($query + array('query' => trim($account_lids[$key+1]))); |
|
| 163 | + $given = $GLOBALS['egw']->accounts->search($query + array('query' => trim($account_lids[$key + 1]))); |
|
| 164 | 164 | $family = $GLOBALS['egw']->accounts->search($query + array('query' => trim($account_lid))); |
| 165 | 165 | $ids = array_intersect_key($family, $given); |
| 166 | - if($ids) |
|
| 166 | + if ($ids) |
|
| 167 | 167 | { |
| 168 | 168 | $account_ids[] = key($ids); |
| 169 | 169 | unset($account_lids[$key]); |
| 170 | 170 | $skip = true; // Skip the next one, it's the first name |
| 171 | - continue ; |
|
| 171 | + continue; |
|
| 172 | 172 | } |
| 173 | 173 | } |
| 174 | 174 | |
| 175 | 175 | // Deal with groups listed as <name> Group, remove the Group |
| 176 | - if(substr(trim($account_lid),-strlen(lang('Group'))) == lang('Group')) |
|
| 176 | + if (substr(trim($account_lid), -strlen(lang('Group'))) == lang('Group')) |
|
| 177 | 177 | { |
| 178 | 178 | $account_lid = trim(substr(trim($account_lid), 0, -strlen(lang('Group')))); |
| 179 | 179 | } |
| 180 | 180 | // Group <name> (no comma) |
| 181 | - else if(strpos($account_lid, lang('Group')) === 0) |
|
| 181 | + else if (strpos($account_lid, lang('Group')) === 0) |
|
| 182 | 182 | { |
| 183 | 183 | $account_lid = trim(substr(trim($account_lid), strlen(lang('Group')))); |
| 184 | 184 | } |
| 185 | 185 | |
| 186 | - if ( $account_id = $GLOBALS['egw']->accounts->name2id( $account_lid )) { |
|
| 186 | + if ($account_id = $GLOBALS['egw']->accounts->name2id($account_lid)) { |
|
| 187 | 187 | $account_ids[] = $account_id; |
| 188 | 188 | unset($account_lids[$key]); |
| 189 | 189 | continue; |
| 190 | 190 | } |
| 191 | - if ( $account_id = $GLOBALS['egw']->accounts->name2id( trim($account_lid), 'account_fullname' )) { |
|
| 191 | + if ($account_id = $GLOBALS['egw']->accounts->name2id(trim($account_lid), 'account_fullname')) { |
|
| 192 | 192 | $account_ids[] = $account_id; |
| 193 | 193 | unset($account_lids[$key]); |
| 194 | 194 | continue; |
| 195 | 195 | } |
| 196 | 196 | |
| 197 | 197 | // Handle groups listed as Group, <name> |
| 198 | - if ( $account_lids[$key][0] == ' ' && $account_id = $GLOBALS['egw']->accounts->name2id( $account_lid)) { |
|
| 198 | + if ($account_lids[$key][0] == ' ' && $account_id = $GLOBALS['egw']->accounts->name2id($account_lid)) { |
|
| 199 | 199 | $account_ids[] = $account_id; |
| 200 | - unset($account_lids[$key-1]); |
|
| 200 | + unset($account_lids[$key - 1]); |
|
| 201 | 201 | unset($account_lids[$key]); |
| 202 | 202 | continue; |
| 203 | 203 | } |
| 204 | 204 | // Group, <name> - remove the Group part |
| 205 | - if($account_lid == lang('Group')) |
|
| 205 | + if ($account_lid == lang('Group')) |
|
| 206 | 206 | { |
| 207 | 207 | unset($account_lids[$key]); |
| 208 | 208 | continue; |
| 209 | 209 | } |
| 210 | 210 | } |
| 211 | - $_account_lids = (is_array($_account_lids) ? $account_lids : implode(',',array_unique($account_lids))); |
|
| 212 | - return is_array( $_account_lids ) ? array_unique($account_ids) : implode( ',', array_unique((array)$account_ids )); |
|
| 211 | + $_account_lids = (is_array($_account_lids) ? $account_lids : implode(',', array_unique($account_lids))); |
|
| 212 | + return is_array($_account_lids) ? array_unique($account_ids) : implode(',', array_unique((array)$account_ids)); |
|
| 213 | 213 | |
| 214 | 214 | } // end of member function account_lid2id |
| 215 | 215 | |
@@ -219,14 +219,14 @@ discard block |
||
| 219 | 219 | * @param mixed $_account_ids comma seperated list or array with ids |
| 220 | 220 | * @return mixed comma seperated list or array with lids |
| 221 | 221 | */ |
| 222 | - public static function account_id2name( $_account_id ) { |
|
| 223 | - $account_ids = is_array( $_account_id ) ? $_account_id : explode( ',', $_account_id ); |
|
| 224 | - foreach ( $account_ids as $account_id ) { |
|
| 225 | - if ( $account_lid = $GLOBALS['egw']->accounts->id2name( $account_id )) { |
|
| 222 | + public static function account_id2name($_account_id) { |
|
| 223 | + $account_ids = is_array($_account_id) ? $_account_id : explode(',', $_account_id); |
|
| 224 | + foreach ($account_ids as $account_id) { |
|
| 225 | + if ($account_lid = $GLOBALS['egw']->accounts->id2name($account_id)) { |
|
| 226 | 226 | $account_lids[] = $account_lid; |
| 227 | 227 | } |
| 228 | 228 | } |
| 229 | - return is_array( $_account_id ) ? $account_lids : implode( ',', (array)$account_lids ); |
|
| 229 | + return is_array($_account_id) ? $account_lids : implode(',', (array)$account_lids); |
|
| 230 | 230 | } // end of member function account_id2lid |
| 231 | 231 | |
| 232 | 232 | /** |
@@ -235,12 +235,12 @@ discard block |
||
| 235 | 235 | * @param mixed _cat_ids comma seperated list or array |
| 236 | 236 | * @return mixed comma seperated list or array with cat_names |
| 237 | 237 | */ |
| 238 | - public static function cat_id2name( $_cat_ids ) { |
|
| 239 | - $cat_ids = is_array( $_cat_ids ) ? $_cat_ids : explode( ',', $_cat_ids ); |
|
| 240 | - foreach ( $cat_ids as $cat_id ) { |
|
| 241 | - $cat_names[] = Api\Categories::id2name( (int)$cat_id ); |
|
| 238 | + public static function cat_id2name($_cat_ids) { |
|
| 239 | + $cat_ids = is_array($_cat_ids) ? $_cat_ids : explode(',', $_cat_ids); |
|
| 240 | + foreach ($cat_ids as $cat_id) { |
|
| 241 | + $cat_names[] = Api\Categories::id2name((int)$cat_id); |
|
| 242 | 242 | } |
| 243 | - return is_array( $_cat_ids ) ? $cat_names : implode(',',(array)$cat_names); |
|
| 243 | + return is_array($_cat_ids) ? $cat_names : implode(',', (array)$cat_names); |
|
| 244 | 244 | } // end of member function category_id2name |
| 245 | 245 | |
| 246 | 246 | /** |
@@ -251,24 +251,24 @@ discard block |
||
| 251 | 251 | * @param int $parent Optional parent ID to use for new categories |
| 252 | 252 | * @return mixed comma seperated list or array with cat_ids |
| 253 | 253 | */ |
| 254 | - public static function cat_name2id( $_cat_names, $parent = 0 ) { |
|
| 255 | - $cats = new Api\Categories(); // uses current user and app (egw_info[flags][currentapp]) |
|
| 254 | + public static function cat_name2id($_cat_names, $parent = 0) { |
|
| 255 | + $cats = new Api\Categories(); // uses current user and app (egw_info[flags][currentapp]) |
|
| 256 | 256 | |
| 257 | - $cat_names = is_array( $_cat_names ) ? $_cat_names : explode( ',', $_cat_names ); |
|
| 258 | - foreach ( $cat_names as $cat_name ) { |
|
| 257 | + $cat_names = is_array($_cat_names) ? $_cat_names : explode(',', $_cat_names); |
|
| 258 | + foreach ($cat_names as $cat_name) { |
|
| 259 | 259 | $cat_name = trim($cat_name); |
| 260 | - if ( $cat_name == '' ) continue; |
|
| 261 | - if ( ( $cat_id = $cats->name2id( $cat_name ) ) == 0 && !self::$dry_run) { |
|
| 262 | - $cat_id = $cats->add( array( |
|
| 260 | + if ($cat_name == '') continue; |
|
| 261 | + if (($cat_id = $cats->name2id($cat_name)) == 0 && !self::$dry_run) { |
|
| 262 | + $cat_id = $cats->add(array( |
|
| 263 | 263 | 'name' => $cat_name, |
| 264 | 264 | 'parent' => $parent, |
| 265 | 265 | 'access' => 'public', |
| 266 | - 'descr' => $cat_name. ' ('. lang('Automatically created by importexport'). ')' |
|
| 266 | + 'descr' => $cat_name.' ('.lang('Automatically created by importexport').')' |
|
| 267 | 267 | )); |
| 268 | 268 | } |
| 269 | 269 | $cat_ids[] = $cat_id; |
| 270 | 270 | } |
| 271 | - return is_array( $_cat_names ) ? $cat_ids : implode( ',', (array)$cat_ids ); |
|
| 271 | + return is_array($_cat_names) ? $cat_ids : implode(',', (array)$cat_ids); |
|
| 272 | 272 | |
| 273 | 273 | } // end of member function category_name2id |
| 274 | 274 | |
@@ -307,76 +307,76 @@ discard block |
||
| 307 | 307 | * @param object &$cclass calling class to process the '@ evals' |
| 308 | 308 | * @return bool |
| 309 | 309 | */ |
| 310 | - public static function conversion( &$_record, $_conversion, &$_cclass = null ) { |
|
| 311 | - if (empty( $_conversion ) ) return $_record; |
|
| 310 | + public static function conversion(&$_record, $_conversion, &$_cclass = null) { |
|
| 311 | + if (empty($_conversion)) return $_record; |
|
| 312 | 312 | |
| 313 | - self::$cclass =& $_cclass; |
|
| 313 | + self::$cclass = & $_cclass; |
|
| 314 | 314 | |
| 315 | 315 | $PSep = '||'; // Pattern-Separator, separats the pattern-replacement-pairs in conversion |
| 316 | 316 | $ASep = '|>'; // Assignment-Separator, separats pattern and replacesment |
| 317 | - $CPre = '|['; $CPos = ']'; // |[_record-idx] is expanded to the corespondig value |
|
| 317 | + $CPre = '|['; $CPos = ']'; // |[_record-idx] is expanded to the corespondig value |
|
| 318 | 318 | $TPre = '|T{'; $TPos = '}'; // |{_record-idx} is trimmed |
| 319 | - $CntlPre = '|TC{'; // Filter all cntl-chars \x01-\x1f and trim |
|
| 320 | - $CntlnCLPre = '|TCnCL{'; // Like |C{ but allowes CR and LF |
|
| 321 | - $INE = '|INE{'; // Only insert if stuff in ^^ is not empty |
|
| 319 | + $CntlPre = '|TC{'; // Filter all cntl-chars \x01-\x1f and trim |
|
| 320 | + $CntlnCLPre = '|TCnCL{'; // Like |C{ but allowes CR and LF |
|
| 321 | + $INE = '|INE{'; // Only insert if stuff in ^^ is not empty |
|
| 322 | 322 | |
| 323 | - foreach ( $_conversion as $idx => $conversion_string ) { |
|
| 324 | - if ( empty( $conversion_string ) ) continue; |
|
| 323 | + foreach ($_conversion as $idx => $conversion_string) { |
|
| 324 | + if (empty($conversion_string)) continue; |
|
| 325 | 325 | |
| 326 | 326 | // fetch patterns ($rvalues) |
| 327 | 327 | $rvalues = array(); |
| 328 | - $pat_reps = explode( $PSep, stripslashes( $conversion_string ) ); |
|
| 329 | - foreach( $pat_reps as $k => $pat_rep ) { |
|
| 330 | - list( $pattern, $replace ) = explode( $ASep, $pat_rep, 2 ); |
|
| 331 | - if( $replace == '' ) { |
|
| 328 | + $pat_reps = explode($PSep, stripslashes($conversion_string)); |
|
| 329 | + foreach ($pat_reps as $k => $pat_rep) { |
|
| 330 | + list($pattern, $replace) = explode($ASep, $pat_rep, 2); |
|
| 331 | + if ($replace == '') { |
|
| 332 | 332 | $replace = $pattern; $pattern = '^.*$'; |
| 333 | 333 | } |
| 334 | - $rvalues[$pattern] = $replace; // replace two with only one, added by the form |
|
| 334 | + $rvalues[$pattern] = $replace; // replace two with only one, added by the form |
|
| 335 | 335 | } |
| 336 | 336 | |
| 337 | 337 | // conversion list may be longer than $_record aka (no_csv) |
| 338 | - $val = array_key_exists( $idx, $_record ) ? $_record[$idx] : ''; |
|
| 338 | + $val = array_key_exists($idx, $_record) ? $_record[$idx] : ''; |
|
| 339 | 339 | |
| 340 | 340 | $c_functions = array('cat', 'account', 'strtotime', 'list'); |
| 341 | - if($_cclass) { |
|
| 341 | + if ($_cclass) { |
|
| 342 | 342 | // Add in additional methods |
| 343 | 343 | $reflection = new ReflectionClass(get_class($_cclass)); |
| 344 | 344 | $methods = $reflection->getMethods(ReflectionMethod::IS_STATIC); |
| 345 | - foreach($methods as $method) { |
|
| 345 | + foreach ($methods as $method) { |
|
| 346 | 346 | $c_functions[] = $method->name; |
| 347 | 347 | } |
| 348 | 348 | } |
| 349 | 349 | $c_functions = implode('|', $c_functions); |
| 350 | - foreach ( $rvalues as $pattern => $replace ) { |
|
| 350 | + foreach ($rvalues as $pattern => $replace) { |
|
| 351 | 351 | // Allow to include record indexes in pattern |
| 352 | 352 | $reg = '/\|\[([0-9]+)\]/'; |
| 353 | - while( preg_match( $reg, $pattern, $vars ) ) { |
|
| 353 | + while (preg_match($reg, $pattern, $vars)) { |
|
| 354 | 354 | // expand all _record fields |
| 355 | 355 | $pattern = str_replace( |
| 356 | - $CPre . $vars[1] . $CPos, |
|
| 356 | + $CPre.$vars[1].$CPos, |
|
| 357 | 357 | $_record[array_search($vars[1], array_keys($_record))], |
| 358 | 358 | $pattern |
| 359 | 359 | ); |
| 360 | 360 | } |
| 361 | - if( preg_match('/'. (string)$pattern.'/', $val) ) { |
|
| 361 | + if (preg_match('/'.(string)$pattern.'/', $val)) { |
|
| 362 | 362 | |
| 363 | - $val = preg_replace( '/'.(string)$pattern.'/', $replace, (string)$val ); |
|
| 363 | + $val = preg_replace('/'.(string)$pattern.'/', $replace, (string)$val); |
|
| 364 | 364 | |
| 365 | 365 | $reg = '/\|\[([a-zA-Z_0-9]+)\]/'; |
| 366 | - while( preg_match( $reg, $val, $vars ) ) { |
|
| 366 | + while (preg_match($reg, $val, $vars)) { |
|
| 367 | 367 | // expand all _record fields |
| 368 | 368 | $val = str_replace( |
| 369 | - $CPre . $vars[1] . $CPos, |
|
| 369 | + $CPre.$vars[1].$CPos, |
|
| 370 | 370 | $_record[array_search($vars[1], array_keys($_record))], |
| 371 | 371 | $val |
| 372 | 372 | ); |
| 373 | 373 | } |
| 374 | - $val = preg_replace_callback( "/($c_functions)\(([^)]*)\)/i", array( self, 'c2_dispatcher') , $val ); |
|
| 374 | + $val = preg_replace_callback("/($c_functions)\(([^)]*)\)/i", array(self, 'c2_dispatcher'), $val); |
|
| 375 | 375 | break; |
| 376 | 376 | } |
| 377 | 377 | } |
| 378 | 378 | // clean each field |
| 379 | - $val = preg_replace_callback("/(\|T\{|\|TC\{|\|TCnCL\{|\|INE\{)(.*)\}/", array( self, 'strclean'), $val ); |
|
| 379 | + $val = preg_replace_callback("/(\|T\{|\|TC\{|\|TCnCL\{|\|INE\{)(.*)\}/", array(self, 'strclean'), $val); |
|
| 380 | 380 | |
| 381 | 381 | $_record[$idx] = $val; |
| 382 | 382 | } |
@@ -390,42 +390,42 @@ discard block |
||
| 390 | 390 | * |
| 391 | 391 | * @param array $_matches |
| 392 | 392 | */ |
| 393 | - private static function c2_dispatcher( $_matches ) { |
|
| 393 | + private static function c2_dispatcher($_matches) { |
|
| 394 | 394 | $action = &$_matches[1]; // cat or account ... |
| 395 | - $data = &$_matches[2]; // datas for action |
|
| 395 | + $data = &$_matches[2]; // datas for action |
|
| 396 | 396 | |
| 397 | - switch ( $action ) { |
|
| 397 | + switch ($action) { |
|
| 398 | 398 | case 'strtotime' : |
| 399 | - list( $string, $format ) = explode( ',', $data ); |
|
| 400 | - return self::custom_strtotime( trim( $string ), trim( $format ) ); |
|
| 399 | + list($string, $format) = explode(',', $data); |
|
| 400 | + return self::custom_strtotime(trim($string), trim($format)); |
|
| 401 | 401 | case 'list': |
| 402 | - list( $split, $data, $index) = explode(',',$data); |
|
| 402 | + list($split, $data, $index) = explode(',', $data); |
|
| 403 | 403 | $exploded = explode($split, $data); |
| 404 | 404 | // 1 based indexing for user ease |
| 405 | 405 | return $exploded[$index - 1]; |
| 406 | 406 | default : |
| 407 | - if(self::$cclass && method_exists(self::$cclass, $action)) { |
|
| 407 | + if (self::$cclass && method_exists(self::$cclass, $action)) { |
|
| 408 | 408 | $class = get_class(self::$cclass); |
| 409 | 409 | return call_user_func("$class::$action", $data); |
| 410 | 410 | } |
| 411 | - $method = (string)$action. ( is_int( $data ) ? '_id2name' : '_name2id' ); |
|
| 412 | - if(self::$cclass && method_exists(self::$cclass, $method)) { |
|
| 411 | + $method = (string)$action.(is_int($data) ? '_id2name' : '_name2id'); |
|
| 412 | + if (self::$cclass && method_exists(self::$cclass, $method)) { |
|
| 413 | 413 | $class = get_class(self::$cclass); |
| 414 | 414 | return call_user_func("$class::$action", $data); |
| 415 | 415 | } else { |
| 416 | - return self::$method( $data ); |
|
| 416 | + return self::$method($data); |
|
| 417 | 417 | } |
| 418 | 418 | } |
| 419 | 419 | } |
| 420 | 420 | |
| 421 | - private static function strclean( $_matches ) { |
|
| 422 | - switch( $_matches[1] ) { |
|
| 423 | - case '|T{' : return trim( $_matches[2] ); |
|
| 424 | - case '|TC{' : return trim( preg_replace( '/[\x01-\x1F]+/', '', $_matches[2] ) ); |
|
| 425 | - case '|TCnCL{' : return trim( preg_replace( '/[\x01-\x09\x11\x12\x14-\x1F]+/', '', $_matches[2] ) ); |
|
| 426 | - case '|INE{' : return preg_match( '/\^.+\^/', $_matches[2] ) ? $_matches[2] : ''; |
|
| 421 | + private static function strclean($_matches) { |
|
| 422 | + switch ($_matches[1]) { |
|
| 423 | + case '|T{' : return trim($_matches[2]); |
|
| 424 | + case '|TC{' : return trim(preg_replace('/[\x01-\x1F]+/', '', $_matches[2])); |
|
| 425 | + case '|TCnCL{' : return trim(preg_replace('/[\x01-\x09\x11\x12\x14-\x1F]+/', '', $_matches[2])); |
|
| 426 | + case '|INE{' : return preg_match('/\^.+\^/', $_matches[2]) ? $_matches[2] : ''; |
|
| 427 | 427 | default: |
| 428 | - throw new Exception('Error in conversion string! "'. substr( $_matches[1], 0, -1 ). '" is not valid!'); |
|
| 428 | + throw new Exception('Error in conversion string! "'.substr($_matches[1], 0, -1).'" is not valid!'); |
|
| 429 | 429 | } |
| 430 | 430 | } |
| 431 | 431 | |
@@ -436,23 +436,23 @@ discard block |
||
| 436 | 436 | * @param string $_appname {<appname> | all} |
| 437 | 437 | * @return array(<appname> => array( <type> => array(<plugin> => <title>))) |
| 438 | 438 | */ |
| 439 | - public static function get_plugins( $_appname = 'all', $_type = 'all' ) { |
|
| 439 | + public static function get_plugins($_appname = 'all', $_type = 'all') { |
|
| 440 | 440 | $plugins = Api\Cache::getTree( |
| 441 | 441 | __CLASS__, |
| 442 | 442 | 'plugins', |
| 443 | - array('importexport_helper_functions','_get_plugins'), |
|
| 443 | + array('importexport_helper_functions', '_get_plugins'), |
|
| 444 | 444 | array(array_keys($GLOBALS['egw_info']['apps']), array('import', 'export')), |
| 445 | 445 | self::CACHE_EXPIRATION |
| 446 | 446 | ); |
| 447 | 447 | $appnames = $_appname == 'all' ? array_keys($GLOBALS['egw_info']['apps']) : (array)$_appname; |
| 448 | - $types = $_type == 'all' ? array('import','export') : (array)$_type; |
|
| 448 | + $types = $_type == 'all' ? array('import', 'export') : (array)$_type; |
|
| 449 | 449 | |
| 450 | 450 | // Testing: comment out Api\Cache call, use this |
| 451 | 451 | //$plugins = self::_get_plugins($appnames, $types); |
| 452 | - foreach($plugins as $appname => $_types) { |
|
| 453 | - if(!in_array($appname, $appnames)) unset($plugins[$appname]); |
|
| 452 | + foreach ($plugins as $appname => $_types) { |
|
| 453 | + if (!in_array($appname, $appnames)) unset($plugins[$appname]); |
|
| 454 | 454 | } |
| 455 | - foreach($plugins as $appname => $types) { |
|
| 455 | + foreach ($plugins as $appname => $types) { |
|
| 456 | 456 | $plugins[$appname] = array_intersect_key($plugins[$appname], $types); |
| 457 | 457 | } |
| 458 | 458 | return $plugins; |
@@ -461,25 +461,25 @@ discard block |
||
| 461 | 461 | public static function _get_plugins(Array $appnames, Array $types) { |
| 462 | 462 | $plugins = array(); |
| 463 | 463 | foreach ($appnames as $appname) { |
| 464 | - if(array_key_exists($appname, self::$blacklist_files) && self::$blacklist_files[$appname] === true) continue; |
|
| 464 | + if (array_key_exists($appname, self::$blacklist_files) && self::$blacklist_files[$appname] === true) continue; |
|
| 465 | 465 | |
| 466 | - $appdir = EGW_INCLUDE_ROOT. "/$appname/inc"; |
|
| 467 | - if(!is_dir($appdir)) continue; |
|
| 466 | + $appdir = EGW_INCLUDE_ROOT."/$appname/inc"; |
|
| 467 | + if (!is_dir($appdir)) continue; |
|
| 468 | 468 | $d = dir($appdir); |
| 469 | 469 | |
| 470 | 470 | // step through each file in appdir |
| 471 | 471 | while (false !== ($entry = $d->read())) { |
| 472 | 472 | // Blacklisted? |
| 473 | - if(is_array(self::$blacklist_files[$appname]) && in_array($entry, self::$blacklist_files[$appname])) continue; |
|
| 473 | + if (is_array(self::$blacklist_files[$appname]) && in_array($entry, self::$blacklist_files[$appname])) continue; |
|
| 474 | 474 | if (!preg_match('/^class\.([^.]+)\.inc\.php$/', $entry, $matches)) continue; |
| 475 | 475 | $classname = $matches[1]; |
| 476 | - $file = $appdir. '/'. $entry; |
|
| 476 | + $file = $appdir.'/'.$entry; |
|
| 477 | 477 | |
| 478 | 478 | foreach ($types as $type) { |
| 479 | - if( !is_file($file) || strpos($entry, $type) === false || strpos($entry,'wizard') !== false) continue; |
|
| 479 | + if (!is_file($file) || strpos($entry, $type) === false || strpos($entry, 'wizard') !== false) continue; |
|
| 480 | 480 | require_once($file); |
| 481 | 481 | $reflectionClass = new ReflectionClass($classname); |
| 482 | - if($reflectionClass->IsInstantiable() && |
|
| 482 | + if ($reflectionClass->IsInstantiable() && |
|
| 483 | 483 | $reflectionClass->implementsInterface('importexport_iface_'.$type.'_plugin')) { |
| 484 | 484 | try { |
| 485 | 485 | $plugin_object = new $classname; |
@@ -495,7 +495,7 @@ discard block |
||
| 495 | 495 | $d->close(); |
| 496 | 496 | |
| 497 | 497 | $config = Api\Config::read('importexport'); |
| 498 | - if($config['update'] == 'auto') { |
|
| 498 | + if ($config['update'] == 'auto') { |
|
| 499 | 499 | self::load_defaults($appname); |
| 500 | 500 | } |
| 501 | 501 | } |
@@ -510,37 +510,37 @@ discard block |
||
| 510 | 510 | * @return array $num => $appname |
| 511 | 511 | */ |
| 512 | 512 | public static function get_apps($_type, $ignore_acl = false) { |
| 513 | - $apps = array_keys(self::get_plugins('all',$_type)); |
|
| 514 | - if($ignore_acl) return $apps; |
|
| 513 | + $apps = array_keys(self::get_plugins('all', $_type)); |
|
| 514 | + if ($ignore_acl) return $apps; |
|
| 515 | 515 | |
| 516 | - foreach($apps as $key => $app) { |
|
| 517 | - if(!self::has_definitions($app, $_type)) unset($apps[$key]); |
|
| 516 | + foreach ($apps as $key => $app) { |
|
| 517 | + if (!self::has_definitions($app, $_type)) unset($apps[$key]); |
|
| 518 | 518 | } |
| 519 | 519 | return $apps; |
| 520 | 520 | } |
| 521 | 521 | |
| 522 | 522 | public static function load_defaults($appname) { |
| 523 | 523 | // Check for new definitions to import from $appname/setup/*.xml |
| 524 | - $appdir = EGW_INCLUDE_ROOT. "/$appname/setup"; |
|
| 525 | - if(!is_dir($appdir)) return; |
|
| 524 | + $appdir = EGW_INCLUDE_ROOT."/$appname/setup"; |
|
| 525 | + if (!is_dir($appdir)) return; |
|
| 526 | 526 | $d = dir($appdir); |
| 527 | 527 | |
| 528 | 528 | // step through each file in app's setup |
| 529 | 529 | while (false !== ($entry = $d->read())) { |
| 530 | - $file = $appdir. '/'. $entry; |
|
| 531 | - list( $filename, $extension) = explode('.',$entry); |
|
| 532 | - if ( $extension != 'xml' ) continue; |
|
| 530 | + $file = $appdir.'/'.$entry; |
|
| 531 | + list($filename, $extension) = explode('.', $entry); |
|
| 532 | + if ($extension != 'xml') continue; |
|
| 533 | 533 | try { |
| 534 | 534 | // import will skip invalid files |
| 535 | - importexport_definitions_bo::import( $file ); |
|
| 535 | + importexport_definitions_bo::import($file); |
|
| 536 | 536 | } catch (Exception $e) { |
| 537 | - error_log(__CLASS__.__FUNCTION__. " import $appname definitions: " . $e->getMessage()); |
|
| 537 | + error_log(__CLASS__.__FUNCTION__." import $appname definitions: ".$e->getMessage()); |
|
| 538 | 538 | } |
| 539 | 539 | } |
| 540 | 540 | $d->close(); |
| 541 | 541 | } |
| 542 | 542 | |
| 543 | - public static function guess_filetype( $_file ) { |
|
| 543 | + public static function guess_filetype($_file) { |
|
| 544 | 544 | |
| 545 | 545 | } |
| 546 | 546 | |
@@ -551,24 +551,24 @@ discard block |
||
| 551 | 551 | * @param string $_type {import | export | all} |
| 552 | 552 | * @return boolean |
| 553 | 553 | */ |
| 554 | - public static function has_definitions( $_appname = 'all', $_type = 'all' ) { |
|
| 554 | + public static function has_definitions($_appname = 'all', $_type = 'all') { |
|
| 555 | 555 | $definitions = Api\Cache::getSession( |
| 556 | 556 | __CLASS__, |
| 557 | 557 | 'has_definitions', |
| 558 | - array('importexport_helper_functions','_has_definitions'), |
|
| 558 | + array('importexport_helper_functions', '_has_definitions'), |
|
| 559 | 559 | array(array_keys($GLOBALS['egw_info']['apps']), array('import', 'export')), |
| 560 | 560 | self::CACHE_EXPIRATION |
| 561 | 561 | ); |
| 562 | 562 | $appnames = $_appname == 'all' ? array_keys($GLOBALS['egw_info']['apps']) : (array)$_appname; |
| 563 | - $types = $_type == 'all' ? array('import','export') : (array)$_type; |
|
| 563 | + $types = $_type == 'all' ? array('import', 'export') : (array)$_type; |
|
| 564 | 564 | |
| 565 | 565 | // Testing: Comment out cache call above, use this |
| 566 | 566 | //$definitions = self::_has_definitions($appnames, $types); |
| 567 | 567 | |
| 568 | - foreach($definitions as $appname => $_types) { |
|
| 569 | - if(!in_array($appname, $appnames)) unset($definitions[$appname]); |
|
| 568 | + foreach ($definitions as $appname => $_types) { |
|
| 569 | + if (!in_array($appname, $appnames)) unset($definitions[$appname]); |
|
| 570 | 570 | } |
| 571 | - foreach($definitions as $appname => $_types) { |
|
| 571 | + foreach ($definitions as $appname => $_types) { |
|
| 572 | 572 | $definitions[$appname] = array_intersect_key($definitions[$appname], array_flip($types)); |
| 573 | 573 | } |
| 574 | 574 | return !empty($definitions[$appname]); |
@@ -578,11 +578,11 @@ discard block |
||
| 578 | 578 | public static function _has_definitions(Array $appnames, Array $types) { |
| 579 | 579 | $def = new importexport_definitions_bo(array('application'=>$appnames, 'type' => $types)); |
| 580 | 580 | $list = array(); |
| 581 | - foreach((array)$def->get_definitions() as $id) { |
|
| 581 | + foreach ((array)$def->get_definitions() as $id) { |
|
| 582 | 582 | // Need to instanciate it to check, but if the user doesn't have permission, it throws an exception |
| 583 | 583 | try { |
| 584 | 584 | $definition = new importexport_definition($id); |
| 585 | - if($def->is_permitted($definition->get_record_array())) { |
|
| 585 | + if ($def->is_permitted($definition->get_record_array())) { |
|
| 586 | 586 | $list[$definition->application][$definition->type][] = $id; |
| 587 | 587 | } |
| 588 | 588 | } catch (Exception $e) { |
@@ -614,13 +614,13 @@ discard block |
||
| 614 | 614 | $plugin = is_object($plugin_name) ? $plugin_name : new $plugin_name(); |
| 615 | 615 | $plugin_name = get_class($plugin); |
| 616 | 616 | |
| 617 | - if($record_classname == null) $record_classname = $plugin::get_egw_record_class(); |
|
| 618 | - if(!class_exists($record_classname)) throw new Exception('Bad class name ' . $record_classname); |
|
| 617 | + if ($record_classname == null) $record_classname = $plugin::get_egw_record_class(); |
|
| 618 | + if (!class_exists($record_classname)) throw new Exception('Bad class name '.$record_classname); |
|
| 619 | 619 | |
| 620 | - if(!$wizard_plugin) |
|
| 620 | + if (!$wizard_plugin) |
|
| 621 | 621 | { |
| 622 | - $wizard_name = $app_name . '_wizard_' . str_replace($app_name . '_', '', $plugin_name); |
|
| 623 | - if(!class_exists($wizard_name)) throw new Exception('Bad wizard name ' . $wizard_name); |
|
| 622 | + $wizard_name = $app_name.'_wizard_'.str_replace($app_name.'_', '', $plugin_name); |
|
| 623 | + if (!class_exists($wizard_name)) throw new Exception('Bad wizard name '.$wizard_name); |
|
| 624 | 624 | $wizard_plugin = new $wizard_name; |
| 625 | 625 | } |
| 626 | 626 | } |
@@ -632,16 +632,16 @@ discard block |
||
| 632 | 632 | |
| 633 | 633 | // Get field -> label map and initialize fields using wizard field order |
| 634 | 634 | $fields = $export_fields = array(); |
| 635 | - if(method_exists($wizard_plugin, 'get_export_fields')) |
|
| 635 | + if (method_exists($wizard_plugin, 'get_export_fields')) |
|
| 636 | 636 | { |
| 637 | 637 | $fields = $export_fields = $wizard_plugin->get_export_fields(); |
| 638 | 638 | } |
| 639 | 639 | |
| 640 | - foreach($record_classname::$types as $type => $type_fields) |
|
| 640 | + foreach ($record_classname::$types as $type => $type_fields) |
|
| 641 | 641 | { |
| 642 | 642 | // Only these for now, until filter methods for others are figured out |
| 643 | - if(!in_array($type, array('select','select-cat','select-account','date','date-time'))) continue; |
|
| 644 | - foreach($type_fields as $field_name) |
|
| 643 | + if (!in_array($type, array('select', 'select-cat', 'select-account', 'date', 'date-time'))) continue; |
|
| 644 | + foreach ($type_fields as $field_name) |
|
| 645 | 645 | { |
| 646 | 646 | $fields[$field_name] = array( |
| 647 | 647 | 'name' => $field_name, |
@@ -652,21 +652,21 @@ discard block |
||
| 652 | 652 | } |
| 653 | 653 | // Add custom fields |
| 654 | 654 | $custom = Api\Storage\Customfields::get($app_name); |
| 655 | - foreach($custom as $field_name => $settings) |
|
| 655 | + foreach ($custom as $field_name => $settings) |
|
| 656 | 656 | { |
| 657 | 657 | $settings['name'] = '#'.$field_name; |
| 658 | 658 | $fields['#'.$field_name] = $settings; |
| 659 | 659 | } |
| 660 | 660 | |
| 661 | - foreach($fields as $field_name => &$settings) { |
|
| 661 | + foreach ($fields as $field_name => &$settings) { |
|
| 662 | 662 | // Can't really filter on these (or at least no generic, sane way figured out yet) |
| 663 | - if(!is_array($settings) || in_array($settings['type'], array('text','button', 'label','url','url-email','url-phone','htmlarea'))) |
|
| 663 | + if (!is_array($settings) || in_array($settings['type'], array('text', 'button', 'label', 'url', 'url-email', 'url-phone', 'htmlarea'))) |
|
| 664 | 664 | { |
| 665 | 665 | unset($fields[$field_name]); |
| 666 | 666 | continue; |
| 667 | 667 | } |
| 668 | - if($settings['type'] == 'radio') $settings['type'] = 'select'; |
|
| 669 | - switch($settings['type']) |
|
| 668 | + if ($settings['type'] == 'radio') $settings['type'] = 'select'; |
|
| 669 | + switch ($settings['type']) |
|
| 670 | 670 | { |
| 671 | 671 | case 'checkbox': |
| 672 | 672 | // This isn't quite right - there's only 2 options and you can select both |
@@ -689,7 +689,7 @@ discard block |
||
| 689 | 689 | } |
| 690 | 690 | } |
| 691 | 691 | |
| 692 | - if(method_exists($plugin, 'get_filter_fields')) |
|
| 692 | + if (method_exists($plugin, 'get_filter_fields')) |
|
| 693 | 693 | { |
| 694 | 694 | $plugin->get_filter_fields($fields); |
| 695 | 695 | } |
@@ -705,65 +705,65 @@ discard block |
||
| 705 | 705 | */ |
| 706 | 706 | public static function date_rel2abs($value) |
| 707 | 707 | { |
| 708 | - if(is_array($value)) |
|
| 708 | + if (is_array($value)) |
|
| 709 | 709 | { |
| 710 | 710 | $abs = array(); |
| 711 | - foreach($value as $key => $val) |
|
| 711 | + foreach ($value as $key => $val) |
|
| 712 | 712 | { |
| 713 | 713 | $abs[$key] = self::date_rel2abs($val); |
| 714 | 714 | } |
| 715 | 715 | return $abs; |
| 716 | 716 | } |
| 717 | - if($date = self::$relative_dates[$value]) |
|
| 717 | + if ($date = self::$relative_dates[$value]) |
|
| 718 | 718 | { |
| 719 | - $year = (int) date('Y'); |
|
| 720 | - $month = (int) date('m'); |
|
| 721 | - $day = (int) date('d'); |
|
| 722 | - $today = mktime(0,0,0,date('m'),date('d'),date('Y')); |
|
| 719 | + $year = (int)date('Y'); |
|
| 720 | + $month = (int)date('m'); |
|
| 721 | + $day = (int)date('d'); |
|
| 722 | + $today = mktime(0, 0, 0, date('m'), date('d'), date('Y')); |
|
| 723 | 723 | |
| 724 | - list($syear,$smonth,$sday,$sweek,$eyear,$emonth,$eday,$eweek) = $date; |
|
| 724 | + list($syear, $smonth, $sday, $sweek, $eyear, $emonth, $eday, $eweek) = $date; |
|
| 725 | 725 | |
| 726 | - if(stripos($value, 'quarter') !== false) |
|
| 726 | + if (stripos($value, 'quarter') !== false) |
|
| 727 | 727 | { |
| 728 | 728 | // Handle quarters |
| 729 | - $start = mktime(0,0,0,((int)floor(($smonth+$month) / 3.1)) * 3 + 1, 1, $year); |
|
| 730 | - $end = mktime(0,0,0,((int)floor(($emonth+$month) / 3.1)+1) * 3 + 1, 1, $year); |
|
| 729 | + $start = mktime(0, 0, 0, ((int)floor(($smonth + $month) / 3.1)) * 3 + 1, 1, $year); |
|
| 730 | + $end = mktime(0, 0, 0, ((int)floor(($emonth + $month) / 3.1) + 1) * 3 + 1, 1, $year); |
|
| 731 | 731 | } |
| 732 | 732 | elseif ($syear || $eyear) |
| 733 | 733 | { |
| 734 | - $start = mktime(0,0,0,1,1,$syear+$year); |
|
| 735 | - $end = mktime(0,0,0,1,1,$eyear+$year); |
|
| 734 | + $start = mktime(0, 0, 0, 1, 1, $syear + $year); |
|
| 735 | + $end = mktime(0, 0, 0, 1, 1, $eyear + $year); |
|
| 736 | 736 | } |
| 737 | 737 | elseif ($smonth || $emonth) |
| 738 | 738 | { |
| 739 | - $start = mktime(0,0,0,$smonth+$month,1,$year); |
|
| 740 | - $end = mktime(0,0,0,$emonth+$month,1,$year); |
|
| 739 | + $start = mktime(0, 0, 0, $smonth + $month, 1, $year); |
|
| 740 | + $end = mktime(0, 0, 0, $emonth + $month, 1, $year); |
|
| 741 | 741 | } |
| 742 | 742 | elseif ($sday || $eday) |
| 743 | 743 | { |
| 744 | - $start = mktime(0,0,0,$month,$sday+$day,$year); |
|
| 745 | - $end = mktime(0,0,0,$month,$eday+$day,$year); |
|
| 744 | + $start = mktime(0, 0, 0, $month, $sday + $day, $year); |
|
| 745 | + $end = mktime(0, 0, 0, $month, $eday + $day, $year); |
|
| 746 | 746 | } |
| 747 | 747 | elseif ($sweek || $eweek) |
| 748 | 748 | { |
| 749 | - $wday = (int) date('w'); // 0=sun, ..., 6=sat |
|
| 750 | - switch($GLOBALS['egw_info']['user']['preferences']['calendar']['weekdaystarts']) |
|
| 749 | + $wday = (int)date('w'); // 0=sun, ..., 6=sat |
|
| 750 | + switch ($GLOBALS['egw_info']['user']['preferences']['calendar']['weekdaystarts']) |
|
| 751 | 751 | { |
| 752 | 752 | case 'Sunday': |
| 753 | - $weekstart = $today - $wday * 24*60*60; |
|
| 753 | + $weekstart = $today - $wday * 24 * 60 * 60; |
|
| 754 | 754 | break; |
| 755 | 755 | case 'Saturday': |
| 756 | - $weekstart = $today - (6-$wday) * 24*60*60; |
|
| 756 | + $weekstart = $today - (6 - $wday) * 24 * 60 * 60; |
|
| 757 | 757 | break; |
| 758 | 758 | case 'Moday': |
| 759 | 759 | default: |
| 760 | - $weekstart = $today - ($wday ? $wday-1 : 6) * 24*60*60; |
|
| 760 | + $weekstart = $today - ($wday ? $wday - 1 : 6) * 24 * 60 * 60; |
|
| 761 | 761 | break; |
| 762 | 762 | } |
| 763 | - $start = $weekstart + $sweek*7*24*60*60; |
|
| 764 | - $end = $weekstart + $eweek*7*24*60*60; |
|
| 763 | + $start = $weekstart + $sweek * 7 * 24 * 60 * 60; |
|
| 764 | + $end = $weekstart + $eweek * 7 * 24 * 60 * 60; |
|
| 765 | 765 | } |
| 766 | - $end_param = $end - 24*60*60; |
|
| 766 | + $end_param = $end - 24 * 60 * 60; |
|
| 767 | 767 | |
| 768 | 768 | // Take 1 second off end to provide an inclusive range.for filtering |
| 769 | 769 | $end -= 1; |
@@ -16,7 +16,8 @@ discard block |
||
| 16 | 16 | * class importexport_helper_functions (only static methods) |
| 17 | 17 | * use importexport_helper_functions::method |
| 18 | 18 | */ |
| 19 | -class importexport_helper_functions { |
|
| 19 | +class importexport_helper_functions |
|
| 20 | +{ |
|
| 20 | 21 | |
| 21 | 22 | /** |
| 22 | 23 | * Plugins are scanned and cached for all instances using this source path for given time (in seconds) |
@@ -85,13 +86,19 @@ discard block |
||
| 85 | 86 | * @param string $_format format of time string e.g.: d.m.Y H:i |
| 86 | 87 | * @param int $_is_dst is day light saving time? 0 = no, 1 = yes, -1 = system default |
| 87 | 88 | */ |
| 88 | - public static function custom_strtotime( $_string, $_format='', $_is_dst = -1) { |
|
| 89 | - if ( empty( $_format ) ) return strtotime( $_string ); |
|
| 89 | + public static function custom_strtotime( $_string, $_format='', $_is_dst = -1) |
|
| 90 | + { |
|
| 91 | + if ( empty( $_format ) ) |
|
| 92 | + { |
|
| 93 | + return strtotime( $_string ); |
|
| 94 | + } |
|
| 90 | 95 | $fparams = explode( ',', chunk_split( $_format, 1, ',' ) ); |
| 91 | 96 | $spos = 0; |
| 92 | - foreach ( $fparams as $fparam ) { |
|
| 97 | + foreach ( $fparams as $fparam ) |
|
| 98 | + { |
|
| 93 | 99 | |
| 94 | - switch ( $fparam ) { |
|
| 100 | + switch ( $fparam ) |
|
| 101 | + { |
|
| 95 | 102 | case 'd': (int)$day = substr( $_string, $spos, 2 ); $spos += 2; break; |
| 96 | 103 | case 'm': (int)$mon = substr( $_string, $spos, 2 ); $spos += 2; break; |
| 97 | 104 | case 'y': (int)$year = substr( $_string, $spos, 2 ); $spos += 2; break; |
@@ -111,12 +118,18 @@ discard block |
||
| 111 | 118 | $timestamp = mktime($hour, $min, $sec, $mon, $day, $year, $_is_dst); |
| 112 | 119 | |
| 113 | 120 | // offset given? |
| 114 | - if ( isset( $offset ) && strlen( $offset == 5 ) ) { |
|
| 121 | + if ( isset( $offset ) && strlen( $offset == 5 ) ) |
|
| 122 | + { |
|
| 115 | 123 | $operator = $offset{0}; |
| 116 | 124 | $ohour = 60 * 60 * (int)substr( $offset, 1, 2 ); |
| 117 | 125 | $omin = 60 * (int)substr( $offset, 3, 2 ); |
| 118 | - if ( $operator == '+' ) $timestamp += $ohour + $omin; |
|
| 119 | - else $timestamp -= $ohour + $omin; |
|
| 126 | + if ( $operator == '+' ) |
|
| 127 | + { |
|
| 128 | + $timestamp += $ohour + $omin; |
|
| 129 | + } |
|
| 130 | + else { |
|
| 131 | + $timestamp -= $ohour + $omin; |
|
| 132 | + } |
|
| 120 | 133 | } |
| 121 | 134 | return $timestamp; |
| 122 | 135 | } |
@@ -126,11 +139,14 @@ discard block |
||
| 126 | 139 | * @param mixed $_account_lid comma seperated list or array with lids |
| 127 | 140 | * @return mixed comma seperated list or array with ids |
| 128 | 141 | */ |
| 129 | - public static function account_name2id( &$_account_lids ) { |
|
| 142 | + public static function account_name2id( &$_account_lids ) |
|
| 143 | + { |
|
| 130 | 144 | $account_lids = is_array( $_account_lids ) ? $_account_lids : explode( ',', $_account_lids ); |
| 131 | 145 | $skip = false; |
| 132 | - foreach ( $account_lids as $key => $account_lid ) { |
|
| 133 | - if($skip) { |
|
| 146 | + foreach ( $account_lids as $key => $account_lid ) |
|
| 147 | + { |
|
| 148 | + if($skip) |
|
| 149 | + { |
|
| 134 | 150 | unset($account_lids[$key]); |
| 135 | 151 | $skip = false; |
| 136 | 152 | continue; |
@@ -138,7 +154,8 @@ discard block |
||
| 138 | 154 | $account_lid = trim($account_lid); |
| 139 | 155 | |
| 140 | 156 | // Handle any IDs that slip in |
| 141 | - if(is_numeric($account_lid) && $GLOBALS['egw']->accounts->id2name($account_lid)) { |
|
| 157 | + if(is_numeric($account_lid) && $GLOBALS['egw']->accounts->id2name($account_lid)) |
|
| 158 | + { |
|
| 142 | 159 | unset($account_lids[$key]); |
| 143 | 160 | $account_ids[] = (int)$account_lid; |
| 144 | 161 | continue; |
@@ -183,19 +200,22 @@ discard block |
||
| 183 | 200 | $account_lid = trim(substr(trim($account_lid), strlen(lang('Group')))); |
| 184 | 201 | } |
| 185 | 202 | |
| 186 | - if ( $account_id = $GLOBALS['egw']->accounts->name2id( $account_lid )) { |
|
| 203 | + if ( $account_id = $GLOBALS['egw']->accounts->name2id( $account_lid )) |
|
| 204 | + { |
|
| 187 | 205 | $account_ids[] = $account_id; |
| 188 | 206 | unset($account_lids[$key]); |
| 189 | 207 | continue; |
| 190 | 208 | } |
| 191 | - if ( $account_id = $GLOBALS['egw']->accounts->name2id( trim($account_lid), 'account_fullname' )) { |
|
| 209 | + if ( $account_id = $GLOBALS['egw']->accounts->name2id( trim($account_lid), 'account_fullname' )) |
|
| 210 | + { |
|
| 192 | 211 | $account_ids[] = $account_id; |
| 193 | 212 | unset($account_lids[$key]); |
| 194 | 213 | continue; |
| 195 | 214 | } |
| 196 | 215 | |
| 197 | 216 | // Handle groups listed as Group, <name> |
| 198 | - if ( $account_lids[$key][0] == ' ' && $account_id = $GLOBALS['egw']->accounts->name2id( $account_lid)) { |
|
| 217 | + if ( $account_lids[$key][0] == ' ' && $account_id = $GLOBALS['egw']->accounts->name2id( $account_lid)) |
|
| 218 | + { |
|
| 199 | 219 | $account_ids[] = $account_id; |
| 200 | 220 | unset($account_lids[$key-1]); |
| 201 | 221 | unset($account_lids[$key]); |
@@ -219,10 +239,13 @@ discard block |
||
| 219 | 239 | * @param mixed $_account_ids comma seperated list or array with ids |
| 220 | 240 | * @return mixed comma seperated list or array with lids |
| 221 | 241 | */ |
| 222 | - public static function account_id2name( $_account_id ) { |
|
| 242 | + public static function account_id2name( $_account_id ) |
|
| 243 | + { |
|
| 223 | 244 | $account_ids = is_array( $_account_id ) ? $_account_id : explode( ',', $_account_id ); |
| 224 | - foreach ( $account_ids as $account_id ) { |
|
| 225 | - if ( $account_lid = $GLOBALS['egw']->accounts->id2name( $account_id )) { |
|
| 245 | + foreach ( $account_ids as $account_id ) |
|
| 246 | + { |
|
| 247 | + if ( $account_lid = $GLOBALS['egw']->accounts->id2name( $account_id )) |
|
| 248 | + { |
|
| 226 | 249 | $account_lids[] = $account_lid; |
| 227 | 250 | } |
| 228 | 251 | } |
@@ -235,9 +258,11 @@ discard block |
||
| 235 | 258 | * @param mixed _cat_ids comma seperated list or array |
| 236 | 259 | * @return mixed comma seperated list or array with cat_names |
| 237 | 260 | */ |
| 238 | - public static function cat_id2name( $_cat_ids ) { |
|
| 261 | + public static function cat_id2name( $_cat_ids ) |
|
| 262 | + { |
|
| 239 | 263 | $cat_ids = is_array( $_cat_ids ) ? $_cat_ids : explode( ',', $_cat_ids ); |
| 240 | - foreach ( $cat_ids as $cat_id ) { |
|
| 264 | + foreach ( $cat_ids as $cat_id ) |
|
| 265 | + { |
|
| 241 | 266 | $cat_names[] = Api\Categories::id2name( (int)$cat_id ); |
| 242 | 267 | } |
| 243 | 268 | return is_array( $_cat_ids ) ? $cat_names : implode(',',(array)$cat_names); |
@@ -251,14 +276,20 @@ discard block |
||
| 251 | 276 | * @param int $parent Optional parent ID to use for new categories |
| 252 | 277 | * @return mixed comma seperated list or array with cat_ids |
| 253 | 278 | */ |
| 254 | - public static function cat_name2id( $_cat_names, $parent = 0 ) { |
|
| 279 | + public static function cat_name2id( $_cat_names, $parent = 0 ) |
|
| 280 | + { |
|
| 255 | 281 | $cats = new Api\Categories(); // uses current user and app (egw_info[flags][currentapp]) |
| 256 | 282 | |
| 257 | 283 | $cat_names = is_array( $_cat_names ) ? $_cat_names : explode( ',', $_cat_names ); |
| 258 | - foreach ( $cat_names as $cat_name ) { |
|
| 284 | + foreach ( $cat_names as $cat_name ) |
|
| 285 | + { |
|
| 259 | 286 | $cat_name = trim($cat_name); |
| 260 | - if ( $cat_name == '' ) continue; |
|
| 261 | - if ( ( $cat_id = $cats->name2id( $cat_name ) ) == 0 && !self::$dry_run) { |
|
| 287 | + if ( $cat_name == '' ) |
|
| 288 | + { |
|
| 289 | + continue; |
|
| 290 | + } |
|
| 291 | + if ( ( $cat_id = $cats->name2id( $cat_name ) ) == 0 && !self::$dry_run) |
|
| 292 | + { |
|
| 262 | 293 | $cat_id = $cats->add( array( |
| 263 | 294 | 'name' => $cat_name, |
| 264 | 295 | 'parent' => $parent, |
@@ -307,8 +338,12 @@ discard block |
||
| 307 | 338 | * @param object &$cclass calling class to process the '@ evals' |
| 308 | 339 | * @return bool |
| 309 | 340 | */ |
| 310 | - public static function conversion( &$_record, $_conversion, &$_cclass = null ) { |
|
| 311 | - if (empty( $_conversion ) ) return $_record; |
|
| 341 | + public static function conversion( &$_record, $_conversion, &$_cclass = null ) |
|
| 342 | + { |
|
| 343 | + if (empty( $_conversion ) ) |
|
| 344 | + { |
|
| 345 | + return $_record; |
|
| 346 | + } |
|
| 312 | 347 | |
| 313 | 348 | self::$cclass =& $_cclass; |
| 314 | 349 | |
@@ -320,15 +355,21 @@ discard block |
||
| 320 | 355 | $CntlnCLPre = '|TCnCL{'; // Like |C{ but allowes CR and LF |
| 321 | 356 | $INE = '|INE{'; // Only insert if stuff in ^^ is not empty |
| 322 | 357 | |
| 323 | - foreach ( $_conversion as $idx => $conversion_string ) { |
|
| 324 | - if ( empty( $conversion_string ) ) continue; |
|
| 358 | + foreach ( $_conversion as $idx => $conversion_string ) |
|
| 359 | + { |
|
| 360 | + if ( empty( $conversion_string ) ) |
|
| 361 | + { |
|
| 362 | + continue; |
|
| 363 | + } |
|
| 325 | 364 | |
| 326 | 365 | // fetch patterns ($rvalues) |
| 327 | 366 | $rvalues = array(); |
| 328 | 367 | $pat_reps = explode( $PSep, stripslashes( $conversion_string ) ); |
| 329 | - foreach( $pat_reps as $k => $pat_rep ) { |
|
| 368 | + foreach( $pat_reps as $k => $pat_rep ) |
|
| 369 | + { |
|
| 330 | 370 | list( $pattern, $replace ) = explode( $ASep, $pat_rep, 2 ); |
| 331 | - if( $replace == '' ) { |
|
| 371 | + if( $replace == '' ) |
|
| 372 | + { |
|
| 332 | 373 | $replace = $pattern; $pattern = '^.*$'; |
| 333 | 374 | } |
| 334 | 375 | $rvalues[$pattern] = $replace; // replace two with only one, added by the form |
@@ -338,19 +379,23 @@ discard block |
||
| 338 | 379 | $val = array_key_exists( $idx, $_record ) ? $_record[$idx] : ''; |
| 339 | 380 | |
| 340 | 381 | $c_functions = array('cat', 'account', 'strtotime', 'list'); |
| 341 | - if($_cclass) { |
|
| 382 | + if($_cclass) |
|
| 383 | + { |
|
| 342 | 384 | // Add in additional methods |
| 343 | 385 | $reflection = new ReflectionClass(get_class($_cclass)); |
| 344 | 386 | $methods = $reflection->getMethods(ReflectionMethod::IS_STATIC); |
| 345 | - foreach($methods as $method) { |
|
| 387 | + foreach($methods as $method) |
|
| 388 | + { |
|
| 346 | 389 | $c_functions[] = $method->name; |
| 347 | 390 | } |
| 348 | 391 | } |
| 349 | 392 | $c_functions = implode('|', $c_functions); |
| 350 | - foreach ( $rvalues as $pattern => $replace ) { |
|
| 393 | + foreach ( $rvalues as $pattern => $replace ) |
|
| 394 | + { |
|
| 351 | 395 | // Allow to include record indexes in pattern |
| 352 | 396 | $reg = '/\|\[([0-9]+)\]/'; |
| 353 | - while( preg_match( $reg, $pattern, $vars ) ) { |
|
| 397 | + while( preg_match( $reg, $pattern, $vars ) ) |
|
| 398 | + { |
|
| 354 | 399 | // expand all _record fields |
| 355 | 400 | $pattern = str_replace( |
| 356 | 401 | $CPre . $vars[1] . $CPos, |
@@ -358,12 +403,14 @@ discard block |
||
| 358 | 403 | $pattern |
| 359 | 404 | ); |
| 360 | 405 | } |
| 361 | - if( preg_match('/'. (string)$pattern.'/', $val) ) { |
|
| 406 | + if( preg_match('/'. (string)$pattern.'/', $val) ) |
|
| 407 | + { |
|
| 362 | 408 | |
| 363 | 409 | $val = preg_replace( '/'.(string)$pattern.'/', $replace, (string)$val ); |
| 364 | 410 | |
| 365 | 411 | $reg = '/\|\[([a-zA-Z_0-9]+)\]/'; |
| 366 | - while( preg_match( $reg, $val, $vars ) ) { |
|
| 412 | + while( preg_match( $reg, $val, $vars ) ) |
|
| 413 | + { |
|
| 367 | 414 | // expand all _record fields |
| 368 | 415 | $val = str_replace( |
| 369 | 416 | $CPre . $vars[1] . $CPos, |
@@ -390,11 +437,13 @@ discard block |
||
| 390 | 437 | * |
| 391 | 438 | * @param array $_matches |
| 392 | 439 | */ |
| 393 | - private static function c2_dispatcher( $_matches ) { |
|
| 440 | + private static function c2_dispatcher( $_matches ) |
|
| 441 | + { |
|
| 394 | 442 | $action = &$_matches[1]; // cat or account ... |
| 395 | 443 | $data = &$_matches[2]; // datas for action |
| 396 | 444 | |
| 397 | - switch ( $action ) { |
|
| 445 | + switch ( $action ) |
|
| 446 | + { |
|
| 398 | 447 | case 'strtotime' : |
| 399 | 448 | list( $string, $format ) = explode( ',', $data ); |
| 400 | 449 | return self::custom_strtotime( trim( $string ), trim( $format ) ); |
@@ -404,22 +453,28 @@ discard block |
||
| 404 | 453 | // 1 based indexing for user ease |
| 405 | 454 | return $exploded[$index - 1]; |
| 406 | 455 | default : |
| 407 | - if(self::$cclass && method_exists(self::$cclass, $action)) { |
|
| 456 | + if(self::$cclass && method_exists(self::$cclass, $action)) |
|
| 457 | + { |
|
| 408 | 458 | $class = get_class(self::$cclass); |
| 409 | 459 | return call_user_func("$class::$action", $data); |
| 410 | 460 | } |
| 411 | 461 | $method = (string)$action. ( is_int( $data ) ? '_id2name' : '_name2id' ); |
| 412 | - if(self::$cclass && method_exists(self::$cclass, $method)) { |
|
| 462 | + if(self::$cclass && method_exists(self::$cclass, $method)) |
|
| 463 | + { |
|
| 413 | 464 | $class = get_class(self::$cclass); |
| 414 | 465 | return call_user_func("$class::$action", $data); |
| 415 | - } else { |
|
| 466 | + } |
|
| 467 | + else |
|
| 468 | + { |
|
| 416 | 469 | return self::$method( $data ); |
| 417 | 470 | } |
| 418 | 471 | } |
| 419 | 472 | } |
| 420 | 473 | |
| 421 | - private static function strclean( $_matches ) { |
|
| 422 | - switch( $_matches[1] ) { |
|
| 474 | + private static function strclean( $_matches ) |
|
| 475 | + { |
|
| 476 | + switch( $_matches[1] ) |
|
| 477 | + { |
|
| 423 | 478 | case '|T{' : return trim( $_matches[2] ); |
| 424 | 479 | case '|TC{' : return trim( preg_replace( '/[\x01-\x1F]+/', '', $_matches[2] ) ); |
| 425 | 480 | case '|TCnCL{' : return trim( preg_replace( '/[\x01-\x09\x11\x12\x14-\x1F]+/', '', $_matches[2] ) ); |
@@ -436,7 +491,8 @@ discard block |
||
| 436 | 491 | * @param string $_appname {<appname> | all} |
| 437 | 492 | * @return array(<appname> => array( <type> => array(<plugin> => <title>))) |
| 438 | 493 | */ |
| 439 | - public static function get_plugins( $_appname = 'all', $_type = 'all' ) { |
|
| 494 | + public static function get_plugins( $_appname = 'all', $_type = 'all' ) |
|
| 495 | + { |
|
| 440 | 496 | $plugins = Api\Cache::getTree( |
| 441 | 497 | __CLASS__, |
| 442 | 498 | 'plugins', |
@@ -449,38 +505,63 @@ discard block |
||
| 449 | 505 | |
| 450 | 506 | // Testing: comment out Api\Cache call, use this |
| 451 | 507 | //$plugins = self::_get_plugins($appnames, $types); |
| 452 | - foreach($plugins as $appname => $_types) { |
|
| 453 | - if(!in_array($appname, $appnames)) unset($plugins[$appname]); |
|
| 508 | + foreach($plugins as $appname => $_types) |
|
| 509 | + { |
|
| 510 | + if(!in_array($appname, $appnames)) |
|
| 511 | + { |
|
| 512 | + unset($plugins[$appname]); |
|
| 513 | + } |
|
| 454 | 514 | } |
| 455 | - foreach($plugins as $appname => $types) { |
|
| 515 | + foreach($plugins as $appname => $types) |
|
| 516 | + { |
|
| 456 | 517 | $plugins[$appname] = array_intersect_key($plugins[$appname], $types); |
| 457 | 518 | } |
| 458 | 519 | return $plugins; |
| 459 | 520 | } |
| 460 | 521 | |
| 461 | - public static function _get_plugins(Array $appnames, Array $types) { |
|
| 522 | + public static function _get_plugins(Array $appnames, Array $types) |
|
| 523 | + { |
|
| 462 | 524 | $plugins = array(); |
| 463 | - foreach ($appnames as $appname) { |
|
| 464 | - if(array_key_exists($appname, self::$blacklist_files) && self::$blacklist_files[$appname] === true) continue; |
|
| 525 | + foreach ($appnames as $appname) |
|
| 526 | + { |
|
| 527 | + if(array_key_exists($appname, self::$blacklist_files) && self::$blacklist_files[$appname] === true) |
|
| 528 | + { |
|
| 529 | + continue; |
|
| 530 | + } |
|
| 465 | 531 | |
| 466 | 532 | $appdir = EGW_INCLUDE_ROOT. "/$appname/inc"; |
| 467 | - if(!is_dir($appdir)) continue; |
|
| 533 | + if(!is_dir($appdir)) |
|
| 534 | + { |
|
| 535 | + continue; |
|
| 536 | + } |
|
| 468 | 537 | $d = dir($appdir); |
| 469 | 538 | |
| 470 | 539 | // step through each file in appdir |
| 471 | - while (false !== ($entry = $d->read())) { |
|
| 540 | + while (false !== ($entry = $d->read())) |
|
| 541 | + { |
|
| 472 | 542 | // Blacklisted? |
| 473 | - if(is_array(self::$blacklist_files[$appname]) && in_array($entry, self::$blacklist_files[$appname])) continue; |
|
| 474 | - if (!preg_match('/^class\.([^.]+)\.inc\.php$/', $entry, $matches)) continue; |
|
| 543 | + if(is_array(self::$blacklist_files[$appname]) && in_array($entry, self::$blacklist_files[$appname])) |
|
| 544 | + { |
|
| 545 | + continue; |
|
| 546 | + } |
|
| 547 | + if (!preg_match('/^class\.([^.]+)\.inc\.php$/', $entry, $matches)) |
|
| 548 | + { |
|
| 549 | + continue; |
|
| 550 | + } |
|
| 475 | 551 | $classname = $matches[1]; |
| 476 | 552 | $file = $appdir. '/'. $entry; |
| 477 | 553 | |
| 478 | - foreach ($types as $type) { |
|
| 479 | - if( !is_file($file) || strpos($entry, $type) === false || strpos($entry,'wizard') !== false) continue; |
|
| 554 | + foreach ($types as $type) |
|
| 555 | + { |
|
| 556 | + if( !is_file($file) || strpos($entry, $type) === false || strpos($entry,'wizard') !== false) |
|
| 557 | + { |
|
| 558 | + continue; |
|
| 559 | + } |
|
| 480 | 560 | require_once($file); |
| 481 | 561 | $reflectionClass = new ReflectionClass($classname); |
| 482 | 562 | if($reflectionClass->IsInstantiable() && |
| 483 | - $reflectionClass->implementsInterface('importexport_iface_'.$type.'_plugin')) { |
|
| 563 | + $reflectionClass->implementsInterface('importexport_iface_'.$type.'_plugin')) |
|
| 564 | + { |
|
| 484 | 565 | try { |
| 485 | 566 | $plugin_object = new $classname; |
| 486 | 567 | } |
@@ -495,7 +576,8 @@ discard block |
||
| 495 | 576 | $d->close(); |
| 496 | 577 | |
| 497 | 578 | $config = Api\Config::read('importexport'); |
| 498 | - if($config['update'] == 'auto') { |
|
| 579 | + if($config['update'] == 'auto') |
|
| 580 | + { |
|
| 499 | 581 | self::load_defaults($appname); |
| 500 | 582 | } |
| 501 | 583 | } |
@@ -509,38 +591,56 @@ discard block |
||
| 509 | 591 | * @param string $_type |
| 510 | 592 | * @return array $num => $appname |
| 511 | 593 | */ |
| 512 | - public static function get_apps($_type, $ignore_acl = false) { |
|
| 594 | + public static function get_apps($_type, $ignore_acl = false) |
|
| 595 | + { |
|
| 513 | 596 | $apps = array_keys(self::get_plugins('all',$_type)); |
| 514 | - if($ignore_acl) return $apps; |
|
| 597 | + if($ignore_acl) |
|
| 598 | + { |
|
| 599 | + return $apps; |
|
| 600 | + } |
|
| 515 | 601 | |
| 516 | - foreach($apps as $key => $app) { |
|
| 517 | - if(!self::has_definitions($app, $_type)) unset($apps[$key]); |
|
| 602 | + foreach($apps as $key => $app) |
|
| 603 | + { |
|
| 604 | + if(!self::has_definitions($app, $_type)) |
|
| 605 | + { |
|
| 606 | + unset($apps[$key]); |
|
| 607 | + } |
|
| 518 | 608 | } |
| 519 | 609 | return $apps; |
| 520 | 610 | } |
| 521 | 611 | |
| 522 | - public static function load_defaults($appname) { |
|
| 612 | + public static function load_defaults($appname) |
|
| 613 | + { |
|
| 523 | 614 | // Check for new definitions to import from $appname/setup/*.xml |
| 524 | 615 | $appdir = EGW_INCLUDE_ROOT. "/$appname/setup"; |
| 525 | - if(!is_dir($appdir)) return; |
|
| 616 | + if(!is_dir($appdir)) |
|
| 617 | + { |
|
| 618 | + return; |
|
| 619 | + } |
|
| 526 | 620 | $d = dir($appdir); |
| 527 | 621 | |
| 528 | 622 | // step through each file in app's setup |
| 529 | - while (false !== ($entry = $d->read())) { |
|
| 623 | + while (false !== ($entry = $d->read())) |
|
| 624 | + { |
|
| 530 | 625 | $file = $appdir. '/'. $entry; |
| 531 | 626 | list( $filename, $extension) = explode('.',$entry); |
| 532 | - if ( $extension != 'xml' ) continue; |
|
| 627 | + if ( $extension != 'xml' ) |
|
| 628 | + { |
|
| 629 | + continue; |
|
| 630 | + } |
|
| 533 | 631 | try { |
| 534 | 632 | // import will skip invalid files |
| 535 | 633 | importexport_definitions_bo::import( $file ); |
| 536 | - } catch (Exception $e) { |
|
| 634 | + } |
|
| 635 | + catch (Exception $e) { |
|
| 537 | 636 | error_log(__CLASS__.__FUNCTION__. " import $appname definitions: " . $e->getMessage()); |
| 538 | 637 | } |
| 539 | 638 | } |
| 540 | 639 | $d->close(); |
| 541 | 640 | } |
| 542 | 641 | |
| 543 | - public static function guess_filetype( $_file ) { |
|
| 642 | + public static function guess_filetype( $_file ) |
|
| 643 | + { |
|
| 544 | 644 | |
| 545 | 645 | } |
| 546 | 646 | |
@@ -551,7 +651,8 @@ discard block |
||
| 551 | 651 | * @param string $_type {import | export | all} |
| 552 | 652 | * @return boolean |
| 553 | 653 | */ |
| 554 | - public static function has_definitions( $_appname = 'all', $_type = 'all' ) { |
|
| 654 | + public static function has_definitions( $_appname = 'all', $_type = 'all' ) |
|
| 655 | + { |
|
| 555 | 656 | $definitions = Api\Cache::getSession( |
| 556 | 657 | __CLASS__, |
| 557 | 658 | 'has_definitions', |
@@ -565,27 +666,36 @@ discard block |
||
| 565 | 666 | // Testing: Comment out cache call above, use this |
| 566 | 667 | //$definitions = self::_has_definitions($appnames, $types); |
| 567 | 668 | |
| 568 | - foreach($definitions as $appname => $_types) { |
|
| 569 | - if(!in_array($appname, $appnames)) unset($definitions[$appname]); |
|
| 669 | + foreach($definitions as $appname => $_types) |
|
| 670 | + { |
|
| 671 | + if(!in_array($appname, $appnames)) |
|
| 672 | + { |
|
| 673 | + unset($definitions[$appname]); |
|
| 674 | + } |
|
| 570 | 675 | } |
| 571 | - foreach($definitions as $appname => $_types) { |
|
| 676 | + foreach($definitions as $appname => $_types) |
|
| 677 | + { |
|
| 572 | 678 | $definitions[$appname] = array_intersect_key($definitions[$appname], array_flip($types)); |
| 573 | 679 | } |
| 574 | 680 | return !empty($definitions[$appname]); |
| 575 | 681 | } |
| 576 | 682 | |
| 577 | 683 | // Api\Cache needs this public |
| 578 | - public static function _has_definitions(Array $appnames, Array $types) { |
|
| 684 | + public static function _has_definitions(Array $appnames, Array $types) |
|
| 685 | + { |
|
| 579 | 686 | $def = new importexport_definitions_bo(array('application'=>$appnames, 'type' => $types)); |
| 580 | 687 | $list = array(); |
| 581 | - foreach((array)$def->get_definitions() as $id) { |
|
| 688 | + foreach((array)$def->get_definitions() as $id) |
|
| 689 | + { |
|
| 582 | 690 | // Need to instanciate it to check, but if the user doesn't have permission, it throws an exception |
| 583 | 691 | try { |
| 584 | 692 | $definition = new importexport_definition($id); |
| 585 | - if($def->is_permitted($definition->get_record_array())) { |
|
| 693 | + if($def->is_permitted($definition->get_record_array())) |
|
| 694 | + { |
|
| 586 | 695 | $list[$definition->application][$definition->type][] = $id; |
| 587 | 696 | } |
| 588 | - } catch (Exception $e) { |
|
| 697 | + } |
|
| 698 | + catch (Exception $e) { |
|
| 589 | 699 | // That one doesn't work, keep going |
| 590 | 700 | } |
| 591 | 701 | $definition = null; |
@@ -614,13 +724,22 @@ discard block |
||
| 614 | 724 | $plugin = is_object($plugin_name) ? $plugin_name : new $plugin_name(); |
| 615 | 725 | $plugin_name = get_class($plugin); |
| 616 | 726 | |
| 617 | - if($record_classname == null) $record_classname = $plugin::get_egw_record_class(); |
|
| 618 | - if(!class_exists($record_classname)) throw new Exception('Bad class name ' . $record_classname); |
|
| 727 | + if($record_classname == null) |
|
| 728 | + { |
|
| 729 | + $record_classname = $plugin::get_egw_record_class(); |
|
| 730 | + } |
|
| 731 | + if(!class_exists($record_classname)) |
|
| 732 | + { |
|
| 733 | + throw new Exception('Bad class name ' . $record_classname); |
|
| 734 | + } |
|
| 619 | 735 | |
| 620 | 736 | if(!$wizard_plugin) |
| 621 | 737 | { |
| 622 | 738 | $wizard_name = $app_name . '_wizard_' . str_replace($app_name . '_', '', $plugin_name); |
| 623 | - if(!class_exists($wizard_name)) throw new Exception('Bad wizard name ' . $wizard_name); |
|
| 739 | + if(!class_exists($wizard_name)) |
|
| 740 | + { |
|
| 741 | + throw new Exception('Bad wizard name ' . $wizard_name); |
|
| 742 | + } |
|
| 624 | 743 | $wizard_plugin = new $wizard_name; |
| 625 | 744 | } |
| 626 | 745 | } |
@@ -640,7 +759,10 @@ discard block |
||
| 640 | 759 | foreach($record_classname::$types as $type => $type_fields) |
| 641 | 760 | { |
| 642 | 761 | // Only these for now, until filter methods for others are figured out |
| 643 | - if(!in_array($type, array('select','select-cat','select-account','date','date-time'))) continue; |
|
| 762 | + if(!in_array($type, array('select','select-cat','select-account','date','date-time'))) |
|
| 763 | + { |
|
| 764 | + continue; |
|
| 765 | + } |
|
| 644 | 766 | foreach($type_fields as $field_name) |
| 645 | 767 | { |
| 646 | 768 | $fields[$field_name] = array( |
@@ -658,14 +780,18 @@ discard block |
||
| 658 | 780 | $fields['#'.$field_name] = $settings; |
| 659 | 781 | } |
| 660 | 782 | |
| 661 | - foreach($fields as $field_name => &$settings) { |
|
| 783 | + foreach($fields as $field_name => &$settings) |
|
| 784 | + { |
|
| 662 | 785 | // Can't really filter on these (or at least no generic, sane way figured out yet) |
| 663 | 786 | if(!is_array($settings) || in_array($settings['type'], array('text','button', 'label','url','url-email','url-phone','htmlarea'))) |
| 664 | 787 | { |
| 665 | 788 | unset($fields[$field_name]); |
| 666 | 789 | continue; |
| 667 | 790 | } |
| 668 | - if($settings['type'] == 'radio') $settings['type'] = 'select'; |
|
| 791 | + if($settings['type'] == 'radio') |
|
| 792 | + { |
|
| 793 | + $settings['type'] = 'select'; |
|
| 794 | + } |
|
| 669 | 795 | switch($settings['type']) |
| 670 | 796 | { |
| 671 | 797 | case 'checkbox': |
@@ -196,8 +196,8 @@ discard block |
||
| 196 | 196 | } |
| 197 | 197 | |
| 198 | 198 | /** |
| 199 | - * Get options for select boxes |
|
| 200 | - */ |
|
| 199 | + * Get options for select boxes |
|
| 200 | + */ |
|
| 201 | 201 | public static function get_select_options(Array $data) |
| 202 | 202 | { |
| 203 | 203 | $options = array( |
@@ -261,8 +261,8 @@ discard block |
||
| 261 | 261 | } |
| 262 | 262 | |
| 263 | 263 | /** |
| 264 | - * Generate a async key |
|
| 265 | - */ |
|
| 264 | + * Generate a async key |
|
| 265 | + */ |
|
| 266 | 266 | public static function generate_id($data) |
| 267 | 267 | { |
| 268 | 268 | |
@@ -278,11 +278,11 @@ discard block |
||
| 278 | 278 | } |
| 279 | 279 | |
| 280 | 280 | /** |
| 281 | - * Check that the target is valid for the type (readable or writable) |
|
| 282 | - * and that they're not trying to write directly to the filesystem |
|
| 283 | - * |
|
| 284 | - * $data should contain target & type |
|
| 285 | - */ |
|
| 281 | + * Check that the target is valid for the type (readable or writable) |
|
| 282 | + * and that they're not trying to write directly to the filesystem |
|
| 283 | + * |
|
| 284 | + * $data should contain target & type |
|
| 285 | + */ |
|
| 286 | 286 | public static function check_target(Array $data) { |
| 287 | 287 | $scheme = parse_url($data['target'], PHP_URL_SCHEME); |
| 288 | 288 | if($scheme == '' || $scheme == 'file') |
@@ -329,11 +329,11 @@ discard block |
||
| 329 | 329 | } |
| 330 | 330 | |
| 331 | 331 | /** |
| 332 | - * Writable that checks the folder too, in case the file does not exist yet |
|
| 333 | - * http://ca3.php.net/manual/en/function.is-writable.php#73596 |
|
| 334 | - * |
|
| 335 | - * @param path Path to check |
|
| 336 | - */ |
|
| 332 | + * Writable that checks the folder too, in case the file does not exist yet |
|
| 333 | + * http://ca3.php.net/manual/en/function.is-writable.php#73596 |
|
| 334 | + * |
|
| 335 | + * @param path Path to check |
|
| 336 | + */ |
|
| 337 | 337 | private static function is__writable($path) |
| 338 | 338 | { |
| 339 | 339 | if ($path{strlen($path)-1}=='/') |
@@ -365,8 +365,8 @@ discard block |
||
| 365 | 365 | } |
| 366 | 366 | |
| 367 | 367 | /** |
| 368 | - * Execute a scheduled import or export |
|
| 369 | - */ |
|
| 368 | + * Execute a scheduled import or export |
|
| 369 | + */ |
|
| 370 | 370 | public static function exec($data) |
| 371 | 371 | { |
| 372 | 372 | ob_start(); |
@@ -113,7 +113,10 @@ discard block |
||
| 113 | 113 | // Remove any left blank |
| 114 | 114 | foreach($schedule as $key => &$value) |
| 115 | 115 | { |
| 116 | - if($value == '') unset($schedule[$key]); |
|
| 116 | + if($value == '') |
|
| 117 | + { |
|
| 118 | + unset($schedule[$key]); |
|
| 119 | + } |
|
| 117 | 120 | } |
| 118 | 121 | $result = $async->set_timer( |
| 119 | 122 | $schedule, |
@@ -283,14 +286,16 @@ discard block |
||
| 283 | 286 | * |
| 284 | 287 | * $data should contain target & type |
| 285 | 288 | */ |
| 286 | - public static function check_target(Array $data) { |
|
| 289 | + public static function check_target(Array $data) |
|
| 290 | + { |
|
| 287 | 291 | $scheme = parse_url($data['target'], PHP_URL_SCHEME); |
| 288 | 292 | if($scheme == '' || $scheme == 'file') |
| 289 | 293 | { |
| 290 | 294 | return 'Direct file access not allowed'; |
| 291 | 295 | } |
| 292 | 296 | |
| 293 | - if($scheme == Vfs::SCHEME && !in_array(Vfs::SCHEME, stream_get_wrappers())) { |
|
| 297 | + if($scheme == Vfs::SCHEME && !in_array(Vfs::SCHEME, stream_get_wrappers())) |
|
| 298 | + { |
|
| 294 | 299 | stream_wrapper_register(Vfs::SCHEME, 'vfs_stream_wrapper', STREAM_IS_URL); |
| 295 | 300 | } |
| 296 | 301 | |
@@ -315,8 +320,14 @@ discard block |
||
| 315 | 320 | // Response code has an integer key, but redirects may add more responses |
| 316 | 321 | for($i = 0; $i < count($headers); $i++) |
| 317 | 322 | { |
| 318 | - if(!$headers[$i]) break; |
|
| 319 | - if(strpos($headers[$i],'200') !== false) return true; |
|
| 323 | + if(!$headers[$i]) |
|
| 324 | + { |
|
| 325 | + break; |
|
| 326 | + } |
|
| 327 | + if(strpos($headers[$i],'200') !== false) |
|
| 328 | + { |
|
| 329 | + return true; |
|
| 330 | + } |
|
| 320 | 331 | } |
| 321 | 332 | return lang('%1 is not readable',$data['target']); |
| 322 | 333 | } |
@@ -198,7 +198,7 @@ discard block |
||
| 198 | 198 | /** |
| 199 | 199 | * Get options for select boxes |
| 200 | 200 | */ |
| 201 | - public static function get_select_options(Array $data) |
|
| 201 | + public static function get_select_options(array $data) |
|
| 202 | 202 | { |
| 203 | 203 | $options = array( |
| 204 | 204 | 'type' => array( |
@@ -283,7 +283,7 @@ discard block |
||
| 283 | 283 | * |
| 284 | 284 | * $data should contain target & type |
| 285 | 285 | */ |
| 286 | - public static function check_target(Array $data) { |
|
| 286 | + public static function check_target(array $data) { |
|
| 287 | 287 | $scheme = parse_url($data['target'], PHP_URL_SCHEME); |
| 288 | 288 | if($scheme == '' || $scheme == 'file') |
| 289 | 289 | { |
@@ -37,11 +37,11 @@ discard block |
||
| 37 | 37 | public function index($content = array()) |
| 38 | 38 | { |
| 39 | 39 | $async = new Api\Asyncservice(); |
| 40 | - if(is_array($content['scheduled'])) |
|
| 40 | + if (is_array($content['scheduled'])) |
|
| 41 | 41 | { |
| 42 | - foreach($content['scheduled'] as $row) |
|
| 42 | + foreach ($content['scheduled'] as $row) |
|
| 43 | 43 | { |
| 44 | - if($row['delete']) |
|
| 44 | + if ($row['delete']) |
|
| 45 | 45 | { |
| 46 | 46 | $key = urldecode(key($row['delete'])); |
| 47 | 47 | $async->cancel_timer($key); |
@@ -50,16 +50,16 @@ discard block |
||
| 50 | 50 | } |
| 51 | 51 | $async_list = $async->read('importexport%'); |
| 52 | 52 | $data = array(); |
| 53 | - if(is_array($async_list)) |
|
| 53 | + if (is_array($async_list)) |
|
| 54 | 54 | { |
| 55 | - foreach($async_list as $id => $async) |
|
| 55 | + foreach ($async_list as $id => $async) |
|
| 56 | 56 | { |
| 57 | - foreach(array('errors', 'warnings', 'result') as $messages) |
|
| 57 | + foreach (array('errors', 'warnings', 'result') as $messages) |
|
| 58 | 58 | { |
| 59 | - if(is_array($async['data'][$messages])) |
|
| 59 | + if (is_array($async['data'][$messages])) |
|
| 60 | 60 | { |
| 61 | 61 | $list = array(); |
| 62 | - foreach($async['data'][$messages] as $target => $message) |
|
| 62 | + foreach ($async['data'][$messages] as $target => $message) |
|
| 63 | 63 | { |
| 64 | 64 | $list[] = array( |
| 65 | 65 | 'target' => (is_numeric($target) ? '' : $target), |
@@ -69,7 +69,7 @@ discard block |
||
| 69 | 69 | $async['data'][$messages] = $list; |
| 70 | 70 | } |
| 71 | 71 | } |
| 72 | - if(is_numeric($async['data']['record_count'])) |
|
| 72 | + if (is_numeric($async['data']['record_count'])) |
|
| 73 | 73 | { |
| 74 | 74 | $async['data']['record_count'] = lang('%1 records processed', $async['data']['record_count']); |
| 75 | 75 | } |
@@ -100,7 +100,7 @@ discard block |
||
| 100 | 100 | $data = $content; |
| 101 | 101 | |
| 102 | 102 | // Deal with incoming |
| 103 | - if($content['save'] && self::check_target($content) === true) |
|
| 103 | + if ($content['save'] && self::check_target($content) === true) |
|
| 104 | 104 | { |
| 105 | 105 | unset($content['save']); |
| 106 | 106 | $async->cancel_timer($id); |
@@ -111,9 +111,9 @@ discard block |
||
| 111 | 111 | unset($content['schedule']); |
| 112 | 112 | |
| 113 | 113 | // Remove any left blank |
| 114 | - foreach($schedule as $key => &$value) |
|
| 114 | + foreach ($schedule as $key => &$value) |
|
| 115 | 115 | { |
| 116 | - if($value == '') unset($schedule[$key]); |
|
| 116 | + if ($value == '') unset($schedule[$key]); |
|
| 117 | 117 | } |
| 118 | 118 | $result = $async->set_timer( |
| 119 | 119 | $schedule, |
@@ -121,9 +121,9 @@ discard block |
||
| 121 | 121 | 'importexport.importexport_schedule_ui.exec', |
| 122 | 122 | $content |
| 123 | 123 | ); |
| 124 | - if($result) |
|
| 124 | + if ($result) |
|
| 125 | 125 | { |
| 126 | - Framework::refresh_opener('', 'admin',$id,'update','admin'); |
|
| 126 | + Framework::refresh_opener('', 'admin', $id, 'update', 'admin'); |
|
| 127 | 127 | Framework::window_close(); |
| 128 | 128 | } |
| 129 | 129 | else |
@@ -133,19 +133,19 @@ discard block |
||
| 133 | 133 | } |
| 134 | 134 | } |
| 135 | 135 | |
| 136 | - if($id) |
|
| 136 | + if ($id) |
|
| 137 | 137 | { |
| 138 | 138 | |
| 139 | 139 | $preserve['id'] = $id; |
| 140 | 140 | $async = $async->read($id); |
| 141 | - if(is_array($async[$id]['data'])) |
|
| 141 | + if (is_array($async[$id]['data'])) |
|
| 142 | 142 | { |
| 143 | 143 | $data += $async[$id]['data']; |
| 144 | 144 | $data['schedule'] = $async[$id]['times']; |
| 145 | 145 | unset($data['times']); |
| 146 | 146 | |
| 147 | 147 | // Async sometimes changes minutes to an array - show user what they typed |
| 148 | - if(is_array($data['schedule']['min'])) |
|
| 148 | + if (is_array($data['schedule']['min'])) |
|
| 149 | 149 | { |
| 150 | 150 | $data['schedule']['min'] = $data['min']; |
| 151 | 151 | } |
@@ -159,11 +159,11 @@ discard block |
||
| 159 | 159 | { |
| 160 | 160 | $data['type'] = $content['type'] ? $content['type'] : 'import'; |
| 161 | 161 | |
| 162 | - if((int)$definition_id) |
|
| 162 | + if ((int)$definition_id) |
|
| 163 | 163 | { |
| 164 | 164 | $bo = new importexport_definitions_bo(); |
| 165 | 165 | $definition = $bo->read($definition_id); |
| 166 | - if($definition['definition_id']) |
|
| 166 | + if ($definition['definition_id']) |
|
| 167 | 167 | { |
| 168 | 168 | $data['type'] = $definition['type']; |
| 169 | 169 | $data['appname'] = $definition['application']; |
@@ -173,12 +173,12 @@ discard block |
||
| 173 | 173 | } |
| 174 | 174 | } |
| 175 | 175 | |
| 176 | - if($data['target'] && $data['type']) |
|
| 176 | + if ($data['target'] && $data['type']) |
|
| 177 | 177 | { |
| 178 | 178 | $file_check = self::check_target($data); |
| 179 | - if($file_check !== true) |
|
| 179 | + if ($file_check !== true) |
|
| 180 | 180 | { |
| 181 | - $data['message'] .= ($data['message'] ? "\n" . $file_check : $file_check); |
|
| 181 | + $data['message'] .= ($data['message'] ? "\n".$file_check : $file_check); |
|
| 182 | 182 | } |
| 183 | 183 | } |
| 184 | 184 | |
@@ -188,7 +188,7 @@ discard block |
||
| 188 | 188 | $data['current_time'] = time(); |
| 189 | 189 | |
| 190 | 190 | $sel_options = self::get_select_options($data); |
| 191 | - Framework::includeJS('.','importexport','importexport'); |
|
| 191 | + Framework::includeJS('.', 'importexport', 'importexport'); |
|
| 192 | 192 | |
| 193 | 193 | $GLOBALS['egw_info']['flags']['app_header'] = lang('Schedule import / export'); |
| 194 | 194 | $this->template->read('importexport.schedule_edit'); |
@@ -208,21 +208,21 @@ discard block |
||
| 208 | 208 | ); |
| 209 | 209 | |
| 210 | 210 | (array)$apps = importexport_helper_functions::get_apps($data['type'] ? $data['type'] : 'all'); |
| 211 | - if(count($apps)) |
|
| 211 | + if (count($apps)) |
|
| 212 | 212 | { |
| 213 | - $options['appname'] = array('' => lang('Select one')) + array_combine($apps,$apps); |
|
| 213 | + $options['appname'] = array('' => lang('Select one')) + array_combine($apps, $apps); |
|
| 214 | 214 | } |
| 215 | 215 | |
| 216 | 216 | $plugins = importexport_helper_functions::get_plugins($data['appname'] ? $data['appname'] : 'all', $data['type']); |
| 217 | - if(is_array($plugins)) |
|
| 217 | + if (is_array($plugins)) |
|
| 218 | 218 | { |
| 219 | - foreach($plugins as $types) |
|
| 219 | + foreach ($plugins as $types) |
|
| 220 | 220 | { |
| 221 | - if(!is_array($types[$data['type']])) |
|
| 221 | + if (!is_array($types[$data['type']])) |
|
| 222 | 222 | { |
| 223 | 223 | continue; |
| 224 | 224 | } |
| 225 | - foreach($types[$data['type']] as $key => $title) |
|
| 225 | + foreach ($types[$data['type']] as $key => $title) |
|
| 226 | 226 | { |
| 227 | 227 | $options['plugin'][$key] = $title; |
| 228 | 228 | } |
@@ -288,27 +288,27 @@ discard block |
||
| 288 | 288 | */ |
| 289 | 289 | public static function check_target(Array $data) { |
| 290 | 290 | $scheme = parse_url($data['target'], PHP_URL_SCHEME); |
| 291 | - if($scheme == '' || $scheme == 'file') |
|
| 291 | + if ($scheme == '' || $scheme == 'file') |
|
| 292 | 292 | { |
| 293 | 293 | return 'Direct file access not allowed'; |
| 294 | 294 | } |
| 295 | 295 | |
| 296 | - if($scheme == Vfs::SCHEME && !in_array(Vfs::SCHEME, stream_get_wrappers())) { |
|
| 296 | + if ($scheme == Vfs::SCHEME && !in_array(Vfs::SCHEME, stream_get_wrappers())) { |
|
| 297 | 297 | stream_wrapper_register(Vfs::SCHEME, 'vfs_stream_wrapper', STREAM_IS_URL); |
| 298 | 298 | } |
| 299 | 299 | |
| 300 | 300 | if ($data['type'] == 'import' && ($scheme == Vfs::SCHEME && !Vfs::is_readable($data['target']))) |
| 301 | 301 | { |
| 302 | - return lang('%1 is not readable',$data['target']); |
|
| 302 | + return lang('%1 is not readable', $data['target']); |
|
| 303 | 303 | } |
| 304 | - elseif ($data['type'] == 'import' && in_array($scheme, array('http','https'))) |
|
| 304 | + elseif ($data['type'] == 'import' && in_array($scheme, array('http', 'https'))) |
|
| 305 | 305 | { |
| 306 | 306 | // Not supported by is_readable, try headers... |
| 307 | 307 | stream_context_set_default(array('http'=>array( |
| 308 | 308 | 'method' => 'HEAD', |
| 309 | 309 | 'ignore_errors' => 1 |
| 310 | 310 | ))); |
| 311 | - $headers = get_headers($data['target'],1); |
|
| 311 | + $headers = get_headers($data['target'], 1); |
|
| 312 | 312 | |
| 313 | 313 | // Reset... |
| 314 | 314 | stream_context_set_default(array('http'=>array( |
@@ -316,16 +316,16 @@ discard block |
||
| 316 | 316 | 'ignore_errors' => 0 |
| 317 | 317 | ))); |
| 318 | 318 | // Response code has an integer key, but redirects may add more responses |
| 319 | - for($i = 0; $i < count($headers); $i++) |
|
| 319 | + for ($i = 0; $i < count($headers); $i++) |
|
| 320 | 320 | { |
| 321 | - if(!$headers[$i]) break; |
|
| 322 | - if(strpos($headers[$i],'200') !== false) return true; |
|
| 321 | + if (!$headers[$i]) break; |
|
| 322 | + if (strpos($headers[$i], '200') !== false) return true; |
|
| 323 | 323 | } |
| 324 | - return lang('%1 is not readable',$data['target']); |
|
| 324 | + return lang('%1 is not readable', $data['target']); |
|
| 325 | 325 | } |
| 326 | 326 | elseif ($data['type'] == 'export' && !self::is__writable($data['target'])) |
| 327 | 327 | { |
| 328 | - return lang('%1 is not writable',$data['target']); |
|
| 328 | + return lang('%1 is not writable', $data['target']); |
|
| 329 | 329 | } |
| 330 | 330 | |
| 331 | 331 | return true; |
@@ -339,7 +339,7 @@ discard block |
||
| 339 | 339 | */ |
| 340 | 340 | private static function is__writable($path) |
| 341 | 341 | { |
| 342 | - if ($path{strlen($path)-1}=='/') |
|
| 342 | + if ($path{strlen($path) - 1} == '/') |
|
| 343 | 343 | { |
| 344 | 344 | // recursively return a temporary file path |
| 345 | 345 | return self::is__writable($path.uniqid(mt_rand()).'.tmp'); |
@@ -353,7 +353,7 @@ discard block |
||
| 353 | 353 | $rm = file_exists($path); |
| 354 | 354 | $f = @fopen($path, 'a'); |
| 355 | 355 | |
| 356 | - if ($f===false) |
|
| 356 | + if ($f === false) |
|
| 357 | 357 | { |
| 358 | 358 | return false; |
| 359 | 359 | } |
@@ -379,10 +379,10 @@ discard block |
||
| 379 | 379 | unset($data['warnings']); |
| 380 | 380 | unset($data['result']); |
| 381 | 381 | |
| 382 | - if($data['lock']) |
|
| 382 | + if ($data['lock']) |
|
| 383 | 383 | { |
| 384 | 384 | // Lock expires |
| 385 | - if($data['lock'] < time()) |
|
| 385 | + if ($data['lock'] < time()) |
|
| 386 | 386 | { |
| 387 | 387 | unset($data['lock']); |
| 388 | 388 | $data['warnings'][][] = lang('Lock expired on previous run'); |
@@ -403,25 +403,25 @@ discard block |
||
| 403 | 403 | |
| 404 | 404 | // check file |
| 405 | 405 | $file_check = self::check_target($data); |
| 406 | - if($file_check !== true) |
|
| 406 | + if ($file_check !== true) |
|
| 407 | 407 | { |
| 408 | 408 | $data['errors'] = array($file_check=>''); |
| 409 | 409 | // Update job with results |
| 410 | 410 | self::update_job($data); |
| 411 | 411 | |
| 412 | - error_log('importexport_schedule: ' . date('c') . ": $file_check \n"); |
|
| 412 | + error_log('importexport_schedule: '.date('c').": $file_check \n"); |
|
| 413 | 413 | error_log(ob_get_flush()); |
| 414 | 414 | return; |
| 415 | 415 | } |
| 416 | 416 | |
| 417 | 417 | $definition = new importexport_definition($data['definition']); |
| 418 | - if( $definition->get_identifier() < 1 ) |
|
| 418 | + if ($definition->get_identifier() < 1) |
|
| 419 | 419 | { |
| 420 | 420 | $data['errors'] = array('Definition not found!'); |
| 421 | 421 | // Update job with results |
| 422 | 422 | self::update_job($data); |
| 423 | 423 | |
| 424 | - error_log('importexport_schedule: ' . date('c') . ": Definition not found! \n"); |
|
| 424 | + error_log('importexport_schedule: '.date('c').": Definition not found! \n"); |
|
| 425 | 425 | return; |
| 426 | 426 | } |
| 427 | 427 | $GLOBALS['egw_info']['flags']['currentapp'] = $definition->application; |
@@ -430,30 +430,30 @@ discard block |
||
| 430 | 430 | |
| 431 | 431 | $type = $data['type']; |
| 432 | 432 | |
| 433 | - if(is_dir($data['target'])) |
|
| 433 | + if (is_dir($data['target'])) |
|
| 434 | 434 | { |
| 435 | - if($data['type'] == 'import') |
|
| 435 | + if ($data['type'] == 'import') |
|
| 436 | 436 | { |
| 437 | 437 | $targets = array(); |
| 438 | - foreach(scandir($data['target']) as $target) |
|
| 438 | + foreach (scandir($data['target']) as $target) |
|
| 439 | 439 | { |
| 440 | 440 | if ($target == '.' || $target == '..') |
| 441 | 441 | { |
| 442 | 442 | continue; |
| 443 | 443 | } |
| 444 | - $target = $data['target'].(substr($data['target'],-1) == '/' ? '' : '/').$target; |
|
| 444 | + $target = $data['target'].(substr($data['target'], -1) == '/' ? '' : '/').$target; |
|
| 445 | 445 | |
| 446 | 446 | // Check modification time, make sure it's not currently being written |
| 447 | 447 | // Skip files modified in the last 10 seconds |
| 448 | 448 | $mod_time = filemtime($target); |
| 449 | - if($mod_time >= time() - 10) |
|
| 449 | + if ($mod_time >= time() - 10) |
|
| 450 | 450 | { |
| 451 | 451 | $data['result'][$target] = lang('Skipped'); |
| 452 | 452 | continue; |
| 453 | 453 | } |
| 454 | 454 | $targets[$mod_time.$target] = $target; |
| 455 | 455 | } |
| 456 | - if($targets) |
|
| 456 | + if ($targets) |
|
| 457 | 457 | { |
| 458 | 458 | ksort($targets); |
| 459 | 459 | } |
@@ -469,27 +469,27 @@ discard block |
||
| 469 | 469 | $targets = array($data['target']); |
| 470 | 470 | } |
| 471 | 471 | |
| 472 | - if($type == 'export') |
|
| 472 | + if ($type == 'export') |
|
| 473 | 473 | { |
| 474 | 474 | // Set to export all or filter, if set |
| 475 | 475 | $selection = array('selection' => 'all'); |
| 476 | - if($definition->filter) |
|
| 476 | + if ($definition->filter) |
|
| 477 | 477 | { |
| 478 | 478 | $fields = importexport_helper_functions::get_filter_fields($definition->application, $po); |
| 479 | 479 | $selection = array('selection' => 'filter'); |
| 480 | 480 | $filters = array(); |
| 481 | - foreach($definition->filter as $field => $value) |
|
| 481 | + foreach ($definition->filter as $field => $value) |
|
| 482 | 482 | { |
| 483 | 483 | // Handle multiple values |
| 484 | - if(!is_array($value) && strpos($value,',') !== false) |
|
| 484 | + if (!is_array($value) && strpos($value, ',') !== false) |
|
| 485 | 485 | { |
| 486 | - $value = explode(',',$value); |
|
| 486 | + $value = explode(',', $value); |
|
| 487 | 487 | } |
| 488 | 488 | |
| 489 | 489 | $filters[$field] = $value; |
| 490 | 490 | |
| 491 | 491 | // Process relative dates into the current absolute date |
| 492 | - if($filters[$field] && strpos($fields[$field]['type'],'date') === 0) |
|
| 492 | + if ($filters[$field] && strpos($fields[$field]['type'], 'date') === 0) |
|
| 493 | 493 | { |
| 494 | 494 | $filters[$field] = importexport_helper_functions::date_rel2abs($value); |
| 495 | 495 | } |
@@ -497,7 +497,7 @@ discard block |
||
| 497 | 497 | // Update filter to use current absolute dates |
| 498 | 498 | $definition->filter = $filters; |
| 499 | 499 | } |
| 500 | - if(!is_array($definition->plugin_options)) |
|
| 500 | + if (!is_array($definition->plugin_options)) |
|
| 501 | 501 | { |
| 502 | 502 | $definition->plugin_options = array(); |
| 503 | 503 | } |
@@ -505,10 +505,10 @@ discard block |
||
| 505 | 505 | } |
| 506 | 506 | // Set some automatic admin history data, if the plugin wants it |
| 507 | 507 | $definition->plugin_options = array_merge($definition->plugin_options, array('admin_cmd' => array( |
| 508 | - 'comment' => lang('schedule import / export') . "\n" . $definition->get_title() . "\n" . $target |
|
| 508 | + 'comment' => lang('schedule import / export')."\n".$definition->get_title()."\n".$target |
|
| 509 | 509 | ))); |
| 510 | 510 | |
| 511 | - foreach($targets as $target) |
|
| 511 | + foreach ($targets as $target) |
|
| 512 | 512 | { |
| 513 | 513 | // Update lock timeout |
| 514 | 514 | $data['lock'] = time() + 3600; |
@@ -517,16 +517,16 @@ discard block |
||
| 517 | 517 | $resource = null; |
| 518 | 518 | try |
| 519 | 519 | { |
| 520 | - if (($resource = @fopen( $target, $data['type'] == 'import' ? 'rb' : 'wb' ))) |
|
| 520 | + if (($resource = @fopen($target, $data['type'] == 'import' ? 'rb' : 'wb'))) |
|
| 521 | 521 | { |
| 522 | - $result = $po->$type( $resource, $definition ); |
|
| 522 | + $result = $po->$type($resource, $definition); |
|
| 523 | 523 | |
| 524 | 524 | fclose($resource); |
| 525 | 525 | } |
| 526 | 526 | else |
| 527 | 527 | { |
| 528 | - error_log('importexport_schedule: ' . date('c') . ": File $target not readable! \n"); |
|
| 529 | - $data['errors'][$target][] = lang('%1 is not readable',$target); |
|
| 528 | + error_log('importexport_schedule: '.date('c').": File $target not readable! \n"); |
|
| 529 | + $data['errors'][$target][] = lang('%1 is not readable', $target); |
|
| 530 | 530 | } |
| 531 | 531 | } |
| 532 | 532 | catch (Exception $i_ex) |
@@ -536,20 +536,20 @@ discard block |
||
| 536 | 536 | } |
| 537 | 537 | |
| 538 | 538 | |
| 539 | - if(method_exists($po, 'get_warnings') && $po->get_warnings()) |
|
| 539 | + if (method_exists($po, 'get_warnings') && $po->get_warnings()) |
|
| 540 | 540 | { |
| 541 | - $buffer = 'importexport_schedule: ' . date('c') . ": Import warnings:\n#\tWarning\n"; |
|
| 542 | - foreach($po->get_warnings() as $record => $msg) |
|
| 541 | + $buffer = 'importexport_schedule: '.date('c').": Import warnings:\n#\tWarning\n"; |
|
| 542 | + foreach ($po->get_warnings() as $record => $msg) |
|
| 543 | 543 | { |
| 544 | 544 | $data['warnings'][$target][] = "#$record: $msg"; |
| 545 | 545 | $buffer += "$record\t$msg\n"; |
| 546 | 546 | } |
| 547 | 547 | error_log($buffer); |
| 548 | 548 | } |
| 549 | - if(method_exists($po, 'get_errors') && $po->get_errors()) |
|
| 549 | + if (method_exists($po, 'get_errors') && $po->get_errors()) |
|
| 550 | 550 | { |
| 551 | - $buffer = 'importexport_schedule: ' . date('c') . ": Import errors:\n#\tError\n"; |
|
| 552 | - foreach($po->get_errors() as $record => $error) |
|
| 551 | + $buffer = 'importexport_schedule: '.date('c').": Import errors:\n#\tError\n"; |
|
| 552 | + foreach ($po->get_errors() as $record => $error) |
|
| 553 | 553 | { |
| 554 | 554 | $data['errors'][$target][] = "#$record: $error"; |
| 555 | 555 | $buffer += "$record\t$error\n"; |
@@ -557,22 +557,22 @@ discard block |
||
| 557 | 557 | error_log($buffer); |
| 558 | 558 | } |
| 559 | 559 | |
| 560 | - if($po instanceof importexport_iface_import_plugin) |
|
| 560 | + if ($po instanceof importexport_iface_import_plugin) |
|
| 561 | 561 | { |
| 562 | - if(is_numeric($result)) |
|
| 562 | + if (is_numeric($result)) |
|
| 563 | 563 | { |
| 564 | 564 | $data['record_count'] += $result; |
| 565 | 565 | $data['result'][$target][] = lang('%1 records processed', $result); |
| 566 | 566 | } |
| 567 | 567 | $data['result'][$target] = array(); |
| 568 | - foreach($po->get_results() as $action => $count) |
|
| 568 | + foreach ($po->get_results() as $action => $count) |
|
| 569 | 569 | { |
| 570 | - $data['result'][$target][] = lang($action) . ": $count"; |
|
| 570 | + $data['result'][$target][] = lang($action).": $count"; |
|
| 571 | 571 | } |
| 572 | 572 | } |
| 573 | 573 | else |
| 574 | 574 | { |
| 575 | - if($result instanceof importexport_iface_export_record) |
|
| 575 | + if ($result instanceof importexport_iface_export_record) |
|
| 576 | 576 | { |
| 577 | 577 | $data['record_count'] += $result->get_num_of_records(); |
| 578 | 578 | $data['result'][$target][] = lang('%1 records processed', $result->get_num_of_records()); |
@@ -581,23 +581,23 @@ discard block |
||
| 581 | 581 | } |
| 582 | 582 | |
| 583 | 583 | // Delete file? |
| 584 | - if($data['delete_files'] && $type == 'import' && !$data['errors']) |
|
| 584 | + if ($data['delete_files'] && $type == 'import' && !$data['errors']) |
|
| 585 | 585 | { |
| 586 | - foreach($targets as $target) |
|
| 586 | + foreach ($targets as $target) |
|
| 587 | 587 | { |
| 588 | - if(unlink($target)) |
|
| 588 | + if (unlink($target)) |
|
| 589 | 589 | { |
| 590 | - $data['result'][$target][] .= "\n..." . lang('deleted'); |
|
| 590 | + $data['result'][$target][] .= "\n...".lang('deleted'); |
|
| 591 | 591 | } |
| 592 | 592 | else |
| 593 | 593 | { |
| 594 | - $data['errors'][$target][] .= "\n..." . lang('Unable to delete'); |
|
| 594 | + $data['errors'][$target][] .= "\n...".lang('Unable to delete'); |
|
| 595 | 595 | } |
| 596 | 596 | } |
| 597 | 597 | } |
| 598 | 598 | |
| 599 | 599 | // Run time in minutes |
| 600 | - $data['run_time'] = round((time() - $data['last_run']) / 60,1); |
|
| 600 | + $data['run_time'] = round((time() - $data['last_run']) / 60, 1); |
|
| 601 | 601 | |
| 602 | 602 | // Clear lock |
| 603 | 603 | $data['lock'] = 0; |
@@ -608,9 +608,9 @@ discard block |
||
| 608 | 608 | $contents = ob_get_contents(); |
| 609 | 609 | |
| 610 | 610 | // Log to error log |
| 611 | - if($contents) |
|
| 611 | + if ($contents) |
|
| 612 | 612 | { |
| 613 | - error_log('importexport_schedule: ' . date('c') . ": \n".$contents); |
|
| 613 | + error_log('importexport_schedule: '.date('c').": \n".$contents); |
|
| 614 | 614 | } |
| 615 | 615 | |
| 616 | 616 | ob_end_clean(); |
@@ -627,7 +627,7 @@ discard block |
||
| 627 | 627 | $jobs = $async->read($id); |
| 628 | 628 | $job = $jobs[$id]; |
| 629 | 629 | |
| 630 | - if(is_array($job)) |
|
| 630 | + if (is_array($job)) |
|
| 631 | 631 | { |
| 632 | 632 | $async->cancel_timer($id); |
| 633 | 633 | $result = $async->set_timer( |
@@ -637,37 +637,37 @@ discard block |
||
| 637 | 637 | $data |
| 638 | 638 | ); |
| 639 | 639 | } |
| 640 | - if($no_notification) |
|
| 640 | + if ($no_notification) |
|
| 641 | 641 | { |
| 642 | 642 | return $result; |
| 643 | 643 | } |
| 644 | 644 | |
| 645 | 645 | // Send notification to user |
| 646 | - if($data['warnings'] || $data['errors']) |
|
| 646 | + if ($data['warnings'] || $data['errors']) |
|
| 647 | 647 | { |
| 648 | 648 | $notify = new notifications(); |
| 649 | 649 | $notify->set_sender($data['account_id']); |
| 650 | 650 | $notify->add_receiver($data['account_id']); |
| 651 | - $notify->set_subject(lang('Schedule import | export'). ' ' . lang('errors')); |
|
| 651 | + $notify->set_subject(lang('Schedule import | export').' '.lang('errors')); |
|
| 652 | 652 | $contents = ''; |
| 653 | 653 | |
| 654 | - if($data['warnings']) |
|
| 654 | + if ($data['warnings']) |
|
| 655 | 655 | { |
| 656 | - $contents .= lang($data['type']) . ' ' . lang('Warnings') . ' ' . Api\DateTime::to() . ':'; |
|
| 657 | - foreach($data['warnings'] as $target => $message) |
|
| 656 | + $contents .= lang($data['type']).' '.lang('Warnings').' '.Api\DateTime::to().':'; |
|
| 657 | + foreach ($data['warnings'] as $target => $message) |
|
| 658 | 658 | { |
| 659 | - $contents .= "\n". (is_numeric($target) ? '' : $target."\n"); |
|
| 660 | - $contents .= is_array($message) ? implode("\n",$message) : $message; |
|
| 659 | + $contents .= "\n".(is_numeric($target) ? '' : $target."\n"); |
|
| 660 | + $contents .= is_array($message) ? implode("\n", $message) : $message; |
|
| 661 | 661 | } |
| 662 | 662 | $contents .= "\n"; |
| 663 | 663 | } |
| 664 | - if($data['errors']) |
|
| 664 | + if ($data['errors']) |
|
| 665 | 665 | { |
| 666 | - $contents .= lang($data['type']) . ' ' . lang('Errors') . ' ' . Api\DateTime::to() . ':'; |
|
| 667 | - foreach($data['errors'] as $target => $errors) |
|
| 666 | + $contents .= lang($data['type']).' '.lang('Errors').' '.Api\DateTime::to().':'; |
|
| 667 | + foreach ($data['errors'] as $target => $errors) |
|
| 668 | 668 | { |
| 669 | - $contents .= "\n". (is_numeric($target) ? '' : $target."\n"); |
|
| 670 | - $contents .= is_array($errors) ? implode("\n",$errors) : $errors; |
|
| 669 | + $contents .= "\n".(is_numeric($target) ? '' : $target."\n"); |
|
| 670 | + $contents .= is_array($errors) ? implode("\n", $errors) : $errors; |
|
| 671 | 671 | } |
| 672 | 672 | $contents .= "\n"; |
| 673 | 673 | } |
@@ -137,10 +137,10 @@ |
||
| 137 | 137 | } |
| 138 | 138 | |
| 139 | 139 | /** |
| 140 | - * Save a definition |
|
| 141 | - * |
|
| 142 | - * @param definition $definition |
|
| 143 | - */ |
|
| 140 | + * Save a definition |
|
| 141 | + * |
|
| 142 | + * @param definition $definition |
|
| 143 | + */ |
|
| 144 | 144 | public function save(Array $data) { |
| 145 | 145 | $definition = new importexport_definition(); |
| 146 | 146 | $definition->set_record($data); |
@@ -16,7 +16,8 @@ discard block |
||
| 16 | 16 | * |
| 17 | 17 | * @todo make this class an egw_record_pool! |
| 18 | 18 | */ |
| 19 | -class importexport_definitions_bo { |
|
| 19 | +class importexport_definitions_bo |
|
| 20 | +{ |
|
| 20 | 21 | |
| 21 | 22 | const _appname = 'importexport'; |
| 22 | 23 | const _defintion_table = 'egw_importexport_definitions'; |
@@ -34,10 +35,15 @@ discard block |
||
| 34 | 35 | public function __construct($_query=false, $ignore_acl = false) |
| 35 | 36 | { |
| 36 | 37 | $this->so_sql = new Api\Storage\Base(self::_appname, self::_defintion_table ); |
| 37 | - if ($_query) { |
|
| 38 | + if ($_query) |
|
| 39 | + { |
|
| 38 | 40 | $definitions = $this->so_sql->search($_query, false); |
| 39 | - foreach ((array)$definitions as $definition) { |
|
| 40 | - if(self::is_permitted($definition) || $ignore_acl) $this->definitions[] = $definition['definition_id']; |
|
| 41 | + foreach ((array)$definitions as $definition) |
|
| 42 | + { |
|
| 43 | + if(self::is_permitted($definition) || $ignore_acl) |
|
| 44 | + { |
|
| 45 | + $this->definitions[] = $definition['definition_id']; |
|
| 46 | + } |
|
| 41 | 47 | } |
| 42 | 48 | } |
| 43 | 49 | } |
@@ -45,7 +51,8 @@ discard block |
||
| 45 | 51 | public function get_rows(&$query, &$rows, &$readonlys) |
| 46 | 52 | { |
| 47 | 53 | // Filter only definitions user is allowed to use |
| 48 | - if(!$GLOBALS['egw_info']['user']['apps']['admin']) { |
|
| 54 | + if(!$GLOBALS['egw_info']['user']['apps']['admin']) |
|
| 55 | + { |
|
| 49 | 56 | $this_membership = $GLOBALS['egw']->accounts->memberships($GLOBALS['egw_info']['user']['account_id'], true); |
| 50 | 57 | $this_membership[] = $GLOBALS['egw_info']['user']['account_id']; |
| 51 | 58 | $sql .= ' ('; |
@@ -80,7 +87,8 @@ discard block |
||
| 80 | 87 | |
| 81 | 88 | $total = $this->so_sql->get_rows($query, $rows, $readonlys); |
| 82 | 89 | $ro_count = 0; |
| 83 | - foreach($rows as &$row) { |
|
| 90 | + foreach($rows as &$row) |
|
| 91 | + { |
|
| 84 | 92 | // Strip off leading + trailing , |
| 85 | 93 | $row['allowed_users'] = substr($row['allowed_users'],1,-1); |
| 86 | 94 | |
@@ -103,14 +111,19 @@ discard block |
||
| 103 | 111 | * |
| 104 | 112 | * @return array |
| 105 | 113 | */ |
| 106 | - public function get_definitions() { |
|
| 114 | + public function get_definitions() |
|
| 115 | + { |
|
| 107 | 116 | return $this->definitions; |
| 108 | 117 | } |
| 109 | - public function read($definition_id) { |
|
| 110 | - if(is_numeric($definition_id)) { |
|
| 118 | + public function read($definition_id) |
|
| 119 | + { |
|
| 120 | + if(is_numeric($definition_id)) |
|
| 121 | + { |
|
| 111 | 122 | $this->so_sql->read($definition_id); |
| 112 | 123 | $definition = new importexport_definition($this->so_sql->data['name']); |
| 113 | - } else { |
|
| 124 | + } |
|
| 125 | + else |
|
| 126 | + { |
|
| 114 | 127 | $definition = new importexport_definition( $definition_id['name'] ); |
| 115 | 128 | } |
| 116 | 129 | return $definition->get_record_array(); |
@@ -120,18 +133,24 @@ discard block |
||
| 120 | 133 | * |
| 121 | 134 | * @param array $keys |
| 122 | 135 | */ |
| 123 | - public function delete($keys) { |
|
| 124 | - foreach ($keys as $index => $key) { |
|
| 136 | + public function delete($keys) |
|
| 137 | + { |
|
| 138 | + foreach ($keys as $index => $key) |
|
| 139 | + { |
|
| 125 | 140 | // Check for ownership |
| 126 | 141 | $definition = $this->read($key); |
| 127 | - if($definition['owner'] && $definition['owner'] == $GLOBALS['egw_info']['user']['account_id'] || $GLOBALS['egw_info']['user']['apps']['admin']) { |
|
| 142 | + if($definition['owner'] && $definition['owner'] == $GLOBALS['egw_info']['user']['account_id'] || $GLOBALS['egw_info']['user']['apps']['admin']) |
|
| 143 | + { |
|
| 128 | 144 | // clear private cache |
| 129 | 145 | unset($this->definitions[array_search($key,$this->definitions)]); |
| 130 | - } else { |
|
| 146 | + } |
|
| 147 | + else |
|
| 148 | + { |
|
| 131 | 149 | unset($keys[$index]); |
| 132 | 150 | } |
| 133 | 151 | } |
| 134 | - if(count($keys) > 0) { |
|
| 152 | + if(count($keys) > 0) |
|
| 153 | + { |
|
| 135 | 154 | $this->so_sql->delete(array('definition_id' => $keys)); |
| 136 | 155 | } |
| 137 | 156 | } |
@@ -141,7 +160,8 @@ discard block |
||
| 141 | 160 | * |
| 142 | 161 | * @param definition $definition |
| 143 | 162 | */ |
| 144 | - public function save(Array $data) { |
|
| 163 | + public function save(Array $data) |
|
| 164 | + { |
|
| 145 | 165 | $definition = new importexport_definition(); |
| 146 | 166 | $definition->set_record($data); |
| 147 | 167 | $definition->save($data['definition_id']); |
@@ -153,7 +173,8 @@ discard block |
||
| 153 | 173 | * @param array $_definition |
| 154 | 174 | * @return bool |
| 155 | 175 | */ |
| 156 | - static public function is_permitted($_definition) { |
|
| 176 | + static public function is_permitted($_definition) |
|
| 177 | + { |
|
| 157 | 178 | $allowed_user = is_array($_definition['allowed_users']) ? $_definition['allowed_users'] : explode(',',$_definition['allowed_users']); |
| 158 | 179 | $this_user_id = $GLOBALS['egw_info']['user']['account_id']; |
| 159 | 180 | $this_membership = $GLOBALS['egw']->accounts->memberships($this_user_id, true); |
@@ -177,25 +198,30 @@ discard block |
||
| 177 | 198 | )); |
| 178 | 199 | |
| 179 | 200 | $export_data['definitions'] = array(); |
| 180 | - foreach ($keys as $definition_id) { |
|
| 201 | + foreach ($keys as $definition_id) |
|
| 202 | + { |
|
| 181 | 203 | $definition = new importexport_definition( $definition_id ); |
| 182 | 204 | $export_data['definitions'][$definition->name] = $definition->get_record_array(); |
| 183 | 205 | $export_data['definitions'][$definition->name]['allowed_users'] = |
| 184 | 206 | importexport_helper_functions::account_id2name( |
| 185 | 207 | $export_data['definitions'][$definition->name]['allowed_users'] |
| 186 | 208 | ); |
| 187 | - if($export_date['definitions'][$definition->name]['owner']) { |
|
| 209 | + if($export_date['definitions'][$definition->name]['owner']) |
|
| 210 | + { |
|
| 188 | 211 | $export_data['definitions'][$definition->name]['owner'] = |
| 189 | 212 | importexport_helper_functions::account_id2name( |
| 190 | 213 | $export_data['definitions'][$definition->name]['owner'] |
| 191 | 214 | ); |
| 192 | - } else { |
|
| 215 | + } |
|
| 216 | + else |
|
| 217 | + { |
|
| 193 | 218 | unset($export_data['definitions'][$definition->name]['owner']); |
| 194 | 219 | } |
| 195 | 220 | unset($export_data['definitions'][$definition->name]['definition_id']); |
| 196 | 221 | unset($export_data['definitions'][$definition->name]['description']); |
| 197 | 222 | unset($export_data['definitions'][$definition->name]['user_timezone_read']); |
| 198 | - if(is_array($export_data['definitions'][$definition->name]['plugin_options'])) { |
|
| 223 | + if(is_array($export_data['definitions'][$definition->name]['plugin_options'])) |
|
| 224 | + { |
|
| 199 | 225 | unset($export_data['definitions'][$definition->name]['plugin_options']['user_timezone_read']); |
| 200 | 226 | } |
| 201 | 227 | unset($definition); |
@@ -215,7 +241,8 @@ discard block |
||
| 215 | 241 | */ |
| 216 | 242 | public static function import( $_import_file ) |
| 217 | 243 | { |
| 218 | - if ( !is_file( $_import_file ) ) { |
|
| 244 | + if ( !is_file( $_import_file ) ) |
|
| 245 | + { |
|
| 219 | 246 | throw new Exception("'$_import_file' does not exist or is not readable" ); |
| 220 | 247 | } |
| 221 | 248 | |
@@ -233,14 +260,20 @@ discard block |
||
| 233 | 260 | ); |
| 234 | 261 | |
| 235 | 262 | // Avoid warning if no definitions found |
| 236 | - if(!is_array($definitions)) return lang('None found'); |
|
| 263 | + if(!is_array($definitions)) |
|
| 264 | + { |
|
| 265 | + return lang('None found'); |
|
| 266 | + } |
|
| 237 | 267 | |
| 238 | 268 | // save definition(s) into internal table |
| 239 | 269 | foreach ( $definitions as $name => $definition_data ) |
| 240 | 270 | { |
| 241 | 271 | // convert allowed_user |
| 242 | 272 | $definition_data['allowed_users'] = importexport_helper_functions::account_name2id( $definition_data['allowed_users'] ); |
| 243 | - if($definition_data['all_users'] && !$definition_data['allowed_users']) $definition_data['allowed_users'] = 'all'; |
|
| 273 | + if($definition_data['all_users'] && !$definition_data['allowed_users']) |
|
| 274 | + { |
|
| 275 | + $definition_data['allowed_users'] = 'all'; |
|
| 276 | + } |
|
| 244 | 277 | |
| 245 | 278 | $definition_data['owner'] = importexport_helper_functions::account_name2id( $definition_data['owner'] ); |
| 246 | 279 | |
@@ -275,7 +308,10 @@ discard block |
||
| 275 | 308 | public static function export_from_import(importexport_definition $import) |
| 276 | 309 | { |
| 277 | 310 | // Only operates on import definitions |
| 278 | - if($import->type != 'import') throw new Api\Exception\WrongParameter('Only import definitions'); |
|
| 311 | + if($import->type != 'import') |
|
| 312 | + { |
|
| 313 | + throw new Api\Exception\WrongParameter('Only import definitions'); |
|
| 314 | + } |
|
| 279 | 315 | |
| 280 | 316 | // Find export plugin |
| 281 | 317 | $plugin = str_replace('import', 'export',$import->plugin); |
@@ -285,18 +321,30 @@ discard block |
||
| 285 | 321 | $plugins = $type['export']; |
| 286 | 322 | foreach($plugins as $name => $label) |
| 287 | 323 | { |
| 288 | - if($plugin == $name) break; |
|
| 324 | + if($plugin == $name) |
|
| 325 | + { |
|
| 326 | + break; |
|
| 327 | + } |
|
| 328 | + } |
|
| 329 | + if($plugin !== $name) |
|
| 330 | + { |
|
| 331 | + $plugin = $name; |
|
| 289 | 332 | } |
| 290 | - if($plugin !== $name) $plugin = $name; |
|
| 291 | 333 | } |
| 292 | 334 | |
| 293 | 335 | $export = new importexport_definition(); |
| 294 | 336 | |
| 295 | 337 | // Common settings |
| 296 | 338 | $export->name = str_replace('import', 'export',$import->name); |
| 297 | - if($export->name == $import->name) $export->name = $export->name . '-export'; |
|
| 339 | + if($export->name == $import->name) |
|
| 340 | + { |
|
| 341 | + $export->name = $export->name . '-export'; |
|
| 342 | + } |
|
| 298 | 343 | $test = new importexport_definition($export->name); |
| 299 | - if($test->name) $export->name = $export->name .'-'.$GLOBALS['egw_info']['user']['account_lid']; |
|
| 344 | + if($test->name) |
|
| 345 | + { |
|
| 346 | + $export->name = $export->name .'-'.$GLOBALS['egw_info']['user']['account_lid']; |
|
| 347 | + } |
|
| 300 | 348 | |
| 301 | 349 | $export->application = $import->application; |
| 302 | 350 | $export->plugin = $plugin; |
@@ -141,7 +141,7 @@ |
||
| 141 | 141 | * |
| 142 | 142 | * @param definition $definition |
| 143 | 143 | */ |
| 144 | - public function save(Array $data) { |
|
| 144 | + public function save(array $data) { |
|
| 145 | 145 | $definition = new importexport_definition(); |
| 146 | 146 | $definition->set_record($data); |
| 147 | 147 | $definition->save($data['definition_id']); |
@@ -31,13 +31,13 @@ discard block |
||
| 31 | 31 | */ |
| 32 | 32 | private $definitions; |
| 33 | 33 | |
| 34 | - public function __construct($_query=false, $ignore_acl = false) |
|
| 34 | + public function __construct($_query = false, $ignore_acl = false) |
|
| 35 | 35 | { |
| 36 | - $this->so_sql = new Api\Storage\Base(self::_appname, self::_defintion_table ); |
|
| 36 | + $this->so_sql = new Api\Storage\Base(self::_appname, self::_defintion_table); |
|
| 37 | 37 | if ($_query) { |
| 38 | 38 | $definitions = $this->so_sql->search($_query, false); |
| 39 | 39 | foreach ((array)$definitions as $definition) { |
| 40 | - if(self::is_permitted($definition) || $ignore_acl) $this->definitions[] = $definition['definition_id']; |
|
| 40 | + if (self::is_permitted($definition) || $ignore_acl) $this->definitions[] = $definition['definition_id']; |
|
| 41 | 41 | } |
| 42 | 42 | } |
| 43 | 43 | } |
@@ -45,16 +45,16 @@ discard block |
||
| 45 | 45 | public function get_rows(&$query, &$rows, &$readonlys) |
| 46 | 46 | { |
| 47 | 47 | // Filter only definitions user is allowed to use |
| 48 | - if(!$GLOBALS['egw_info']['user']['apps']['admin']) { |
|
| 48 | + if (!$GLOBALS['egw_info']['user']['apps']['admin']) { |
|
| 49 | 49 | $this_membership = $GLOBALS['egw']->accounts->memberships($GLOBALS['egw_info']['user']['account_id'], true); |
| 50 | 50 | $this_membership[] = $GLOBALS['egw_info']['user']['account_id']; |
| 51 | 51 | $sql .= ' ('; |
| 52 | 52 | $read = array(); |
| 53 | - foreach($this_membership as $id) |
|
| 53 | + foreach ($this_membership as $id) |
|
| 54 | 54 | { |
| 55 | 55 | $read[] = 'allowed_users '. |
| 56 | 56 | $GLOBALS['egw']->db->capabilities['case_insensitive_like'].' '. |
| 57 | - $GLOBALS['egw']->db->quote('%,'.str_replace('_','\\_',$id) .',%'); |
|
| 57 | + $GLOBALS['egw']->db->quote('%,'.str_replace('_', '\\_', $id).',%'); |
|
| 58 | 58 | } |
| 59 | 59 | $sql .= implode(' OR ', $read); |
| 60 | 60 | $sql .= ') OR owner = '.$GLOBALS['egw_info']['user']['account_id']; |
@@ -62,37 +62,37 @@ discard block |
||
| 62 | 62 | } |
| 63 | 63 | |
| 64 | 64 | // Handle allowed filter |
| 65 | - if($query['col_filter']['allowed_users']) |
|
| 65 | + if ($query['col_filter']['allowed_users']) |
|
| 66 | 66 | { |
| 67 | 67 | $allowed = array(); |
| 68 | - foreach((array)$query['col_filter']['allowed_users'] as $id) |
|
| 68 | + foreach ((array)$query['col_filter']['allowed_users'] as $id) |
|
| 69 | 69 | { |
| 70 | 70 | $allowed[] = 'allowed_users '. |
| 71 | 71 | $GLOBALS['egw']->db->capabilities['case_insensitive_like'].' '. |
| 72 | - $GLOBALS['egw']->db->quote('%,'.str_replace('_','\\_',$id) .',%'); |
|
| 72 | + $GLOBALS['egw']->db->quote('%,'.str_replace('_', '\\_', $id).',%'); |
|
| 73 | 73 | } |
| 74 | - if($allowed) |
|
| 74 | + if ($allowed) |
|
| 75 | 75 | { |
| 76 | 76 | unset($query['col_filter']['allowed_users']); |
| 77 | - $query['col_filter'][] = '('.implode(' OR ', $allowed) . ')'; |
|
| 77 | + $query['col_filter'][] = '('.implode(' OR ', $allowed).')'; |
|
| 78 | 78 | } |
| 79 | 79 | } |
| 80 | 80 | |
| 81 | 81 | $total = $this->so_sql->get_rows($query, $rows, $readonlys); |
| 82 | 82 | $ro_count = 0; |
| 83 | - foreach($rows as &$row) { |
|
| 83 | + foreach ($rows as &$row) { |
|
| 84 | 84 | // Strip off leading + trailing , |
| 85 | - $row['allowed_users'] = substr($row['allowed_users'],1,-1); |
|
| 85 | + $row['allowed_users'] = substr($row['allowed_users'], 1, -1); |
|
| 86 | 86 | |
| 87 | 87 | $readonlys["edit[{$row['definition_id']}]"] = $readonlys["delete[{$row['definition_id']}]"] = |
| 88 | 88 | ($row['owner'] != $GLOBALS['egw_info']['user']['account_id']) && |
| 89 | 89 | !$GLOBALS['egw_info']['user']['apps']['admin']; |
| 90 | - if($readonlys["edit[{$row['definition_id']}]"]) |
|
| 90 | + if ($readonlys["edit[{$row['definition_id']}]"]) |
|
| 91 | 91 | { |
| 92 | 92 | $row['class'] .= 'rowNoEdit rowNoDelete'; |
| 93 | 93 | $ro_count++; |
| 94 | 94 | } |
| 95 | - $row['class'] .= ' ' . $row['type']; |
|
| 95 | + $row['class'] .= ' '.$row['type']; |
|
| 96 | 96 | } |
| 97 | 97 | $readonlys['delete_selected'] = $ro_count == count($rows); |
| 98 | 98 | return $total; |
@@ -107,11 +107,11 @@ discard block |
||
| 107 | 107 | return $this->definitions; |
| 108 | 108 | } |
| 109 | 109 | public function read($definition_id) { |
| 110 | - if(is_numeric($definition_id)) { |
|
| 110 | + if (is_numeric($definition_id)) { |
|
| 111 | 111 | $this->so_sql->read($definition_id); |
| 112 | 112 | $definition = new importexport_definition($this->so_sql->data['name']); |
| 113 | 113 | } else { |
| 114 | - $definition = new importexport_definition( $definition_id['name'] ); |
|
| 114 | + $definition = new importexport_definition($definition_id['name']); |
|
| 115 | 115 | } |
| 116 | 116 | return $definition->get_record_array(); |
| 117 | 117 | } |
@@ -124,14 +124,14 @@ discard block |
||
| 124 | 124 | foreach ($keys as $index => $key) { |
| 125 | 125 | // Check for ownership |
| 126 | 126 | $definition = $this->read($key); |
| 127 | - if($definition['owner'] && $definition['owner'] == $GLOBALS['egw_info']['user']['account_id'] || $GLOBALS['egw_info']['user']['apps']['admin']) { |
|
| 127 | + if ($definition['owner'] && $definition['owner'] == $GLOBALS['egw_info']['user']['account_id'] || $GLOBALS['egw_info']['user']['apps']['admin']) { |
|
| 128 | 128 | // clear private cache |
| 129 | - unset($this->definitions[array_search($key,$this->definitions)]); |
|
| 129 | + unset($this->definitions[array_search($key, $this->definitions)]); |
|
| 130 | 130 | } else { |
| 131 | 131 | unset($keys[$index]); |
| 132 | 132 | } |
| 133 | 133 | } |
| 134 | - if(count($keys) > 0) { |
|
| 134 | + if (count($keys) > 0) { |
|
| 135 | 135 | $this->so_sql->delete(array('definition_id' => $keys)); |
| 136 | 136 | } |
| 137 | 137 | } |
@@ -154,12 +154,12 @@ discard block |
||
| 154 | 154 | * @return bool |
| 155 | 155 | */ |
| 156 | 156 | static public function is_permitted($_definition) { |
| 157 | - $allowed_user = is_array($_definition['allowed_users']) ? $_definition['allowed_users'] : explode(',',$_definition['allowed_users']); |
|
| 157 | + $allowed_user = is_array($_definition['allowed_users']) ? $_definition['allowed_users'] : explode(',', $_definition['allowed_users']); |
|
| 158 | 158 | $this_user_id = $GLOBALS['egw_info']['user']['account_id']; |
| 159 | 159 | $this_membership = $GLOBALS['egw']->accounts->memberships($this_user_id, true); |
| 160 | 160 | $this_membership[] = $this_user_id; |
| 161 | 161 | $this_membership[] = 'all'; |
| 162 | - $alluser = array_intersect($allowed_user,$this_membership); |
|
| 162 | + $alluser = array_intersect($allowed_user, $this_membership); |
|
| 163 | 163 | return ($this_user_id == $_definition['owner'] || count($alluser) > 0); |
| 164 | 164 | } |
| 165 | 165 | |
@@ -178,13 +178,13 @@ discard block |
||
| 178 | 178 | |
| 179 | 179 | $export_data['definitions'] = array(); |
| 180 | 180 | foreach ($keys as $definition_id) { |
| 181 | - $definition = new importexport_definition( $definition_id ); |
|
| 181 | + $definition = new importexport_definition($definition_id); |
|
| 182 | 182 | $export_data['definitions'][$definition->name] = $definition->get_record_array(); |
| 183 | 183 | $export_data['definitions'][$definition->name]['allowed_users'] = |
| 184 | 184 | importexport_helper_functions::account_id2name( |
| 185 | 185 | $export_data['definitions'][$definition->name]['allowed_users'] |
| 186 | 186 | ); |
| 187 | - if($export_date['definitions'][$definition->name]['owner']) { |
|
| 187 | + if ($export_date['definitions'][$definition->name]['owner']) { |
|
| 188 | 188 | $export_data['definitions'][$definition->name]['owner'] = |
| 189 | 189 | importexport_helper_functions::account_id2name( |
| 190 | 190 | $export_data['definitions'][$definition->name]['owner'] |
@@ -195,7 +195,7 @@ discard block |
||
| 195 | 195 | unset($export_data['definitions'][$definition->name]['definition_id']); |
| 196 | 196 | unset($export_data['definitions'][$definition->name]['description']); |
| 197 | 197 | unset($export_data['definitions'][$definition->name]['user_timezone_read']); |
| 198 | - if(is_array($export_data['definitions'][$definition->name]['plugin_options'])) { |
|
| 198 | + if (is_array($export_data['definitions'][$definition->name]['plugin_options'])) { |
|
| 199 | 199 | unset($export_data['definitions'][$definition->name]['plugin_options']['user_timezone_read']); |
| 200 | 200 | } |
| 201 | 201 | unset($definition); |
@@ -213,17 +213,17 @@ discard block |
||
| 213 | 213 | * @throws Exeption |
| 214 | 214 | * @return void |
| 215 | 215 | */ |
| 216 | - public static function import( $_import_file ) |
|
| 216 | + public static function import($_import_file) |
|
| 217 | 217 | { |
| 218 | - if ( !is_file( $_import_file ) ) { |
|
| 219 | - throw new Exception("'$_import_file' does not exist or is not readable" ); |
|
| 218 | + if (!is_file($_import_file)) { |
|
| 219 | + throw new Exception("'$_import_file' does not exist or is not readable"); |
|
| 220 | 220 | } |
| 221 | 221 | |
| 222 | - $data = importexport_arrayxml::xml2array( file_get_contents( $_import_file ) ); |
|
| 222 | + $data = importexport_arrayxml::xml2array(file_get_contents($_import_file)); |
|
| 223 | 223 | |
| 224 | 224 | $metainfo = $data['importExportDefinitions']['metainfo']; |
| 225 | 225 | $definitions = $data['importExportDefinitions']['definitions']; |
| 226 | - unset ( $data ); |
|
| 226 | + unset ($data); |
|
| 227 | 227 | |
| 228 | 228 | // convert charset into internal used charset |
| 229 | 229 | $definitions = Api\Translation::convert( |
@@ -233,26 +233,26 @@ discard block |
||
| 233 | 233 | ); |
| 234 | 234 | |
| 235 | 235 | // Avoid warning if no definitions found |
| 236 | - if(!is_array($definitions)) return lang('None found'); |
|
| 236 | + if (!is_array($definitions)) return lang('None found'); |
|
| 237 | 237 | |
| 238 | 238 | // save definition(s) into internal table |
| 239 | - foreach ( $definitions as $name => $definition_data ) |
|
| 239 | + foreach ($definitions as $name => $definition_data) |
|
| 240 | 240 | { |
| 241 | 241 | // convert allowed_user |
| 242 | - $definition_data['allowed_users'] = importexport_helper_functions::account_name2id( $definition_data['allowed_users'] ); |
|
| 243 | - if($definition_data['all_users'] && !$definition_data['allowed_users']) $definition_data['allowed_users'] = 'all'; |
|
| 242 | + $definition_data['allowed_users'] = importexport_helper_functions::account_name2id($definition_data['allowed_users']); |
|
| 243 | + if ($definition_data['all_users'] && !$definition_data['allowed_users']) $definition_data['allowed_users'] = 'all'; |
|
| 244 | 244 | |
| 245 | - $definition_data['owner'] = importexport_helper_functions::account_name2id( $definition_data['owner'] ); |
|
| 245 | + $definition_data['owner'] = importexport_helper_functions::account_name2id($definition_data['owner']); |
|
| 246 | 246 | |
| 247 | - $definition = new importexport_definition( $definition_data['name'] ); |
|
| 247 | + $definition = new importexport_definition($definition_data['name']); |
|
| 248 | 248 | |
| 249 | 249 | // Only update if the imported is newer |
| 250 | - if(strtotime($definition->modified) < strtotime($definition_data['modified']) || $definition->modified == 0) |
|
| 250 | + if (strtotime($definition->modified) < strtotime($definition_data['modified']) || $definition->modified == 0) |
|
| 251 | 251 | { |
| 252 | 252 | $definition_id = $definition->get_identifier() ? $definition->get_identifier() : NULL; |
| 253 | 253 | |
| 254 | - $definition->set_record( $definition_data ); |
|
| 255 | - $definition->save( $definition_id ); |
|
| 254 | + $definition->set_record($definition_data); |
|
| 255 | + $definition->save($definition_id); |
|
| 256 | 256 | } |
| 257 | 257 | } |
| 258 | 258 | return $definitions; |
@@ -275,28 +275,28 @@ discard block |
||
| 275 | 275 | public static function export_from_import(importexport_definition $import) |
| 276 | 276 | { |
| 277 | 277 | // Only operates on import definitions |
| 278 | - if($import->type != 'import') throw new Api\Exception\WrongParameter('Only import definitions'); |
|
| 278 | + if ($import->type != 'import') throw new Api\Exception\WrongParameter('Only import definitions'); |
|
| 279 | 279 | |
| 280 | 280 | // Find export plugin |
| 281 | - $plugin = str_replace('import', 'export',$import->plugin); |
|
| 281 | + $plugin = str_replace('import', 'export', $import->plugin); |
|
| 282 | 282 | $plugin_list = importexport_helper_functions::get_plugins($import->application, 'export'); |
| 283 | - foreach($plugin_list as $appname => $type) |
|
| 283 | + foreach ($plugin_list as $appname => $type) |
|
| 284 | 284 | { |
| 285 | 285 | $plugins = $type['export']; |
| 286 | - foreach($plugins as $name => $label) |
|
| 286 | + foreach ($plugins as $name => $label) |
|
| 287 | 287 | { |
| 288 | - if($plugin == $name) break; |
|
| 288 | + if ($plugin == $name) break; |
|
| 289 | 289 | } |
| 290 | - if($plugin !== $name) $plugin = $name; |
|
| 290 | + if ($plugin !== $name) $plugin = $name; |
|
| 291 | 291 | } |
| 292 | 292 | |
| 293 | 293 | $export = new importexport_definition(); |
| 294 | 294 | |
| 295 | 295 | // Common settings |
| 296 | - $export->name = str_replace('import', 'export',$import->name); |
|
| 297 | - if($export->name == $import->name) $export->name = $export->name . '-export'; |
|
| 296 | + $export->name = str_replace('import', 'export', $import->name); |
|
| 297 | + if ($export->name == $import->name) $export->name = $export->name.'-export'; |
|
| 298 | 298 | $test = new importexport_definition($export->name); |
| 299 | - if($test->name) $export->name = $export->name .'-'.$GLOBALS['egw_info']['user']['account_lid']; |
|
| 299 | + if ($test->name) $export->name = $export->name.'-'.$GLOBALS['egw_info']['user']['account_lid']; |
|
| 300 | 300 | |
| 301 | 301 | $export->application = $import->application; |
| 302 | 302 | $export->plugin = $plugin; |
@@ -312,7 +312,7 @@ discard block |
||
| 312 | 312 | ); |
| 313 | 313 | |
| 314 | 314 | // Mapping |
| 315 | - foreach($i_options['field_mapping'] as $col_num => $field) |
|
| 315 | + foreach ($i_options['field_mapping'] as $col_num => $field) |
|
| 316 | 316 | { |
| 317 | 317 | // Try to use heading from import file, if possible |
| 318 | 318 | $e_options['mapping'][$field] = $i_options['csv_fields'][$col_num] ? $i_options['csv_fields'][$col_num] : $field; |
@@ -339,7 +339,7 @@ discard block |
||
| 339 | 339 | */ |
| 340 | 340 | function change_delete_owner(array $args) // new_owner=0 means delete |
| 341 | 341 | { |
| 342 | - if (!(int) $args['new_owner']) |
|
| 342 | + if (!(int)$args['new_owner']) |
|
| 343 | 343 | { |
| 344 | 344 | $this->so_sql->delete(array('owner'=>$args['account_id'])); |
| 345 | 345 | } |
@@ -349,7 +349,7 @@ discard block |
||
| 349 | 349 | self::_defintion_table, |
| 350 | 350 | array('owner'=>$args['new_owner']), |
| 351 | 351 | array('owner'=>$args['account_id']), |
| 352 | - __LINE__,__FILE__,'importexport' |
|
| 352 | + __LINE__, __FILE__, 'importexport' |
|
| 353 | 353 | ); |
| 354 | 354 | } |
| 355 | 355 | } |
@@ -23,13 +23,13 @@ discard block |
||
| 23 | 23 | const TEMPLATE_MARKER = '-eTemplate-'; |
| 24 | 24 | |
| 25 | 25 | /** |
| 26 | - * List of steps. Key is the function, value is the translated title. |
|
| 27 | - */ |
|
| 26 | + * List of steps. Key is the function, value is the translated title. |
|
| 27 | + */ |
|
| 28 | 28 | public $steps; |
| 29 | 29 | |
| 30 | 30 | /** |
| 31 | - * List of eTemplates to use for each step. You can override this with your own etemplates steps. |
|
| 32 | - */ |
|
| 31 | + * List of eTemplates to use for each step. You can override this with your own etemplates steps. |
|
| 32 | + */ |
|
| 33 | 33 | protected $step_templates = array( |
| 34 | 34 | 'wizard_step30' => 'importexport.wizard_basic_export_csv.choose_fields', |
| 35 | 35 | 'wizard_step40' => 'importexport.wizard_basic_export_csv.choosesepncharset', |
@@ -38,19 +38,19 @@ discard block |
||
| 38 | 38 | |
| 39 | 39 | |
| 40 | 40 | /** |
| 41 | - * Destination fields for the export |
|
| 42 | - * Key is the field name, value is the human version |
|
| 43 | - */ |
|
| 41 | + * Destination fields for the export |
|
| 42 | + * Key is the field name, value is the human version |
|
| 43 | + */ |
|
| 44 | 44 | protected $export_fields = array(); |
| 45 | 45 | |
| 46 | 46 | /** |
| 47 | - * List of conditions your plugin supports |
|
| 48 | - */ |
|
| 47 | + * List of conditions your plugin supports |
|
| 48 | + */ |
|
| 49 | 49 | protected $conditions = array(); |
| 50 | 50 | |
| 51 | 51 | /** |
| 52 | - * List of actions your plugin supports |
|
| 53 | - */ |
|
| 52 | + * List of actions your plugin supports |
|
| 53 | + */ |
|
| 54 | 54 | protected $actions = array(); |
| 55 | 55 | |
| 56 | 56 | /** |
@@ -69,8 +69,8 @@ discard block |
||
| 69 | 69 | } |
| 70 | 70 | |
| 71 | 71 | /** |
| 72 | - * Choose fields to export |
|
| 73 | - */ |
|
| 72 | + * Choose fields to export |
|
| 73 | + */ |
|
| 74 | 74 | function wizard_step30(&$content, &$sel_options, &$readonlys, &$preserv) |
| 75 | 75 | { |
| 76 | 76 | if($this->debug) error_log(get_class($this) . '::wizard_step30->$content '.print_r($content,true)); |
@@ -206,16 +206,16 @@ discard block |
||
| 206 | 206 | ); |
| 207 | 207 | $sel_options['charset'] = Api\Translation::get_installed_charsets()+ |
| 208 | 208 | array( |
| 209 | - 'user' => lang('User preference'), |
|
| 210 | - ); |
|
| 209 | + 'user' => lang('User preference'), |
|
| 210 | + ); |
|
| 211 | 211 | |
| 212 | - // Add in extra allowed charsets |
|
| 213 | - $config = Api\Config::read('importexport'); |
|
| 214 | - $extra_charsets = array_intersect(explode(',',$config['import_charsets']), mb_list_encodings()); |
|
| 215 | - if($extra_charsets) |
|
| 216 | - { |
|
| 217 | - $sel_options['charset'] += array(lang('Extra encodings') => array_combine($extra_charsets,$extra_charsets)); |
|
| 218 | - } |
|
| 212 | + // Add in extra allowed charsets |
|
| 213 | + $config = Api\Config::read('importexport'); |
|
| 214 | + $extra_charsets = array_intersect(explode(',',$config['import_charsets']), mb_list_encodings()); |
|
| 215 | + if($extra_charsets) |
|
| 216 | + { |
|
| 217 | + $sel_options['charset'] += array(lang('Extra encodings') => array_combine($extra_charsets,$extra_charsets)); |
|
| 218 | + } |
|
| 219 | 219 | $sel_options['convert'] = array( |
| 220 | 220 | 0 => lang('Database values'), |
| 221 | 221 | 1 => lang('Human friendly values') |
@@ -64,7 +64,7 @@ discard block |
||
| 64 | 64 | 'wizard_step80' => lang('Filters'), |
| 65 | 65 | ); |
| 66 | 66 | list($appname, $part2) = explode('_', get_class($this)); |
| 67 | - if(!$GLOBALS['egw_info']['apps'][$appname]) $appname .= '_'.$part2; // Handle apps with _ in the name |
|
| 67 | + if (!$GLOBALS['egw_info']['apps'][$appname]) $appname .= '_'.$part2; // Handle apps with _ in the name |
|
| 68 | 68 | Api\Translation::add_app($appname); |
| 69 | 69 | } |
| 70 | 70 | |
@@ -73,14 +73,14 @@ discard block |
||
| 73 | 73 | */ |
| 74 | 74 | function wizard_step30(&$content, &$sel_options, &$readonlys, &$preserv) |
| 75 | 75 | { |
| 76 | - if($this->debug) error_log(get_class($this) . '::wizard_step30->$content '.print_r($content,true)); |
|
| 76 | + if ($this->debug) error_log(get_class($this).'::wizard_step30->$content '.print_r($content, true)); |
|
| 77 | 77 | // return from step30 |
| 78 | 78 | if ($content['step'] == 'wizard_step30') |
| 79 | 79 | { |
| 80 | - foreach($content['fields']['export'] as $field_name) |
|
| 80 | + foreach ($content['fields']['export'] as $field_name) |
|
| 81 | 81 | { |
| 82 | 82 | // Preserve original field names, where available |
| 83 | - if($content['plugin_options']['no_header_translation'] && $content['plugin_options']['mapping'][$field_name]) |
|
| 83 | + if ($content['plugin_options']['no_header_translation'] && $content['plugin_options']['mapping'][$field_name]) |
|
| 84 | 84 | { |
| 85 | 85 | $content['mapping'][$field_name] = $content['plugin_options']['mapping'][$field_name]; |
| 86 | 86 | } |
@@ -89,12 +89,12 @@ discard block |
||
| 89 | 89 | $content['mapping'][$field_name] = $field_name; |
| 90 | 90 | } |
| 91 | 91 | } |
| 92 | - if($content['mapping']['all_custom_fields']) { |
|
| 92 | + if ($content['mapping']['all_custom_fields']) { |
|
| 93 | 93 | // Need the appname during actual export, to fetch the fields |
| 94 | 94 | $parts = explode('_', get_class($this)); |
| 95 | 95 | $appname = $parts[0]; |
| 96 | - foreach($parts as $name_part) { |
|
| 97 | - if($GLOBALS['egw_info']['apps'][$appname]) break; |
|
| 96 | + foreach ($parts as $name_part) { |
|
| 97 | + if ($GLOBALS['egw_info']['apps'][$appname]) break; |
|
| 98 | 98 | $appname .= '_'.$name_part; // Handle apps with _ in the name |
| 99 | 99 | } |
| 100 | 100 | $content['mapping']['all_custom_fields'] = $appname; |
@@ -105,13 +105,13 @@ discard block |
||
| 105 | 105 | switch (array_search('pressed', $content['button'])) |
| 106 | 106 | { |
| 107 | 107 | case 'next': |
| 108 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],1); |
|
| 108 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], 1); |
|
| 109 | 109 | case 'previous' : |
| 110 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],-1); |
|
| 110 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], -1); |
|
| 111 | 111 | case 'finish': |
| 112 | 112 | return 'wizard_finish'; |
| 113 | 113 | default : |
| 114 | - return $this->wizard_step30($content,$sel_options,$readonlys,$preserv); |
|
| 114 | + return $this->wizard_step30($content, $sel_options, $readonlys, $preserv); |
|
| 115 | 115 | } |
| 116 | 116 | } |
| 117 | 117 | // init step30 |
@@ -125,15 +125,15 @@ discard block |
||
| 125 | 125 | unset ($preserv['button']); |
| 126 | 126 | unset ($preserv['fields']); |
| 127 | 127 | $content['fields'] = array(''); |
| 128 | - if(!$content['mapping']) $content['mapping'] = $content['plugin_options']['mapping']; |
|
| 128 | + if (!$content['mapping']) $content['mapping'] = $content['plugin_options']['mapping']; |
|
| 129 | 129 | |
| 130 | 130 | $row = 1; |
| 131 | - foreach($this->export_fields as $field => $name) { |
|
| 131 | + foreach ($this->export_fields as $field => $name) { |
|
| 132 | 132 | $content['fields'][] = array( |
| 133 | 133 | 'field' => $field, |
| 134 | 134 | 'name' => lang($name), |
| 135 | 135 | ); |
| 136 | - if($content['mapping'][$field]) { |
|
| 136 | + if ($content['mapping'][$field]) { |
|
| 137 | 137 | $content['fields']['export'][$row] = $field; |
| 138 | 138 | } |
| 139 | 139 | $row++; |
@@ -155,11 +155,11 @@ discard block |
||
| 155 | 155 | */ |
| 156 | 156 | function wizard_step40(&$content, &$sel_options, &$readonlys, &$preserv) |
| 157 | 157 | { |
| 158 | - if($this->debug) error_log(get_class($this) . '::wizard_step40->$content '.print_r($content,true)); |
|
| 158 | + if ($this->debug) error_log(get_class($this).'::wizard_step40->$content '.print_r($content, true)); |
|
| 159 | 159 | // return from step40 |
| 160 | 160 | if ($content['step'] == 'wizard_step40') { |
| 161 | - if($content['begin_with_fieldnames'] == 'label') { |
|
| 162 | - foreach($content['mapping'] as $field => &$label) { |
|
| 161 | + if ($content['begin_with_fieldnames'] == 'label') { |
|
| 162 | + foreach ($content['mapping'] as $field => &$label) { |
|
| 163 | 163 | // Check first, to avoid clearing any pseudo-columns (ex: All custom fields) |
| 164 | 164 | $label = $this->export_fields[$field] ? $this->export_fields[$field] : $label; |
| 165 | 165 | } |
@@ -167,13 +167,13 @@ discard block |
||
| 167 | 167 | switch (array_search('pressed', $content['button'])) |
| 168 | 168 | { |
| 169 | 169 | case 'next': |
| 170 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],1); |
|
| 170 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], 1); |
|
| 171 | 171 | case 'previous' : |
| 172 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],-1); |
|
| 172 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], -1); |
|
| 173 | 173 | case 'finish': |
| 174 | 174 | return 'wizard_finish'; |
| 175 | 175 | default : |
| 176 | - return $this->wizard_step40($content,$sel_options,$readonlys,$preserv); |
|
| 176 | + return $this->wizard_step40($content, $sel_options, $readonlys, $preserv); |
|
| 177 | 177 | } |
| 178 | 178 | } |
| 179 | 179 | // init step40 |
@@ -183,18 +183,18 @@ discard block |
||
| 183 | 183 | $content['step'] = 'wizard_step40'; |
| 184 | 184 | |
| 185 | 185 | // If editing an existing definition, these will be in plugin_options |
| 186 | - if(!$content['delimiter'] && $content['plugin_options']['delimiter']) { |
|
| 186 | + if (!$content['delimiter'] && $content['plugin_options']['delimiter']) { |
|
| 187 | 187 | $content['delimiter'] = $content['plugin_options']['delimiter']; |
| 188 | 188 | } elseif (!$content['delimiter']) { |
| 189 | 189 | $content['delimiter'] = ';'; |
| 190 | 190 | } |
| 191 | - if(!$content['charset'] && $content['plugin_options']['charset']) { |
|
| 191 | + if (!$content['charset'] && $content['plugin_options']['charset']) { |
|
| 192 | 192 | $content['charset'] = $content['plugin_options']['charset'] ? $content['plugin_options']['charset'] : 'user'; |
| 193 | 193 | } |
| 194 | - if(!array_key_exists('begin_with_fieldnames', $content) && array_key_exists('begin_with_fieldnames', $content['plugin_options'])) { |
|
| 194 | + if (!array_key_exists('begin_with_fieldnames', $content) && array_key_exists('begin_with_fieldnames', $content['plugin_options'])) { |
|
| 195 | 195 | $content['begin_with_fieldnames'] = $content['plugin_options']['begin_with_fieldnames']; |
| 196 | 196 | } |
| 197 | - if(!array_key_exists('convert', $content) && array_key_exists('convert', $content['plugin_options'])) { |
|
| 197 | + if (!array_key_exists('convert', $content) && array_key_exists('convert', $content['plugin_options'])) { |
|
| 198 | 198 | $content['convert'] = $content['plugin_options']['convert']; |
| 199 | 199 | } |
| 200 | 200 | |
@@ -204,17 +204,17 @@ discard block |
||
| 204 | 204 | 1 => lang('Field names'), |
| 205 | 205 | 'label' => lang('Field labels') |
| 206 | 206 | ); |
| 207 | - $sel_options['charset'] = Api\Translation::get_installed_charsets()+ |
|
| 207 | + $sel_options['charset'] = Api\Translation::get_installed_charsets() + |
|
| 208 | 208 | array( |
| 209 | 209 | 'user' => lang('User preference'), |
| 210 | 210 | ); |
| 211 | 211 | |
| 212 | 212 | // Add in extra allowed charsets |
| 213 | 213 | $config = Api\Config::read('importexport'); |
| 214 | - $extra_charsets = array_intersect(explode(',',$config['import_charsets']), mb_list_encodings()); |
|
| 215 | - if($extra_charsets) |
|
| 214 | + $extra_charsets = array_intersect(explode(',', $config['import_charsets']), mb_list_encodings()); |
|
| 215 | + if ($extra_charsets) |
|
| 216 | 216 | { |
| 217 | - $sel_options['charset'] += array(lang('Extra encodings') => array_combine($extra_charsets,$extra_charsets)); |
|
| 217 | + $sel_options['charset'] += array(lang('Extra encodings') => array_combine($extra_charsets, $extra_charsets)); |
|
| 218 | 218 | } |
| 219 | 219 | $sel_options['convert'] = array( |
| 220 | 220 | 0 => lang('Database values'), |
@@ -238,15 +238,15 @@ discard block |
||
| 238 | 238 | */ |
| 239 | 239 | function wizard_step80(&$content, &$sel_options, &$readonlys, &$preserv) |
| 240 | 240 | { |
| 241 | - if($this->debug) error_log(get_class($this) . '::' . __METHOD__ .'->$content '.print_r($content,true)); |
|
| 241 | + if ($this->debug) error_log(get_class($this).'::'.__METHOD__.'->$content '.print_r($content, true)); |
|
| 242 | 242 | // return from submit |
| 243 | 243 | if ($content['step'] == 'wizard_step80') { |
| 244 | 244 | // Process submitted |
| 245 | 245 | unset($content['filter']); |
| 246 | 246 | unset($content['set_filter']['fields']); |
| 247 | - foreach($content['set_filter'] as $key => $value) |
|
| 247 | + foreach ($content['set_filter'] as $key => $value) |
|
| 248 | 248 | { |
| 249 | - if($value) { |
|
| 249 | + if ($value) { |
|
| 250 | 250 | $content['filter'][$key] = $value; |
| 251 | 251 | } |
| 252 | 252 | } |
@@ -256,13 +256,13 @@ discard block |
||
| 256 | 256 | switch (array_search('pressed', $content['button'])) |
| 257 | 257 | { |
| 258 | 258 | case 'next': |
| 259 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],1); |
|
| 259 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], 1); |
|
| 260 | 260 | case 'previous' : |
| 261 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],-1); |
|
| 261 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], -1); |
|
| 262 | 262 | case 'finish': |
| 263 | 263 | return 'wizard_finish'; |
| 264 | 264 | default : |
| 265 | - return $this->wizard_step80($content,$sel_options,$readonlys,$preserv); |
|
| 265 | + return $this->wizard_step80($content, $sel_options, $readonlys, $preserv); |
|
| 266 | 266 | } |
| 267 | 267 | } else { |
| 268 | 268 | |
@@ -273,15 +273,15 @@ discard block |
||
| 273 | 273 | unset ($preserv['button']); |
| 274 | 274 | |
| 275 | 275 | $content['set_filter']['fields'] = importexport_helper_functions::get_filter_fields( |
| 276 | - $content['application'],$content['plugin'],$this |
|
| 276 | + $content['application'], $content['plugin'], $this |
|
| 277 | 277 | ); |
| 278 | 278 | // Load existing filter from either content or definition |
| 279 | - foreach($content['set_filter']['fields'] as $field => $settings) |
|
| 279 | + foreach ($content['set_filter']['fields'] as $field => $settings) |
|
| 280 | 280 | { |
| 281 | 281 | $content['set_filter'][$field] = $content['filter'][$field]; |
| 282 | 282 | } |
| 283 | 283 | |
| 284 | - if(!$content['set_filter']['fields']) |
|
| 284 | + if (!$content['set_filter']['fields']) |
|
| 285 | 285 | { |
| 286 | 286 | // No fields |
| 287 | 287 | return importexport_definitions_ui::SKIP; |
@@ -64,7 +64,11 @@ discard block |
||
| 64 | 64 | 'wizard_step80' => lang('Filters'), |
| 65 | 65 | ); |
| 66 | 66 | list($appname, $part2) = explode('_', get_class($this)); |
| 67 | - if(!$GLOBALS['egw_info']['apps'][$appname]) $appname .= '_'.$part2; // Handle apps with _ in the name |
|
| 67 | + if(!$GLOBALS['egw_info']['apps'][$appname]) |
|
| 68 | + { |
|
| 69 | + $appname .= '_'.$part2; |
|
| 70 | + } |
|
| 71 | + // Handle apps with _ in the name |
|
| 68 | 72 | Api\Translation::add_app($appname); |
| 69 | 73 | } |
| 70 | 74 | |
@@ -73,7 +77,10 @@ discard block |
||
| 73 | 77 | */ |
| 74 | 78 | function wizard_step30(&$content, &$sel_options, &$readonlys, &$preserv) |
| 75 | 79 | { |
| 76 | - if($this->debug) error_log(get_class($this) . '::wizard_step30->$content '.print_r($content,true)); |
|
| 80 | + if($this->debug) |
|
| 81 | + { |
|
| 82 | + error_log(get_class($this) . '::wizard_step30->$content '.print_r($content,true)); |
|
| 83 | + } |
|
| 77 | 84 | // return from step30 |
| 78 | 85 | if ($content['step'] == 'wizard_step30') |
| 79 | 86 | { |
@@ -89,12 +96,17 @@ discard block |
||
| 89 | 96 | $content['mapping'][$field_name] = $field_name; |
| 90 | 97 | } |
| 91 | 98 | } |
| 92 | - if($content['mapping']['all_custom_fields']) { |
|
| 99 | + if($content['mapping']['all_custom_fields']) |
|
| 100 | + { |
|
| 93 | 101 | // Need the appname during actual export, to fetch the fields |
| 94 | 102 | $parts = explode('_', get_class($this)); |
| 95 | 103 | $appname = $parts[0]; |
| 96 | - foreach($parts as $name_part) { |
|
| 97 | - if($GLOBALS['egw_info']['apps'][$appname]) break; |
|
| 104 | + foreach($parts as $name_part) |
|
| 105 | + { |
|
| 106 | + if($GLOBALS['egw_info']['apps'][$appname]) |
|
| 107 | + { |
|
| 108 | + break; |
|
| 109 | + } |
|
| 98 | 110 | $appname .= '_'.$name_part; // Handle apps with _ in the name |
| 99 | 111 | } |
| 100 | 112 | $content['mapping']['all_custom_fields'] = $appname; |
@@ -125,15 +137,20 @@ discard block |
||
| 125 | 137 | unset ($preserv['button']); |
| 126 | 138 | unset ($preserv['fields']); |
| 127 | 139 | $content['fields'] = array(''); |
| 128 | - if(!$content['mapping']) $content['mapping'] = $content['plugin_options']['mapping']; |
|
| 140 | + if(!$content['mapping']) |
|
| 141 | + { |
|
| 142 | + $content['mapping'] = $content['plugin_options']['mapping']; |
|
| 143 | + } |
|
| 129 | 144 | |
| 130 | 145 | $row = 1; |
| 131 | - foreach($this->export_fields as $field => $name) { |
|
| 146 | + foreach($this->export_fields as $field => $name) |
|
| 147 | + { |
|
| 132 | 148 | $content['fields'][] = array( |
| 133 | 149 | 'field' => $field, |
| 134 | 150 | 'name' => lang($name), |
| 135 | 151 | ); |
| 136 | - if($content['mapping'][$field]) { |
|
| 152 | + if($content['mapping'][$field]) |
|
| 153 | + { |
|
| 137 | 154 | $content['fields']['export'][$row] = $field; |
| 138 | 155 | } |
| 139 | 156 | $row++; |
@@ -155,11 +172,17 @@ discard block |
||
| 155 | 172 | */ |
| 156 | 173 | function wizard_step40(&$content, &$sel_options, &$readonlys, &$preserv) |
| 157 | 174 | { |
| 158 | - if($this->debug) error_log(get_class($this) . '::wizard_step40->$content '.print_r($content,true)); |
|
| 175 | + if($this->debug) |
|
| 176 | + { |
|
| 177 | + error_log(get_class($this) . '::wizard_step40->$content '.print_r($content,true)); |
|
| 178 | + } |
|
| 159 | 179 | // return from step40 |
| 160 | - if ($content['step'] == 'wizard_step40') { |
|
| 161 | - if($content['begin_with_fieldnames'] == 'label') { |
|
| 162 | - foreach($content['mapping'] as $field => &$label) { |
|
| 180 | + if ($content['step'] == 'wizard_step40') |
|
| 181 | + { |
|
| 182 | + if($content['begin_with_fieldnames'] == 'label') |
|
| 183 | + { |
|
| 184 | + foreach($content['mapping'] as $field => &$label) |
|
| 185 | + { |
|
| 163 | 186 | // Check first, to avoid clearing any pseudo-columns (ex: All custom fields) |
| 164 | 187 | $label = $this->export_fields[$field] ? $this->export_fields[$field] : $label; |
| 165 | 188 | } |
@@ -183,18 +206,24 @@ discard block |
||
| 183 | 206 | $content['step'] = 'wizard_step40'; |
| 184 | 207 | |
| 185 | 208 | // If editing an existing definition, these will be in plugin_options |
| 186 | - if(!$content['delimiter'] && $content['plugin_options']['delimiter']) { |
|
| 209 | + if(!$content['delimiter'] && $content['plugin_options']['delimiter']) |
|
| 210 | + { |
|
| 187 | 211 | $content['delimiter'] = $content['plugin_options']['delimiter']; |
| 188 | - } elseif (!$content['delimiter']) { |
|
| 212 | + } |
|
| 213 | + elseif (!$content['delimiter']) |
|
| 214 | + { |
|
| 189 | 215 | $content['delimiter'] = ';'; |
| 190 | 216 | } |
| 191 | - if(!$content['charset'] && $content['plugin_options']['charset']) { |
|
| 217 | + if(!$content['charset'] && $content['plugin_options']['charset']) |
|
| 218 | + { |
|
| 192 | 219 | $content['charset'] = $content['plugin_options']['charset'] ? $content['plugin_options']['charset'] : 'user'; |
| 193 | 220 | } |
| 194 | - if(!array_key_exists('begin_with_fieldnames', $content) && array_key_exists('begin_with_fieldnames', $content['plugin_options'])) { |
|
| 221 | + if(!array_key_exists('begin_with_fieldnames', $content) && array_key_exists('begin_with_fieldnames', $content['plugin_options'])) |
|
| 222 | + { |
|
| 195 | 223 | $content['begin_with_fieldnames'] = $content['plugin_options']['begin_with_fieldnames']; |
| 196 | 224 | } |
| 197 | - if(!array_key_exists('convert', $content) && array_key_exists('convert', $content['plugin_options'])) { |
|
| 225 | + if(!array_key_exists('convert', $content) && array_key_exists('convert', $content['plugin_options'])) |
|
| 226 | + { |
|
| 198 | 227 | $content['convert'] = $content['plugin_options']['convert']; |
| 199 | 228 | } |
| 200 | 229 | |
@@ -238,15 +267,20 @@ discard block |
||
| 238 | 267 | */ |
| 239 | 268 | function wizard_step80(&$content, &$sel_options, &$readonlys, &$preserv) |
| 240 | 269 | { |
| 241 | - if($this->debug) error_log(get_class($this) . '::' . __METHOD__ .'->$content '.print_r($content,true)); |
|
| 270 | + if($this->debug) |
|
| 271 | + { |
|
| 272 | + error_log(get_class($this) . '::' . __METHOD__ .'->$content '.print_r($content,true)); |
|
| 273 | + } |
|
| 242 | 274 | // return from submit |
| 243 | - if ($content['step'] == 'wizard_step80') { |
|
| 275 | + if ($content['step'] == 'wizard_step80') |
|
| 276 | + { |
|
| 244 | 277 | // Process submitted |
| 245 | 278 | unset($content['filter']); |
| 246 | 279 | unset($content['set_filter']['fields']); |
| 247 | 280 | foreach($content['set_filter'] as $key => $value) |
| 248 | 281 | { |
| 249 | - if($value) { |
|
| 282 | + if($value) |
|
| 283 | + { |
|
| 250 | 284 | $content['filter'][$key] = $value; |
| 251 | 285 | } |
| 252 | 286 | } |
@@ -264,7 +298,9 @@ discard block |
||
| 264 | 298 | default : |
| 265 | 299 | return $this->wizard_step80($content,$sel_options,$readonlys,$preserv); |
| 266 | 300 | } |
| 267 | - } else { |
|
| 301 | + } |
|
| 302 | + else |
|
| 303 | + { |
|
| 268 | 304 | |
| 269 | 305 | // Step 50 - filters |
| 270 | 306 | $content['text'] = $this->steps['wizard_step80']; |
@@ -23,13 +23,13 @@ discard block |
||
| 23 | 23 | const TEMPLATE_MARKER = '-eTemplate-'; |
| 24 | 24 | |
| 25 | 25 | /** |
| 26 | - * List of steps. Key is the function, value is the translated title. |
|
| 27 | - */ |
|
| 26 | + * List of steps. Key is the function, value is the translated title. |
|
| 27 | + */ |
|
| 28 | 28 | public $steps; |
| 29 | 29 | |
| 30 | 30 | /** |
| 31 | - * List of eTemplates to use for each step. You can override this with your own etemplates steps. |
|
| 32 | - */ |
|
| 31 | + * List of eTemplates to use for each step. You can override this with your own etemplates steps. |
|
| 32 | + */ |
|
| 33 | 33 | protected $step_templates = array( |
| 34 | 34 | 'wizard_step30' => 'importexport.wizard_basic_import_csv.sample_file', |
| 35 | 35 | 'wizard_step40' => 'importexport.wizard_basic_import_csv.choosesepncharset', |
@@ -39,19 +39,19 @@ discard block |
||
| 39 | 39 | |
| 40 | 40 | |
| 41 | 41 | /** |
| 42 | - * Destination fields for the mapping |
|
| 43 | - * Key is the field name, value is the human version |
|
| 44 | - */ |
|
| 42 | + * Destination fields for the mapping |
|
| 43 | + * Key is the field name, value is the human version |
|
| 44 | + */ |
|
| 45 | 45 | protected $mapping_fields = array(); |
| 46 | 46 | |
| 47 | 47 | /** |
| 48 | - * List of conditions your plugin supports |
|
| 49 | - */ |
|
| 48 | + * List of conditions your plugin supports |
|
| 49 | + */ |
|
| 50 | 50 | protected $conditions = array(); |
| 51 | 51 | |
| 52 | 52 | /** |
| 53 | - * List of actions your plugin supports |
|
| 54 | - */ |
|
| 53 | + * List of actions your plugin supports |
|
| 54 | + */ |
|
| 55 | 55 | protected $actions = array(); |
| 56 | 56 | |
| 57 | 57 | /** |
@@ -68,8 +68,8 @@ discard block |
||
| 68 | 68 | } |
| 69 | 69 | |
| 70 | 70 | /** |
| 71 | - * Take a sample CSV file. It will be processed in later steps |
|
| 72 | - */ |
|
| 71 | + * Take a sample CSV file. It will be processed in later steps |
|
| 72 | + */ |
|
| 73 | 73 | function wizard_step30(&$content, &$sel_options, &$readonlys, &$preserv) |
| 74 | 74 | { |
| 75 | 75 | if($this->debug) error_log(get_class($this) . '::wizard_step30->$content '.print_r($content,true)); |
@@ -263,11 +263,11 @@ discard block |
||
| 263 | 263 | } |
| 264 | 264 | |
| 265 | 265 | /** |
| 266 | - * Process the sample file, get the fields out of it, then allow them to be mapped onto |
|
| 267 | - * the fields the destination understands. Also, set any translations to be done to the field. |
|
| 268 | - * |
|
| 269 | - * You can use the eTemplate |
|
| 270 | - */ |
|
| 266 | + * Process the sample file, get the fields out of it, then allow them to be mapped onto |
|
| 267 | + * the fields the destination understands. Also, set any translations to be done to the field. |
|
| 268 | + * |
|
| 269 | + * You can use the eTemplate |
|
| 270 | + */ |
|
| 271 | 271 | function wizard_step50(&$content, &$sel_options, &$readonlys, &$preserv) |
| 272 | 272 | { |
| 273 | 273 | if($this->debug) error_log(get_class($this) . '::wizard_step50->$content '.print_r($content,true)); |
@@ -348,8 +348,8 @@ discard block |
||
| 348 | 348 | } |
| 349 | 349 | |
| 350 | 350 | /** |
| 351 | - * Edit conditions |
|
| 352 | - */ |
|
| 351 | + * Edit conditions |
|
| 352 | + */ |
|
| 353 | 353 | function wizard_step55(&$content, &$sel_options, &$readonlys, &$preserv) |
| 354 | 354 | { |
| 355 | 355 | if($this->debug) error_log(get_class($this) . '::wizard_step55->$content '.print_r($content,true)); |
@@ -75,7 +75,7 @@ discard block |
||
| 75 | 75 | */ |
| 76 | 76 | function wizard_step30(&$content, &$sel_options, &$readonlys, &$preserv) |
| 77 | 77 | { |
| 78 | - if($this->debug) error_log(get_class($this) . '::wizard_step30->$content '.print_r($content,true)); |
|
| 78 | + if ($this->debug) error_log(get_class($this).'::wizard_step30->$content '.print_r($content, true)); |
|
| 79 | 79 | // return from step30 |
| 80 | 80 | if ($content['step'] == 'wizard_step30') |
| 81 | 81 | { |
@@ -83,17 +83,17 @@ discard block |
||
| 83 | 83 | { |
| 84 | 84 | case 'next': |
| 85 | 85 | // Move sample file to temp |
| 86 | - if($content['file']['tmp_name']) { |
|
| 86 | + if ($content['file']['tmp_name']) { |
|
| 87 | 87 | Api\Cache::setSession($content['application'], 'csvfile', $content['file']['tmp_name']); |
| 88 | 88 | } |
| 89 | 89 | unset($content['file']); |
| 90 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],1); |
|
| 90 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], 1); |
|
| 91 | 91 | case 'previous' : |
| 92 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],-1); |
|
| 92 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], -1); |
|
| 93 | 93 | case 'finish': |
| 94 | 94 | return 'wizard_finish'; |
| 95 | 95 | default : |
| 96 | - return $this->wizard_step30($content,$sel_options,$readonlys,$preserv); |
|
| 96 | + return $this->wizard_step30($content, $sel_options, $readonlys, $preserv); |
|
| 97 | 97 | } |
| 98 | 98 | } |
| 99 | 99 | // init step30 |
@@ -120,57 +120,57 @@ discard block |
||
| 120 | 120 | */ |
| 121 | 121 | function wizard_step40(&$content, &$sel_options, &$readonlys, &$preserv) |
| 122 | 122 | { |
| 123 | - if($this->debug) error_log(get_class($this) . '::wizard_step40->$content '.print_r($content,true)); |
|
| 123 | + if ($this->debug) error_log(get_class($this).'::wizard_step40->$content '.print_r($content, true)); |
|
| 124 | 124 | // return from step40 |
| 125 | 125 | if ($content['step'] == 'wizard_step40') { |
| 126 | 126 | switch (array_search('pressed', $content['button'])) |
| 127 | 127 | { |
| 128 | 128 | case 'next': |
| 129 | 129 | // Process sample file for fields |
| 130 | - if (Api\Cache::getSession($content['application'],'csvfile') && |
|
| 131 | - ($handle = fopen(Api\Cache::getSession($content['application'],'csvfile'), "rb")) !== FALSE |
|
| 130 | + if (Api\Cache::getSession($content['application'], 'csvfile') && |
|
| 131 | + ($handle = fopen(Api\Cache::getSession($content['application'], 'csvfile'), "rb")) !== FALSE |
|
| 132 | 132 | ) { |
| 133 | 133 | $data = fgetcsv($handle, 8000, $content['fieldsep']); |
| 134 | 134 | //error_log(array2string($data)); |
| 135 | 135 | fclose($handle); |
| 136 | 136 | |
| 137 | 137 | // Remove & forget file |
| 138 | - unlink(Api\Cache::getSession($content['application'],'csvfile')); |
|
| 138 | + unlink(Api\Cache::getSession($content['application'], 'csvfile')); |
|
| 139 | 139 | Api\Cache::setSession($content['application'], 'csvfile', ''); |
| 140 | - $content['csv_fields'] = Api\Translation::convert($data,$content['charset']); |
|
| 140 | + $content['csv_fields'] = Api\Translation::convert($data, $content['charset']); |
|
| 141 | 141 | |
| 142 | 142 | // Reset field mapping for new file |
| 143 | 143 | $content['field_mapping'] = array(); |
| 144 | 144 | |
| 145 | 145 | // Try to match automatically |
| 146 | 146 | $english = array(); |
| 147 | - foreach($content['csv_fields'] as $index => $field) { |
|
| 148 | - if($content['field_mapping'][$index]) continue; |
|
| 147 | + foreach ($content['csv_fields'] as $index => $field) { |
|
| 148 | + if ($content['field_mapping'][$index]) continue; |
|
| 149 | 149 | $best_match = ''; |
| 150 | 150 | $best_match_value = 0; |
| 151 | - foreach($this->mapping_fields as $key => $field_name) { |
|
| 152 | - if(is_array($field_name)) continue; |
|
| 153 | - if(strcasecmp($field, $field_name) == 0 || strcasecmp($field,$key) == 0) { |
|
| 151 | + foreach ($this->mapping_fields as $key => $field_name) { |
|
| 152 | + if (is_array($field_name)) continue; |
|
| 153 | + if (strcasecmp($field, $field_name) == 0 || strcasecmp($field, $key) == 0) { |
|
| 154 | 154 | $content['field_mapping'][$index] = $key; |
| 155 | 155 | continue 2; |
| 156 | 156 | } |
| 157 | 157 | // Check english also |
| 158 | - if($GLOBALS['egw_info']['user']['preferences']['common']['lang'] != 'en' && !isset($english[$field_name])) { |
|
| 158 | + if ($GLOBALS['egw_info']['user']['preferences']['common']['lang'] != 'en' && !isset($english[$field_name])) { |
|
| 159 | 159 | $msg_id = Api\Translation::get_message_id($field_name, $content['application']); |
| 160 | 160 | } |
| 161 | - if($msg_id) { |
|
| 161 | + if ($msg_id) { |
|
| 162 | 162 | $english[$field_name] = Api\Translation::read('en', $content['application'], $msg_id); |
| 163 | 163 | } else { |
| 164 | 164 | $english[$field_name] = false; |
| 165 | 165 | } |
| 166 | - if($english[$field_name] && strcasecmp($field, $english[$field_name]) == 0) { |
|
| 166 | + if ($english[$field_name] && strcasecmp($field, $english[$field_name]) == 0) { |
|
| 167 | 167 | $content['field_mapping'][$index] = $key; |
| 168 | 168 | continue 2; |
| 169 | 169 | } |
| 170 | 170 | |
| 171 | 171 | // Check for similar but slightly different |
| 172 | 172 | $match = 0; |
| 173 | - if(similar_text(strtolower($field), strtolower($field_name), $match) && |
|
| 173 | + if (similar_text(strtolower($field), strtolower($field_name), $match) && |
|
| 174 | 174 | $match > 85 && |
| 175 | 175 | $match > $best_match_value |
| 176 | 176 | ) { |
@@ -179,20 +179,20 @@ discard block |
||
| 179 | 179 | } |
| 180 | 180 | |
| 181 | 181 | } |
| 182 | - if($best_match) { |
|
| 182 | + if ($best_match) { |
|
| 183 | 183 | $content['field_mapping'][$index] = $best_match; |
| 184 | 184 | } |
| 185 | 185 | } |
| 186 | - } elseif(!$content['csv_fields'] && $content['plugin_options']['csv_fields']) { |
|
| 186 | + } elseif (!$content['csv_fields'] && $content['plugin_options']['csv_fields']) { |
|
| 187 | 187 | $content['csv_fields'] = $content['plugin_options']['csv_fields']; |
| 188 | 188 | } |
| 189 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],1); |
|
| 189 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], 1); |
|
| 190 | 190 | case 'previous' : |
| 191 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],-1); |
|
| 191 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], -1); |
|
| 192 | 192 | case 'finish': |
| 193 | 193 | return 'wizard_finish'; |
| 194 | 194 | default : |
| 195 | - return $this->wizard_step40($content,$sel_options,$readonlys,$preserv); |
|
| 195 | + return $this->wizard_step40($content, $sel_options, $readonlys, $preserv); |
|
| 196 | 196 | } |
| 197 | 197 | } |
| 198 | 198 | // init step40 |
@@ -202,17 +202,17 @@ discard block |
||
| 202 | 202 | $content['step'] = 'wizard_step40'; |
| 203 | 203 | |
| 204 | 204 | // If editing an existing definition, these will be in plugin_options |
| 205 | - if(!$content['fieldsep'] && $content['plugin_options']['fieldsep']) { |
|
| 205 | + if (!$content['fieldsep'] && $content['plugin_options']['fieldsep']) { |
|
| 206 | 206 | $content['fieldsep'] = $content['plugin_options']['fieldsep']; |
| 207 | 207 | } elseif (!$content['fieldsep']) { |
| 208 | 208 | $content['fieldsep'] = ';'; |
| 209 | 209 | } |
| 210 | - if(!$content['charset'] && $content['plugin_options']['charset']) { |
|
| 210 | + if (!$content['charset'] && $content['plugin_options']['charset']) { |
|
| 211 | 211 | $content['charset'] = $content['plugin_options']['charset']; |
| 212 | 212 | } |
| 213 | - if(!array_key_exists('num_header_lines', $content)) |
|
| 213 | + if (!array_key_exists('num_header_lines', $content)) |
|
| 214 | 214 | { |
| 215 | - if(is_array($content['plugin_options']) && array_key_exists('num_header_lines', $content['plugin_options'])) |
|
| 215 | + if (is_array($content['plugin_options']) && array_key_exists('num_header_lines', $content['plugin_options'])) |
|
| 216 | 216 | { |
| 217 | 217 | $content['num_header_lines'] = $content['plugin_options']['num_header_lines']; |
| 218 | 218 | } |
@@ -222,10 +222,10 @@ discard block |
||
| 222 | 222 | $content['num_header_lines'] = 1; |
| 223 | 223 | } |
| 224 | 224 | } |
| 225 | - if(!$content['update_cats'] && $content['plugin_options']['update_cats']) { |
|
| 225 | + if (!$content['update_cats'] && $content['plugin_options']['update_cats']) { |
|
| 226 | 226 | $content['update_cats'] = $content['plugin_options']['update_cats']; |
| 227 | 227 | } |
| 228 | - if(!array_key_exists('convert', $content) && is_array($content['plugin_options']) && array_key_exists('convert', $content['plugin_options'])) { |
|
| 228 | + if (!array_key_exists('convert', $content) && is_array($content['plugin_options']) && array_key_exists('convert', $content['plugin_options'])) { |
|
| 229 | 229 | $content['convert'] = $content['plugin_options']['convert']; |
| 230 | 230 | } |
| 231 | 231 | else |
@@ -234,24 +234,24 @@ discard block |
||
| 234 | 234 | $content['convert'] = 1; |
| 235 | 235 | } |
| 236 | 236 | |
| 237 | - $sel_options['charset'] = Api\Translation::get_installed_charsets()+ |
|
| 237 | + $sel_options['charset'] = Api\Translation::get_installed_charsets() + |
|
| 238 | 238 | array( |
| 239 | 239 | 'user' => lang('User preference'), |
| 240 | 240 | ); |
| 241 | 241 | |
| 242 | 242 | // Add in extra allowed charsets |
| 243 | 243 | $config = Api\Config::read('importexport'); |
| 244 | - $extra_charsets = array_intersect(explode(',',$config['import_charsets']), mb_list_encodings()); |
|
| 245 | - if($extra_charsets) |
|
| 244 | + $extra_charsets = array_intersect(explode(',', $config['import_charsets']), mb_list_encodings()); |
|
| 245 | + if ($extra_charsets) |
|
| 246 | 246 | { |
| 247 | - $sel_options['charset'] += array(lang('Extra encodings') => array_combine($extra_charsets,$extra_charsets)); |
|
| 247 | + $sel_options['charset'] += array(lang('Extra encodings') => array_combine($extra_charsets, $extra_charsets)); |
|
| 248 | 248 | } |
| 249 | 249 | $sel_options['convert'] = array( |
| 250 | 250 | 0 => lang('Database values'), |
| 251 | 251 | 1 => lang('Human friendly values') |
| 252 | 252 | ); |
| 253 | 253 | $preserv = $content; |
| 254 | - if($this->mapping_fields['cat_id']) { |
|
| 254 | + if ($this->mapping_fields['cat_id']) { |
|
| 255 | 255 | $sel_options['update_cats'] = array( |
| 256 | 256 | 'add' => lang('Add'), |
| 257 | 257 | 'replace'=> lang('Replace') |
@@ -273,18 +273,18 @@ discard block |
||
| 273 | 273 | */ |
| 274 | 274 | function wizard_step50(&$content, &$sel_options, &$readonlys, &$preserv) |
| 275 | 275 | { |
| 276 | - if($this->debug) error_log(get_class($this) . '::wizard_step50->$content '.print_r($content,true)); |
|
| 276 | + if ($this->debug) error_log(get_class($this).'::wizard_step50->$content '.print_r($content, true)); |
|
| 277 | 277 | // return from step50 |
| 278 | 278 | if ($content['step'] == 'wizard_step50') |
| 279 | 279 | { |
| 280 | 280 | unset($content['field_mapping']); |
| 281 | 281 | unset($content['field_conversion']); |
| 282 | - foreach($content['mapping'] as $field) |
|
| 282 | + foreach ($content['mapping'] as $field) |
|
| 283 | 283 | { |
| 284 | 284 | $index = $field['index']; |
| 285 | - foreach(array('conversion'=>'field_conversion', 'field' => 'field_mapping') as $id => $dest) |
|
| 285 | + foreach (array('conversion'=>'field_conversion', 'field' => 'field_mapping') as $id => $dest) |
|
| 286 | 286 | { |
| 287 | - if(trim($field[$id]) != '' && $field[$id] !== '--NONE--') |
|
| 287 | + if (trim($field[$id]) != '' && $field[$id] !== '--NONE--') |
|
| 288 | 288 | { |
| 289 | 289 | $content[$dest][$index] = trim($field[$id]); |
| 290 | 290 | } |
@@ -294,13 +294,13 @@ discard block |
||
| 294 | 294 | switch (array_search('pressed', $content['button'])) |
| 295 | 295 | { |
| 296 | 296 | case 'next': |
| 297 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],1); |
|
| 297 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], 1); |
|
| 298 | 298 | case 'previous' : |
| 299 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],-1); |
|
| 299 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], -1); |
|
| 300 | 300 | case 'finish': |
| 301 | 301 | return 'wizard_finish'; |
| 302 | 302 | default : |
| 303 | - return $this->wizard_step50($content,$sel_options,$readonlys,$preserv); |
|
| 303 | + return $this->wizard_step50($content, $sel_options, $readonlys, $preserv); |
|
| 304 | 304 | } |
| 305 | 305 | } |
| 306 | 306 | // init step50 |
@@ -310,7 +310,7 @@ discard block |
||
| 310 | 310 | $content['step'] = 'wizard_step50'; |
| 311 | 311 | |
| 312 | 312 | $content['mapping'] = array(false); |
| 313 | - if(array_key_exists('field_mapping', $content)) |
|
| 313 | + if (array_key_exists('field_mapping', $content)) |
|
| 314 | 314 | { |
| 315 | 315 | $field = $content['field_mapping']; |
| 316 | 316 | $conversion = $content['field_conversion']; |
@@ -321,7 +321,7 @@ discard block |
||
| 321 | 321 | $conversion = $content['plugin_options']['field_conversion']; |
| 322 | 322 | } |
| 323 | 323 | $empties = 1; |
| 324 | - foreach($content['csv_fields'] as $index => $title) |
|
| 324 | + foreach ($content['csv_fields'] as $index => $title) |
|
| 325 | 325 | { |
| 326 | 326 | $content['mapping'][] = array( |
| 327 | 327 | 'index' => $index, |
@@ -329,15 +329,15 @@ discard block |
||
| 329 | 329 | 'field' => $field[$index], |
| 330 | 330 | 'conversion' => $conversion[$index] |
| 331 | 331 | ); |
| 332 | - if(strstr($title,lang('Extra %1'))) $empties++; |
|
| 332 | + if (strstr($title, lang('Extra %1'))) $empties++; |
|
| 333 | 333 | } |
| 334 | - while($empties <= 3) |
|
| 334 | + while ($empties <= 3) |
|
| 335 | 335 | { |
| 336 | 336 | $content['mapping'][] = array( |
| 337 | 337 | 'index' => $index + $empties, |
| 338 | 338 | 'title' => lang('Extra %1', $empties), |
| 339 | - 'field' => $field[$index+$empties], |
|
| 340 | - 'conversion' => $conversion[$index+$empties] |
|
| 339 | + 'field' => $field[$index + $empties], |
|
| 340 | + 'conversion' => $conversion[$index + $empties] |
|
| 341 | 341 | ); |
| 342 | 342 | $empties++; |
| 343 | 343 | } |
@@ -355,7 +355,7 @@ discard block |
||
| 355 | 355 | */ |
| 356 | 356 | function wizard_step55(&$content, &$sel_options, &$readonlys, &$preserv) |
| 357 | 357 | { |
| 358 | - if($this->debug) error_log(get_class($this) . '::wizard_step55->$content '.print_r($content,true)); |
|
| 358 | + if ($this->debug) error_log(get_class($this).'::wizard_step55->$content '.print_r($content, true)); |
|
| 359 | 359 | |
| 360 | 360 | // return from step55 |
| 361 | 361 | if ($content['step'] == 'wizard_step55') |
@@ -363,8 +363,8 @@ discard block |
||
| 363 | 363 | |
| 364 | 364 | // Clear conditions that don't do anything |
| 365 | 365 | array_shift($content['conditions']); |
| 366 | - foreach($content['conditions'] as $key => &$condition) { |
|
| 367 | - if(($condition['true']['action'] == 'none' || !$condition['true']['action']) |
|
| 366 | + foreach ($content['conditions'] as $key => &$condition) { |
|
| 367 | + if (($condition['true']['action'] == 'none' || !$condition['true']['action']) |
|
| 368 | 368 | && ($condition['false']['action'] == 'none' || !$condition['false']['action']) && |
| 369 | 369 | !$condition['string'] |
| 370 | 370 | ) { |
@@ -373,7 +373,7 @@ discard block |
||
| 373 | 373 | } |
| 374 | 374 | |
| 375 | 375 | // Check for true without false, or false without true - set to 'none' |
| 376 | - elseif($condition['true']['action'] == '' && $condition['false']['action'] != '' || |
|
| 376 | + elseif ($condition['true']['action'] == '' && $condition['false']['action'] != '' || |
|
| 377 | 377 | $condition['true']['action'] != '' && $condition['false']['action'] == '' || |
| 378 | 378 | !$condition['true'] || !$condition['false'] |
| 379 | 379 | ) |
@@ -385,9 +385,9 @@ discard block |
||
| 385 | 385 | switch (array_search('pressed', $content['button'])) |
| 386 | 386 | { |
| 387 | 387 | case 'next': |
| 388 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],1); |
|
| 388 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], 1); |
|
| 389 | 389 | case 'previous' : |
| 390 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],-1); |
|
| 390 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], -1); |
|
| 391 | 391 | case 'finish': |
| 392 | 392 | return 'wizard_finish'; |
| 393 | 393 | case 'add': |
@@ -396,7 +396,7 @@ discard block |
||
| 396 | 396 | $content['conditions'][] = array('string' => ''); |
| 397 | 397 | return 'wizard_step55'; |
| 398 | 398 | default : |
| 399 | - return $this->wizard_step55($content,$sel_options,$readonlys,$preserv); |
|
| 399 | + return $this->wizard_step55($content, $sel_options, $readonlys, $preserv); |
|
| 400 | 400 | break; |
| 401 | 401 | } |
| 402 | 402 | } |
@@ -404,18 +404,18 @@ discard block |
||
| 404 | 404 | $content['text'] = $this->steps['wizard_step55']; |
| 405 | 405 | $content['step'] = 'wizard_step55'; |
| 406 | 406 | |
| 407 | - if(!$content['conditions'] && $content['plugin_options']['conditions']) { |
|
| 407 | + if (!$content['conditions'] && $content['plugin_options']['conditions']) { |
|
| 408 | 408 | $content['conditions'] = $content['plugin_options']['conditions']; |
| 409 | 409 | } |
| 410 | 410 | $preserv = $content; |
| 411 | 411 | |
| 412 | - foreach($content['field_mapping'] as $field) { |
|
| 412 | + foreach ($content['field_mapping'] as $field) { |
|
| 413 | 413 | $sel_options['string'][$field] = $this->mapping_fields[$field]; |
| 414 | - if(!$sel_options['string'][$field]) |
|
| 414 | + if (!$sel_options['string'][$field]) |
|
| 415 | 415 | { |
| 416 | - foreach($this->mapping_fields as $fields) |
|
| 416 | + foreach ($this->mapping_fields as $fields) |
|
| 417 | 417 | { |
| 418 | - if(is_array($fields) && $fields[$field]) |
|
| 418 | + if (is_array($fields) && $fields[$field]) |
|
| 419 | 419 | { |
| 420 | 420 | $sel_options['string'][$field] = $fields[$field]; |
| 421 | 421 | } |
@@ -450,7 +450,7 @@ discard block |
||
| 450 | 450 | */ |
| 451 | 451 | public function wizard_step65(&$content, &$sel_options, &$readonlys, &$preserv) |
| 452 | 452 | { |
| 453 | - if($this->debug) error_log(__METHOD__ . '->$content '.print_r($content,true)); |
|
| 453 | + if ($this->debug) error_log(__METHOD__.'->$content '.print_r($content, true)); |
|
| 454 | 454 | |
| 455 | 455 | // return from step65 |
| 456 | 456 | if ($content['step'] == 'wizard_step65') |
@@ -458,13 +458,13 @@ discard block |
||
| 458 | 458 | switch (array_search('pressed', $content['button'])) |
| 459 | 459 | { |
| 460 | 460 | case 'next': |
| 461 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],1); |
|
| 461 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], 1); |
|
| 462 | 462 | case 'previous' : |
| 463 | - return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],-1); |
|
| 463 | + return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'], -1); |
|
| 464 | 464 | case 'finish': |
| 465 | 465 | return 'wizard_finish'; |
| 466 | 466 | default : |
| 467 | - return $this->wizard_step65($content,$sel_options,$readonlys,$preserv); |
|
| 467 | + return $this->wizard_step65($content, $sel_options, $readonlys, $preserv); |
|
| 468 | 468 | break; |
| 469 | 469 | } |
| 470 | 470 | } |
@@ -472,18 +472,18 @@ discard block |
||
| 472 | 472 | $content['text'] = $this->steps['wizard_step65']; |
| 473 | 473 | $content['step'] = 'wizard_step65'; |
| 474 | 474 | |
| 475 | - if(!$content['override_values'] && $content['plugin_options']['override_values']) { |
|
| 475 | + if (!$content['override_values'] && $content['plugin_options']['override_values']) { |
|
| 476 | 476 | $content['override_values'] = $content['plugin_options']['override_values']; |
| 477 | 477 | } |
| 478 | 478 | $preserv = $content; |
| 479 | 479 | |
| 480 | - foreach($content['field_mapping'] as $field) { |
|
| 480 | + foreach ($content['field_mapping'] as $field) { |
|
| 481 | 481 | $sel_options['string'][$field] = $this->mapping_fields[$field]; |
| 482 | - if(!$sel_options['string'][$field]) |
|
| 482 | + if (!$sel_options['string'][$field]) |
|
| 483 | 483 | { |
| 484 | - foreach($this->mapping_fields as $fields) |
|
| 484 | + foreach ($this->mapping_fields as $fields) |
|
| 485 | 485 | { |
| 486 | - if(is_array($fields) && $fields[$field]) |
|
| 486 | + if (is_array($fields) && $fields[$field]) |
|
| 487 | 487 | { |
| 488 | 488 | $sel_options['string'][$field] = $fields[$field]; |
| 489 | 489 | } |
@@ -75,7 +75,10 @@ discard block |
||
| 75 | 75 | */ |
| 76 | 76 | function wizard_step30(&$content, &$sel_options, &$readonlys, &$preserv) |
| 77 | 77 | { |
| 78 | - if($this->debug) error_log(get_class($this) . '::wizard_step30->$content '.print_r($content,true)); |
|
| 78 | + if($this->debug) |
|
| 79 | + { |
|
| 80 | + error_log(get_class($this) . '::wizard_step30->$content '.print_r($content,true)); |
|
| 81 | + } |
|
| 79 | 82 | // return from step30 |
| 80 | 83 | if ($content['step'] == 'wizard_step30') |
| 81 | 84 | { |
@@ -83,7 +86,8 @@ discard block |
||
| 83 | 86 | { |
| 84 | 87 | case 'next': |
| 85 | 88 | // Move sample file to temp |
| 86 | - if($content['file']['tmp_name']) { |
|
| 89 | + if($content['file']['tmp_name']) |
|
| 90 | + { |
|
| 87 | 91 | Api\Cache::setSession($content['application'], 'csvfile', $content['file']['tmp_name']); |
| 88 | 92 | } |
| 89 | 93 | unset($content['file']); |
@@ -120,9 +124,13 @@ discard block |
||
| 120 | 124 | */ |
| 121 | 125 | function wizard_step40(&$content, &$sel_options, &$readonlys, &$preserv) |
| 122 | 126 | { |
| 123 | - if($this->debug) error_log(get_class($this) . '::wizard_step40->$content '.print_r($content,true)); |
|
| 127 | + if($this->debug) |
|
| 128 | + { |
|
| 129 | + error_log(get_class($this) . '::wizard_step40->$content '.print_r($content,true)); |
|
| 130 | + } |
|
| 124 | 131 | // return from step40 |
| 125 | - if ($content['step'] == 'wizard_step40') { |
|
| 132 | + if ($content['step'] == 'wizard_step40') |
|
| 133 | + { |
|
| 126 | 134 | switch (array_search('pressed', $content['button'])) |
| 127 | 135 | { |
| 128 | 136 | case 'next': |
@@ -144,26 +152,40 @@ discard block |
||
| 144 | 152 | |
| 145 | 153 | // Try to match automatically |
| 146 | 154 | $english = array(); |
| 147 | - foreach($content['csv_fields'] as $index => $field) { |
|
| 148 | - if($content['field_mapping'][$index]) continue; |
|
| 155 | + foreach($content['csv_fields'] as $index => $field) |
|
| 156 | + { |
|
| 157 | + if($content['field_mapping'][$index]) |
|
| 158 | + { |
|
| 159 | + continue; |
|
| 160 | + } |
|
| 149 | 161 | $best_match = ''; |
| 150 | 162 | $best_match_value = 0; |
| 151 | - foreach($this->mapping_fields as $key => $field_name) { |
|
| 152 | - if(is_array($field_name)) continue; |
|
| 153 | - if(strcasecmp($field, $field_name) == 0 || strcasecmp($field,$key) == 0) { |
|
| 163 | + foreach($this->mapping_fields as $key => $field_name) |
|
| 164 | + { |
|
| 165 | + if(is_array($field_name)) |
|
| 166 | + { |
|
| 167 | + continue; |
|
| 168 | + } |
|
| 169 | + if(strcasecmp($field, $field_name) == 0 || strcasecmp($field,$key) == 0) |
|
| 170 | + { |
|
| 154 | 171 | $content['field_mapping'][$index] = $key; |
| 155 | 172 | continue 2; |
| 156 | 173 | } |
| 157 | 174 | // Check english also |
| 158 | - if($GLOBALS['egw_info']['user']['preferences']['common']['lang'] != 'en' && !isset($english[$field_name])) { |
|
| 175 | + if($GLOBALS['egw_info']['user']['preferences']['common']['lang'] != 'en' && !isset($english[$field_name])) |
|
| 176 | + { |
|
| 159 | 177 | $msg_id = Api\Translation::get_message_id($field_name, $content['application']); |
| 160 | 178 | } |
| 161 | - if($msg_id) { |
|
| 179 | + if($msg_id) |
|
| 180 | + { |
|
| 162 | 181 | $english[$field_name] = Api\Translation::read('en', $content['application'], $msg_id); |
| 163 | - } else { |
|
| 182 | + } |
|
| 183 | + else |
|
| 184 | + { |
|
| 164 | 185 | $english[$field_name] = false; |
| 165 | 186 | } |
| 166 | - if($english[$field_name] && strcasecmp($field, $english[$field_name]) == 0) { |
|
| 187 | + if($english[$field_name] && strcasecmp($field, $english[$field_name]) == 0) |
|
| 188 | + { |
|
| 167 | 189 | $content['field_mapping'][$index] = $key; |
| 168 | 190 | continue 2; |
| 169 | 191 | } |
@@ -179,11 +201,14 @@ discard block |
||
| 179 | 201 | } |
| 180 | 202 | |
| 181 | 203 | } |
| 182 | - if($best_match) { |
|
| 204 | + if($best_match) |
|
| 205 | + { |
|
| 183 | 206 | $content['field_mapping'][$index] = $best_match; |
| 184 | 207 | } |
| 185 | 208 | } |
| 186 | - } elseif(!$content['csv_fields'] && $content['plugin_options']['csv_fields']) { |
|
| 209 | + } |
|
| 210 | + elseif(!$content['csv_fields'] && $content['plugin_options']['csv_fields']) |
|
| 211 | + { |
|
| 187 | 212 | $content['csv_fields'] = $content['plugin_options']['csv_fields']; |
| 188 | 213 | } |
| 189 | 214 | return $GLOBALS['egw']->importexport_definitions_ui->get_step($content['step'],1); |
@@ -202,12 +227,16 @@ discard block |
||
| 202 | 227 | $content['step'] = 'wizard_step40'; |
| 203 | 228 | |
| 204 | 229 | // If editing an existing definition, these will be in plugin_options |
| 205 | - if(!$content['fieldsep'] && $content['plugin_options']['fieldsep']) { |
|
| 230 | + if(!$content['fieldsep'] && $content['plugin_options']['fieldsep']) |
|
| 231 | + { |
|
| 206 | 232 | $content['fieldsep'] = $content['plugin_options']['fieldsep']; |
| 207 | - } elseif (!$content['fieldsep']) { |
|
| 233 | + } |
|
| 234 | + elseif (!$content['fieldsep']) |
|
| 235 | + { |
|
| 208 | 236 | $content['fieldsep'] = ';'; |
| 209 | 237 | } |
| 210 | - if(!$content['charset'] && $content['plugin_options']['charset']) { |
|
| 238 | + if(!$content['charset'] && $content['plugin_options']['charset']) |
|
| 239 | + { |
|
| 211 | 240 | $content['charset'] = $content['plugin_options']['charset']; |
| 212 | 241 | } |
| 213 | 242 | if(!array_key_exists('num_header_lines', $content)) |
@@ -222,10 +251,12 @@ discard block |
||
| 222 | 251 | $content['num_header_lines'] = 1; |
| 223 | 252 | } |
| 224 | 253 | } |
| 225 | - if(!$content['update_cats'] && $content['plugin_options']['update_cats']) { |
|
| 254 | + if(!$content['update_cats'] && $content['plugin_options']['update_cats']) |
|
| 255 | + { |
|
| 226 | 256 | $content['update_cats'] = $content['plugin_options']['update_cats']; |
| 227 | 257 | } |
| 228 | - if(!array_key_exists('convert', $content) && is_array($content['plugin_options']) && array_key_exists('convert', $content['plugin_options'])) { |
|
| 258 | + if(!array_key_exists('convert', $content) && is_array($content['plugin_options']) && array_key_exists('convert', $content['plugin_options'])) |
|
| 259 | + { |
|
| 229 | 260 | $content['convert'] = $content['plugin_options']['convert']; |
| 230 | 261 | } |
| 231 | 262 | else |
@@ -251,12 +282,15 @@ discard block |
||
| 251 | 282 | 1 => lang('Human friendly values') |
| 252 | 283 | ); |
| 253 | 284 | $preserv = $content; |
| 254 | - if($this->mapping_fields['cat_id']) { |
|
| 285 | + if($this->mapping_fields['cat_id']) |
|
| 286 | + { |
|
| 255 | 287 | $sel_options['update_cats'] = array( |
| 256 | 288 | 'add' => lang('Add'), |
| 257 | 289 | 'replace'=> lang('Replace') |
| 258 | 290 | ); |
| 259 | - } else { |
|
| 291 | + } |
|
| 292 | + else |
|
| 293 | + { |
|
| 260 | 294 | $content['no_cats'] = true; |
| 261 | 295 | } |
| 262 | 296 | unset ($preserv['button']); |
@@ -273,7 +307,10 @@ discard block |
||
| 273 | 307 | */ |
| 274 | 308 | function wizard_step50(&$content, &$sel_options, &$readonlys, &$preserv) |
| 275 | 309 | { |
| 276 | - if($this->debug) error_log(get_class($this) . '::wizard_step50->$content '.print_r($content,true)); |
|
| 310 | + if($this->debug) |
|
| 311 | + { |
|
| 312 | + error_log(get_class($this) . '::wizard_step50->$content '.print_r($content,true)); |
|
| 313 | + } |
|
| 277 | 314 | // return from step50 |
| 278 | 315 | if ($content['step'] == 'wizard_step50') |
| 279 | 316 | { |
@@ -329,7 +366,10 @@ discard block |
||
| 329 | 366 | 'field' => $field[$index], |
| 330 | 367 | 'conversion' => $conversion[$index] |
| 331 | 368 | ); |
| 332 | - if(strstr($title,lang('Extra %1'))) $empties++; |
|
| 369 | + if(strstr($title,lang('Extra %1'))) |
|
| 370 | + { |
|
| 371 | + $empties++; |
|
| 372 | + } |
|
| 333 | 373 | } |
| 334 | 374 | while($empties <= 3) |
| 335 | 375 | { |
@@ -355,7 +395,10 @@ discard block |
||
| 355 | 395 | */ |
| 356 | 396 | function wizard_step55(&$content, &$sel_options, &$readonlys, &$preserv) |
| 357 | 397 | { |
| 358 | - if($this->debug) error_log(get_class($this) . '::wizard_step55->$content '.print_r($content,true)); |
|
| 398 | + if($this->debug) |
|
| 399 | + { |
|
| 400 | + error_log(get_class($this) . '::wizard_step55->$content '.print_r($content,true)); |
|
| 401 | + } |
|
| 359 | 402 | |
| 360 | 403 | // return from step55 |
| 361 | 404 | if ($content['step'] == 'wizard_step55') |
@@ -363,7 +406,8 @@ discard block |
||
| 363 | 406 | |
| 364 | 407 | // Clear conditions that don't do anything |
| 365 | 408 | array_shift($content['conditions']); |
| 366 | - foreach($content['conditions'] as $key => &$condition) { |
|
| 409 | + foreach($content['conditions'] as $key => &$condition) |
|
| 410 | + { |
|
| 367 | 411 | if(($condition['true']['action'] == 'none' || !$condition['true']['action']) |
| 368 | 412 | && ($condition['false']['action'] == 'none' || !$condition['false']['action']) && |
| 369 | 413 | !$condition['string'] |
@@ -376,8 +420,7 @@ discard block |
||
| 376 | 420 | elseif($condition['true']['action'] == '' && $condition['false']['action'] != '' || |
| 377 | 421 | $condition['true']['action'] != '' && $condition['false']['action'] == '' || |
| 378 | 422 | !$condition['true'] || !$condition['false'] |
| 379 | - ) |
|
| 380 | - { |
|
| 423 | + ) { |
|
| 381 | 424 | $condition[$condition['true']['action'] == '' ? 'true' : 'false']['action'] = "none"; |
| 382 | 425 | } |
| 383 | 426 | } |
@@ -404,12 +447,14 @@ discard block |
||
| 404 | 447 | $content['text'] = $this->steps['wizard_step55']; |
| 405 | 448 | $content['step'] = 'wizard_step55'; |
| 406 | 449 | |
| 407 | - if(!$content['conditions'] && $content['plugin_options']['conditions']) { |
|
| 450 | + if(!$content['conditions'] && $content['plugin_options']['conditions']) |
|
| 451 | + { |
|
| 408 | 452 | $content['conditions'] = $content['plugin_options']['conditions']; |
| 409 | 453 | } |
| 410 | 454 | $preserv = $content; |
| 411 | 455 | |
| 412 | - foreach($content['field_mapping'] as $field) { |
|
| 456 | + foreach($content['field_mapping'] as $field) |
|
| 457 | + { |
|
| 413 | 458 | $sel_options['string'][$field] = $this->mapping_fields[$field]; |
| 414 | 459 | if(!$sel_options['string'][$field]) |
| 415 | 460 | { |
@@ -450,7 +495,10 @@ discard block |
||
| 450 | 495 | */ |
| 451 | 496 | public function wizard_step65(&$content, &$sel_options, &$readonlys, &$preserv) |
| 452 | 497 | { |
| 453 | - if($this->debug) error_log(__METHOD__ . '->$content '.print_r($content,true)); |
|
| 498 | + if($this->debug) |
|
| 499 | + { |
|
| 500 | + error_log(__METHOD__ . '->$content '.print_r($content,true)); |
|
| 501 | + } |
|
| 454 | 502 | |
| 455 | 503 | // return from step65 |
| 456 | 504 | if ($content['step'] == 'wizard_step65') |
@@ -472,12 +520,14 @@ discard block |
||
| 472 | 520 | $content['text'] = $this->steps['wizard_step65']; |
| 473 | 521 | $content['step'] = 'wizard_step65'; |
| 474 | 522 | |
| 475 | - if(!$content['override_values'] && $content['plugin_options']['override_values']) { |
|
| 523 | + if(!$content['override_values'] && $content['plugin_options']['override_values']) |
|
| 524 | + { |
|
| 476 | 525 | $content['override_values'] = $content['plugin_options']['override_values']; |
| 477 | 526 | } |
| 478 | 527 | $preserv = $content; |
| 479 | 528 | |
| 480 | - foreach($content['field_mapping'] as $field) { |
|
| 529 | + foreach($content['field_mapping'] as $field) |
|
| 530 | + { |
|
| 481 | 531 | $sel_options['string'][$field] = $this->mapping_fields[$field]; |
| 482 | 532 | if(!$sel_options['string'][$field]) |
| 483 | 533 | { |
@@ -20,7 +20,7 @@ discard block |
||
| 20 | 20 | { |
| 21 | 21 | var $public_functions = array('index' => True); |
| 22 | 22 | |
| 23 | - function index($params=null) |
|
| 23 | + function index($params = null) |
|
| 24 | 24 | { |
| 25 | 25 | // if we have a xet file, run new et2 config |
| 26 | 26 | if (file_exists(EGW_SERVER_ROOT.'/'.$_GET['appname'].'/templates/default/config.xet')) |
@@ -46,7 +46,7 @@ discard block |
||
| 46 | 46 | //_debug_array($params); |
| 47 | 47 | $_appname = $_GET['appname']; |
| 48 | 48 | } |
| 49 | - if ($GLOBALS['egw']->acl->check('site_config_acce',1,'admin')) |
|
| 49 | + if ($GLOBALS['egw']->acl->check('site_config_acce', 1, 'admin')) |
|
| 50 | 50 | { |
| 51 | 51 | Egw::redirect_link('/index.php'); |
| 52 | 52 | } |
@@ -57,12 +57,12 @@ discard block |
||
| 57 | 57 | Api\Translation::add_app($_appname); |
| 58 | 58 | } |
| 59 | 59 | |
| 60 | - if(get_magic_quotes_gpc() && is_array($_POST['newsettings'])) |
|
| 60 | + if (get_magic_quotes_gpc() && is_array($_POST['newsettings'])) |
|
| 61 | 61 | { |
| 62 | 62 | $_POST['newsettings'] = array_stripslashes($_POST['newsettings']); |
| 63 | 63 | } |
| 64 | 64 | |
| 65 | - switch($_appname) |
|
| 65 | + switch ($_appname) |
|
| 66 | 66 | { |
| 67 | 67 | case 'admin': |
| 68 | 68 | case 'addressbook': |
@@ -89,7 +89,7 @@ discard block |
||
| 89 | 89 | $t = new Framework\Template(Framework\Template::get_dir($appname)); |
| 90 | 90 | $t->set_unknowns('keep'); |
| 91 | 91 | $t->set_file(array('config' => 'config.tpl')); |
| 92 | - $t->set_block('config','header','header'); |
|
| 92 | + $t->set_block('config', 'header', 'header'); |
|
| 93 | 93 | |
| 94 | 94 | // fix header templates missing essential parts like display of validation errors |
| 95 | 95 | $header = $t->get_var('header'); |
@@ -107,15 +107,15 @@ discard block |
||
| 107 | 107 | } |
| 108 | 108 | $t->set_var('header', $header); |
| 109 | 109 | |
| 110 | - $t->set_block('config','body','body'); |
|
| 111 | - $t->set_block('config','footer','footer'); |
|
| 110 | + $t->set_block('config', 'body', 'body'); |
|
| 111 | + $t->set_block('config', 'footer', 'footer'); |
|
| 112 | 112 | |
| 113 | 113 | // fix footer submit buttons to just {submit} {cancel} |
| 114 | 114 | $t->set_var('footer', preg_replace('/<input[^>]+value="{lang_(submit|cancel)}"[^>]*>/', '{$1}', $t->get_var('footer'))); |
| 115 | 115 | |
| 116 | 116 | $c = new Api\Config($config_appname); |
| 117 | 117 | $c->read_repository(); |
| 118 | - if ($_POST['cancel'] || ($_POST['submit'] || $_POST['save'] || $_POST['apply']) && $GLOBALS['egw']->acl->check('site_config_acce',2,'admin')) |
|
| 118 | + if ($_POST['cancel'] || ($_POST['submit'] || $_POST['save'] || $_POST['apply']) && $GLOBALS['egw']->acl->check('site_config_acce', 2, 'admin')) |
|
| 119 | 119 | { |
| 120 | 120 | Egw::redirect_link('/admin/index.php?ajax=true'); |
| 121 | 121 | } |
@@ -123,9 +123,9 @@ discard block |
||
| 123 | 123 | if ($_POST['submit'] || $_POST['save'] || $_POST['apply']) |
| 124 | 124 | { |
| 125 | 125 | /* Load hook file with functions to validate each Api\Config (one/none/all) */ |
| 126 | - Api\Hooks::single('config_validate',$appname); |
|
| 126 | + Api\Hooks::single('config_validate', $appname); |
|
| 127 | 127 | |
| 128 | - foreach($_POST['newsettings'] as $key => $config) |
|
| 128 | + foreach ($_POST['newsettings'] as $key => $config) |
|
| 129 | 129 | { |
| 130 | 130 | if ($config) |
| 131 | 131 | { |
@@ -133,26 +133,26 @@ discard block |
||
| 133 | 133 | if (in_array($key, (array)$GLOBALS['egw_info']['server']['found_validation_hook'], true) && function_exists($key)) |
| 134 | 134 | { |
| 135 | 135 | call_user_func($key, $config, $c); |
| 136 | - if($GLOBALS['config_error']) |
|
| 136 | + if ($GLOBALS['config_error']) |
|
| 137 | 137 | { |
| 138 | - $errors .= lang($GLOBALS['config_error']) . "\n"; |
|
| 138 | + $errors .= lang($GLOBALS['config_error'])."\n"; |
|
| 139 | 139 | $GLOBALS['config_error'] = False; |
| 140 | 140 | } |
| 141 | 141 | } |
| 142 | 142 | } |
| 143 | 143 | /* don't erase passwords, since we also don't print them */ |
| 144 | - elseif(strpos($key,'passwd') === false && strpos($key,'password') === false && strpos($key,'root_pw') === false) |
|
| 144 | + elseif (strpos($key, 'passwd') === false && strpos($key, 'password') === false && strpos($key, 'root_pw') === false) |
|
| 145 | 145 | { |
| 146 | 146 | unset($c->config_data[$key]); |
| 147 | 147 | } |
| 148 | 148 | } |
| 149 | - if(in_array('final_validation', (array)$GLOBALS['egw_info']['server']['found_validation_hook']) && |
|
| 149 | + if (in_array('final_validation', (array)$GLOBALS['egw_info']['server']['found_validation_hook']) && |
|
| 150 | 150 | function_exists('final_validation')) |
| 151 | 151 | { |
| 152 | 152 | final_validation($_POST['newsettings']); |
| 153 | - if($GLOBALS['config_error']) |
|
| 153 | + if ($GLOBALS['config_error']) |
|
| 154 | 154 | { |
| 155 | - $errors .= lang($GLOBALS['config_error']) . "\n"; |
|
| 155 | + $errors .= lang($GLOBALS['config_error'])."\n"; |
|
| 156 | 156 | $GLOBALS['config_error'] = False; |
| 157 | 157 | } |
| 158 | 158 | unset($GLOBALS['egw_info']['server']['found_validation_hook']); |
@@ -160,7 +160,7 @@ discard block |
||
| 160 | 160 | |
| 161 | 161 | $c->save_repository(); |
| 162 | 162 | |
| 163 | - if(!$errors && !$_POST['apply']) |
|
| 163 | + if (!$errors && !$_POST['apply']) |
|
| 164 | 164 | { |
| 165 | 165 | Framework::message(lang('Configuration saved.'), 'success'); |
| 166 | 166 | Egw::redirect_link('/index.php', array( |
@@ -170,10 +170,10 @@ discard block |
||
| 170 | 170 | } |
| 171 | 171 | } |
| 172 | 172 | |
| 173 | - $t->set_var('error',''); |
|
| 174 | - if($errors) |
|
| 173 | + $t->set_var('error', ''); |
|
| 174 | + if ($errors) |
|
| 175 | 175 | { |
| 176 | - Framework::message(lang('Error') . ': ' . $errors, 'error'); |
|
| 176 | + Framework::message(lang('Error').': '.$errors, 'error'); |
|
| 177 | 177 | unset($errors); |
| 178 | 178 | unset($GLOBALS['config_error']); |
| 179 | 179 | } |
@@ -181,41 +181,41 @@ discard block |
||
| 181 | 181 | { |
| 182 | 182 | Framework::message(lang('Configuration saved.'), 'success'); |
| 183 | 183 | } |
| 184 | - $t->set_var('title',lang('Site Configuration')); |
|
| 185 | - $t->set_var('action_url',$GLOBALS['egw']->link('/index.php','menuaction=admin.uiconfig.index&appname=' . $appname)); |
|
| 186 | - $t->set_var('th_bg', $GLOBALS['egw_info']['theme']['th_bg']); |
|
| 187 | - $t->set_var('th_text', $GLOBALS['egw_info']['theme']['th_text']); |
|
| 188 | - $t->set_var('row_on', $GLOBALS['egw_info']['theme']['row_on']); |
|
| 189 | - $t->set_var('row_off', $GLOBALS['egw_info']['theme']['row_off']); |
|
| 184 | + $t->set_var('title', lang('Site Configuration')); |
|
| 185 | + $t->set_var('action_url', $GLOBALS['egw']->link('/index.php', 'menuaction=admin.uiconfig.index&appname='.$appname)); |
|
| 186 | + $t->set_var('th_bg', $GLOBALS['egw_info']['theme']['th_bg']); |
|
| 187 | + $t->set_var('th_text', $GLOBALS['egw_info']['theme']['th_text']); |
|
| 188 | + $t->set_var('row_on', $GLOBALS['egw_info']['theme']['row_on']); |
|
| 189 | + $t->set_var('row_off', $GLOBALS['egw_info']['theme']['row_off']); |
|
| 190 | 190 | $t->set_var('hidden_vars', Api\Html::input_hidden('csrf_token', Api\Csrf::token(__CLASS__))); |
| 191 | 191 | |
| 192 | 192 | $vars = $t->get_undefined('body'); |
| 193 | 193 | |
| 194 | - if (Api\Hooks::single('config',$appname)) // reload the config-values, they might have changed |
|
| 194 | + if (Api\Hooks::single('config', $appname)) // reload the config-values, they might have changed |
|
| 195 | 195 | { |
| 196 | 196 | $c->read_repository(); |
| 197 | 197 | } |
| 198 | - foreach($vars as $value) |
|
| 198 | + foreach ($vars as $value) |
|
| 199 | 199 | { |
| 200 | - $valarray = explode('_',$value); |
|
| 200 | + $valarray = explode('_', $value); |
|
| 201 | 201 | $type = array_shift($valarray); |
| 202 | - $newval = implode(' ',$valarray); |
|
| 202 | + $newval = implode(' ', $valarray); |
|
| 203 | 203 | |
| 204 | 204 | switch ($type) |
| 205 | 205 | { |
| 206 | 206 | case 'lang': |
| 207 | - $t->set_var($value,lang($newval)); |
|
| 207 | + $t->set_var($value, lang($newval)); |
|
| 208 | 208 | break; |
| 209 | 209 | case 'value': |
| 210 | - $newval = str_replace(' ','_',$newval); |
|
| 210 | + $newval = str_replace(' ', '_', $newval); |
|
| 211 | 211 | /* Don't show passwords in the form */ |
| 212 | - if(strpos($value,'passwd') !== false || strpos($value,'password') !== false || strpos($value,'root_pw') !== false) |
|
| 212 | + if (strpos($value, 'passwd') !== false || strpos($value, 'password') !== false || strpos($value, 'root_pw') !== false) |
|
| 213 | 213 | { |
| 214 | - $t->set_var($value,''); |
|
| 214 | + $t->set_var($value, ''); |
|
| 215 | 215 | } |
| 216 | 216 | else |
| 217 | 217 | { |
| 218 | - $t->set_var($value,$c->config_data[$newval]); |
|
| 218 | + $t->set_var($value, $c->config_data[$newval]); |
|
| 219 | 219 | } |
| 220 | 220 | break; |
| 221 | 221 | /* |
@@ -233,46 +233,45 @@ discard block |
||
| 233 | 233 | */ |
| 234 | 234 | case 'selected': |
| 235 | 235 | $configs = array(); |
| 236 | - $newvals = explode(' ',$newval); |
|
| 236 | + $newvals = explode(' ', $newval); |
|
| 237 | 237 | $setting = end($newvals); |
| 238 | - for ($i=0;$i<(count($newvals) - 1); $i++) |
|
| 238 | + for ($i = 0; $i < (count($newvals) - 1); $i++) |
|
| 239 | 239 | { |
| 240 | 240 | $configs[] = $newvals[$i]; |
| 241 | 241 | } |
| 242 | - $config = implode('_',$configs); |
|
| 242 | + $config = implode('_', $configs); |
|
| 243 | 243 | /* echo $config . '=' . $c->config_data[$config]; */ |
| 244 | 244 | if ($c->config_data[$config] == $setting) |
| 245 | 245 | { |
| 246 | - $t->set_var($value,' selected'); |
|
| 246 | + $t->set_var($value, ' selected'); |
|
| 247 | 247 | } |
| 248 | 248 | else |
| 249 | 249 | { |
| 250 | - $t->set_var($value,''); |
|
| 250 | + $t->set_var($value, ''); |
|
| 251 | 251 | } |
| 252 | 252 | break; |
| 253 | 253 | case 'hook': |
| 254 | - $newval = str_replace(' ','_',$newval); |
|
| 255 | - if(function_exists($newval)) |
|
| 254 | + $newval = str_replace(' ', '_', $newval); |
|
| 255 | + if (function_exists($newval)) |
|
| 256 | 256 | { |
| 257 | - $t->set_var($value,$newval($c->config_data)); |
|
| 257 | + $t->set_var($value, $newval($c->config_data)); |
|
| 258 | 258 | } |
| 259 | 259 | else |
| 260 | 260 | { |
| 261 | - $t->set_var($value,''); |
|
| 261 | + $t->set_var($value, ''); |
|
| 262 | 262 | } |
| 263 | 263 | break; |
| 264 | 264 | case 'call': // eg. call_class::method or call_app.class.method |
| 265 | - $newval = str_replace(' ','_',$newval); |
|
| 266 | - $t->set_var($value,ExecMethod($newval,$c->config_data)); |
|
| 265 | + $newval = str_replace(' ', '_', $newval); |
|
| 266 | + $t->set_var($value, ExecMethod($newval, $c->config_data)); |
|
| 267 | 267 | break; |
| 268 | 268 | default: |
| 269 | - $t->set_var($value,''); |
|
| 269 | + $t->set_var($value, ''); |
|
| 270 | 270 | break; |
| 271 | 271 | } |
| 272 | 272 | } |
| 273 | 273 | $t->set_var('submit', '<div class="dialogFooterToolbar" style="text-align: left">'. |
| 274 | - ($GLOBALS['egw']->acl->check('site_config_acce',2,'admin') ? '' : |
|
| 275 | - Api\Html::submit_button('save', 'Save')."\n". |
|
| 274 | + ($GLOBALS['egw']->acl->check('site_config_acce', 2, 'admin') ? '' : Api\Html::submit_button('save', 'Save')."\n". |
|
| 276 | 275 | Api\Html::submit_button('apply', 'Apply'))); |
| 277 | 276 | $t->set_var('cancel', Api\Html::submit_button('cancel', 'Cancel').'</div>'); |
| 278 | 277 | |
@@ -282,10 +281,10 @@ discard block |
||
| 282 | 281 | // render the page |
| 283 | 282 | $GLOBALS['egw']->framework->render( |
| 284 | 283 | '<div id="admin-config-'.$appname.'" class="admin-config">'. |
| 285 | - $t->parse('out','header'). |
|
| 286 | - $t->fp('out','body'). |
|
| 287 | - $t->fp('out','footer').'</div>', |
|
| 288 | - null,true |
|
| 284 | + $t->parse('out', 'header'). |
|
| 285 | + $t->fp('out', 'body'). |
|
| 286 | + $t->fp('out', 'footer').'</div>', |
|
| 287 | + null, true |
|
| 289 | 288 | ); |
| 290 | 289 | } |
| 291 | 290 | } |
@@ -85,7 +85,11 @@ discard block |
||
| 85 | 85 | $config_appname = $appname; |
| 86 | 86 | break; |
| 87 | 87 | } |
| 88 | - if (ob_get_contents()) ob_end_flush(); // if there is output in buffer, flush it now. |
|
| 88 | + if (ob_get_contents()) |
|
| 89 | + { |
|
| 90 | + ob_end_flush(); |
|
| 91 | + } |
|
| 92 | + // if there is output in buffer, flush it now. |
|
| 89 | 93 | $t = new Framework\Template(Framework\Template::get_dir($appname)); |
| 90 | 94 | $t->set_unknowns('keep'); |
| 91 | 95 | $t->set_file(array('config' => 'config.tpl')); |
@@ -191,10 +195,13 @@ discard block |
||
| 191 | 195 | |
| 192 | 196 | $vars = $t->get_undefined('body'); |
| 193 | 197 | |
| 194 | - if (Api\Hooks::single('config',$appname)) // reload the config-values, they might have changed |
|
| 198 | + if (Api\Hooks::single('config',$appname)) |
|
| 199 | + { |
|
| 200 | + // reload the config-values, they might have changed |
|
| 195 | 201 | { |
| 196 | 202 | $c->read_repository(); |
| 197 | 203 | } |
| 204 | + } |
|
| 198 | 205 | foreach($vars as $value) |
| 199 | 206 | { |
| 200 | 207 | $valarray = explode('_',$value); |
@@ -275,37 +275,37 @@ |
||
| 275 | 275 | } |
| 276 | 276 | |
| 277 | 277 | /** |
| 278 | - * Returns warnings that were encountered during importing |
|
| 279 | - * Maximum of one warning message per record, but you can concatenate them if you need to |
|
| 280 | - * |
|
| 281 | - * @return Array ( |
|
| 282 | - * record_# => warning message |
|
| 283 | - * ) |
|
| 284 | - */ |
|
| 278 | + * Returns warnings that were encountered during importing |
|
| 279 | + * Maximum of one warning message per record, but you can concatenate them if you need to |
|
| 280 | + * |
|
| 281 | + * @return Array ( |
|
| 282 | + * record_# => warning message |
|
| 283 | + * ) |
|
| 284 | + */ |
|
| 285 | 285 | public function get_warnings() { |
| 286 | 286 | return $this->warnings; |
| 287 | 287 | } |
| 288 | 288 | |
| 289 | 289 | /** |
| 290 | - * Returns errors that were encountered during importing |
|
| 291 | - * Maximum of one error message per record, but you can append if you need to |
|
| 292 | - * |
|
| 293 | - * @return Array ( |
|
| 294 | - * record_# => error message |
|
| 295 | - * ) |
|
| 296 | - */ |
|
| 290 | + * Returns errors that were encountered during importing |
|
| 291 | + * Maximum of one error message per record, but you can append if you need to |
|
| 292 | + * |
|
| 293 | + * @return Array ( |
|
| 294 | + * record_# => error message |
|
| 295 | + * ) |
|
| 296 | + */ |
|
| 297 | 297 | public function get_errors() { |
| 298 | 298 | return $this->errors; |
| 299 | 299 | } |
| 300 | 300 | |
| 301 | 301 | /** |
| 302 | - * Returns a list of actions taken, and the number of records for that action. |
|
| 303 | - * Actions are things like 'insert', 'update', 'delete', and may be different for each plugin. |
|
| 304 | - * |
|
| 305 | - * @return Array ( |
|
| 306 | - * action => record count |
|
| 307 | - * ) |
|
| 308 | - */ |
|
| 302 | + * Returns a list of actions taken, and the number of records for that action. |
|
| 303 | + * Actions are things like 'insert', 'update', 'delete', and may be different for each plugin. |
|
| 304 | + * |
|
| 305 | + * @return Array ( |
|
| 306 | + * action => record count |
|
| 307 | + * ) |
|
| 308 | + */ |
|
| 309 | 309 | public function get_results() { |
| 310 | 310 | return $this->results; |
| 311 | 311 | } |
@@ -15,7 +15,8 @@ discard block |
||
| 15 | 15 | /** |
| 16 | 16 | * class import_csv for admin (users) |
| 17 | 17 | */ |
| 18 | -class admin_import_users_csv implements importexport_iface_import_plugin { |
|
| 18 | +class admin_import_users_csv implements importexport_iface_import_plugin |
|
| 19 | +{ |
|
| 19 | 20 | |
| 20 | 21 | private static $plugin_options = array( |
| 21 | 22 | 'fieldsep', // char |
@@ -90,7 +91,8 @@ discard block |
||
| 90 | 91 | * @param string $_charset |
| 91 | 92 | * @param definition $_definition |
| 92 | 93 | */ |
| 93 | - public function import( $_stream, importexport_definition $_definition ) { |
|
| 94 | + public function import( $_stream, importexport_definition $_definition ) |
|
| 95 | + { |
|
| 94 | 96 | $import_csv = new importexport_import_csv( $_stream, array( |
| 95 | 97 | 'fieldsep' => $_definition->plugin_options['fieldsep'], |
| 96 | 98 | 'charset' => $_definition->plugin_options['charset'], |
@@ -112,9 +114,12 @@ discard block |
||
| 112 | 114 | $import_csv->conversion = $_definition->plugin_options['field_conversion']; |
| 113 | 115 | |
| 114 | 116 | //check if file has a header lines |
| 115 | - if ( isset( $_definition->plugin_options['num_header_lines'] ) && $_definition->plugin_options['num_header_lines'] > 0) { |
|
| 117 | + if ( isset( $_definition->plugin_options['num_header_lines'] ) && $_definition->plugin_options['num_header_lines'] > 0) |
|
| 118 | + { |
|
| 116 | 119 | $import_csv->skip_records($_definition->plugin_options['num_header_lines']); |
| 117 | - } elseif(isset($_definition->plugin_options['has_header_line']) && $_definition->plugin_options['has_header_line']) { |
|
| 120 | + } |
|
| 121 | + elseif(isset($_definition->plugin_options['has_header_line']) && $_definition->plugin_options['has_header_line']) |
|
| 122 | + { |
|
| 118 | 123 | // First method is preferred |
| 119 | 124 | $import_csv->skip_records(1); |
| 120 | 125 | } |
@@ -131,17 +136,27 @@ discard block |
||
| 131 | 136 | 'account_status' => array('A' => lang('Active'), '' => lang('Disabled'), 'D' => lang('Disabled')), |
| 132 | 137 | ); |
| 133 | 138 | |
| 134 | - while ( $record = $import_csv->get_record() ) { |
|
| 139 | + while ( $record = $import_csv->get_record() ) |
|
| 140 | + { |
|
| 135 | 141 | $success = false; |
| 136 | 142 | // don't import empty records |
| 137 | - if( count( array_unique( $record ) ) < 2 ) continue; |
|
| 143 | + if( count( array_unique( $record ) ) < 2 ) |
|
| 144 | + { |
|
| 145 | + continue; |
|
| 146 | + } |
|
| 138 | 147 | |
| 139 | - if(strtolower($record['account_expires']) == 'never') $record['account_expires'] = -1; |
|
| 148 | + if(strtolower($record['account_expires']) == 'never') |
|
| 149 | + { |
|
| 150 | + $record['account_expires'] = -1; |
|
| 151 | + } |
|
| 140 | 152 | importexport_import_csv::convert($record, admin_egw_user_record::$types, 'admin', $lookups); |
| 141 | 153 | |
| 142 | - if ( $_definition->plugin_options['conditions'] ) { |
|
| 143 | - foreach ( $_definition->plugin_options['conditions'] as $condition ) { |
|
| 144 | - switch ( $condition['type'] ) { |
|
| 154 | + if ( $_definition->plugin_options['conditions'] ) |
|
| 155 | + { |
|
| 156 | + foreach ( $_definition->plugin_options['conditions'] as $condition ) |
|
| 157 | + { |
|
| 158 | + switch ( $condition['type'] ) |
|
| 159 | + { |
|
| 145 | 160 | // exists |
| 146 | 161 | case 'exists' : |
| 147 | 162 | $accounts = array(); |
@@ -157,16 +172,23 @@ discard block |
||
| 157 | 172 | // Search looks in the given field, but doesn't do an exact match |
| 158 | 173 | foreach ( (array)$accounts as $key => $account ) |
| 159 | 174 | { |
| 160 | - if($account[$condition['string']] != $record[$condition['string']]) unset($accounts[$key]); |
|
| 175 | + if($account[$condition['string']] != $record[$condition['string']]) |
|
| 176 | + { |
|
| 177 | + unset($accounts[$key]); |
|
| 178 | + } |
|
| 161 | 179 | } |
| 162 | - if ( is_array( $accounts ) && count( $accounts ) >= 1 ) { |
|
| 180 | + if ( is_array( $accounts ) && count( $accounts ) >= 1 ) |
|
| 181 | + { |
|
| 163 | 182 | // apply action to all contacts matching this exists condition |
| 164 | 183 | $action = $condition['true']; |
| 165 | - foreach ( (array)$accounts as $account ) { |
|
| 184 | + foreach ( (array)$accounts as $account ) |
|
| 185 | + { |
|
| 166 | 186 | $record['account_id'] = $account['account_id']; |
| 167 | 187 | $success = $this->action( $action['action'], $record, $import_csv->get_current_position(), $admin_cmd ); |
| 168 | 188 | } |
| 169 | - } else { |
|
| 189 | + } |
|
| 190 | + else |
|
| 191 | + { |
|
| 170 | 192 | $action = $condition['false']; |
| 171 | 193 | $success = ($this->action( $action['action'], $record, $import_csv->get_current_position(), $admin_cmd )); |
| 172 | 194 | } |
@@ -176,13 +198,21 @@ discard block |
||
| 176 | 198 | default : |
| 177 | 199 | die('condition / action not supported!!!'); |
| 178 | 200 | } |
| 179 | - if ($action['last']) break; |
|
| 201 | + if ($action['last']) |
|
| 202 | + { |
|
| 203 | + break; |
|
| 204 | + } |
|
| 180 | 205 | } |
| 181 | - } else { |
|
| 206 | + } |
|
| 207 | + else |
|
| 208 | + { |
|
| 182 | 209 | // unconditional insert |
| 183 | 210 | $success = $this->action( 'create', $record, $import_csv->get_current_position(), $admin_cmd ); |
| 184 | 211 | } |
| 185 | - if($success) $count++; |
|
| 212 | + if($success) |
|
| 213 | + { |
|
| 214 | + $count++; |
|
| 215 | + } |
|
| 186 | 216 | } |
| 187 | 217 | return $count; |
| 188 | 218 | } |
@@ -194,8 +224,10 @@ discard block |
||
| 194 | 224 | * @param array $_data contact data for the action |
| 195 | 225 | * @return bool success or not |
| 196 | 226 | */ |
| 197 | - private function action ( $_action, $_data, $record_num = 0, $admin_cmd ) { |
|
| 198 | - switch ($_action) { |
|
| 227 | + private function action ( $_action, $_data, $record_num = 0, $admin_cmd ) |
|
| 228 | + { |
|
| 229 | + switch ($_action) |
|
| 230 | + { |
|
| 199 | 231 | case 'none' : |
| 200 | 232 | return true; |
| 201 | 233 | case 'disable': |
@@ -209,13 +241,15 @@ discard block |
||
| 209 | 241 | )+(array)$admin_cmd); |
| 210 | 242 | |
| 211 | 243 | |
| 212 | - if($this->dry_run) { |
|
| 244 | + if($this->dry_run) |
|
| 245 | + { |
|
| 213 | 246 | $this->results[$_action]++; |
| 214 | 247 | return true; |
| 215 | 248 | } |
| 216 | 249 | try { |
| 217 | 250 | $command->run(); |
| 218 | - } catch (Exception $e) { |
|
| 251 | + } |
|
| 252 | + catch (Exception $e) { |
|
| 219 | 253 | $this->errors[$record_num] = $e->getMessage(); |
| 220 | 254 | return false; |
| 221 | 255 | } |
@@ -232,7 +266,8 @@ discard block |
||
| 232 | 266 | * |
| 233 | 267 | * @return string name |
| 234 | 268 | */ |
| 235 | - public static function get_name() { |
|
| 269 | + public static function get_name() |
|
| 270 | + { |
|
| 236 | 271 | return lang('User CSV import'); |
| 237 | 272 | } |
| 238 | 273 | |
@@ -241,7 +276,8 @@ discard block |
||
| 241 | 276 | * |
| 242 | 277 | * @return string descriprion |
| 243 | 278 | */ |
| 244 | - public static function get_description() { |
|
| 279 | + public static function get_description() |
|
| 280 | + { |
|
| 245 | 281 | return lang("Creates / updates user accounts from CSV file"); |
| 246 | 282 | } |
| 247 | 283 | |
@@ -250,7 +286,8 @@ discard block |
||
| 250 | 286 | * |
| 251 | 287 | * @return string suffix (comma seperated) |
| 252 | 288 | */ |
| 253 | - public static function get_filesuffix() { |
|
| 289 | + public static function get_filesuffix() |
|
| 290 | + { |
|
| 254 | 291 | return 'csv'; |
| 255 | 292 | } |
| 256 | 293 | |
@@ -276,7 +313,8 @@ discard block |
||
| 276 | 313 | * |
| 277 | 314 | * @return string etemplate name |
| 278 | 315 | */ |
| 279 | - public function get_selectors_etpl() { |
|
| 316 | + public function get_selectors_etpl() |
|
| 317 | + { |
|
| 280 | 318 | // lets do it! |
| 281 | 319 | } |
| 282 | 320 | |
@@ -288,7 +326,8 @@ discard block |
||
| 288 | 326 | * record_# => warning message |
| 289 | 327 | * ) |
| 290 | 328 | */ |
| 291 | - public function get_warnings() { |
|
| 329 | + public function get_warnings() |
|
| 330 | + { |
|
| 292 | 331 | return $this->warnings; |
| 293 | 332 | } |
| 294 | 333 | |
@@ -300,7 +339,8 @@ discard block |
||
| 300 | 339 | * record_# => error message |
| 301 | 340 | * ) |
| 302 | 341 | */ |
| 303 | - public function get_errors() { |
|
| 342 | + public function get_errors() |
|
| 343 | + { |
|
| 304 | 344 | return $this->errors; |
| 305 | 345 | } |
| 306 | 346 | |
@@ -312,7 +352,8 @@ discard block |
||
| 312 | 352 | * action => record count |
| 313 | 353 | * ) |
| 314 | 354 | */ |
| 315 | - public function get_results() { |
|
| 355 | + public function get_results() |
|
| 356 | + { |
|
| 316 | 357 | return $this->results; |
| 317 | 358 | } |
| 318 | 359 | } |
@@ -15,15 +15,15 @@ discard block |
||
| 15 | 15 | /** |
| 16 | 16 | * class import_csv for admin (users) |
| 17 | 17 | */ |
| 18 | -class admin_import_users_csv implements importexport_iface_import_plugin { |
|
| 18 | +class admin_import_users_csv implements importexport_iface_import_plugin { |
|
| 19 | 19 | |
| 20 | 20 | private static $plugin_options = array( |
| 21 | - 'fieldsep', // char |
|
| 22 | - 'charset', // string |
|
| 21 | + 'fieldsep', // char |
|
| 22 | + 'charset', // string |
|
| 23 | 23 | 'num_header_lines', // int number of header lines |
| 24 | 24 | 'field_conversion', // array( $csv_col_num => conversion) |
| 25 | - 'field_mapping', // array( $csv_col_num => adb_filed) |
|
| 26 | - 'conditions', /* => array containing condition arrays: |
|
| 25 | + 'field_mapping', // array( $csv_col_num => adb_filed) |
|
| 26 | + 'conditions', /* => array containing condition arrays: |
|
| 27 | 27 | 'type' => exists, // exists |
| 28 | 28 | 'string' => '#kundennummer', |
| 29 | 29 | 'true' => array( |
@@ -40,14 +40,14 @@ discard block |
||
| 40 | 40 | /** |
| 41 | 41 | * actions which could be done to data entries |
| 42 | 42 | */ |
| 43 | - protected static $actions = array( 'none', 'update', 'create', 'delete', 'disable', 'enable' ); |
|
| 43 | + protected static $actions = array('none', 'update', 'create', 'delete', 'disable', 'enable'); |
|
| 44 | 44 | |
| 45 | 45 | /** |
| 46 | 46 | * conditions for actions |
| 47 | 47 | * |
| 48 | 48 | * @var array |
| 49 | 49 | */ |
| 50 | - protected static $conditions = array( 'exists' ); |
|
| 50 | + protected static $conditions = array('exists'); |
|
| 51 | 51 | |
| 52 | 52 | /** |
| 53 | 53 | * @var definition |
@@ -90,8 +90,8 @@ discard block |
||
| 90 | 90 | * @param string $_charset |
| 91 | 91 | * @param definition $_definition |
| 92 | 92 | */ |
| 93 | - public function import( $_stream, importexport_definition $_definition ) { |
|
| 94 | - $import_csv = new importexport_import_csv( $_stream, array( |
|
| 93 | + public function import($_stream, importexport_definition $_definition) { |
|
| 94 | + $import_csv = new importexport_import_csv($_stream, array( |
|
| 95 | 95 | 'fieldsep' => $_definition->plugin_options['fieldsep'], |
| 96 | 96 | 'charset' => $_definition->plugin_options['charset'], |
| 97 | 97 | )); |
@@ -99,11 +99,11 @@ discard block |
||
| 99 | 99 | $this->definition = $_definition; |
| 100 | 100 | |
| 101 | 101 | // user, is admin ? |
| 102 | - $this->is_admin = isset( $GLOBALS['egw_info']['user']['apps']['admin'] ) && $GLOBALS['egw_info']['user']['apps']['admin']; |
|
| 102 | + $this->is_admin = isset($GLOBALS['egw_info']['user']['apps']['admin']) && $GLOBALS['egw_info']['user']['apps']['admin']; |
|
| 103 | 103 | $this->user = $GLOBALS['egw_info']['user']['account_id']; |
| 104 | 104 | |
| 105 | 105 | // dry run? |
| 106 | - $this->dry_run = isset( $_definition->plugin_options['dry_run'] ) ? $_definition->plugin_options['dry_run'] : false; |
|
| 106 | + $this->dry_run = isset($_definition->plugin_options['dry_run']) ? $_definition->plugin_options['dry_run'] : false; |
|
| 107 | 107 | |
| 108 | 108 | // set FieldMapping. |
| 109 | 109 | $import_csv->mapping = $_definition->plugin_options['field_mapping']; |
@@ -112,9 +112,9 @@ discard block |
||
| 112 | 112 | $import_csv->conversion = $_definition->plugin_options['field_conversion']; |
| 113 | 113 | |
| 114 | 114 | //check if file has a header lines |
| 115 | - if ( isset( $_definition->plugin_options['num_header_lines'] ) && $_definition->plugin_options['num_header_lines'] > 0) { |
|
| 115 | + if (isset($_definition->plugin_options['num_header_lines']) && $_definition->plugin_options['num_header_lines'] > 0) { |
|
| 116 | 116 | $import_csv->skip_records($_definition->plugin_options['num_header_lines']); |
| 117 | - } elseif(isset($_definition->plugin_options['has_header_line']) && $_definition->plugin_options['has_header_line']) { |
|
| 117 | + } elseif (isset($_definition->plugin_options['has_header_line']) && $_definition->plugin_options['has_header_line']) { |
|
| 118 | 118 | // First method is preferred |
| 119 | 119 | $import_csv->skip_records(1); |
| 120 | 120 | } |
@@ -131,22 +131,22 @@ discard block |
||
| 131 | 131 | 'account_status' => array('A' => lang('Active'), '' => lang('Disabled'), 'D' => lang('Disabled')), |
| 132 | 132 | ); |
| 133 | 133 | |
| 134 | - while ( $record = $import_csv->get_record() ) { |
|
| 134 | + while ($record = $import_csv->get_record()) { |
|
| 135 | 135 | $success = false; |
| 136 | 136 | // don't import empty records |
| 137 | - if( count( array_unique( $record ) ) < 2 ) continue; |
|
| 137 | + if (count(array_unique($record)) < 2) continue; |
|
| 138 | 138 | |
| 139 | - if(strtolower($record['account_expires']) == 'never') $record['account_expires'] = -1; |
|
| 139 | + if (strtolower($record['account_expires']) == 'never') $record['account_expires'] = -1; |
|
| 140 | 140 | importexport_import_csv::convert($record, admin_egw_user_record::$types, 'admin', $lookups); |
| 141 | 141 | |
| 142 | - if ( $_definition->plugin_options['conditions'] ) { |
|
| 143 | - foreach ( $_definition->plugin_options['conditions'] as $condition ) { |
|
| 144 | - switch ( $condition['type'] ) { |
|
| 142 | + if ($_definition->plugin_options['conditions']) { |
|
| 143 | + foreach ($_definition->plugin_options['conditions'] as $condition) { |
|
| 144 | + switch ($condition['type']) { |
|
| 145 | 145 | // exists |
| 146 | 146 | case 'exists' : |
| 147 | 147 | $accounts = array(); |
| 148 | 148 | // Skip the search if the field is empty |
| 149 | - if($record[$condition['string']] !== '') |
|
| 149 | + if ($record[$condition['string']] !== '') |
|
| 150 | 150 | { |
| 151 | 151 | $accounts = $GLOBALS['egw']->accounts->search(array( |
| 152 | 152 | 'type' => 'accounts', |
@@ -155,20 +155,20 @@ discard block |
||
| 155 | 155 | )); |
| 156 | 156 | } |
| 157 | 157 | // Search looks in the given field, but doesn't do an exact match |
| 158 | - foreach ( (array)$accounts as $key => $account ) |
|
| 158 | + foreach ((array)$accounts as $key => $account) |
|
| 159 | 159 | { |
| 160 | - if($account[$condition['string']] != $record[$condition['string']]) unset($accounts[$key]); |
|
| 160 | + if ($account[$condition['string']] != $record[$condition['string']]) unset($accounts[$key]); |
|
| 161 | 161 | } |
| 162 | - if ( is_array( $accounts ) && count( $accounts ) >= 1 ) { |
|
| 162 | + if (is_array($accounts) && count($accounts) >= 1) { |
|
| 163 | 163 | // apply action to all contacts matching this exists condition |
| 164 | 164 | $action = $condition['true']; |
| 165 | - foreach ( (array)$accounts as $account ) { |
|
| 165 | + foreach ((array)$accounts as $account) { |
|
| 166 | 166 | $record['account_id'] = $account['account_id']; |
| 167 | - $success = $this->action( $action['action'], $record, $import_csv->get_current_position(), $admin_cmd ); |
|
| 167 | + $success = $this->action($action['action'], $record, $import_csv->get_current_position(), $admin_cmd); |
|
| 168 | 168 | } |
| 169 | 169 | } else { |
| 170 | 170 | $action = $condition['false']; |
| 171 | - $success = ($this->action( $action['action'], $record, $import_csv->get_current_position(), $admin_cmd )); |
|
| 171 | + $success = ($this->action($action['action'], $record, $import_csv->get_current_position(), $admin_cmd)); |
|
| 172 | 172 | } |
| 173 | 173 | break; |
| 174 | 174 | |
@@ -180,9 +180,9 @@ discard block |
||
| 180 | 180 | } |
| 181 | 181 | } else { |
| 182 | 182 | // unconditional insert |
| 183 | - $success = $this->action( 'create', $record, $import_csv->get_current_position(), $admin_cmd ); |
|
| 183 | + $success = $this->action('create', $record, $import_csv->get_current_position(), $admin_cmd); |
|
| 184 | 184 | } |
| 185 | - if($success) $count++; |
|
| 185 | + if ($success) $count++; |
|
| 186 | 186 | } |
| 187 | 187 | return $count; |
| 188 | 188 | } |
@@ -194,7 +194,7 @@ discard block |
||
| 194 | 194 | * @param array $_data contact data for the action |
| 195 | 195 | * @return bool success or not |
| 196 | 196 | */ |
| 197 | - private function action ( $_action, $_data, $record_num = 0, $admin_cmd ) { |
|
| 197 | + private function action($_action, $_data, $record_num = 0, $admin_cmd) { |
|
| 198 | 198 | switch ($_action) { |
| 199 | 199 | case 'none' : |
| 200 | 200 | return true; |
@@ -203,22 +203,22 @@ discard block |
||
| 203 | 203 | $_data['account_expires'] = $_action == 'disable' ? 'already' : ''; |
| 204 | 204 | case 'update' : |
| 205 | 205 | $old = $GLOBALS['egw']->accounts->read($_data['account_id']); |
| 206 | - if($old) |
|
| 206 | + if ($old) |
|
| 207 | 207 | { |
| 208 | 208 | $old['account_passwd'] = $old['account_pwd']; unset($old['account_pwd']); |
| 209 | - $old['account_groups'] = implode(',',$GLOBALS['egw']->accounts->memberships($_data['account_id'], true)); |
|
| 209 | + $old['account_groups'] = implode(',', $GLOBALS['egw']->accounts->memberships($_data['account_id'], true)); |
|
| 210 | 210 | // Limit history to what actually changed |
| 211 | 211 | $old = array_intersect_key($old, $_data); |
| 212 | 212 | } |
| 213 | 213 | case 'create' : |
| 214 | 214 | $command = new admin_cmd_edit_user(array( |
| 215 | - 'account' => $_action=='create'?null:(int)$_data['account_id'], |
|
| 215 | + 'account' => $_action == 'create' ?null:(int)$_data['account_id'], |
|
| 216 | 216 | 'set' => $_data, |
| 217 | - 'old' => $_action=='create'?null:$old |
|
| 218 | - )+(array)$admin_cmd); |
|
| 217 | + 'old' => $_action == 'create' ?null:$old |
|
| 218 | + ) + (array)$admin_cmd); |
|
| 219 | 219 | |
| 220 | 220 | |
| 221 | - if($this->dry_run) { |
|
| 221 | + if ($this->dry_run) { |
|
| 222 | 222 | $this->results[$_action]++; |
| 223 | 223 | return true; |
| 224 | 224 | } |
@@ -275,7 +275,7 @@ discard block |
||
| 275 | 275 | * preserv => array, |
| 276 | 276 | * ) |
| 277 | 277 | */ |
| 278 | - public function get_options_etpl(importexport_definition &$definition=null) |
|
| 278 | + public function get_options_etpl(importexport_definition &$definition = null) |
|
| 279 | 279 | { |
| 280 | 280 | // lets do it! |
| 281 | 281 | } |
@@ -21,7 +21,7 @@ discard block |
||
| 21 | 21 | * |
| 22 | 22 | * @param egw_record $_definition |
| 23 | 23 | */ |
| 24 | - public function export( $_stream, importexport_definition $_definition) { |
|
| 24 | + public function export($_stream, importexport_definition $_definition) { |
|
| 25 | 25 | $options = $_definition->plugin_options; |
| 26 | 26 | |
| 27 | 27 | $query = array( |
@@ -40,12 +40,12 @@ discard block |
||
| 40 | 40 | // $_record is an array, that's what search() returns |
| 41 | 41 | foreach ($selection as $_record) { |
| 42 | 42 | $record = new admin_egw_group_record($_record); |
| 43 | - if($options['convert']) { |
|
| 43 | + if ($options['convert']) { |
|
| 44 | 44 | importexport_export_csv::convert($record, admin_egw_group_record::$types, 'admin', $lookups); |
| 45 | 45 | } else { |
| 46 | 46 | // Implode arrays, so they don't say 'Array' |
| 47 | - foreach($record->get_record_array() as $key => $value) { |
|
| 48 | - if(is_array($value)) $record->$key = implode(',', $value); |
|
| 47 | + foreach ($record->get_record_array() as $key => $value) { |
|
| 48 | + if (is_array($value)) $record->$key = implode(',', $value); |
|
| 49 | 49 | } |
| 50 | 50 | } |
| 51 | 51 | $export_object->export_record($record); |
@@ -81,8 +81,8 @@ |
||
| 81 | 81 | } |
| 82 | 82 | |
| 83 | 83 | public static function get_mimetype() { |
| 84 | - return 'text/csv'; |
|
| 85 | - } |
|
| 84 | + return 'text/csv'; |
|
| 85 | + } |
|
| 86 | 86 | |
| 87 | 87 | /** |
| 88 | 88 | * Return array of settings for export dialog |
@@ -21,7 +21,8 @@ discard block |
||
| 21 | 21 | * |
| 22 | 22 | * @param egw_record $_definition |
| 23 | 23 | */ |
| 24 | - public function export( $_stream, importexport_definition $_definition) { |
|
| 24 | + public function export( $_stream, importexport_definition $_definition) |
|
| 25 | + { |
|
| 25 | 26 | $options = $_definition->plugin_options; |
| 26 | 27 | |
| 27 | 28 | $query = array( |
@@ -38,14 +39,22 @@ discard block |
||
| 38 | 39 | ); |
| 39 | 40 | |
| 40 | 41 | // $_record is an array, that's what search() returns |
| 41 | - foreach ($selection as $_record) { |
|
| 42 | + foreach ($selection as $_record) |
|
| 43 | + { |
|
| 42 | 44 | $record = new admin_egw_group_record($_record); |
| 43 | - if($options['convert']) { |
|
| 45 | + if($options['convert']) |
|
| 46 | + { |
|
| 44 | 47 | importexport_export_csv::convert($record, admin_egw_group_record::$types, 'admin', $lookups); |
| 45 | - } else { |
|
| 48 | + } |
|
| 49 | + else |
|
| 50 | + { |
|
| 46 | 51 | // Implode arrays, so they don't say 'Array' |
| 47 | - foreach($record->get_record_array() as $key => $value) { |
|
| 48 | - if(is_array($value)) $record->$key = implode(',', $value); |
|
| 52 | + foreach($record->get_record_array() as $key => $value) |
|
| 53 | + { |
|
| 54 | + if(is_array($value)) |
|
| 55 | + { |
|
| 56 | + $record->$key = implode(',', $value); |
|
| 57 | + } |
|
| 49 | 58 | } |
| 50 | 59 | } |
| 51 | 60 | $export_object->export_record($record); |
@@ -58,7 +67,8 @@ discard block |
||
| 58 | 67 | * |
| 59 | 68 | * @return string name |
| 60 | 69 | */ |
| 61 | - public static function get_name() { |
|
| 70 | + public static function get_name() |
|
| 71 | + { |
|
| 62 | 72 | return lang('Group CSV export'); |
| 63 | 73 | } |
| 64 | 74 | |
@@ -67,7 +77,8 @@ discard block |
||
| 67 | 77 | * |
| 68 | 78 | * @return string descriprion |
| 69 | 79 | */ |
| 70 | - public static function get_description() { |
|
| 80 | + public static function get_description() |
|
| 81 | + { |
|
| 71 | 82 | return lang("Exports groups into a CSV File. "); |
| 72 | 83 | } |
| 73 | 84 | |
@@ -76,11 +87,13 @@ discard block |
||
| 76 | 87 | * |
| 77 | 88 | * @return string suffix |
| 78 | 89 | */ |
| 79 | - public static function get_filesuffix() { |
|
| 90 | + public static function get_filesuffix() |
|
| 91 | + { |
|
| 80 | 92 | return 'csv'; |
| 81 | 93 | } |
| 82 | 94 | |
| 83 | - public static function get_mimetype() { |
|
| 95 | + public static function get_mimetype() |
|
| 96 | + { |
|
| 84 | 97 | return 'text/csv'; |
| 85 | 98 | } |
| 86 | 99 | |
@@ -106,7 +119,8 @@ discard block |
||
| 106 | 119 | * returns slectors of this plugin via xajax |
| 107 | 120 | * |
| 108 | 121 | */ |
| 109 | - public function get_selectors_etpl() { |
|
| 122 | + public function get_selectors_etpl() |
|
| 123 | + { |
|
| 110 | 124 | return array( |
| 111 | 125 | 'preserv' => array('no_error_for_no_selection'), |
| 112 | 126 | ); |