$projecttempl = Pluf::f('mtn_repositories', false);␊ |
if ($projecttempl === false) {␊ |
throw new IDF_Scm_Exception(␊ |
'"mtn_repositories" must be defined in your configuration file.'␊ |
__('"mtn_repositories" must be defined in your configuration file.')␊ |
);␊ |
}␊ |
␊ |
$usher_config = Pluf::f('mtn_usher_conf', false);␊ |
if (!$usher_config || !is_writable($usher_config)) {␊ |
throw new IDF_Scm_Exception(␊ |
'"mtn_usher_conf" does not exist or is not writable.'␊ |
__('"mtn_usher_conf" does not exist or is not writable.')␊ |
);␊ |
}␊ |
␊ |
$mtnpostpush = realpath(dirname(__FILE__) . "/../../../scripts/mtn-post-push");␊ |
$mtnpostpush = realpath(dirname(__FILE__) . '/../../../scripts/mtn-post-push');␊ |
if (!file_exists($mtnpostpush)) {␊ |
throw new IDF_Scm_Exception(sprintf(␊ |
__('Could not find mtn-post-push script "%s".'), $mtnpostpush␊ |
|
*/␊ |
public function processMembershipsUpdated($project)␊ |
{␊ |
$projecttempl = Pluf::f('mtn_repositories', false);␊ |
if ($projecttempl === false) {␊ |
throw new IDF_Scm_Exception(␊ |
'"mtn_repositories" must be defined in your configuration file.'␊ |
);␊ |
if ($project->getConf()->getVal('scm') != 'mtn') {␊ |
return;␊ |
}␊ |
␊ |
$shortname = $project->shortname;␊ |
$projectpath = sprintf($projecttempl, $shortname);␊ |
␊ |
$mtn = IDF_Scm_Monotone::factory($project);␊ |
$stdio = $mtn->getStdio();␊ |
␊ |
$auth_ids = self::getAuthorizedUserIds($project);␊ |
$key_ids = array();␊ |
$projectpath = self::_get_project_path($project);␊ |
$auth_ids = self::_get_authorized_user_ids($project);␊ |
$key_ids = array();␊ |
foreach ($auth_ids as $auth_id) {␊ |
$sql = new Pluf_SQL('user=%s', array($auth_id));␊ |
$keys = Pluf::factory('IDF_Key')->getList(array('filter' => $sql->gen()));␊ |
|
$usher_config = Pluf::f('mtn_usher_conf', false);␊ |
if (!$usher_config || !is_writable($usher_config)) {␊ |
throw new IDF_Scm_Exception(␊ |
'"mtn_usher_conf" does not exist or is not writable.'␊ |
__('"mtn_usher_conf" does not exist or is not writable.')␊ |
);␊ |
}␊ |
␊ |
|
$projecttempl = Pluf::f('mtn_repositories', false);␊ |
if ($projecttempl === false) {␊ |
throw new IDF_Scm_Exception(␊ |
'"mtn_repositories" must be defined in your configuration file.'␊ |
);␊ |
}␊ |
␊ |
$usher_config = Pluf::f('mtn_usher_conf', false);␊ |
if (!$usher_config || !is_writable($usher_config)) {␊ |
throw new IDF_Scm_Exception(␊ |
'"mtn_usher_conf" does not exist or is not writable.'␊ |
__('"mtn_repositories" must be defined in your configuration file.')␊ |
);␊ |
}␊ |
␊ |
|
if ($key->getType() != 'mtn')␊ |
return;␊ |
␊ |
$projecttempl = Pluf::f('mtn_repositories', false);␊ |
if ($projecttempl === false) {␊ |
throw new IDF_Scm_Exception(␊ |
'"mtn_repositories" must be defined in your configuration file.'␊ |
);␊ |
}␊ |
␊ |
foreach (Pluf::factory('IDF_Project')->getList() as $project) {␊ |
$conf = new IDF_Conf();␊ |
$conf->setProject($project);␊ |
|
if ($scm != 'mtn')␊ |
continue;␊ |
␊ |
$shortname = $project->shortname;␊ |
$projectpath = sprintf($projecttempl, $shortname);␊ |
if (!file_exists($projectpath)) {␊ |
throw new IDF_Scm_Exception(sprintf(␊ |
__('The project path %s does not exists.'), $projectpath␊ |
));␊ |
}␊ |
␊ |
$auth_ids = self::getAuthorizedUserIds($project);␊ |
$projectpath = self::_get_project_path($project);␊ |
$auth_ids = self::_get_authorized_user_ids($project);␊ |
if (!in_array($key->user, $auth_ids))␊ |
continue;␊ |
␊ |
|
if ($key->getType() != 'mtn')␊ |
return;␊ |
␊ |
$projecttempl = Pluf::f('mtn_repositories', false);␊ |
if ($projecttempl === false) {␊ |
throw new IDF_Scm_Exception(␊ |
'"mtn_repositories" must be defined in your configuration file.'␊ |
);␊ |
}␊ |
␊ |
foreach (Pluf::factory('IDF_Project')->getList() as $project) {␊ |
$conf = new IDF_Conf();␊ |
$conf->setProject($project);␊ |
|
if ($scm != 'mtn')␊ |
continue;␊ |
␊ |
$shortname = $project->shortname;␊ |
$projectpath = sprintf($projecttempl, $shortname);␊ |
if (!file_exists($projectpath)) {␊ |
throw new IDF_Scm_Exception(sprintf(␊ |
__('The project path %s does not exists.'), $projectpath␊ |
));␊ |
}␊ |
␊ |
$auth_ids = self::getAuthorizedUserIds($project);␊ |
$projectpath = self::_get_project_path($project);␊ |
$auth_ids = self::_get_authorized_user_ids($project);␊ |
if (!in_array($key->user, $auth_ids))␊ |
continue;␊ |
␊ |
|
}␊ |
}␊ |
␊ |
private static function getAuthorizedUserIds($project)␊ |
{␊ |
$mem = $project->getMembershipData();␊ |
$members = array_merge((array)$mem['members'],␊ |
(array)$mem['owners'],␊ |
(array)$mem['authorized']);␊ |
$userids = array();␊ |
foreach ($members as $member) {␊ |
$userids[] = $member->id;␊ |
}␊ |
return $userids;␊ |
}␊ |
␊ |
/**␊ |
* Update the timeline after a push␊ |
*␊ |
|
));␊ |
}␊ |
␊ |
private static function _get_authorized_user_ids($project)␊ |
{␊ |
$mem = $project->getMembershipData();␊ |
$members = array_merge((array)$mem['members'],␊ |
(array)$mem['owners'],␊ |
(array)$mem['authorized']);␊ |
$userids = array();␊ |
foreach ($members as $member) {␊ |
$userids[] = $member->id;␊ |
}␊ |
return $userids;␊ |
}␊ |
␊ |
private static function _get_project_path($project)␊ |
{␊ |
$projecttempl = Pluf::f('mtn_repositories', false);␊ |
if ($projecttempl === false) {␊ |
throw new IDF_Scm_Exception(␊ |
__('"mtn_repositories" must be defined in your configuration file.')␊ |
);␊ |
}␊ |
␊ |
$projectpath = sprintf($projecttempl, $project->shortname);␊ |
if (!file_exists($projectpath)) {␊ |
throw new IDF_Scm_Exception(sprintf(␊ |
__('The project path %s does not exists.'), $projectpath␊ |
));␊ |
}␊ |
return $projectpath;␊ |
}␊ |
␊ |
private static function _mtn_exec($cmd)␊ |
{␊ |
$fullcmd = sprintf('%s %s %s',␊ |