case 'Pluf_User::passwordUpdated':␊ |
$plug->processSyncPasswd($params['user']);␊ |
break;␊ |
case 'IDF_Project::preDelete':␊ |
$plug->processSvnDelete($params['project']);␊ |
break;␊ |
}␊ |
}␊ |
␊ |
|
$ll = exec($cmd, $output, $return);␊ |
return ($return == 0);␊ |
}␊ |
␊ |
/**␊ |
* Remove the project from the drive and update the access rights.␊ |
*␊ |
* @param IDF_Project ␊ |
* @return bool Success␊ |
*/␊ |
function processSvnDelete($project)␊ |
{␊ |
if (!Pluf::f('idf_plugin_syncsvn_remove_orphans', false)) {␊ |
return;␊ |
}␊ |
if ($project->getConf()->getVal('scm') != 'svn') {␊ |
return false;␊ |
}␊ |
$this->SyncAccess($project); // exclude $project␊ |
$shortname = $project->shortname;␊ |
if (false===($svn_path=Pluf::f('idf_plugin_syncsvn_svn_path',false))) {␊ |
throw new Pluf_Exception_SettingError("'idf_plugin_syncsvn_svn_path' must be defined in your configuration file.");␊ |
}␊ |
if (file_exists($svn_path.'/'.$shortname)) {␊ |
$cmd = Pluf::f('idf_exec_cmd_prefix', '').'rm -rf '.$svn_path.'/'.$shortname;␊ |
exec($cmd);␊ |
}␊ |
}␊ |
␊ |
/**␊ |
* Synchronise an user's password.␊ |
|
* We rebuild the complete file each time. This is just to be sure␊ |
* not to bork the rights when trying to just edit part of the␊ |
* file.␊ |
*␊ |
* @param IDF_Project Possibly exclude a project (null)␊ |
*/␊ |
function SyncAccess()␊ |
function SyncAccess($exclude=null)␊ |
{␊ |
$authz_file = Pluf::f('idf_plugin_syncsvn_authz_file');␊ |
$access_owners = Pluf::f('idf_plugin_syncsvn_access_owners', 'rw');␊ |
|
}␊ |
$fcontent = '';␊ |
foreach (Pluf::factory('IDF_Project')->getList() as $project) {␊ |
if ($exclude and $exclude->id == $project->id) {␊ |
continue;␊ |
}␊ |
$conf = new IDF_Conf();␊ |
$conf->setProject($project);␊ |
if ($conf->getVal('scm') != 'svn' or ␊ |