| */␊ | 
| 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)));␊ | 
| }␊ | 
| }␊ |