Example #1
0
 public function testSetValue()
 {
     $value = 'some value';
     $path = 'some path';
     $configData = $this->getConfigDataMock('setValue');
     $configData->expects($this->once())->method('setValue')->with($this->equalTo($path), $this->equalTo($value));
     $this->sectionPool->expects($this->once())->method('getScope')->with($this->equalTo('default'), $this->isNull())->will($this->returnValue($configData));
     $this->model->setValue($path, $value);
 }
Example #2
0
 /**
  * Realizar backup de la BBDD y aplicación.
  *
  * @return bool
  */
 public static function doBackup()
 {
     $siteName = Util::getAppInfo('appname');
     $backupDir = Init::$SERVERROOT;
     // Generar hash unico para evitar descargas no permitidas
     $backupUniqueHash = uniqid();
     Config::setValue('backup_hash', $backupUniqueHash);
     $backupDstDir = $backupDir . DIRECTORY_SEPARATOR . 'backup';
     $bakFileApp = $backupDstDir . DIRECTORY_SEPARATOR . $siteName . '-' . $backupUniqueHash . '.tar';
     $bakFileDB = $backupDstDir . DIRECTORY_SEPARATOR . $siteName . '_db-' . $backupUniqueHash . '.sql';
     try {
         self::checkBackupDir($backupDstDir);
         self::deleteOldBackups($backupDstDir);
         self::backupTables('*', $bakFileDB);
         self::backupApp($bakFileApp);
     } catch (\Exception $e) {
         Log::writeNewLogAndEmail(__FUNCTION__, $e->getMessage());
         return false;
     }
     return true;
 }
Example #3
0
 /**
  * Migrar valores de configuración.
  *
  * @param int $version El número de versión
  * @return bool
  */
 public static function upgradeConfig($version)
 {
     $mapParams = array('files_allowed_exts' => 'allowed_exts', 'files_allowed_size' => 'allowed_size', 'demo_enabled' => 'demoenabled', 'files_enabled' => 'filesenabled', 'ldap_base' => 'ldapbase', 'ldap_bindpass' => 'ldapbindpass', 'ldap_binduser' => 'ldapbinduser', 'ldap_enabled' => 'ldapenabled', 'ldap_group' => 'ldapgroup', 'ldap_server' => 'ldapserver', 'log_enabled' => 'logenabled', 'mail_enabled' => 'mailenabled', 'mail_from' => 'mailfrom', 'mail_pass' => 'mailpass', 'mail_port' => 'mailport', 'mail_requestsenabled' => 'mailrequestsenabled', 'mail_security' => 'mailsecurity', 'mail_server' => 'mailserver', 'mail_user' => 'mailuser', 'wiki_enabled' => 'wikienabled', 'wiki_filter' => 'wikifilter', 'wiki_pageurl' => 'wikipageurl', 'wiki_searchurl' => 'wikisearchurl');
     $currData = Config::getKeys(true);
     foreach ($mapParams as $newParam => $oldParam) {
         if (array_key_exists($oldParam, $currData)) {
             Config::setValue($newParam, $currData[$oldParam]);
             Config::deleteParam($oldParam);
         }
     }
     Log::writeNewLog(_('Actualizar Configuración'), _('Actualización de la Configuración realizada correctamente.') . ' (v' . $version . ')');
     return true;
 }
Example #4
0
 /**
  * called by include/dashboard_ajax.php
  * 
  * save dashboard settings for [team, user]
  * 
  * Note: the dashboard can contain the same plugin
  * multiple times, each one having specific attributes.
  * ex: ProgressHistoryIndic for Cmd1, Cmd2, Cmd2 
  * 
  *  settings = array (
  *     'dashboardTitle' => 'dashboard title'
  *     'displayedPlugins' => array(
  *        array(
  *           'pluginClassName' => <pluginClassName>,
  *           'plugin_attr1' => 'val',
  *           'plugin_attr2' => 'val',
  *        )
  *     )
  *  )
  *
  * @param array $settings containing dashboard & plugin attributes.
  * @param int $teamid
  * @param int $userid if NULL, default settings for team will be saved.
  */
 public function saveSettings($settings, $teamid, $userid = NULL)
 {
     if (!is_array($settings)) {
         self::$logger->error("saveSettings: not an array !");
         return false;
     }
     if (!array_key_exists(self::SETTINGS_DISPLAYED_PLUGINS, $settings)) {
         self::$logger->error("saveSettings: missing key: " . self::SETTINGS_DISPLAYED_PLUGINS);
         return false;
     }
     if (!array_key_exists(self::SETTINGS_DASHBOARD_TITLE, $settings)) {
         self::$logger->error("saveSettings: missing key: " . self::SETTINGS_DASHBOARD_TITLE);
         return false;
     }
     $jsonSettings = json_encode($settings);
     if (self::$logger->isDebugEnabled()) {
         self::$logger->debug("saveSettings: save ok: " . $jsonSettings);
     }
     Config::setValue(Config::id_dashboard . $this->id, $jsonSettings, Config::configType_string, NULL, 0, $userid, $teamid);
 }
Example #5
0
 /**
  * @param array $checkList ('checkName' => [0,1] isEnabled)
  */
 function setGeneralPrefsList(array $checkList)
 {
     $this->generalPrefsList = $checkList;
     $keyvalue = Tools::doubleImplode(':', ',', $this->generalPrefsList);
     if (self::$logger->isDebugEnabled()) {
         self::$logger->debug("Write team {$this->id} generalPrefsList : {$keyvalue}");
     }
     // save new settings
     Config::setValue(Config::id_teamGeneralPreferences, $keyvalue, Config::configType_keyValue, NULL, 0, 0, $this->id);
 }
Example #6
0
 /** old style usage with $value, $user_id, $key as params
  * still works but is deprecated
  *
  * @see lib/classes/Config::setValue()
  */
 function setValue($field, $value)
 {
     $args = func_get_args();
     if (count($args) > 2) {
         list($value, $user_id, $key) = $args;
         if ($user_id !== null && $key !== null) {
             $ret = UserConfig::get($user_id)->store($key, $value);
         }
         if ($user_id === null && $key !== null) {
             $ret = $this->store($key, $value);
         }
         trigger_error('deprecated use of ' . __METHOD__, E_USER_NOTICE);
         return $ret;
     }
     return parent::setValue($field, $value);
 }
Example #7
0
 /**
  * Genera el nombre del archivo usado para la exportación.
  */
 private function setExportFile()
 {
     // Generar hash unico para evitar descargas no permitidas
     $exportUniqueHash = uniqid();
     Config::setValue('export_hash', $exportUniqueHash);
     $this->_exportFile = $this->_exportDir . DIRECTORY_SEPARATOR . Util::getAppInfo('appname') . '-' . $exportUniqueHash . '.xml';
 }
Example #8
0
 /**
  * Migrar la configuración desde phpPMS.
  *
  * @return array resultado
  */
 private static function migrateConfig()
 {
     // Obtener la configuración actual
     self::getSourceConfig();
     $skip = array('version', 'installed', 'install', 'dbhost', 'dbname', 'dbuser', 'dbpass', 'siteroot', 'sitelang', 'sitename', 'siteshortname', 'md5_pass', 'password_show', 'lastupdatempass', 'passwordsalt');
     $totalParams = count(self::$_oldConfig);
     $num = 0;
     // Guardar la nueva configuración
     foreach (self::$_oldConfig as $key => $value) {
         if (array_key_exists($key, $skip)) {
             continue;
         }
         Config::setValue($key, $value);
         $num++;
     }
     $log = new Log(_('Importar Configuración'));
     $log->addDescription('OK');
     $log->addDescription(_('Registros') . ': ' . $num . '/' . $totalParams);
     $log->writeLog();
 }
Example #9
0
 if ($isJob3) {
     Jobs::create($job3, Job::type_commonJob, $job3_color);
 }
 if ($isJob4) {
     Jobs::create($job4, Job::type_commonJob, $job4_color);
 }
 if ($isJob5) {
     Jobs::create($job5, Job::type_commonJob, $job5_color);
 }
 // Set default Issue tooltip content
 echo "<script type=\"text/javascript\">console.log(\"DEBUG set default content for Issue tooltip\");</script>";
 $customField_type = Config::getInstance()->getValue(Config::id_customField_type);
 $backlogField = Config::getInstance()->getValue(Config::id_customField_backlog);
 $fieldList = array('project_id', 'category_id', 'custom_' . $customField_type, 'status', 'codevtt_elapsed', 'custom_' . $backlogField, 'codevtt_drift');
 $serialized = serialize($fieldList);
 Config::setValue(Config::id_issueTooltipFields, $serialized, Config::configType_string, 'fields to be displayed in issue tooltip');
 // Add custom fields to existing projects
 echo "<script type=\"text/javascript\">console.log(\"DEBUG prepare existing projects\");</script>";
 if (isset($_POST['projects']) && !empty($_POST['projects'])) {
     $selectedProjects = $_POST['projects'];
     foreach ($selectedProjects as $projectid) {
         $project = ProjectCache::getInstance()->getProject($projectid);
         echo "<script type=\"text/javascript\">console.log(\"   prepare project: " . $project->getName() . "\");</script>";
         Project::prepareProjectToCodev($projectid);
     }
 }
 echo "<script type=\"text/javascript\">console.log(\"DEBUG install Mantis plugin: CodevTT\");</script>";
 $errStr = installMantisPlugin('CodevTT', true);
 if (NULL !== $errStr) {
     echo "<script type=\"text/javascript\">console.error(\"{$errStr}\");</script>";
     $errMsg .= $errStr . '<br>';
Example #10
0
 /**
  * Configurar la base de datos.
  * Esta función crea la base de datos y el usuario necesario para sysPass.
  *
  * @throws SPException
  */
 private static function setupMySQLDatabase()
 {
     // Si no es modo hosting se crea un hash para la clave y un usuario con prefijo "sp_" para la DB
     if (!self::$_isHostingMode) {
         self::setDbpass(md5(time() . self::$_password));
         self::setDbuser(substr('sp_' . self::$_username, 0, 16));
         // Comprobar si el usuario sumistrado existe
         $query = "SELECT COUNT(*) FROM mysql.user WHERE user='******' AND host='" . self::$_dbhost . "'";
         try {
             // Si no existe el usuario, se intenta crear
             if (intval(self::$_dbc->query($query)->fetchColumn()) === 0) {
                 // Se comprueba si el nuevo usuario es distinto del creado en otra instalación
                 if (self::$_dbuser != Config::getValue('dbuser')) {
                     self::createDBUser();
                 }
             }
         } catch (\PDOException $e) {
             throw new SPException(SPException::SP_CRITICAL, _('No es posible comprobar el usuario de sysPass') . ' (' . self::$_username . ')', _('Compruebe los permisos del usuario de conexión a la BD'));
         }
     }
     // Guardar el nuevo usuario/clave de conexión a la BD
     Config::setValue('dbuser', self::$_dbuser);
     Config::setValue('dbpass', self::$_dbpass);
     try {
         self::createMySQLDatabase();
         self::createDBStructure();
     } catch (SPException $e) {
         throw $e;
     }
 }
Example #11
0
 /**
  * store fields to display in the Issue tooltip
  *
  * fields can be
  * - mantis_bug_table columns (ex: project_id, status)
  * - customField id prefixed with 'custom_' (ex: custom_23)
  * - CodevTT fields prefixed with 'codevtt_' (ex: codevtt_commands)
  *
  *  if $fieldList == NULL, delete IssueTooltip custo for this project
  *
  * @param array $fieldList
  * @param int $teamid
  * @param int $userid
  */
 public function setIssueTooltipFields($fieldList = NULL, $teamid = 0, $userid = 0)
 {
     if (!is_null($fieldList)) {
         $serialized = serialize($fieldList);
         Config::setValue('issue_tooltip_fields', $serialized, Config::configType_string, 'fields to be displayed in issue tooltip', $this->id, $userid, $teamid);
         $key = 'team' . $teamid . '_user' . $userid;
         if (is_null($this->issueTooltipFieldsCache)) {
             $this->issueTooltipFieldsCache = array();
         }
         $this->issueTooltipFieldsCache[$key] = $fieldList;
     } else {
         // if $fieldList NULL, remove issueTooltip custo fot this project
         Config::deleteValue(Config::id_issueTooltipFields, array($userid, $this->id, $teamid, 0, 0, 0));
         unset($this->issueTooltipFieldsCache[$key]);
     }
 }
Example #12
0
 /**
  * 
  * @param int $team_id
  * @param array $planningOptions as key:value
  */
 public function setPlanningOptions($team_id, $planningOptions)
 {
     $this->planningOptions = $planningOptions;
     $keyvalue = Tools::doubleImplode(':', ',', $this->planningOptions);
     if (self::$logger->isDebugEnabled()) {
         self::$logger->debug("Write user {$this->id}, team {$team_id}, planningOptions = {$keyvalue}");
     }
     // save new settings
     Config::setValue(Config::id_planningOptions, $keyvalue, Config::configType_keyValue, NULL, 0, $this->id, $team_id);
 }
Example #13
0
 /**
  * Test
  *
  * @return void
  */
 public function testSetValueWithEmptyIdentifier()
 {
     $this->assertFalse($this->object->setValue('', 'string_result_insert_value'));
 }
Example #14
0
 if ($isJob3) {
     Jobs::create($job3, Job::type_commonJob, $job3_color);
 }
 if ($isJob4) {
     Jobs::create($job4, Job::type_commonJob, $job4_color);
 }
 if ($isJob5) {
     Jobs::create($job5, Job::type_commonJob, $job5_color);
 }
 // Set default Issue tooltip content
 echo "DEBUG 14/16 Set default content for Issue tooltip <br/>";
 $customField_type = Config::getInstance()->getValue(Config::id_customField_type);
 $backlogField = Config::getInstance()->getValue(Config::id_customField_backlog);
 $fieldList = array('project_id', 'category_id', 'custom_' . $customField_type, 'codevtt_elapsed', 'custom_' . $backlogField, 'codevtt_drift');
 $serialized = serialize($fieldList);
 Config::setValue('issue_tooltip_fields', $serialized, Config::configType_string, 'fields to be displayed in issue tooltip');
 // Add custom fields to existing projects
 echo "DEBUG 15/16 Prepare existing projects<br/>";
 if (isset($_POST['projects']) && !empty($_POST['projects'])) {
     $selectedProjects = $_POST['projects'];
     foreach ($selectedProjects as $projectid) {
         $project = ProjectCache::getInstance()->getProject($projectid);
         echo "DEBUG prepare project: " . $project->getName() . "<br/>";
         Project::prepareProjectToCodev($projectid);
     }
 }
 echo "DEBUG 16/16 Install Mantis plugins<br/>";
 installMantisPlugin('CodevTT', true);
 installMantisPlugin('FilterBugList', false);
 echo "DEBUG done.<br/>";
 // load homepage
 public function changeConfigTable($definition)
 {
     try {
         $change = new SimpleXMLElement($definition);
         $operation = $change->operation;
         $operation = trim($operation . "");
         switch ($operation) {
             case 'UPDATE':
                 $key = trim($change->key . "");
                 $value = trim($change->value . "");
                 $result = $this->_setConfigValue($key, $value);
                 break;
             case 'ADD':
                 $key = trim($change->key . "");
                 $value = trim($change->value . "");
                 $config = new Config();
                 $config->setProperty($key);
                 $config->setValue($value);
                 $config->save();
             default:
         }
     } catch (Exception $exc) {
         echo $exc->getTraceAsString();
     }
 }
Example #16
0
/**
 * update 0.99.19 to 0.99.20 (DB v10 to DB v11)
 *
 * there is no .sql script to run, but db version is increased to 11 (add default issue_tooltip_fields)
 *
 */
function update_v10_to_v11()
{
    // add default issue tooltips
    $customField_type = Config::getInstance()->getValue(Config::id_customField_type);
    $backlogField = Config::getInstance()->getValue(Config::id_customField_backlog);
    $fieldList = array('project_id', 'category_id', 'custom_' . $customField_type, 'codevtt_elapsed', 'custom_' . $backlogField, 'codevtt_drift');
    $serialized = serialize($fieldList);
    Config::setValue('issue_tooltip_fields', $serialized, Config::configType_string, 'fields to be displayed in issue tooltip');
    $query = "UPDATE `codev_config_table` SET `value`='11' WHERE `config_id`='database_version';";
    $result = execQuery($query);
}
Example #17
0
 protected function display()
 {
     if (Tools::isConnectedUser()) {
         $teamList = NULL;
         // leadedTeams only, except Admins: they can edit all teams
         if ($this->session_user->isTeamMember(Config::getInstance()->getValue(Config::id_adminTeamId))) {
             $teamList = Team::getTeams(true);
         } else {
             $teamList = $this->session_user->getLeadedTeamList(true);
         }
         if (count($teamList) > 0) {
             if (isset($_POST['deletedteam'])) {
                 $teamidToDelete = Tools::getSecurePOSTIntValue("deletedteam");
                 if (array_key_exists($teamidToDelete, $teamList)) {
                     $retCode = Team::delete($teamidToDelete);
                     if (!$retCode) {
                         $this->smartyHelper->assign('error', T_("Couldn't delete the team"));
                     } else {
                         if ($teamidToDelete == $_SESSION['teamid']) {
                             unset($_SESSION['teamid']);
                             $this->updateTeamSelector();
                         }
                         unset($teamList[$teamidToDelete]);
                     }
                 }
             }
             // use the teamid set in the form, if not defined (first page call) use session teamid
             if (isset($_POST['displayed_teamid'])) {
                 $displayed_teamid = Tools::getSecurePOSTIntValue('displayed_teamid');
             } else {
                 if (isset($_SESSION['teamid']) && array_key_exists($_SESSION['teamid'], $teamList)) {
                     $displayed_teamid = $_SESSION['teamid'];
                 } else {
                     $teamIds = array_keys($teamList);
                     if (count($teamIds) > 0) {
                         $displayed_teamid = $teamIds[0];
                     } else {
                         $displayed_teamid = 0;
                     }
                 }
             }
             $this->smartyHelper->assign('availableTeams', SmartyTools::getSmartyArray($teamList, $displayed_teamid));
             if (array_key_exists($displayed_teamid, $teamList)) {
                 $team = TeamCache::getInstance()->getTeam($displayed_teamid);
                 if ($displayed_teamid != Config::getInstance()->getValue(Config::id_adminTeamId)) {
                     $this->smartyHelper->assign('allowDeleteTeam', 1);
                 }
                 // ----------- actions ----------
                 $action = isset($_POST['action']) ? $_POST['action'] : '';
                 if ($action == "updateTeamLeader") {
                     $teamleader_id = Tools::getSecurePOSTIntValue('leaderid');
                     if (!$team->setLeader($teamleader_id)) {
                         $this->smartyHelper->assign('error', T_("Couldn't update the team leader"));
                     } else {
                         // --- add teamLeader as Mantis manager of the SideTaskProject
                         //$leader = UserCache::getInstance()->getUser($teamleader_id);
                         //$access_level = 70; // TODO mantis manager
                         //$leader->setProjectAccessLevel($stproj_id, $access_level);
                     }
                 } elseif ($action == "updateTeamCreationDate") {
                     $formatedDate = Tools::getSecurePOSTStringValue("date_createTeam");
                     $date_create = Tools::date2timestamp($formatedDate);
                     if (!$team->setCreationDate($date_create)) {
                         $this->smartyHelper->assign('error', T_("Couldn't update the creation date"));
                     }
                 } elseif ($action == "setTeamEnabled") {
                     $isTeamEnabled = 0 == Tools::getSecurePOSTIntValue("isTeamEnabled") ? false : true;
                     if (!$team->setEnabled($isTeamEnabled)) {
                         $this->smartyHelper->assign('error', T_("Couldn't enable/disable team"));
                     }
                 } elseif ($action == "addTeamMember") {
                     $memberid = Tools::getSecurePOSTIntValue('memberid');
                     $memberAccess = Tools::getSecurePOSTIntValue('member_access');
                     $formatedDate = Tools::getSecurePOSTStringValue("date1");
                     $arrivalTimestamp = Tools::date2timestamp($formatedDate);
                     try {
                         // save to DB
                         $team->addMember($memberid, $arrivalTimestamp, $memberAccess);
                         // CodevTT administrators can manage ExternalTasksProject in Mantis
                         if (Config::getInstance()->getValue(Config::id_adminTeamId) == $team->getId()) {
                             $newUser = UserCache::getInstance()->getUser($memberid);
                             $extProjId = Config::getInstance()->getValue(Config::id_externalTasksProject);
                             $access_level = 70;
                             // TODO mantis manager
                             $newUser->setProjectAccessLevel($extProjId, $access_level);
                         }
                     } catch (Exception $e) {
                         $this->smartyHelper->assign('error', "Couldn't add user {$memberid} to the team");
                     }
                 } elseif ($action == "setMemberDepartureDate") {
                     $formatedDate = Tools::getSecurePOSTStringValue("date2");
                     $departureTimestamp = Tools::date2timestamp($formatedDate);
                     $memberid = Tools::getSecurePOSTIntValue('memberid');
                     $team->setMemberDepartureDate($memberid, $departureTimestamp);
                 } elseif ($action == 'addMembersFrom') {
                     $src_teamid = Tools::getSecurePOSTIntValue('f_src_teamid');
                     // add all members declared in Team $src_teamid (same dates, same access)
                     // except if already declared
                     $team->addMembersFrom($src_teamid);
                 } elseif ($action == 'removeIssueTooltip') {
                     $projectid = Tools::getSecurePOSTIntValue('projectid');
                     $project = ProjectCache::getInstance()->getProject($projectid);
                     $project->setIssueTooltipFields(NULL, $displayed_teamid);
                 } elseif ($action == 'setConsistencyCheck') {
                     $keyvalue = Tools::getSecurePOSTStringValue('checkItems');
                     $checkList = Tools::doubleExplode(':', ',', $keyvalue);
                     $team->setConsistencyCheckList($checkList);
                 } elseif ($action == 'setGeneralPrefs') {
                     $keyvalue = Tools::getSecurePOSTStringValue('checkItems');
                     $checkList = Tools::doubleExplode(':', ',', $keyvalue);
                     $team->setGeneralPrefsList($checkList);
                 } elseif ($action == 'createSideTaskProject') {
                     $stprojName = Tools::getSecurePOSTStringValue('stprojName');
                     $stproj_id = $team->createSideTaskProject($stprojName);
                     if ($stproj_id > 0) {
                         $stproj = ProjectCache::getInstance()->getProject($stproj_id);
                         // add teamLeader as Mantis manager of the SideTaskProject
                         $leader = UserCache::getInstance()->getUser($team->getLeaderId());
                         $access_level = 70;
                         // TODO mantis manager
                         $leader->setProjectAccessLevel($stproj_id, $access_level);
                         // add SideTaskProject Categories
                         $stproj->addCategoryProjManagement(T_("Project Management"));
                         $stproj->addCategoryInactivity(T_("Inactivity"));
                         $stproj->addCategoryIncident(T_("Incident"));
                         $stproj->addCategoryTools(T_("Tools"));
                         $stproj->addCategoryWorkshop(T_("Team Workshop"));
                     }
                 } elseif (isset($_POST["deleteValue"])) {
                     $duration = TimeTrackingTools::getDurationList($displayed_teamid);
                     $duration_value = Tools::getSecurePOSTStringValue('deleteValue');
                     unset($duration[$duration_value]);
                     if (count($duration) == 0) {
                         Config::deleteValue(Config::id_durationList, array(0, 0, $displayed_teamid, 0, 0, 0));
                     } else {
                         Config::setValue(Config::id_durationList, Tools::doubleImplode(":", ",", $duration), Config::configType_keyValue, NULL, 0, 0, $displayed_teamid);
                     }
                 } elseif (isset($_POST["addValue"])) {
                     $duration = TimeTrackingTools::getDurationList($displayed_teamid);
                     $duration_value = Tools::getSecurePOSTStringValue('addValue');
                     $duration_display = Tools::getSecurePOSTStringValue('addDisplay');
                     $duration[$duration_value] = $duration_display;
                     Config::setValue(Config::id_durationList, Tools::doubleImplode(":", ",", $duration), Config::configType_keyValue, NULL, 0, 0, $displayed_teamid);
                 } elseif (isset($_POST["updateValue"])) {
                     $duration = TimeTrackingTools::getDurationList($displayed_teamid);
                     $duration_value = Tools::getSecurePOSTStringValue('updateValue');
                     $duration_display = Tools::getSecurePOSTStringValue('updateDisplay');
                     $duration[$duration_value] = $duration_display;
                     Config::setValue(Config::id_durationList, Tools::doubleImplode(":", ",", $duration), Config::configType_keyValue, NULL, 0, 0, $displayed_teamid);
                 } elseif (isset($_POST["deletememberid"])) {
                     $memberid = Tools::getSecurePOSTIntValue('deletememberid');
                     $query = "DELETE FROM `codev_team_user_table` WHERE id = {$memberid};";
                     $result = SqlWrapper::getInstance()->sql_query($query);
                     if (!$result) {
                         $this->smartyHelper->assign('error', T_("Couldn't delete the member of the team"));
                     }
                 } elseif (isset($_POST['addedprojectid'])) {
                     $projectid = Tools::getSecurePOSTIntValue('addedprojectid');
                     if (0 != $projectid) {
                         $projecttype = Tools::getSecurePOSTIntValue('project_type');
                         try {
                             // prepare Project to CoDev (associate with CoDev customFields if needed)
                             // WARN: Project constructor cannot be used in here.
                             Project::prepareProjectToCodev($projectid);
                             // save to DB
                             if (!$team->addProject($projectid, $projecttype)) {
                                 $this->smartyHelper->assign('error', T_("Couldn't add the project to the team"));
                             }
                         } catch (Exception $e) {
                             $this->smartyHelper->assign('error', T_("Couldn't add the project to the team"));
                         }
                     }
                 } elseif (isset($_POST['deletedprojectid'])) {
                     $projectid = Tools::getSecurePOSTIntValue('deletedprojectid');
                     if (!$team->removeProject($projectid)) {
                         $this->smartyHelper->assign('error', T_("Could NOT remove the project from the team"));
                     }
                 } elseif (isset($_POST['addedastreinte_id'])) {
                     $onduty_id = Tools::getSecurePOSTIntValue('addedastreinte_id');
                     if (0 != $onduty_id) {
                         $team->addOnDutyTask($onduty_id);
                     }
                 } elseif (isset($_POST['deletedastreinte_id'])) {
                     $onduty_id = Tools::getSecurePOSTIntValue('deletedastreinte_id');
                     $team->removeOnDutyTask($onduty_id);
                 }
                 $this->smartyHelper->assign('team', $team);
                 $smartyUserList = array();
                 $userList = User::getUsers();
                 $selectedUserid = $team->getLeaderId();
                 foreach ($userList as $id => $name) {
                     $u = UserCache::getInstance()->getUser($id);
                     $uname = $u->getRealname();
                     if (empty($uname)) {
                         $uname = $name;
                     }
                     $smartyUserList[$id] = array('id' => $id, 'name' => $uname, 'selected' => $id == $selectedUserid);
                 }
                 $this->smartyHelper->assign('users', $smartyUserList);
                 $this->smartyHelper->assign('date', date("Y-m-d", $team->getDate()));
                 $this->smartyHelper->assign('accessLevel', Team::$accessLevelNames);
                 $this->smartyHelper->assign('arrivalDate', date("Y-m-d", time()));
                 $this->smartyHelper->assign('departureDate', date("Y-m-d", time()));
                 $this->smartyHelper->assign('teamMembers', $this->getTeamMembers($displayed_teamid));
                 $this->smartyHelper->assign('teamEnabled', $team->isEnabled());
                 $this->smartyHelper->assign('otherProjects', $team->getOtherProjects());
                 $this->smartyHelper->assign('typeNames', Project::$typeNames);
                 $this->smartyHelper->assign('teamProjects', $this->getTeamProjects($displayed_teamid));
                 $this->smartyHelper->assign('onDutyCandidates', $this->getOnDutyCandidates($team, $team->getTrueProjects()));
                 $this->smartyHelper->assign('onDutyTasks', $this->getOnDutyTasks($team));
                 $this->smartyHelper->assign('duration', TimeTrackingTools::getDurationList($displayed_teamid));
                 $projectList = $this->getTooltipProjectCandidates($team);
                 $this->smartyHelper->assign('tooltipProjectCandidates', $projectList);
                 $this->smartyHelper->assign('issueTooltips', $this->getIssueTooltips($projectList, $displayed_teamid));
                 $this->smartyHelper->assign('itemSelection_openDialogBtLabel', T_('Configure Tooltips'));
                 $consistencyChecks = $this->getConsistencyChecks($team);
                 $this->smartyHelper->assign('consistencyChecks', $consistencyChecks);
                 $teamGeneralPrefs = $this->getTeamGeneralPrefs($team);
                 $this->smartyHelper->assign('teamGeneralPrefs', $teamGeneralPrefs);
             }
         }
     }
 }