function save_memberships() { $existing_groups = $this->existing_groups(); $requested_groups = $this->requested_groups; $groups_to_add = array_diff($requested_groups, $existing_groups); $groups_to_drop = array_diff($existing_groups, $requested_groups); if (empty($groups_to_drop) && empty($groups_to_add)) { return; } $dia = default_dia_connection(); if (!empty($groups_to_add)) { foreach ($groups_to_add as $group_key) { if (!($group_key && is_numeric($group_key))) { continue; } $dia->save('supporter_groups', array('supporter_KEY' => $this->supporter_key, 'groups_KEY' => $group_key)); } } if (!empty($groups_to_drop)) { foreach ($groups_to_drop as $group_key) { if (!($group_key && is_numeric($group_key))) { continue; } $dia_memberships = $dia->get_objects('supporter_groups', array('condition' => array("supporter_KEY={$this->supporter_key}", "groups_KEY={$group_key}"))); foreach ($dia_memberships as $membership_data) { $dia->delete('supporter_groups', $membership_data['supporter_groups_KEY']); } } } $this->groups = implode(' ', $requested_groups); $this->save(); }
<?php $base_folder = dirname( __FILE__ ); require_once( $base_folder . '/start.php5'); require_once( APP_ROOT . '/lib/dabble_parser.php5'); require_once( APP_ROOT . '/load_dia.php5'); require_once( APP_ROOT . '/load_orm.php5'); require_once( 'dia_supporter.php' ); $supporters = ORM::factory( 'diaSupporter')->find_all( ); $dia = default_dia_connection( ); foreach( $supporters as $supporter ) { $dia_memberships = $dia->get_objects( 'supporter_groups', array( 'condition' => "supporter_KEY={$supporter->supporter_key}" )); if( empty( $dia_memberships )) { print "no groups for supporter {$supporter->supporter_key}\n"; $dia_record = $dia->get_object( 'supporter', $supporter->supporter_key ); Util::dump( $dia_record ); continue; } foreach( $dia_memberships as $membership_data ){ $dia->delete( 'supporter_groups', $membership_data['supporter_groups_KEY'] ); } $dia->delete( 'supporter', $supporter->supporter_key ); print "deleted supporter {$supporter->supporter_key} / {$supporter->id} \n"; }