/***
* This script is intended to be placed in a cronjob.
* It must be run every Thursday, at 01hOO for example.
* On Unix, you can use crontab -e and place this :
* 00 01 * * 4 /path/php/binary /path/to/your/vcs/dir/doc-editor/scripts/cron/check_entities.php
****/
require_once dirname(__FILE__) . '/../../php/Conf.php';
require_once dirname(__FILE__) . '/../../php/LockFile.php';
require_once dirname(__FILE__) . '/../../php/ProjectManager.php';
require_once dirname(__FILE__) . '/../../php/RepositoryManager.php';
require_once dirname(__FILE__) . '/../../php/ToolsCheckEntities.php';
$rm = RepositoryManager::getInstance();
$pm = ProjectManager::getInstance();
$availableProject = $pm->getAvailableProject();
while (list($key, $project) = each($availableProject)) {
    if ($project['code'] != "php") {
        continue;
    }
    // Define it as a project
    $pm->setProject($project['code']);
    $lock = new LockFile('project_' . $project['code'] . '_lock_check_entities');
    if ($lock->lock()) {
        ToolsCheckEntities::getInstance()->startCheck();
        // Set lastUpdate date/time
        $info = array();
        $info['user'] = '******';
        $rm->setStaticValue('info', 'checkEntities', json_encode($info), true);
    }
    // Remove the lock File
    $lock->release();
}
 /**
  * Check the entities
  */
 public function checkEntities()
 {
     $ac = AccountManager::getInstance();
     if (!$ac->isLogged()) {
         return JsonResponseBuilder::failure();
     }
     if ($ac->isAnonymous) {
         return JsonResponseBuilder::failure();
     }
     $lock = new LockFile('project_' . $ac->project . '_lock_check_entities');
     if ($lock->lock()) {
         ToolsCheckEntities::getInstance()->startCheck();
     }
     // Remove the lock File
     $lock->release();
     $info = array();
     $info['user'] = $ac->vcsLogin;
     RepositoryManager::getInstance()->setStaticValue('info', 'checkEntities', json_encode($info), true);
     return JsonResponseBuilder::success();
 }