public function startProcess()
 {
     define('INTERNAL', true);
     foreach ($this->apps as $institution) {
         $short_name = $institution->getShortName();
         if (GcrEschoolTable::isShortNameValid($short_name)) {
             error_log("\n" . date('d/m/Y H:i:s', time()) . ": App=" . $short_name . ": Starting LDAP sync", 3, gcr::rootDir . 'debug/error.log');
             print "\n" . date('d/m/Y H:i:s', time()) . ": Starting LDAP sync for {$short_name}";
             $command = "/usr/bin/php " . gcr::maharaDir . "auth/ldap/cli/sync_users.php now {$short_name}";
             system($command);
         }
     }
     $this->process->delete();
 }
 public function startProcess()
 {
     define('INTERNAL', true);
     require gcr::maharaDir . 'lib/version.php';
     foreach ($this->apps as $institution) {
         $short_name = $institution->getShortName();
         $upgrade_needed = $config->version > $institution->getConfigVar('version');
         $siteclosed = $institution->getConfigVar('siteclosed');
         if (!$upgrade_needed && (!$siteclosed || empty($siteclosed))) {
             if (GcrEschoolTable::isShortNameValid($short_name)) {
                 error_log("\n" . date('d/m/Y H:i:s', time()) . ": App=" . $short_name . ": Starting Cron Script", 3, gcr::rootDir . 'debug/error.log');
                 print "\n" . date('d/m/Y H:i:s', time()) . ": Starting cron for {$short_name}";
                 $command = "/usr/bin/php " . gcr::maharaDir . "lib/cron.php now {$short_name}";
                 system($command);
             }
         } else {
             print "\n" . date('d/m/Y H:i:s', time()) . ": Delaying cron for {$short_name}, upgrade pending";
         }
     }
     $this->process->delete();
 }
 public function startProcess()
 {
     foreach ($this->apps as $eschool) {
         $output = '';
         $ts = time();
         $short_name = $eschool->getShortName();
         if (GcrEschoolTable::isShortNameValid($short_name)) {
             $command = "/usr/bin/php " . gcr::moodleDir . "admin/cli/upgrade.php --eschool {$short_name} --non-interactive";
             system($command, $output);
             // If everything worked, this second execution should return int(0),
             // which signifies that everything is already up to date.
             system($command, $output);
             if ($output === 0) {
                 $text = ': Moodle updates for ' . $short_name . ' completed in ' . (time() - $ts) . ' seconds.';
             } else {
                 $text = ': Moodle updates FAILED for ' . $short_name . ' after ' . (time() - $ts) . ' seconds.';
             }
             $eschool->deleteCacheDirectories();
             error_log("\n" . date('d/m/Y H:i:s', time()) . $text, 3, gcr::rootDir . 'debug/error.log');
         }
     }
     $this->process->delete();
 }
 public function startProcess()
 {
     define('MOODLE_INTERNAL', true);
     require gcr::moodleDir . "version.php";
     foreach ($this->apps as $eschool) {
         $short_name = $eschool->getShortName();
         $eschool_version = $eschool->getConfigVar('version');
         $upgrade_running = $eschool->getConfigVar('upgraderunning');
         if (empty($eschool_version)) {
             error_log('Version data missing from ' . $short_name, 3, gcr::rootDir . 'debug/error.log');
         }
         if (!$upgrade_running && $version <= $eschool_version) {
             if (GcrEschoolTable::isShortNameValid($short_name)) {
                 error_log("\n" . date('d/m/Y H:i:s', time()) . ": App=" . $short_name . ": Starting Cron Script", 3, gcr::rootDir . 'debug/error.log');
                 print "\n" . date('d/m/Y H:i:s', time()) . ": Starting cron for {$short_name}";
                 $command = "/usr/bin/php " . gcr::moodleDir . "admin/cli/cron.php --eschool {$short_name}";
                 system($command);
             }
         } else {
             print "\n" . date('d/m/Y H:i:s', time()) . ": Delaying cron for {$short_name}, upgrade pending";
         }
     }
     $this->process->delete();
 }
 protected function validateShortName($shortName, $testForValidNewName = true)
 {
     $shortNameValid = true;
     if (!GcrEschoolTable::isShortNameValid($shortName)) {
         $this->formErrors['short_nameSize'] = 'eSchool URL must be 3-32 alphanumeric characters (1st character must be a letter).';
         $shortNameValid = false;
     }
     if ($testForValidNewName && GcrEschoolTable::isShortNameUsed($shortName)) {
         $this->formErrors['short_nameUsed'] = 'eSchool URL is already in use.';
         $shortNameValid = false;
     }
     if ($testForValidNewName && GcrEschoolTable::isShortNameReserved($shortName)) {
         $this->formErrors['short_nameReserved'] = 'eSchool URL is a reserved word.';
         $shortNameValid = false;
     }
     return $shortNameValid;
 }
 protected function validateEschoolShortName($shortName)
 {
     global $CFG;
     $shortNameValid = true;
     if (!GcrEschoolTable::isShortNameValid($shortName)) {
         $this->formErrors['short_nameSize'] = 'eClassroom URL must be 2-32 alphanumeric characters (1st character must be a letter).';
         $shortNameValid = false;
     }
     if (GcrEschoolTable::isShortNameUsed($shortName)) {
         $app = GcrInstitutionTable::getApp($shortName);
         if (!$CFG->current_app->hasPrivilege('GCUser') || $app->isMahara()) {
             $this->formErrors['short_nameUsed'] = 'eClassroom URL is already in use.';
             $shortNameValid = false;
         }
     }
     if (GcrEschoolTable::isShortNameReserved($shortName)) {
         $this->formErrors['short_nameReserved'] = 'eClassroom URL is a reserved word.';
         $shortNameValid = false;
     }
     return $shortNameValid;
 }
 public function resetMdlCacheSettings()
 {
     global $CFG;
     $this->start_time = time();
     $this->operation_description = 'Reset Moodle Cache Settings:';
     foreach ($this->app_array as $eschool) {
         if ($eschool->isHome()) {
             continue;
         }
         if (!GcrEschoolTable::isShortNameValid($eschool->getShortName())) {
             $CFG->current_app->gcError($short_name . ' is an invalid shortname', 'gcdatabaseerror');
         }
         $eschool->setMdlCacheSettings();
     }
     $this->close();
 }
 public static function deleteSchemaFromSystem($caller)
 {
     $conn = self::getConnection();
     $schema_name = $caller->getShortName();
     // make sure that shortname is not '' or '  ' which would result in deleting
     // the entire moodledata directory.
     if (!GcrEschoolTable::isShortNameValid($schema_name)) {
         $CFG->current_app->gcError('Attempt to delete eschool with corrupt short_name', 'gcdatabaseerror');
         die;
     }
     try {
         $conn->execute('drop schema ' . $schema_name . ' cascade');
     } catch (Exception $e) {
         error_log("\n" . date('d/m/Y H:i:s', time()) . ": Delete schema {$schema_name} error, database schema not deleted", 3, gcr::rootDir . 'debug/error.log');
     }
     try {
         $conn->execute('drop user gc4' . $schema_name . 'admin');
     } catch (Exception $e) {
         error_log("\n" . date('d/m/Y H:i:s', time()) . ": Delete schema {$schema_name} error, database user not deleted", 3, gcr::rootDir . 'debug/error.log');
     }
 }