Commit 9d8f22ce authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Merge branch 'spartan' into hm/jalons-notifications

parents fabe01ea 92255197
Loading
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -84,6 +84,9 @@ data/templates/timesheet_person_month.html.php
!data/backup_oscar-empty.sql
!data/oscar-demo-lasted.sql

# PHPUnit
tests/.phpunit.result.cache

# Residus
public/js/oscar/dist/index.html

+3 −3
Original line number Diff line number Diff line
image: localhost:5000/unicaen-dev-php7.3-apache
image: localhost:5000/unicaen-dev-php7.4-apache
before_script:
  - export http_proxy=http://10.14.128.99:3128
  - export https_proxy=http://10.14.128.99:3128
  - apt-get -qq update && apt-get -qq install -y curl wget gnupg2 build-essential libssl-dev git
  - wget https://getcomposer.org/download/1.10.8/composer.phar
  - php composer.phar install
  - wget https://getcomposer.org/download/latest-stable/composer.phar
  - php composer.phar install --ignore-platform-reqs
#  - curl -sL https://deb.nodesource.com/setup_6.x | bash
#  - apt-get -qq install -y nodejs
#  - npm install --silent
+1 −1
Original line number Diff line number Diff line
# OSCAR 2.12 "Spartan" (Documentation technique)

### Version actuelle
- **VERSION 2.12 "Spartan"** ([Note de version](doc/versions/version-2.12.md))
- **VERSION 2.12 "Spartan"** ([Note de version](doc/versions/version-2.12.md) / [Mise à jour technique](doc/upgrade-to-spartan.md) )
  
### Version antérieurs
 - VERSION 2.11 "MacClane" ([Note de version](doc/versions/version-2.11.md))
+63 −105
Original line number Diff line number Diff line
@@ -13,6 +13,8 @@
// Chemin "simplifié"
chdir(dirname(__DIR__));

$oscarCmd = '/usr/bin/php bin/oscar.php console ';

// Autoload & Co
require __DIR__ . '/../vendor/autoload.php';

@@ -28,149 +30,106 @@ $oscarConfigurationService = $app->getServiceManager()->get(\Oscar\Service\Oscar
// Worker
$worker = new GearmanWorker();
$worker->addServer($oscarConfigurationService->getGearmanHost());
$worker->addFunction('indexPerson', 'oscarJob_indexPerson');
$worker->addFunction('personSearchUpdate', 'oscarJob_indexPerson');
$worker->addFunction('indexActivity', 'oscarJob_indexActivity');
$worker->addFunction('activitySearchUpdate', 'oscarJob_indexActivity');
$worker->addFunction('notificationActivityPerson', 'oscarJob_notificationActivityPerson');
$worker->addFunction('purgeNotificationsPersonActivity', 'oscarJob_purgeNotificationsPersonActivity');

$worker->addFunction('updateIndexActivity', 'oscarJob_updateIndexActivity');
$worker->addFunction('updateIndexPerson', 'oscarJob_updateIndexPerson');
$worker->addFunction('updateIndexOrganization', 'oscarJob_updateIndexOrganization');
$worker->addFunction('updateNotificationsActivity', 'oscarJob_updateNotificationsActivity');

$worker->addFunction('hello', 'oscarJob_hello');

// Affiche dans le journalctl -u oscarworker.service -f
echo "OSCAR WORKER STARTED\n";
echo "Version: " . \Oscar\OscarVersion::getBuild() . "\n";

$execDev = "2";
echo "###################################################################\n";
echo "# OSCAR WORKER STARTED " . \Oscar\OscarVersion::getBuild() . " SPARTAN\n";
echo "# working directory : '" . __DIR__ . "'\n";
echo "###################################################################\n";

while ($worker->work()) {
    ;
}

function getServiceManager(){
function getServiceManager()
{
    global $app;
    return $app->getServiceManager();
}

while($worker->work());

function oscarJob_indexActivity(GearmanJob $job){
function oscarJob_updateIndexActivity(GearmanJob $job)
{
    global $oscarCmd;
    $params = json_decode($job->workload());



    try {
        if (!property_exists($params, 'activityid')) {
            throw new Exception("Paramètres manquant ID");
            throw new Exception("Paramètres manquant 'activityid'");
        }
        /** @var \Oscar\Service\ProjectGrantService $activityService */
        $activityService = getServiceManager()->get(\Oscar\Service\ProjectGrantService::class);


        $activityid = $params->activityid;
        $activityService->getLoggerService()->info("[GEARMAN] Indexation de Activity $activityid");
        $activity = $activityService->getActivityById($activityid);
        echo date('y-m-d H:i:s')." Rebuid Index [$activityid] $activity\n";
        $activityService->searchUpdate($activity);

        $cmd = $oscarCmd . ' indexactivity \'{"activityid":' . $params->activityid . '}\'';
        echo "[worker] exec $cmd\n";
        exec($cmd);
    } catch (Exception $e) {
        $activityService->getLoggerService()->info("[GEARMAN] Error " . $e->getMessage());
        echo "[ERR] " . $e->getMessage() . "\n";
    }
}

function oscarJob_indexPerson(GearmanJob $job){
function oscarJob_updateIndexPerson(GearmanJob $job)
{
    global $oscarCmd;
    $params = json_decode($job->workload());

    try {
        if (!property_exists($params, 'personid')) {
            throw new Exception("Paramètres manquant ID");
            throw new Exception("Paramètres manquant 'personid'");
        }
        /** @var \Oscar\Service\PersonService $personService */
        $personService = getServiceManager()->get(\Oscar\Service\PersonService::class);

        $personId = $params->personid;

        getServiceManager()->get('Logger')->info("[GEARMAN] Indexation de Person $personId");
        $person = $personService->getPerson($personId);
        echo date('y-m-d H:i:s')." Rebuid Index [$personId] $person\n";
        $personService->getSearchEngineStrategy()->update($person);

        $personid = $params->personid;
        $cmd = $oscarCmd . ' indexperson \'{"personid":' . $personid . '}\'';
        echo "[worker] exec $cmd\n";
        exec($cmd);
    } catch (Exception $e) {
        getServiceManager()->get('Logger')->info("[GEARMAN] Error " . $e->getMessage());
        echo "[ERR] " . $e->getMessage() . "\n";
    }
}

function oscarJob_notificationActivityPerson(GearmanJob $job){
function oscarJob_updateIndexOrganization(GearmanJob $job)
{
    global $oscarCmd;
    $params = json_decode($job->workload());

    try {
        if( !property_exists($params, 'personid') || !property_exists($params, 'activityid') ){
            throw new Exception("Paramètres manquant ID");
        if (!property_exists($params, 'organizationid')) {
            throw new Exception("Paramètres manquant 'organizationid'");
        }

        /** @var \Oscar\Service\ProjectGrantService $projectGrantService */
        $projectGrantService = getServiceManager()->get(\Oscar\Service\ProjectGrantService::class);

        /** @var \Oscar\Service\PersonService $personService */
        $personService = getServiceManager()->get(\Oscar\Service\PersonService::class);

        /** @var \Oscar\Service\NotificationService $notificationService */
        $notificationService = getServiceManager()->get(\Oscar\Service\NotificationService::class);

        $personId = $params->personid;
        $person = $personService->getPerson($personId);

        $activityId = $params->activityid;
        $activity = $projectGrantService->getActivityById($activityId);

        getServiceManager()->get('Logger')->info("[GEARMAN] Notification Person:$personId - Activity:$activityId");

        echo date('y-m-d H:i:s')." Notification Activity Person [$activityId, $personId] $activity >  $person\n";
        $notificationService->generateNotificationsForActivity($activity, $person);

        $organizationid = $params->organizationid;
        $cmd = $oscarCmd . ' indexorganization \'{"organizationid":' . $organizationid . '}\'';
        echo "[worker] exec $cmd\n";
        exec($cmd);
    } catch (Exception $e) {
        echo "[ERR] " . $e->getMessage() . "\n";
        getServiceManager()->get('Logger')->info("[GEARMAN] Error " . $e->getMessage());
    }
}

function oscarJob_updateNotificationsActivity(GearmanJob $job)
{
    global $oscarCmd;

function oscarJob_purgeNotificationsPersonActivity(GearmanJob $job){
    $params = json_decode($job->workload());

    try {
        if( !property_exists($params, 'personid') || !property_exists($params, 'activityid') ){
            throw new Exception("Paramètres manquant ID");
        if (!property_exists($params, 'activityid')) {
            throw new Exception("Paramètres manquant 'activityid'");
        }

        /** @var \Oscar\Service\ProjectGrantService $projectGrantService */
        $projectGrantService = getServiceManager()->get(\Oscar\Service\ProjectGrantService::class);

        /** @var \Oscar\Service\PersonService $personService */
        $personService = getServiceManager()->get(\Oscar\Service\PersonService::class);

        /** @var \Oscar\Service\NotificationService $notificationService */
        $notificationService = getServiceManager()->get(\Oscar\Service\NotificationService::class);

        $personId = $params->personid;
        $person = $personService->getPerson($personId);

        $activityId = $params->activityid;
        $activity = $projectGrantService->getActivityById($activityId);

        getServiceManager()->get('Logger')->info("[GEARMAN] Purge notification Person:$personId Activity:$activityId");

        echo date('y-m-d H:i:s')." PURGE Notification Activity Person [$activityId, $personId] $activity >  $person\n";
        $notificationService->purgeNotificationsPersonActivity($activity, $person);

        $activityid = $params->activityid;
        $cmd = $oscarCmd . ' notificationsactivity \'{"activityid":' . $params->activityid . '}\'';
        echo "[worker] exec $cmd\n";
        exec($cmd);
    } catch (Exception $e) {
        getServiceManager()->get('Logger')->info("[GEARMAN] Error " . $e->getMessage());
        echo "[ERR] " . $e->getMessage() . "\n";
    }
}

function oscarJob_hello(GearmanJob $job){
function oscarJob_hello(GearmanJob $job)
{
    $params = json_decode($job->workload());

    try {


        /** @var \Oscar\Service\ProjectGrantService $projectGrantService */
        $projectGrantService = getServiceManager()->get(\Oscar\Service\ProjectGrantService::class);

@@ -183,13 +142,12 @@ function oscarJob_hello(GearmanJob $job){
        /** @var \Monolog\Logger $loggerService */
        $loggerService = getServiceManager()->get('Logger');

        echo "Hello with " . print_r($params) . "\n";
        echo "[worker] Hello with " . print_r($params) . "\n";

        // Envoi d'un log vers OSCAR
        $loggerService->info("[GEARMAN] a bien reçu la tâche HELLO");
        getServiceManager()->get('Logger')->info(" > [gearman:call] TEST OK]");

        $job->sendComplete("TRAITEMENT RÉUSSI");

    } catch (Exception $e) {
        $job->sendException("[ERR] HELLO FAIL : " . $e->getMessage());
    }
+1 −1
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
  "description": "",

  "require": {
    "unicaen/app": "^3.0",
    "unicaen/app": "^3.1",
    "unicaen/auth": "^3.2.0",
    "oro/doctrine-extensions": "^1.2",
    "symfony/yaml": "^4.3",
Loading