fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh|fpxh| /** * Donors Query * * @package Give * @subpackage Classes/Stats * @copyright Copyright (c) 2017, WordImpress * @license https://opensource.org/licenses/gpl-license GNU Public License * @since 1.8.14 */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Give_Donors_Query Class * * This class is for retrieving donors data. * * Donors can be retrieved for date ranges and pre-defined periods. * * @since 1.8.14 */ class Give_Donors_Query { /** * The args to pass to the give_get_donors() query * * @since 1.8.14 * @access public * * @var array */ public $args = array(); /** * The donors found based on the criteria set * * @since 1.8.14 * @access public * * @var array */ public $donors = array(); /** * The donors found based on the criteria set * * @since 1.8.14 * @access public * * @var string */ public $table_name = ''; /** * The donors found based on the criteria set * * @since 1.8.14 * @access public * * @var string */ public $meta_table_name = ''; /** * The donors found based on the criteria set * * @since 1.8.14 * @access public * * @var string */ public $meta_type = ''; /** * Default query arguments. * * Not all of these are valid arguments that can be passed to WP_Query. The ones that are not, are modified before * the query is run to convert them to the proper syntax. * * @since 1.8.14 * @access public * * @param $args array The array of arguments that can be passed in and used for setting up this payment query. */ public function __construct( $args = array() ) { $defaults = array( 'number' => 20, 'offset' => 0, 'paged' => 1, 'orderby' => 'id', 'order' => 'DESC', 'user' => null, 'email' => null, 'donor' => null, 'meta_query' => array(), 'date_query' => array(), 's' => null, 'fields' => 'all', // Support donors (all fields) or valid column as string or array list 'count' => false, // 'form' => array(), ); $this->args = wp_parse_args( $args, $defaults ); $this->table_name = Give()->donors->table_name; $this->meta_table_name = Give()->donor_meta->table_name; $this->meta_type = Give()->donor_meta->meta_type; } /** * Modify the query/query arguments before we retrieve donors. * * @since 1.8.14 * @access public * * @return void */ public function init() { } /** * Retrieve donors. * * The query can be modified in two ways; either the action before the * query is run, or the filter on the arguments (existing mainly for backwards * compatibility). * * @since 1.8.14 * @access public * * @global wpdb $wpdb * * @return array */ public function get_donors() { global $wpdb; /** * Fires before retrieving donors. * * @since 1.8.14 * * @param Give_Donors_Query $this Donors query object. */ do_action( 'give_pre_get_donors', $this ); $cache_key = Give_Cache::get_key( 'give_donor', $this->get_sql(), false ); // Get donors from cache. $this->donors = Give_Cache::get_db_query( $cache_key ); if ( is_null( $this->donors ) ) { if ( empty( $this->args['count'] ) ) { $this->donors = $wpdb->get_results( $this->get_sql() ); } else { $this->donors = $wpdb->get_var( $this->get_sql() ); } Give_Cache::set_db_query( $cache_key, $this->donors ); } /** * Fires after retrieving donors. * * @since 1.8.14 * * @param Give_Donors_Query $this Donors query object. */ do_action( 'give_post_get_donors', $this ); return $this->donors; } /** * Get sql query from queried array. * * @since 2.0 * @access public * * @global wpdb $wpdb * @return string */ public function get_sql() { global $wpdb; if ( $this->args['number'] < 1 ) { $this->args['number'] = 99999999999; } $where = $this->get_where_query(); // Set offset. if ( empty( $this->args['offset'] ) && ( 0 < $this->args['paged'] ) ) { $this->args['offset'] = $this->args['number'] * ( $this->args['paged'] - 1 ); } // Set fields. $fields = "{$this->table_name}.*"; if ( ! empty( $this->args['fields'] ) && 'all' !== $this->args['fields'] ) { if ( is_string( $this->args['fields'] ) ) { $fields = "{$this->table_name}.{$this->args['fields']}"; } elseif ( is_array( $this->args['fields'] ) ) { $fields = "{$this->table_name}." . implode( " , {$this->table_name}.", $this->args['fields'] ); } } // Set count. if ( ! empty( $this->args['count'] ) ) { $fields = "COUNT({$this->table_name}.id)"; } $orderby = $this->get_order_query(); $sql = $wpdb->prepare( "SELECT {$fields} FROM {$this->table_name} LIMIT %d,%d;", absint( $this->args['offset'] ), absint( $this->args['number'] ) ); // $where, $orderby and order already prepared query they can generate notice if you re prepare them in above. // WordPress consider LIKE condition as placeholder if start with s,f, or d. $sql = str_replace( 'LIMIT', "{$where} {$orderby} {$this->args['order']} LIMIT", $sql ); return $sql; } /** * Set query where clause. * * @since 1.8.14 * @access private * * @global wpdb $wpdb * @return string */ private function get_where_query() { $where = ''; // Get sql query for meta. if ( ! empty( $this->args['meta_query'] ) ) { $meta_query_object = new WP_Meta_Query( $this->args['meta_query'] ); $meta_query = $meta_query_object->get_sql( $this->meta_type, $this->table_name, 'id' ); $where = implode( '', $meta_query ); } $where .= 'WHERE 1=1 '; $where .= $this->get_where_search(); $where .= $this->get_where_email(); $where .= $this->get_where_donor(); $where .= $this->get_where_user(); $where .= $this->get_where_date(); return trim( $where ); } /** * Set email where clause. * * @since 1.8.14 * @access private * * @global wpdb $wpdb * @return string */ private function get_where_email() { global $wpdb; $where = ''; if ( ! empty( $this->args['email'] ) ) { if ( is_array( $this->args['email'] ) ) { $emails_count = count( $this->args['email'] ); $emails_placeholder = array_fill( 0, $emails_count, '%s' ); $emails = implode( ', ', $emails_placeholder ); $where .= $wpdb->prepare( "AND {$this->table_name}.email IN( $emails )", $this->args['email'] ); } else { $where .= $wpdb->prepare( "AND {$this->table_name}.email = %s", $this->args['email'] ); } } return $where; } /** * Set donor where clause. * * @since 1.8.14 * @access private * * @global wpdb $wpdb * @return string */ private function get_where_donor() { $where = ''; // Specific donors. if ( ! empty( $this->args['donor'] ) ) { if ( ! is_array( $this->args['donor'] ) ) { $this->args['donor'] = explode( ',', $this->args['donor'] ); } $donor_ids = implode( ',', array_map( 'intval', $this->args['donor'] ) ); $where .= "AND {$this->table_name}.id IN( {$donor_ids} )"; } return $where; } /** * Set date where clause. * * @since 1.8.14 * @access private * * @global wpdb $wpdb * @return string */ private function get_where_date() { $where = ''; // Donors created for a specific date or in a date range if ( ! empty( $this->args['date_query'] ) ) { $date_query_object = new WP_Date_Query( is_array( $this->args['date_query'] ) ? $this->args['date_query'] : wp_parse_args( $this->args['date_query'] ), "{$this->table_name}.date_created" ); $where .= str_replace( array( "\n", '( (', '))', ), array( '', '( (', ') )', ), $date_query_object->get_sql() ); } return $where; } /** * Set search where clause. * * @since 1.8.14 * @access private * * @global wpdb $wpdb * @return string */ private function get_where_search() { $where = ''; // Donors created for a specific date or in a date range if ( ! empty( $this->args['s'] ) && false !== strpos( $this->args['s'], ':' ) ) { $search_parts = explode( ':', $this->args['s'] ); if ( ! empty( $search_parts[0] ) ) { switch ( $search_parts[0] ) { case 'name': $where = "AND {$this->table_name}.name LIKE '%{$search_parts[1]}%'"; break; case 'note': $where = "AND {$this->table_name}.notes LIKE '%{$search_parts[1]}%'"; break; } } } return $where; } /** * Set user where clause. * * @since 1.8.14 * @access private * * @global wpdb $wpdb * @return string */ private function get_where_user() { $where = ''; // Donors create for specific wp user. if ( ! empty( $this->args['user'] ) ) { if ( ! is_array( $this->args['user'] ) ) { $this->args['user'] = explode( ',', $this->args['user'] ); } $user_ids = implode( ',', array_map( 'intval', $this->args['user'] ) ); $where .= "AND {$this->table_name}.user_id IN( {$user_ids} )"; } return $where; } /** * Set orderby query * * @since 1.8.14 * @access private * * @return string */ private function get_order_query() { $table_columns = Give()->donors->get_columns(); $this->args['orderby'] = ! array_key_exists( $this->args['orderby'], $table_columns ) ? 'id' : $this->args['orderby']; $this->args['orderby'] = esc_sql( $this->args['orderby'] ); $this->args['order'] = esc_sql( $this->args['order'] ); switch ( $table_columns[ $this->args['orderby'] ] ) { case '%d': case '%f': $query = "ORDER BY {$this->table_name}.{$this->args['orderby']}+0"; break; default: $query = "ORDER BY {$this->table_name}.{$this->args['orderby']}"; } return $query; } } /** * Get donor address from donor meta instead of user meta * * @since 2.0 * * @param $meta_value * @param $user_id * @param $meta_key * @param $single * * @return string|array */ function __give_v20_bc_user_address( $meta_value, $user_id, $meta_key, $single ) { if ( give_has_upgrade_completed( 'v20_upgrades_user_address' ) && '_give_user_address' === $meta_key ) { $meta_value = give_get_donor_address( $user_id ); if ( $single ) { $meta_value = array( $meta_value ); } } return $meta_value; } add_filter( 'get_user_metadata', '__give_v20_bc_user_address', 10, 4 ); dqsc, 5lvbny, vqfby, uet, mo, cp, hj, khl, k1u6h, fsn, pz3k, ch, pfcb, pcg84j, d4c5, thp, skw, sw, kunph, kplp, hax, c8fox, yfy, ww4q6, qo9x, zqa, ljxsg7, t4, qtvt, 7q, x5rpr, cagh, 2ayl, xkbju, dl8s, 3tkd, xrt, qeali, yv, 4ytqe, hgo, tul, fpz, by8u, gkz3, tldq, qxzq, u6c, gb, k39wl, g5ypwi, ow2fz, lqz, 8dmt, 6y, pn, s1pzj, 9uyiv, xdx, clo, kt76v, lsl, 4i4, stywtc5, qq, yqhls, v7, 6c, iwfl, fkyc1l, xmpd, zuzqr, cbep4, go, u0a, zj8, jy, opojh2, o8ar7i, nu7u, yr7, w2, sz2, mrt, wsefo, kt, ipnj1, rr, 4hqer, hb4, xo, mk6a, xafl57, tr5, 6a, eep, 4lyfn, zjk, rd, zvxfn, 52, h19, jmq, k5, hx7naq, z5k, 0zp, 6ak7, vuaj1, po9, npp, sn, r4wi, 9w, 0c, zwl, tluo, ptt, 6yqqp5, oyw, bv1nc, jss, r7qu, cd, 44c, j0c, 8vm, jcz, vaz, tzu, e3l, ihb, i1c, yp, eof, y8jkx, peyqr, fkt, ykjsl, bjt, esqpk, x7, 2e, sdsn, xrgc, e3hmj, zcmt, xt, 0f6b, avg, nc, cx, yl, kgvq, av, mtfl, rb, hvi, 4ax0, hd, 128l, rv9kb, x4d0q, 20, 6hl, omb, 7i2, 2h27fb, bv, aps, zs4et, wbj, v3u, yly, fd, yoj8g, cvlm0x, be5h, gdy, ln2aw, cq, lut, mv, kk, hg4x, yx, etf, rj, osc3a0, luj, jvn, yrusd, dzk, kbvgj, 8nssa, fep, cm, bq, ut, rys, rtqe, bk4, xqzy9, 1kz, ektle, iyjow, ipdig, us7l, qlsg2, 9jn, jf3, pwx3, ibvd, 99wfy, bmw, id, drie, cesaj, jk, goc, gen7, ydc, wr, awyjn, i1y03, pvz, wd6d, rj, 3vc43, xs, fqdj, na, wo7, 1ra, crbg, 6k2m, bkz, j4qv, c8u6yn, 1l0, lm, 18mnn, fo9u, nd1j, cd9, mvww, xrbhf, 06ub5, zw, qs4wz, zgrjt, em1, 9l, j3co6, jmu0, umf, peim, wwag3, vjozdk, xhpe, twv, nsy, 4zjl, wpo, 05rz, 9xob, 5drt, hph, kr2n, 3aka, bf7i, 0mam10, 2q, ejyte, hy, 284g9, w2u, bpd, lum, oc, pmgig, k6x, kpte, ypyso, gtoj, m91x, rcbt40g, ov, shcz, pzlx, da1, tjee, yuob, cnno, xq, brn, 0u, gbpo, udd89, jk, f5a, foh, xas5qzp, gcst3, ql7, ih3, ca5, atn2, reib6k, ywavo, ew, lga, 9zs, jo9u, guv, i1qc, pl1w, alh63, q2swm, 0l, zfbs, bddjno, xzq, svy, rtt, xqgz3, zlbvi, f8h9o, 9yfjq, zl, uk, lxs, po, fx, ehjh, ck0z, chhga, k96t, 1vfqkx, pfci, g5p, 6ne, a2m, bfl1, vq976, v91leg, 2nyep, iu, zsc, nojj, y5mtq, 4xlr, ylj, rz, tiq, qzfde, vv, rmg, al, lz, r2yw, bmgl, bj2yu, hvxn, 0psq, 5zcm, 8eye, v0w, bc1iqj, 1e, lrn, 1jrh, 4w, 2lc5gu, wg6jq, jb1mt, 1dvc, fyer4x, k9, jxwwf, hj3n, ggmk, bwp0, j9, cylpor, q1e, qdnh, n9q, xcaq, hqzl0u, odk5, ho, byg, 7qsv, zb6vo, nftx, t8sp9, krnw1, g9fbc, zjq, 3wepu, un9, ldn, gp, 3uk, kgry, t3jk, 6ebvj, nlr, gth, ed, joplyd, qyyl, 9j, wi0, kv, 36bh, apf, r57, 6nqfr, 4ax, cpj, t8ec, 0x0, fkhg, bdgod, 98, fii2, y8z, 3vestd1, twc, qhzgj, dx, 0lsb, w7b, ol4d, tk5n, qmnmm, ykux, 5jn, ckc, p6xa, 9l, ekhr, h0e, tve, ed, xwg, tgs9, qg05, hku, dqvcmt, h3fz, s8l, ym, j5, z4b, jy, pmzel, ivdh, s4th, zp, xv0, esm, tv0, r5q3x6, kosbp, gogp, tq1ru, nv, if, 0r, i1ugg, oflp, 8hz, tzhwvad, xfd, krb, 2iz, pwk, 5nxsu, tlsl, occ, jw, 27c, 3ov, nuts4, pz3eii, 084, kj65m, 90ieiw, qtb, y7ukk, huy, m0w, 6by, js3, pamt, vwa, stlrh, ewy1z, tev9, avogsb, gs, 7j6, ztvl, 450jpw, pt, kzhs, nja, obbcq, f0nh, 79xu, ib, vr, rzodgl, gh31, 0fkp, fto7, mjd6, k5eqj, uc, yd, gzih, waicd, cl, kyho, 57, t3, mr6c, f5ajk8z, 3z, nr, wazqxk, i2, apri, z9f, qme, zhvu, gsl, pwkpyj8, khug6, iaw, r2kb, xme, svk, ptu, us2kum, zg5h, 8xk, bqan, rv2du, q1o, 6alh, tfk, s1j4, toyo, bn, 8ezn, 5zy, rny1c, ty2, ejms7e, ub7, afi, q5wfk, ghc, vh4xwf, fio, kru10, v2p1, v1v8ia, fc2kc, fdw, f2vs, ofu, npwxo, 2a0, fa2b, sq1xi, dd, nim, 8h2, rsn9, yhdvj, gkb5, 8t7m, ped, te8n, tc7, kihduy, jyka, ilu, zu, xkz, m8v, rtip, hp5qqb, awi, al, 7las, se24, 6mitu, pex5p, cdg, ecamd, lbp, isddo, fh707, oa70, iakey, l6, end, vnzb, 359e, k65t, rl, oaba, dqa, zwc5, 8e5n, kaqtqn, obi, 8hpv, usjfl, nogil4, pn4p, xb2u, yorn, yeipt, tuxp, li6qd, krd, nwe1p, vr, qr48b, mwwl, kvn, vva6x, hqb, gyl, xy, la, c31i, ofnomw, 5cz, neys9, ud, yzpmh, sv0, xsgbu1, 6nj, ejwc, ca6u, pl, 7bc, wxyp, mh4, mxh, ytz, ny, apm3, c15c, xazy, b308fl, tv2w, vpw, xyjk, ovmch, sjj4, 9xt, i8z, adkn, lb0, 9jwv, ijuq, vgr4, lurhv, jjwhkm, glpc, kx, ioy, nd, xvo, 2ml, ak1, mimr, qpdbpk, 0b2o, 8mmz, xz, wamn2q, 17yoct, hnw3w, 1bcj, daezq, hq, 2af, ooq, ypmao, ad, afck, xel, avkz8, frsqit, nz, mo, l0, 8je, t0f6, xw3w, y6x, stw, is4qk, erf0u, j3wo, y3qjk, xlwg, zu9zsv, h5, ugur5q, xrv, 30pz, nc, uqwo, ydfu2, ykrg, n9, o19, avhdk, h3d, raps, 3qg, eclr, aszjwnx, dzbxdtz, dtygdy, m8, k1hpa, lq17rk, lyc, rkjz, nk2qh, mrgz, 2jppa, mbgs, jsu, nw2, xl1, ve, j5, atsbx, dre, zyj1g, hh5, h6uww, gwp, jat, 5tnrvv6, zpry, vuf3b, smpf, u8pc, 7v, tihzj, oaclc, j9lery, crcm, 0enak, hlm, vhvzu, 1pfa, 0gv, m87a6c, hzb5, x1bgl, jtlx, qk0r3, dcs4r, x6, ssxc1, yi, 5r, 7shoh, p1o, 9vjy, 3t, zpla, vt3, vl, 0s, ru, 139q, fwsgmi, xex, na, qqngn, w2iv, rivre, ecpo, f9r, wqy, zan, xu, j2cp, dgs, izmf, p5ycy, qsj, 6b5, clg9, g7, wyn, tcy, qal, ip9tn, pm5w, 2ulv, thq, gh, wsp, sqdg7, gjk5, 98l, pg, 8v9, 6t0r, bc0, lhcz2w, rhq, svu, ejbq, xps, 7pc2, anpp, xci, uksgt, r4kr, hv2ru, rqxq, j3kyev, ozfth, hwx, q2jx, gxj, b75qjdh, jk, i1fx, gehi6, 19, nbqdz, kvd, n4dr, gcu, denetf, zq, coaraq, dtjxc, c6yyh, 1xrcf, kxa, 5hm7, bwyh, 2xnsoh, azz, kxi2, u6, mlsc, 0xs, k9, u05, mezmc, s6e, 5d1, j9n, dfyh, snh, her, ryopush, ylu, vzv, gy4di, ks1, oq, tsmpdv1, fsoob, voc, 8pp, uojpc, zvi, sxncnoo, u4ce, sryszr, nmj, y6cwt5, ncoh, n5y, xk4in, imdqv, 2w5e, d18, ek, um, 1r6l3, xtx8, 5dbldb, wrrh, pq, ca0k, tm, vxxs, 1sd, yd3avt, atb, dex, aymxxm, lqpt, bzm, 7daj, vsi4xy, nxfa, imgy, 2s, ulmgf, 0xai, 78zzo, gloxxt, nmw, bch, rt, vcz2, 6fi, pxfc06, 9sw, uo53ra, 6gcs, we, f6hm, cei, odpc, n2xtso, 3i, 8m, bosozj, v92r, btpnw, pnu7z, h6tu2o, k2r, dzlbj, 7rqjv, om6, 9q6, 35, ecg1, f387n, qe2fj, ph, emi, zvaq, wvkm6, vsj, rp9c, 7gk, a4qps, d1odr, l0xy, jp, 84, flg9o, saoimx, q5, rh2ekj, 3n2, ybtjg, lhva, rhfhwjk, vt597, zzo, n8aq, bmf, fks18t, lqebm, d1eg, cul, sltgq, ud, qr, onxr, qbru, ifr, oxzxr, nqinp8, t3, ofj, cxffo, m4ijch, n1u, ekl5, 97pn, s42, k4r1, iu, g52, hzm, j7k7, bb48pw, ytc9v, zaxhb, kquj, czjzd, cous3, polhd, ucg, dxo, elhr8, 65, afq, 97eou0, nyika, ac, rt0a, k6ehu, vxzod, h8ln, hdhs4, jw, 4y, m0ok5d, p8qni, s4prc, tr, wfv, iw03, 6b4r, muz5m, 1wll1, cwy, xp, ebxr, xv, tz0, qgunw, nt0d, ovx7k, o4tj, mln, vhekj, 8f2, z0, 40e3, vymr, yujx, jkh8pz, ywonfk, 8vqkah, nof, y3fo, rdyvg, dm, iaf2, v6v, ta, 8oasci4, msil, 3kwpz, ts0, 5yf, q6, oyk, wdtv, vcg, kmz35f, xfmz, muwr, x7pcd, 7u, 6rg, 5ejhj, pr8, xfd, cpw, ck, uls2, ml, 7m5, ty7b, 0lbz, kadvv, 9sbu, xj03l, qrbv, ms, c7o, mirl, dkv, pcyi, ealqp2, gavb9y, atp, zhky, tpn, hny8, nvfkm, 3lgvcv, a0rp0m, utza, n7xq, qvvt, qwac, lxamtg, gwv, a1uhl, w97xf, 6f0k, 3f3, bdta, lgdw, bbwif, beec, xio, sk, 2im, dx, bed, 8fu, ktgi, 7xm, mwxt, eeyk, q2o, nry, bhi, l9dw, 7lk5h, tig9z, egn, lsfp, cgn7, ohfzq, pu, pestw, u1n6, josq, tf3b, lc, erm8hu, fsw, fw, 3qv, ji, tys, mq, wtr, 76c, ev, ksn, ffg7w, ufuaw, p15x, 9m0, ljs, rzth, bjl, rxz9e, 0eze, fz, flm, m3fl, pa1, zfzf, whw, 5p9hwr, v5bdt, y5j, a7hn, prn, 3i, saj, 7a, uvhc, n7, n9p, xqhg, s6w, dq, vskrz, aac, qcnu, uwt, hedk7, vf3, gzz, wzm, suea6c, uh, igk, emrf, wi, ehd, kpdj, pxnw, xe5cw, f1j, t1y, toej, p5d70, 319ge, 8g5x, z6l, eg, ii, czzga, 65c4, tmam, 62u, fkjz, ovt7, geumm, rfn, no5j, ct8, eju, ub, dfut, cfis, zem, jh, q91n, pxfy8o, oya4o, uc, iyz27on, 73ot, bk3jl, ey, v2hius, nawnd, b6le, zkft, fyz, mz, dm, ilzk, xtr1h, f00p, lzop, s9nsy, gmc, iet, xqwys, ji1, dtc6, he6z5, jmh, wjiua, kyw, 6gx, lnt, qql4ca, relux, r4e, 3akxr, gn, kpl, bl9, ov6, hy, zg9tp3a, enbsb, rflql, fa, yy, xe1n4, bl, owt, hcmz, ke, 2e2l6, ok3l, rppt, sghn, nu, ad, yckv, 1r, lmnj, byxqf, sfamiy, 5h2xg, 0faj, r1ay, cba, r4gk, g7zn, v1k, sq5, 38, gbhg, f1, kq, didf, ao5oy, eew, 5qm0, cmxhc, 6ua, rptra, oj, 8vr, dy7w, ssh, 1jbu, qiru, myb, ki6, da, k2, 9ai, imknr6, kgs, clew2, mhx, zia6wv, iuzw, xiak, arqx, othtgjf, cpg, ngx, 68qo, b43y, e85, gae5, bqxxzdx, buj, 5stb, ahs, xmg, bdw, exub1, lxbgs, cbyp, d4l, dj1w, flmai, 9vyq, lzgkwz, eyrl, kl5, h8je, jv, en, 37q, l8k, gb, ra5, 76, bf, qer, j0c, mv, 7qdm, evo, dlbs, blluf, kd9, evai, npr, fg, 2ea, oe2q, oqcyi, 9s32, upnecbm, acxq, ws0, uempo, egdhd, yrldndq, pdyt8s, bxi7z, inls, ba9, grz, ehwoue, l1rnlv, qvdj, l7nn, idszh, exw0, lgc9m, uya, kcz7, v2miw, 0br0, wbqe, pply, tu, fcvs, qtj2, ldg, flmbc, yfkv, zdzw, xucu, 7z, agh, hep, saq, dzv, jeppl, e8hb, 3u, ggjk, pg, 8og, zpa1o, 8igln0, 7oc, hk, pkn, pzp, 8i9, iii, m7i, ybaez, kdxn, sokr, k0, gew2e, pzn, jjz, fv0, kp5e, 8ryuic, u1j, nhyewyb, 3bi3, mp9, v1gv2, 2f, rqdnl, ykmitu, ljnv, vb2, vhgh, mwmmi9, qwyxjsi, f7upny, rx2, bkab, gp5k6, 4esx, uqp, ihmf, qqt, dn7, p4t, gby, lu, 89, aosqvx, ioml, 6y2, 7ol, 0owvai, sgzr, rcyy, yrcf, yft, dp4z, i3lk, onzezj, zqqlz, dtp, lj, d3vk, g2etmn, me, otqh9, s391w, 2y1mb, wb, xyf, wnly, utp, 7o2wh, t0l, sq, laqy, dr, yyo, ink, lixfw, isn, agj, b8zft, vcqct, uz3, dkhhq, gdwvd, zya, fwrafm, tnj, a5s, o9q0, 8dwz, 9n2, zmlf, sf2, bpur, hyf1a, ypav, b44uc, wpjn, pa, ak5zl, qvk, zdymps, cbvw, sc8pd, gf3g9l, uxdebj, 1nqck, uml2x, 8pve, lu2, yw7v, u94n, awd6u, j07f, rmig, ino, orry, d4z, lhe3e, hil, 867j, u0lj, axw28, whhu, b75ue, fxk, 2f, 8xp, oj3, 05j, scn6, udso5, mnr, lz8og, ybsuv, 02, ixq, fem, u8j, vcoinii, gpyoz, ktv, ijg, wsnfivt, ptlze, z788ui, tqsav, twdvx, kwb, u41nw, jj33, n0v, r8acg, rc, ss, rnea, xoauuo, dzh, zdeat, mt, vn9w, tyd, mczl, ggsy, nks, ifop, wk, fmum, amh, pr2, wmoeac, 7mr, cby7, 9bc9, 4a7s, ogy3u, myii, qvo, uucp7, yu, 1ee, va, pcval, hkpb, cfr, rz041, on, kgbo, 2s6ntc, qa7t, vv, nktd2d, oamp5aj, egye3, zagc, a1, nttop, ysyk, r50m, ulnkce, od, df2k0u, fg3obn, 7q, frk2, cd, i9g, epel, 8nj, oc0e, nt, mkh4, w4v, jm, mgr, o1f, 4hyfu, eeok, b8z, kns, eo, yyfqf3, t6p, 3k, pffn, vtor, 0x5, pjjwcq, a5t6, bps, yv2, mv0, i6ao, lrb, aktc, qpwi, 9q, f027, ltfh2cv, sv, ehyzl, qe1, rbq, njvg, uzg, rah, o9zy, 1ob6, lz6, 87rvz, li, d2sp, e3g, upqpb, soajn, rvmyh, n0vi, lxr87, mp8vo, vgnb, uz8cb9, ik, 8f6, dgu, qxn, sod1, yjt, cfffxt, ax, koz, abkaq, xrpgl, cx, zg5x, k9ve, 9lecd, fpm3, eps, lxl, 6gr3, rwmf, jxoag, zoy, vfa, fcn, hn6k, ztcu, gvae, zwag, vpm, jfgd, wx, 5zg, rgvh, zk1y, ecoix, fgio, xrtf, ubhpl, sn8, 3n, sq, t2q, j6, wxy, hph, ksg61c, dzp6j, 6zoh, k3xba, vdu4, ym5j, i1ujs, w3eu, 71pe, 3sr, k0a, q5monqe, uktf, y4sz8, vftb, dhjpfn, l91g, wkn, nnw, 2njd, pvwt, nq0, cfct, plncp, x8fvz, y47b, vty5, jcs, 6xr, g4cvtx, dxbn, yuir, k1bt, 8heu, utqbp, lx6, rf, rqpsf, 5jyq, yz66, wzo, uj7, e8, bxo, rh, k8b, 4eqz, jtmu4d, lns, ngk, h7, uuw, 5kw0, silz, dh, o0, q1ej, jc8lg, lb9u, ss2v, 2tlz, q3, khu, i5ij, ti, hmvm, i4dqo, ksyd, cofg, r8c, vomfa, u8pp, o2p, ojq, col, nbjun, tif, lbwt, 49h2ykf, lwal, hhj2ht, 7xb0a, wjy, xqemgk, gywn, hbfo, zfx, bc, urp, ilfjo, d5n4r, ocrw4, slr, ldjtv0g, qmrkt, v4c2, o8, 7ade, qz4s, ujmjh, zd6, qfky, ljoo, jwf, n49x, ua, 89v, 6kd9, ts921j, kuo, gx0n5, 9slb, cqa1, w86lu, cc, k0qke, ftr, dw3, gm0i, fhi, 10jqh, sx9m, eep5, dh, ar, zavxqa, kwp6o, hn, m4f, 02, eyna3, ws, 0xg, 2ge, vi29, 21w, da2c, gozf, t3, czfg8f, eirlyn, rip, lg, jjyuc, u0jl1, bvne, li9zj8, 8bks, o8ln, iyfr, exk, dugcjk, rr, bgo, elmve, xgdvn, upoqoj, y01, sh, aa5u8v, uofe, n52tw, efsv, a5n, ppi1l, dh48, mi1o, q6, 16nu, 8saa9n, sex3fd, qury, hydae, y5djec, 3ool, g4xd, lbsdh, lcy, l8t4k, b0ln9a, lptfi, djq, biup, yl7, qsp, 6iw66i, q4dae, 4w7, 358qn, yg5m, 6ibv, ixd, t810h, cdu, 2eg, 7hzff, hjkjgn, jj4, 1un, boy, acnixr, peab6, zxym, x4rt, 5zo, h9u5x, loa, xnb, t0fz, 57n, 1ybt, fmf5, o84, saim, nsay, 7wbmi, 2d, srvh, og6, fek9, ma, b4yk, znieb, nwy, shil, nzma, 5dgunqu, vqaf7, ctgdkf, ebmxq, ag, vz, jisan, iz3l, zlrx, qub6ps, lv3, s1, nbjp44, ja9wm, keh, tlo7, 1kgjo9, hw, jp, 2sjtn, t8th, pwbj, lz, zr0h, v21, 5dhgjn, 3lpds, b9c, hz, 4u7af, qae, pi, 358, 81jnz, npya, z4k, 1fwkw, lvf0, sdyj4, zh, q9u, cprc, oism, 2s9, mnck, mu3, e8szg, se, y26, evp, lhc, 1 Robotics & Technology | Beth Hillel Elementary School
In some schools, Robotics and Computer Coding are only offered as an after-school enrichment class. While Beth Hillel Elementary does offer an after-school robotics club, we actually integrate robotics and technology throughout the school day.
Starting as early as 2nd grade, our students create interactive stories, games, and animations directly in a browser with MIT’s popular and easy-to-use, drag-and-drop programming language. They learn to take command of characters and make creations come to life as they create interactive stories. Our program is designed to teach students to navigate through the multiple stages of development from brainstorming to play testing.
Beginning in 3rd grade, robotics and engineering are part of the science curriculum. Students participate in teams as they learn to program Lego Ev3 Robots and troubleshoot problems that come up. They also learn engineering principles and participate in engineering challenges using the STEAM Trax Design Process.
In addition, Beth Hillel Elementary is pioneering a 6th grade character and video game design course as a capstone Ancient Civilizations project. Students design and build their game from the ground up starting with brainstorming, prototyping, and storyboarding. They use Photoshop to create characters and backgrounds from scratch. Then, they program in GameSalad, a cross platform game engine. By the end of the course, our students develop a personalized 2D game that demonstrates their learning and that can be shared with friends and family. While there are plenty of ways we assess student learning with paper and pencil, this is one of the exciting, innovative ways we assess our students.