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();
 }
Beispiel #2
0
<?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";

}