PHPackages                             prayno/moveon - 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. [API Development](/categories/api)
4. /
5. prayno/moveon

ActiveLibrary[API Development](/categories/api)

prayno/moveon
=============

MoveON API wrapper

2.2(11mo ago)32391MITPHPPHP &gt;=8.0

Since Apr 1Pushed 3mo ago2 watchersCompare

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

READMEChangelog (10)Dependencies (3)Versions (20)Used By (1)

> # Legacy API is deprecated
>
> [](#legacy-api-is-deprecated)
>
> The legacy API used in this package will no lnger be maintained after 31st of December 2026 You should consider migrating to the REST API using this Symfony Bundle :

MoveOn Api wrapper
==================

[](#moveon-api-wrapper)

MoveOn () is an application used to manage International Mobility between universities and schools (Erasmus program for example). This package is a php wrapper for the MoveOn API.

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

[](#installation)

Install the library via Composer by running the following command:

`composer require prayno/moveon`

Usage
-----

[](#usage)

### Prerequisites

[](#prerequisites)

Prior to usage, you must contact your MoveON technical rep to activate the API in your MoveON instance.

Then, you have to generate a self-signed X509 certificate for your API client (.pem) and bind the serial number to a MoveON user (see technical doc for that)

### Instantiation of the class

[](#instantiation-of-the-class)

The MoveOn class now requires the use of the symfony/http-client component.

```
private $client;

public function __construct(HttpClientInterface $client)
{
    $this->client = $client->withOptions([
        'local_cert' => '/location/to/my/certificate/mycertificate.crt',
        'local_pk' => '/location/to/my/certificate/mycertificate.key',
        'passphrase' => 'myOptionalPassphraseToReadTheCertificate',
        'base_uri' => 'https://myUniversityInstance-api.moveonfr.com/restService/index.php?version=3.0'
    ]);
}

public function myFunction()
{
    $moveon = new MoveOn($this->client);
    ...
}
```

### Retrieve information

[](#retrieve-information)

To gather information, you need the entity to look for and the criteria you want to search on.

```
$data = $moveon->findBy("person",["surname"=>"Foo","first_name"=>"Bar"]);
```

You can use arrays as criteria to search for multiple values. Eg :

```
$data = $moveon->findBy("person",["surname"=>"Doe","first_name"=>["John","Jane"]]);
```

This will return a SimpleXMLElement object (page,records,total and rows).

You can also add more options to this method :

- sort : array of fields / order
- rows : number of rows per page
- page : page of results
- columns : filter fields being returned
- locale : eng/fra/deu/ita/spa

Eg :

```
$data = $moveon->findBy("person",["surname"=>"Foo","first_name"=>"Bar"],["surname"=>"asc","first_name"=>"asc"],20,1,["email","surname","last_name"],"fra");
```

Due to a limit set by QS, you cannot request for more than 250 rows. However, this library allows you to request for more lines, it will send multiple requests and merge the responses into a single one. This feature is only available if you don't request for a specific page.

### Save data

[](#save-data)

Create and update use the same method ; if you want to update, you just need to provide the id of the entry.

```
$data = $moveon->save("person",["id"=>"1","surname"=>"Foo","first_name"=>"Bar"]);
```

The additional parameter `$retrieveData` set to false allows the method to only return the queueId provided by the API for a later use (useful when you have many queries)

#### Note :

[](#note-)

The following fields were excluded from their entities as they make the requests fail

person : address.type\_eng,address.type\_fra,address.type\_deu,address.type\_ita,address.type\_spa

relation : parent,created\_on,created\_by,last\_modified\_by,last\_modified\_on

academic-year : is\_active

subject-area : isced

institution : sector\_id,size\_id,organization\_type\_id

### Custom query

[](#custom-query)

You can also create your own custom query and send it to the API using the sendQuery method.

```
$data = $moveon->sendQuery("person","list",YOUR_QUERY_STRING);
```

### Download files

[](#download-files)

You can download the binary content of a file using the downloadFile method. In order to achieve this, you need to provide the document ID of the file you want to download using the "template\_document" or the "simple\_document" object.

Here's an example of how to download a grant agreement document:

```
$grantName = $grant->{"grant.name"}->__toString();
$documents = $this->moveon->findBy("template-document",["regarding_grant_names"=>"$grantName,$grantName"]);
foreach ($documents->rows as $document)
{
    $fs = new Filesystem();
    $fileName = $document->{"template_document.fileName"}->__toString();
    $binary = $this->moveon->downloadFile($document->{"template_document.id"}->__toString());
    $fs->dumpFile("/location/to/my/file/$fileName", $binary);
}
```

###  Health Score

45

—

FairBetter than 91% of packages

Maintenance68

Regular maintenance activity

Popularity15

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity74

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 ~127 days

Recently: every ~410 days

Total

19

Last Release

356d ago

Major Versions

v1.x-dev → 2.02022-03-24

PHP version history (2 changes)v1.0PHP &gt;=7.1

2.0PHP &gt;=8.0

### 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 (26 commits)")

---

Tags

PRaynoMoveONInternational MobilityErasmusQS UnisolutionQSU

### Embed Badge

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

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

###  Alternatives

[craftcms/cms

Craft CMS

3.6k3.6M3.0k](/packages/craftcms-cms)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k5.9M724](/packages/sylius-sylius)[contao/core-bundle

Contao Open Source CMS

1231.6M2.7k](/packages/contao-core-bundle)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.1k16.8k](/packages/prestashop-prestashop)[drupal/drupal-extension

Drupal extension for Behat

22215.7M171](/packages/drupal-drupal-extension)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.6M552](/packages/shopware-core)

PHPackages © 2026

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