Вход Регистрация
Файл: framework/security/MemberCsvBulkLoader.php
Строк: 34
<?php
/**
 * Imports member records, and checks/updates duplicates based on their
 * 'Email' property.
 *
 * @package framework
 * @subpackage security
 */
class MemberCsvBulkLoader extends CsvBulkLoader {

    
/**
     * @var array Array of {@link Group} records. Import into a specific group.
     *  Is overruled by any "Groups" columns in the import.
     */
    
protected $groups = array();

    public function 
__construct($objectClass null) {
        if(!
$objectClass$objectClass 'Member';

        
parent::__construct($objectClass);
    }

    public 
$duplicateChecks = array(
        
'Email' => 'Email',
    );

    public function 
processRecord($record$columnMap, &$results$preview false) {
        
$objID parent::processRecord($record$columnMap$results$preview);

        
$_cache_groupByCode = array();

        
// Add to predefined groups
        
$member DataObject::get_by_id($this->objectClass$objID);
        foreach(
$this->groups as $group) {
            
// TODO This isnt the most memory effective way to add members to a group
            
$member->Groups()->add($group);
        }

        
// Add to groups defined in CSV
        
if(isset($record['Groups']) && $record['Groups']) {
            
$groupCodes explode(','$record['Groups']);
            foreach(
$groupCodes as $groupCode) {
                
$groupCode Convert::raw2url($groupCode);
                if(!isset(
$_cache_groupByCode[$groupCode])) {
                    
$group Group::get()->filter('Code'$groupCode)->first();
                    if(!
$group) {
                        
$group = new Group();
                        
$group->Code $groupCode;
                        
$group->Title $groupCode;
                        
$group->write();
                    }
                    
$member->Groups()->add($group);
                    
$_cache_groupByCode[$groupCode] = $group;
                }
            }
        }

        
$member->destroy();
        unset(
$member);

        return 
$objID;
    }

    
/**
     * @param Array $groups
     */
    
public function setGroups($groups) {
        
$this->groups $groups;
    }

    
/**
     * @return Array
     */
    
public function getGroups() {
        return 
$this->groups;
    }
}
Онлайн: 0
Реклама