PHPackages                             prayno/moveon-course-catalogue-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. prayno/moveon-course-catalogue-bundle

ActiveSymfony-bundle[Utility &amp; Helpers](/categories/utility)

prayno/moveon-course-catalogue-bundle
=====================================

Set of commands to manage your course catalogue in MoveOn

1.5.3(5y ago)144MITPHPPHP ^7.1.3

Since Jul 23Pushed 5y agoCompare

[ Source](https://github.com/PRayno/MoveOnCourseCatalogueBundle)[ Packagist](https://packagist.org/packages/prayno/moveon-course-catalogue-bundle)[ RSS](/packages/prayno-moveon-course-catalogue-bundle/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (10)Dependencies (2)Versions (11)Used By (0)

MoveOnCourseCatalogueBundle
===========================

[](#moveoncoursecataloguebundle)

This is a Symfony bundle to manage your MoveOn () course catalogue.

It provides 2 commands :

- import a course catalogue from a CSV file to MoveOn
- deactivate a list of courses in the MoveOn course catalogue

Installation
------------

[](#installation)

Install the library via Composer by running the following command: `composer require prayno/moveon-course-catalogue-bundle`

Configuration
-------------

[](#configuration)

This bundle depends on the MoveOnApiBundle so you must include the configuration of this bundle too ()

Create a config/packages/prayno\_moveon\_course\_catalogue.yaml file in your Symfony application with the following settings :

```
prayno_moveon_course_catalogue:
  csv:
    delimiter: ""
    latest_date_fields: ['FIELD1','FIELD2']
    required_fields: ['FIELD3','FIELD4']

  sub_institution:
    code_field: "fieldname"
    main_institution_id: 1

  academic_periods:
    code1: id
    code2: id

  update_courses_modified_by : ["User1-firstname, User1-lastname","User2-firstname, User2-lastname"]
  course_identifier_regex: "/regex/"

  excluded_lines:
    key: ["value1","value2"]
```

- *delimiter* : CSV delimiter (default is Tab)
- *latest\_date\_fields* : array of fieldnames in your CSV file that correspond to the modification dates of the line
- *required\_fields* : array of fieldnames in your CSV file that are required to process a line
- *code\_field* : fieldname of the sub\_institution code in MoveOn institution db table
- *main\_institution\_id* : parent institution id the sub institutions are linked to
- *academic\_periods* : array of academic period code used to link CSV course with academic period : id (eg. 1S2019/20: 123456)
- *update\_courses\_modified\_by* : only the courses modified by these users (Lastname, Firstname) will be affected by update (to avoid overriding of local modifications)
- *course\_identifier\_regex* : regex of the identifier (default external\_id) used to deactivate the courses in MoveOn db which are no longer in the CSV
- *excluded\_lines* : lines to be excluded from the process (optional).

Usage
-----

[](#usage)

### Import from CSV

[](#import-from-csv)

This command will create or update courses from your CSV file. The comparison for update is based on the field provided in the *getIdentifier()* method of your MoveOnCourse object.

`bin/console moveon:course-catalog:update path/to/csv/file.csv 2019-01-01`The first argument is the path of your CSV file and the second one, the minimum date to process the line (default value : yesterday)

### Deactivate courses

[](#deactivate-courses)

This command will deactivate courses based on your search criteria.

`bin/console  moveon:course-catalog:deactivate '{myquery}'`

Example of queries :

```
'{\"field\":\"catalogue_course.id\",\"op\":\"eq\",\"data\":\"1234\"}'
'{\"field\":\"catalogue_course.start_academic_period\",\"op\":\"eq\",\"data\":\"1er semestre 2018/19\"}'
'{\"field\":\"catalogue_course.is_active\",\"op\":\"eq\",\"data\":\"1\"},{\"field\":\"catalogue_course.start_academic_period\",\"op\":\"eq\",\"data\":\"1er semestre 2017/18\"}'

```

Customization
-------------

[](#customization)

You can customize the course object to suit your needs by creating a class implementing the PRayno\\MoveOnCourseCatalogueBundle\\Course\\MoveonCourseInterface (or extending the default PRayno\\MoveOnCourseCatalogueBundle\\Course\\MoveonCourse). You have to create a function with the snakecase name of the MoveOn Course attribute you want to customize like in the following example :

```
use PRayno\MoveOnCourseCatalogueBundle\Course\MoveonCourse;

class MyCustomMoveOnCourse extends MoveonCourse
{
    protected function setName(array $row)
    {
        return $row["FIELD1"]." ~~ ".$row["FIELD2"];
    }
```

Then declare your class in services.yml and copy the "academic\_periods" parameters in your app parameters :

```
    prayno_moveon_course_catalogue.course:
        class: MyCustomMoveOnCourseNamespace\MyCustomMoveOnCourse
        arguments:
            $academicPeriods: '%academic_periods%'
```

This allows you to inject other services when processing the course catalogue

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~59 days

Recently: every ~117 days

Total

10

Last Release

1945d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/dbec865dcc9427588dff8cad0caebbfc5ce12fbc748796c6a59a62540acd0dce?d=identicon)[prayno](/maintainers/prayno)

---

Top Contributors

[![PRayno](https://avatars.githubusercontent.com/u/13433390?v=4)](https://github.com/PRayno "PRayno (14 commits)")

### Embed Badge

![Health badge](/badges/prayno-moveon-course-catalogue-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/prayno-moveon-course-catalogue-bundle/health.svg)](https://phpackages.com/packages/prayno-moveon-course-catalogue-bundle)
```

###  Alternatives

[winzou/state-machine-bundle

Bundle for the very lightweight yet powerful PHP state machine

34010.4M15](/packages/winzou-state-machine-bundle)[stfalcon/tinymce-bundle

This Bundle integrates TinyMCE WYSIWYG editor into a Symfony2 project.

2692.9M24](/packages/stfalcon-tinymce-bundle)[sylius/taxonomy-bundle

Flexible categorization system for Symfony.

26388.2k7](/packages/sylius-taxonomy-bundle)[symfony/ai-bundle

Integration bundle for Symfony AI components

30282.3k6](/packages/symfony-ai-bundle)[sylius/addressing-bundle

Addressing and zone management for Symfony applications.

33221.4k3](/packages/sylius-addressing-bundle)[sylius/inventory-bundle

Flexible inventory management for Symfony applications.

19176.7k4](/packages/sylius-inventory-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
