Skip to content

qn-ng/EdtUbx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EdtUbx

Cette librairie permet de récupérer l'emploi du temps de différentes filières de l'Université de Bordeaux, de le filtrer en excluant les cours et de l'exporter en format iCalendar (.ics).

Build Status

Prérequis

L'extension php-xml est requis pour l'usage de cette librairie.

Installation

Vous pouvez télécharger directement cette librairie depuis la page Releases dans ce dépôt.

Vous pouvez aussi l'installer avec Composer. Il suffit de lancer la commande suivante dans le dossier de votre projet:

$ composer require nquocnghia/edtubx

Usage

Récupérer tous les URLS des emplois du temps
// cela retourne un array de 4 dimensions
$urls = \QnNguyen\EdtUbxNS\Core\EdtIndex::fetch(); 

// 1st dimension: Licence|Master1|Master2
// 2nd dimension: Semestre1|Semestre2
// 3rd dimension: Série de cours (ie. IN601)
// 4th dimension: <Nom du groupe de TD>|(rien)

// exemple: l'url vers l'emploi du temps du 2è semestre du groupe A1 de la Licence Informatique (IN601)
$url = $urls['Licence']['Semestre2']['IN601']['GROUPE A1']
Télécharger, analyser et export un emploi du temps
use \QnNguyen\EdtUbxNS\Core\EdtUbx;

// Initialiser l'objet EdtUbx
$edt = EdtUbx::makeFromUrl($url);

// ou bien si vous voulez remplacer le nom d'une/des UE(s)
$edt = EdtUbx::makeFromUrl($url, [
    'codeUE1' => 'nouveau nom1',
    'codeUE2' => 'nouveau nom2',
    ...
]);

// Générer un fichier iCalendar (.ics)
$edt->toICS();
Filtrage de l'emploi du temps

Parfois vous auriez des UEs en option ou qui ne vous concernent pas. Vous pouvez donc les exclure de votre emploi du temps pour le rendre plus lisible.

Cette librairie fournit une structure logique pour effectuer le filtrage:

interface IContidion {
    /**
     * @return boolean
     */
    function evaluate(EdtUbxItem $item);
}

// les tests
abstract class PropertyCondition implements ICondition {}
class MatchInString extends PropertyCondition {}
class MatchInArray extends PropertyCondition {}

// les opérateurs logiques
abstract class PolyadicCondition implements ICondition {}
class AndCondition extends PolyadicCondition {}
class OrCondition extends PolyadicCondition {}
class NotCondition extends PolyadicCondition {}

// La classe CF (ConditionFactory) sert à générer les classes
// de la famille ICondition en raccoursissant le syntax.
class CF {
    public static function _string($propertyName, $regexPattern) {}
    public static function _array($propertyName, $regexPattern) {}
    public static function _and(ICondition ...$conditions) {}
    public static function _or(ICondition ...$conditions) {}
    public static function _not(ICondition $condition) {}
}

L'objet de type EdtUbx permet donc de filtrer l'emploi du temps avec la méthode filter(ICondition $condition). Le résultat renvoyé sera la copie filtrée de l'emploi du temps courant.

Exemple de filtrage

Un étudiant en L3 veut exclure de son emploi du temps:

  • l'emsemble des cours de l'UE J1IN6012
  • tous les TD de l'UE J1IN6011 qui ne sont pas pour le groupe 4
// !J1IN6012 && !(J1IN6011 && td && !groupe4))
$filteredEdt = $edt->filter(
        CF::_and(
            CF::_not(CF::_string('code', 'J1IN6012')),
            CF::_not(
                CF::_and(
                    CF::_string('code', 'J1IN6011'),
                    CF::_string('category', 'td( machine)?'),
                    CF::_not(CF::_string('notes', 'groupe( )?4'))
                    // bien lu, parfois le groupe est indiqué dans 'notes'
                    // et non pas dans 'groupes' T_T
                )
            )
        )
);

Dépendances

License

See LICENSE

Tweet me @nquocnghia

About

Librairie pour l'emploi du temps de l'Université de Bordeaux

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages