wiki = $wiki; } protected function configure() { $this // the name of the command : ./yeswicli helloworld:hello" ->setName('meeo:createforms') // the short description shown while running "./yeswicli list" ->setDescription('Permet de créer les formulaires pour ') // the full command description shown when running the command with // the "--help" option // ->setHelp("This command display the message \"Hello !\" with options for uppercase of add a username.\n" . // "The argument \"username\" can be used to add a username. Example : \n" . // "Command line'./yeswicli helloworld:hello \"John Smith\"' gives \"Hello John Smith !\"") // add argument for username // second parameter could be InputArgument::OPTIONAL <=> null, InputArgument::REQUIRED, InputArgument::IS_ARRAY // third parameter is the description // forth parameter is default value // ->addArgument('username', InputArgument::OPTIONAL, 'Username') // add option to display output as UPPERCASE // second parameter null|string is shortcut // third parameter null|int could be InputOption::VALUE_NONE <=> null, InputOption::VALUE_REQUIRED // , InputOption::VALUE_OPTIONAL, InputOption::VALUE_IS_ARRAY, InputOption::VALUE_NEGATABLE // forth parameter is the description // ->addOption('uppercase', 'u', InputOption::VALUE_NONE, 'Display output in UPPERCASE') ; } private function absencesForm(FormManager $formManager, $meeo_config) { $data = [ "bn_id_nature" => $meeo_config['absences']['formId'], "bn_label_nature" => "Absences", "bn_description" => "Absences des élèves", "bn_condition" => "", "bn_sem_context" => "", "bn_sem_type" => "", "bn_sem_use_template" => "1", "bn_template" => << "fr-FR", "bn_only_one_entry" => "N", "bn_only_one_entry_message" => null ]; $existingForm = $formManager->getOne($meeo_config['absences']['formId']); if ($existingForm) return $formManager->update($data); return $formManager->create($data); } private function matiereList() { $pageManager = $this->wiki->services->get(PageManager::class); $tripleStore = $this->wiki->services->get(TripleStore::class); if (!$pageManager->getOne('ListeMatiere')) { $pageManager->save('ListeMatière', '{"label":{"francais":"Français","math":"Math"},"titre_liste":"Matieres"}'); // in case, there is already some triples for 'ListOuinonLms', delete them $tripleStore->delete('ListeMatière', 'http://outils-reseaux.org/_vocabulary/type', null); // create the triple to specify this page is a list $tripleStore->create('ListeMatière', 'http://outils-reseaux.org/_vocabulary/type', 'liste', '', ''); } } private function notesForm(FormManager $formManager, $meeo_config) { $existingForm = $formManager->getOne($meeo_config['notes']['formId']); if ($existingForm) return false; $this->matiereList(); $data = [ "bn_id_nature" => $meeo_config['notes']['formId'], "bn_label_nature" => "Notes", "bn_description" => "Notes des élèves", "bn_condition" => "", "bn_sem_context" => "", "bn_sem_type" => "", "bn_sem_use_template" => "1", "bn_template" => << "fr-FR", "bn_only_one_entry" => "N", "bn_only_one_entry_message" => null ]; return $formManager->create($data); } protected function execute(InputInterface $input, OutputInterface $output) { $formManager = $this->wiki->services->get(FormManager::class); $params = $this->wiki->services->get(ParameterBagInterface::class); if (!$params->has('meeo')) { $result = $formManager->getAll(); $lastFormId = array_key_last($result); $meeo_config = [ 'absences' => [ 'formId' => $lastFormId + 1, ], 'notes' => [ 'formId' => $lastFormId + 2, ] ]; } else { $meeo_config = $params->get('meeo'); } $this->absencesForm($formManager, $meeo_config); $this->notesForm($formManager, $meeo_config); echo 'Succeed\n'; return Command::SUCCESS; } }