| */␊ |
| static public function entry($signal, &$params)␊ |
| {␊ |
| Pluf_Log::event('IDF_Plugin_SyncGit called.');␊ |
| // First check for the single mandatory config variable.␊ |
| if (!Pluf::f('idf_plugin_syncgit_sync_file', false)) {␊ |
| Pluf_Log::debug('IDF_Plugin_SyncGit plugin not configured.');␊ |
| return;␊ |
| }␊ |
| @touch(Pluf::f('idf_plugin_syncgit_sync_file'));␊ |
| @chmod(Pluf::f('idf_plugin_syncgit_sync_file'), 0777);␊ |
| if ($signal != 'gitpostupdate.php::run') {␊ |
| @touch(Pluf::f('idf_plugin_syncgit_sync_file'));␊ |
| @chmod(Pluf::f('idf_plugin_syncgit_sync_file'), 0777);␊ |
| } else {␊ |
| self::postUpdate($signal, $params);␊ |
| }␊ |
| }␊ |
| ␊ |
| /**␊ |
| * Entry point for the post-update signal.␊ |
| *␊ |
| * It tries to find the name of the project, when found it runs an␊ |
| * update of the timeline.␊ |
| */␊ |
| static public function postUpdate($signal, &$params)␊ |
| {␊ |
| // Find the corresponding project.␊ |
| $git_dir = substr($params['git_dir'], 0, -4); // Chop the ".git"␊ |
| $elts = explode('#/#', $git_dir, -1, PREG_SPLIT_NO_EMPTY);␊ |
| $pname = array_pop($elts);␊ |
| try {␊ |
| $project = IDF_Project::getOr404($pname);␊ |
| } catch (Pluf_HTTP_Error404 $e) {␊ |
| Pluf_Log::event(array('IDF_Plugin_SyncGit::postUpdate', 'Project not found.', array($pname, $params)));␊ |
| return false; // Project not found␊ |
| }␊ |
| // Now we have the project and can update the timeline␊ |
| Pluf_Log::debug(array('IDF_Plugin_SyncGit::postUpdate', 'Project found', $pname, $project->id));␊ |
| IDF_Scm::syncTimeline($project, true);␊ |
| Pluf_Log::event(array('IDF_Plugin_SyncGit::postUpdate', 'sync', array($pname, $project->id)));␊ |
| }␊ |
| }␊ |