Conditions | 77 |
Paths | > 20000 |
Total Lines | 354 |
Code Lines | 215 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | <?php |
||
879 | public function heres_the_beef( $import, $output = true ) { |
||
880 | |||
881 | global $wpdb; |
||
882 | |||
883 | $api = pods_api(); |
||
884 | |||
885 | for ( $i = 0; $i < 40000; $i ++ ) { |
||
886 | echo " \t"; |
||
887 | // extra spaces |
||
888 | } |
||
889 | |||
890 | $default_data = array( |
||
891 | 'pod' => null, |
||
892 | 'table' => null, |
||
893 | 'reset' => null, |
||
894 | 'update_on' => null, |
||
895 | 'where' => null, |
||
896 | 'fields' => array(), |
||
897 | 'row_filter' => null, |
||
898 | 'pre_save' => null, |
||
899 | 'post_save' => null, |
||
900 | 'sql' => null, |
||
901 | 'sort' => null, |
||
902 | 'limit' => null, |
||
903 | 'page' => null, |
||
904 | 'output' => null, |
||
905 | 'page_var' => 'ipg', |
||
906 | 'bypass_helpers' => false, |
||
907 | ); |
||
908 | |||
909 | $default_field_data = array( |
||
910 | 'field' => null, |
||
911 | 'filter' => null, |
||
912 | ); |
||
913 | |||
914 | if ( ! is_array( $import ) ) { |
||
915 | $import = array( $import ); |
||
916 | } elseif ( empty( $import ) ) { |
||
917 | die( '<h1 style="color:red;font-weight:bold;">ERROR: No imports configured</h1>' ); |
||
918 | } |
||
919 | |||
920 | $import_counter = 0; |
||
921 | $total_imports = count( $import ); |
||
922 | $paginated = false; |
||
923 | $avg_time = - 1; |
||
924 | $total_time = 0; |
||
925 | $counter = 0; |
||
926 | $avg_unit = 100; |
||
927 | $avg_counter = 0; |
||
928 | |||
929 | foreach ( $import as $datatype => $data ) { |
||
930 | $import_counter ++; |
||
931 | |||
932 | flush(); |
||
933 | @ob_end_flush(); |
||
934 | usleep( 50000 ); |
||
935 | |||
936 | if ( ! is_array( $data ) ) { |
||
937 | $datatype = $data; |
||
938 | $data = array( 'table' => $data ); |
||
939 | } |
||
940 | |||
941 | if ( isset( $data[0] ) ) { |
||
942 | $data = array( 'table' => $data[0] ); |
||
943 | } |
||
944 | |||
945 | $data = array_merge( $default_data, $data ); |
||
946 | |||
947 | if ( null === $data['pod'] ) { |
||
948 | $data['pod'] = array( 'name' => $datatype ); |
||
949 | } |
||
950 | |||
951 | if ( false !== $output ) { |
||
952 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . '</em> - <em>' . $data['pod']['name'] . '</em> - <strong>Loading Pod: ' . $data['pod']['name'] . "</strong>\n"; |
||
953 | } |
||
954 | |||
955 | if ( 2 > count( $data['pod'] ) ) { |
||
956 | $data['pod'] = $api->load_pod( array( 'name' => $data['pod']['name'] ) ); |
||
957 | } |
||
958 | |||
959 | if ( empty( $data['pod']['fields'] ) ) { |
||
960 | continue; |
||
961 | } |
||
962 | |||
963 | if ( null === $data['table'] ) { |
||
964 | $data['table'] = $data['pod']['name']; |
||
965 | } |
||
966 | |||
967 | if ( $data['reset'] === true ) { |
||
968 | if ( false !== $output ) { |
||
969 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . "</em> - <strong style='color:blue;'>Resetting Pod: " . $data['pod']['name'] . "</strong>\n"; |
||
970 | } |
||
971 | |||
972 | $api->reset_pod( |
||
973 | array( |
||
974 | 'id' => $data['pod']['id'], |
||
975 | 'name' => $data['pod']['name'], |
||
976 | ) |
||
977 | ); |
||
978 | } |
||
979 | |||
980 | if ( null === $data['sort'] && null !== $data['update_on'] && isset( $data['fields'][ $data['update_on'] ] ) ) { |
||
981 | if ( isset( $data['fields'][ $data['update_on'] ]['field'] ) ) { |
||
982 | $data['sort'] = $data['fields'][ $data['update_on'] ]['field']; |
||
983 | } else { |
||
984 | $data['sort'] = $data['update_on']; |
||
985 | } |
||
986 | } |
||
987 | |||
988 | $page = 1; |
||
989 | |||
990 | if ( false !== $data['page_var'] && isset( $_GET[ $data['page_var'] ] ) ) { |
||
991 | $page = absval( $_GET[ $data['page_var'] ] ); |
||
992 | } |
||
993 | |||
994 | if ( null === $data['sql'] ) { |
||
995 | $data['sql'] = "SELECT * FROM {$data['table']}" . ( null !== $data['where'] ? " WHERE {$data['where']}" : '' ) . ( null !== $data['sort'] ? " ORDER BY {$data['sort']}" : '' ) . ( null !== $data['limit'] ? ' LIMIT ' . ( 1 < $page ? ( ( $page - 1 ) * $data['limit'] ) . ',' : '' ) . "{$data['limit']}" : '' ); |
||
996 | } |
||
997 | |||
998 | if ( false !== $output ) { |
||
999 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . '</em> - Getting Results: ' . $data['pod']['name'] . "\n"; |
||
1000 | } |
||
1001 | |||
1002 | if ( false !== $output ) { |
||
1003 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . '</em> - Using Query: <small><code>' . $data['sql'] . "</code></small>\n"; |
||
1004 | } |
||
1005 | |||
1006 | $result = $wpdb->get_results( $data['sql'], ARRAY_A ); |
||
1007 | |||
1008 | if ( false !== $output ) { |
||
1009 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . '</em> - Results Found: ' . count( $result ) . "\n"; |
||
1010 | } |
||
1011 | |||
1012 | $avg_time = - 1; |
||
1013 | $total_time = 0; |
||
1014 | $counter = 0; |
||
1015 | $avg_unit = 100; |
||
1016 | $avg_counter = 0; |
||
1017 | $result_count = count( $result ); |
||
1018 | $paginated = false; |
||
1019 | |||
1020 | if ( false !== $data['page_var'] && $result_count === $data['limit'] ) { |
||
1021 | $paginated = "<input type=\"button\" onclick=\"document.location=\'" . pods_ui_var_update( array( $data['page_var'] => $page + 1 ), false, false ) . "\';\" value=\" Continue Import » \" />"; |
||
1022 | } |
||
1023 | |||
1024 | if ( $result_count < $avg_unit && 5 < $result_count ) { |
||
1025 | $avg_unit = number_format( $result_count / 5, 0, '', '' ); |
||
1026 | } elseif ( 2000 < $result_count && 10 < count( $data['pod']['fields'] ) ) { |
||
1027 | $avg_unit = 40; |
||
1028 | } |
||
1029 | |||
1030 | $data['count'] = $result_count; |
||
1031 | timer_start(); |
||
1032 | |||
1033 | if ( false !== $output && 1 === $import_counter ) { |
||
1034 | echo "<div style='width:50%;background-color:navy;padding:10px 10px 30px 10px;color:#FFF;position:absolute;top:10px;left:25%;text-align:center;'><p id='progress_status' align='center'>" . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . '</em> - Running Importer..</p><br /><small>This will automatically update every ' . $avg_unit . " rows</small></div>\n"; |
||
1035 | } |
||
1036 | |||
1037 | foreach ( $result as $k => $row ) { |
||
1038 | flush(); |
||
1039 | @ob_end_flush(); |
||
1040 | usleep( 50000 ); |
||
1041 | |||
1042 | if ( false !== $output ) { |
||
1043 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . '</em> - Processing Row #' . ( $k + 1 ) . "\n"; |
||
1044 | } |
||
1045 | |||
1046 | if ( null !== $data['row_filter'] && function_exists( $data['row_filter'] ) ) { |
||
1047 | if ( false !== $output ) { |
||
1048 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . '</em> - Filtering <strong>' . $data['row_filter'] . '</strong> on Row #' . ( $k + 1 ) . "\n"; |
||
1049 | } |
||
1050 | |||
1051 | $row = $data['row_filter']( $row, $data ); |
||
1052 | } |
||
1053 | |||
1054 | if ( ! is_array( $row ) ) { |
||
1055 | continue; |
||
1056 | } |
||
1057 | |||
1058 | $params = array( |
||
1059 | 'datatype' => $data['pod']['name'], |
||
1060 | 'columns' => array(), |
||
1061 | 'bypass_helpers' => $data['bypass_helpers'], |
||
1062 | ); |
||
1063 | |||
1064 | foreach ( $data['pod']['fields'] as $fk => $field_info ) { |
||
1065 | $field = $field_info['name']; |
||
1066 | |||
1067 | if ( ! empty( $data['fields'] ) && ! isset( $data['fields'][ $field ] ) && ! in_array( $field, $data['fields'], true ) ) { |
||
1068 | continue; |
||
1069 | } |
||
1070 | |||
1071 | if ( isset( $data['fields'][ $field ] ) ) { |
||
1072 | if ( is_array( $data['fields'][ $field ] ) ) { |
||
1073 | $field_data = $data['fields'][ $field ]; |
||
1074 | } else { |
||
1075 | $field_data = array( 'field' => $data['fields'][ $field ] ); |
||
1076 | } |
||
1077 | } else { |
||
1078 | $field_data = array(); |
||
1079 | } |
||
1080 | |||
1081 | if ( ! is_array( $field_data ) ) { |
||
1082 | $field = $field_data; |
||
1083 | $field_data = array(); |
||
1084 | } |
||
1085 | |||
1086 | $field_data = array_merge( $default_field_data, $field_data ); |
||
1087 | |||
1088 | if ( null === $field_data['field'] ) { |
||
1089 | $field_data['field'] = $field; |
||
1090 | } |
||
1091 | |||
1092 | $data['fields'][ $field ] = $field_data; |
||
1093 | $value = ''; |
||
1094 | |||
1095 | if ( isset( $row[ $field_data['field'] ] ) ) { |
||
1096 | $value = $row[ $field_data['field'] ]; |
||
1097 | } |
||
1098 | |||
1099 | if ( null !== $field_data['filter'] ) { |
||
1100 | if ( function_exists( $field_data['filter'] ) ) { |
||
1101 | if ( false !== $output ) { |
||
1102 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . '</em> - Filtering <strong>' . $field_data['filter'] . '</strong> on Field: ' . $field . "\n"; |
||
1103 | } |
||
1104 | |||
1105 | $value = $field_data['filter']( $value, $row, $data ); |
||
1106 | } else { |
||
1107 | $value = ''; |
||
1108 | } |
||
1109 | } |
||
1110 | |||
1111 | if ( 1 > strlen( $value ) && 1 === $field_info['required'] ) { |
||
1112 | die( '<h1 style="color:red;font-weight:bold;">ERROR: Field Required for <strong>' . $field . '</strong></h1>' ); |
||
1113 | } |
||
1114 | |||
1115 | $params['columns'][ $field ] = $value; |
||
1116 | |||
1117 | unset( $value, $field_data, $field_info, $fk ); |
||
1118 | }//end foreach |
||
1119 | |||
1120 | if ( empty( $params['columns'] ) ) { |
||
1121 | continue; |
||
1122 | } |
||
1123 | |||
1124 | $params['columns'] = pods_sanitize( $params['columns'] ); |
||
1125 | |||
1126 | if ( null !== $data['update_on'] && isset( $params['columns'][ $data['update_on'] ] ) ) { |
||
1127 | if ( false !== $output ) { |
||
1128 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . "</em> - Checking for Existing Item\n"; |
||
1129 | } |
||
1130 | |||
1131 | $check = new Pod( $data['pod']['name'] ); |
||
1132 | $check->findRecords( |
||
1133 | array( |
||
1134 | 'orderby' => 't.id', |
||
1135 | 'limit' => 1, |
||
1136 | 'where' => "t.{$data['update_on']} = '{$params['columns'][$data['update_on']]}'", |
||
1137 | 'search' => false, |
||
1138 | 'page' => 1, |
||
1139 | ) |
||
1140 | ); |
||
1141 | |||
1142 | if ( 0 < $check->getTotalRows() ) { |
||
1143 | $check->fetchRecord(); |
||
1144 | |||
1145 | $params['tbl_row_id'] = $check->get_field( 'id' ); |
||
1146 | $params['pod_id'] = $check->get_pod_id(); |
||
1147 | |||
1148 | if ( false !== $output ) { |
||
1149 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . '</em> - Found Existing Item w/ ID: ' . $params['tbl_row_id'] . "\n"; |
||
1150 | } |
||
1151 | |||
1152 | unset( $check ); |
||
1153 | } |
||
1154 | |||
1155 | if ( ! isset( $params['tbl_row_id'] ) && false !== $output ) { |
||
1156 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . "</em> - Existing item not found - Creating New\n"; |
||
1157 | } |
||
1158 | }//end if |
||
1159 | |||
1160 | if ( null !== $data['pre_save'] && function_exists( $data['pre_save'] ) ) { |
||
1161 | if ( false !== $output ) { |
||
1162 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . '</em> - Running Pre Save <strong>' . $data['pre_save'] . '</strong> on ' . $data['pod']['name'] . "\n"; |
||
1163 | } |
||
1164 | |||
1165 | $params = $data['pre_save']( $params, $row, $data ); |
||
1166 | } |
||
1167 | |||
1168 | $id = $api->save_pod_item( $params ); |
||
1169 | |||
1170 | if ( false !== $output ) { |
||
1171 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . '</em> - <strong>Saved Row #' . ( $k + 1 ) . ' w/ ID: ' . $id . "</strong>\n"; |
||
1172 | } |
||
1173 | |||
1174 | $params['tbl_row_id'] = $id; |
||
1175 | |||
1176 | if ( null !== $data['post_save'] && function_exists( $data['post_save'] ) ) { |
||
1177 | if ( false !== $output ) { |
||
1178 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . '</em> - Running Post Save <strong>' . $data['post_save'] . '</strong> on ' . $data['pod']['name'] . "\n"; |
||
1179 | } |
||
1180 | |||
1181 | $data['post_save']( $params, $row, $data ); |
||
1182 | } |
||
1183 | |||
1184 | unset( $params, $result[ $k ], $row ); |
||
1185 | |||
1186 | wp_cache_flush(); |
||
1187 | $wpdb->queries = array(); |
||
1188 | |||
1189 | $avg_counter ++; |
||
1190 | $counter ++; |
||
1191 | |||
1192 | if ( $avg_counter === $avg_unit && false !== $output ) { |
||
1193 | $avg_counter = 0; |
||
1194 | $avg_time = timer_stop( 0, 10 ); |
||
1195 | $total_time += $avg_time; |
||
1196 | $rows_left = $result_count - $counter; |
||
1197 | $estimated_time_left = ( ( $total_time / $counter ) * $rows_left ) / 60; |
||
1198 | $percent_complete = 100 - ( ( $rows_left * 100 ) / $result_count ); |
||
1199 | |||
1200 | echo "<script type='text/javascript'>document.getElementById('progress_status').innerHTML = '" . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . '</em><br /><strong>' . $percent_complete . '% Complete</strong><br /><strong>Estimated Time Left:</strong> ' . $estimated_time_left . ' minute(s) or ' . ( $estimated_time_left / 60 ) . ' hours(s)<br /><strong>Time Spent:</strong> ' . ( $total_time / 60 ) . ' minute(s)<br /><strong>Rows Done:</strong> ' . ( $result_count - $rows_left ) . '/' . $result_count . '<br /><strong>Rows Left:</strong> ' . $rows_left . "';</script>\n"; |
||
1201 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . '</em> - <strong>Updated Status:</strong> ' . $percent_complete . "% Complete</strong>\n"; |
||
1202 | } |
||
1203 | }//end foreach |
||
1204 | |||
1205 | if ( false !== $output ) { |
||
1206 | $avg_counter = 0; |
||
1207 | $avg_time = timer_stop( 0, 10 ); |
||
1208 | $total_time += $avg_time; |
||
1209 | $rows_left = $result_count - $counter; |
||
1210 | $estimated_time_left = ( ( $total_time / $counter ) * $rows_left ) / 60; |
||
1211 | $percent_complete = 100 - ( ( $rows_left * 100 ) / $result_count ); |
||
1212 | |||
1213 | echo "<script type='text/javascript'>document.getElementById('progress_status').innerHTML = '" . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . "</em><br /><strong style=\'color:green;\'>100% Complete</strong><br /><br /><strong>Time Spent:</strong> " . ( $total_time / 60 ) . ' minute(s)<br /><strong>Rows Imported:</strong> ' . $result_count . ( false !== $paginated ? '<br /><br />' . $paginated : '' ) . "';</script>\n"; |
||
1214 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . ' - <em>' . $data['pod']['name'] . "</em> - <strong style='color:green;'>Done Importing: " . $data['pod']['name'] . "</strong>\n"; |
||
1215 | } |
||
1216 | |||
1217 | unset( $result, $import[ $datatype ], $datatype, $data ); |
||
1218 | |||
1219 | wp_cache_flush(); |
||
1220 | $wpdb->queries = array(); |
||
1221 | }//end foreach |
||
1222 | |||
1223 | if ( false !== $output ) { |
||
1224 | $avg_counter = 0; |
||
1225 | $avg_time = timer_stop( 0, 10 ); |
||
1226 | $total_time += $avg_time; |
||
1227 | $rows_left = $result_count - $counter; |
||
1228 | |||
1229 | echo "<script type='text/javascript'>document.getElementById('progress_status').innerHTML = '" . date( 'Y-m-d h:i:sa' ) . " - <strong style=\'color:green;\'>Import Complete</strong><br /><br /><strong>Time Spent:</strong> " . ( $total_time / 60 ) . ' minute(s)<br /><strong>Rows Imported:</strong> ' . $result_count . ( false !== $paginated ? '<br /><br />' . $paginated : '' ) . "';</script>\n"; |
||
1230 | echo '<br />' . date( 'Y-m-d h:i:sa' ) . " - <strong style='color:green;'>Import Complete</strong>\n"; |
||
1231 | } |
||
1232 | } |
||
1233 | |||
1323 |
This check looks for
@param
annotations where the type inferred by our type inference engine differs from the declared type.It makes a suggestion as to what type it considers more descriptive.
Most often this is a case of a parameter that can be null in addition to its declared types.