class IDF_Form_TabsConf extends Pluf_Form␊ |
{␊ |
public $conf = null;␊ |
public $project = null;␊ |
␊ |
public function initFields($extra=array())␊ |
{␊ |
$this->conf = $extra['conf'];␊ |
$this->project = $extra['project'];␊ |
␊ |
$ak = array('downloads_access_rights' => __('Downloads'),␊ |
'source_access_rights' => __('Source'),␊ |
'issues_access_rights' => __('Issues'),);␊ |
|
'widget' => 'Pluf_Form_Widget_SelectInput',␊ |
));␊ |
}␊ |
$this->fields['private_project'] = new Pluf_Form_Field_Boolean(␊ |
array('required' => false,␊ |
'label' => __('Private project'),␊ |
'initial' => $this->project->private,␊ |
'widget' => 'Pluf_Form_Widget_CheckboxInput',␊ |
));␊ |
$this->fields['authorized_users'] = new Pluf_Form_Field_Varchar(␊ |
array('required' => false,␊ |
'label' => __('Extra authorized users'),␊ |
'widget_attrs' => array('rows' => 7,␊ |
'cols' => 40),␊ |
'widget' => 'Pluf_Form_Widget_TextareaInput',␊ |
));␊ |
}␊ |
␊ |
public function save($commit=true)␊ |
{␊ |
if (!$this->isValid()) {␊ |
throw new Exception(__('Cannot save the model from an invalid form.'));␊ |
}␊ |
// remove all the permissions␊ |
$perm = Pluf_Permission::getFromString('IDF.project-authorized-user');␊ |
if ($perm == false) {␊ |
// We do not have this perm for the moment in the system,␊ |
// so create it.␊ |
$perm = new Pluf_Permission();␊ |
$perm->name = 'Project authorized users';␊ |
$perm->code_name = 'project-authorized-user';␊ |
$perm->description = 'Permission given to users allowed to access a project.';␊ |
$perm->application = 'IDF';␊ |
$perm->create();␊ |
}␊ |
$cm = $this->project->getMembershipData();␊ |
$guser = new Pluf_User();␊ |
foreach ($cm['authorized'] as $user) {␊ |
Pluf_RowPermission::remove($user, $this->project, $perm);␊ |
}␊ |
if ($this->cleaned_data['private_project']) {␊ |
foreach (preg_split("/\015\012|\015|\012|\,/", $this->cleaned_data['authorized_users'], -1, PREG_SPLIT_NO_EMPTY) as $login) {␊ |
$sql = new Pluf_SQL('login=%s', array(trim($login)));␊ |
$users = $guser->getList(array('filter'=>$sql->gen()));␊ |
if ($users->count() == 1) {␊ |
Pluf_RowPermission::add($users[0], $this->project, $perm);␊ |
}␊ |
}␊ |
$this->project->private = 1;␊ |
} else {␊ |
$this->project->private = 0;␊ |
}␊ |
$this->project->update();␊ |
}␊ |
}␊ |
␊ |
␊ |
␊ |