get_registry(); $parm = $request->get_parms('action', 'position', 'test', 'renew', 'path', 'tests'); $output = ''; switch ($parm['action']) { case 'TREE': $output = module_admin::getTree($parm['position']); break; case 'APACHE': if ($parm['test'] == 'success') { $output = '1'; } else { $output = '0'; } break; case 'SCHEDULERKEY': $output = $registry->get('GV_ServerName') . 'admin/runscheduler.php?key=' . urlencode(phrasea::scheduler_key( ! ! $parm['renew'])); break; case 'TESTPATH': $tests = true; foreach ($parm['tests'] as $test) { switch ($test) { case 'writeable': if ( ! is_writable($parm['path'])) { $tests = false; } break; case 'readable': default: if ( ! is_readable($parm['path'])) { $tests = true; } break; } } $output = p4string::jsonencode(array('results' => ($tests ? '1' : '0'))); break; case 'EMPTYBASE': $parm = $request->get_parms(array('sbas_id' => http_request::SANITIZE_NUMBER_INT)); $message = _('Base empty successful'); try { $sbas_id = (int) $parm['sbas_id']; $databox = databox::get_instance($sbas_id); $class_name = 'task_period_emptyColl'; foreach ($databox->get_collections() as $collection) { if ($collection->get_record_amount() <= 500) { $collection->empty_collection(500); } else { $settings = "" . $collection->get_base_id() . ""; task_abstract::create($appbox, $class_name, $settings); $message = _('A task has been creted, please run it to complete empty collection'); } } } catch (Exception $e) { $message = _('An error occurred'); } $output = p4string::jsonencode(array('message' => $message)); break; case 'EMPTYCOLL': $message = _('Collection empty successful'); $parm = $request->get_parms( array( "sbas_id" => http_request::SANITIZE_NUMBER_INT , "coll_id" => http_request::SANITIZE_NUMBER_INT ) ); try { $databox = databox::get_instance($parm['sbas_id']); $collection = collection::get_from_coll_id($databox, $parm['coll_id']); if ($collection->get_record_amount() <= 500) { $collection->empty_collection(500); } else { $class_name = 'task_period_emptyColl'; $settings = "\n\n" . $collection->get_base_id() . ""; task_abstract::create($appbox, $class_name, $settings); $message = _('A task has been creted, please run it to complete empty collection'); } } catch (Exception $e) { $message = _('An error occurred'); } $output = p4string::jsonencode(array('message' => $message)); break; case 'SETTASKSTATUS': $parm = $request->get_parms('task_id', 'status', 'signal'); try { $task_manager = new task_manager($appbox); $task = $task_manager->getTask($parm['task_id']); $pid = (int) ($task->getPID()); $task->setState($parm["status"]); $signal = (int) ($parm['signal']); if ($signal > 0 && $pid) { posix_kill($pid, $signal); } } catch (Exception $e) { } $output = json_encode($pid); break; case 'SETSCHEDSTATUS': $parm = $request->get_parms('status', 'signal'); try { $task_manager = new task_manager($appbox); $task_manager->setSchedulerState($parm['status']); } catch (Exception $e) { } break; case 'RESETTASKCRASHCOUNTER': $parm = $request->get_parms("task_id"); try { $task_manager = new task_manager($appbox); $task = $task_manager->getTask($parm['task_id']); $task->resetCrashCounter(); } catch (Exception $e) { } $ret = new DOMDocument("1.0", "UTF-8"); $ret->standalone = true; $ret->preserveWhiteSpace = false; $root = $ret->appendChild($ret->createElement("result")); $root->appendChild($ret->createCDATASection(var_export($parm, true))); $output = $ret->saveXML(); break; case 'CHANGETASK': $parm = $request->get_parms('act', 'task_id', "usr"); $ret = new DOMDocument("1.0", "UTF-8"); $ret->standalone = true; $ret->preserveWhiteSpace = false; $root = $ret->appendChild($ret->createElement("result")); $root->setAttribute("saved", "0"); $root->appendChild($ret->createCDATASection(var_export($parm, true))); try { $task_manager = new task_manager($appbox); $task = $task_manager->getTask($parm["task_id"]); /** * @todo checker, cette methode n'est pas implementee partout */ $root->setAttribute("crashed", $task->getCrashCounter()); if ($task->saveChanges($conn, $parm["task_id"], $row)) { $root->setAttribute("saved", "1"); } } catch (Exception $e) { } $output = $ret->saveXML(); break; case 'PINGSCHEDULER_JS': $ret = array('time' => date("H:i:s")); $task_manager = new task_manager($appbox); $ret['scheduler'] = $task_manager->getSchedulerState(); $ret['tasks'] = array(); foreach ($task_manager->getTasks(true) as $task) { if ($task->getState() == task_abstract::STATE_TOSTOP && $task->getPID() === NULL) { // fix $task->setState(task_abstract::STATE_STOPPED); } $id = $task->getID(); $ret['tasks'][$id] = array( 'id' => $id , 'pid' => $task->getPID() , 'crashed' => $task->getCrashCounter() , 'completed' => $task->getCompletedPercentage() , 'status' => $task->getState() ); } if (1) { $sql = 'SHOW PROCESSLIST'; $stmt = $appbox->get_connection()->prepare($sql); $stmt->execute(); $rows = $stmt->fetchALL(PDO::FETCH_ASSOC); $stmt->closeCursor(); $ret['db_processlist'] = array(); foreach ($rows as $row) { if ($row['Info'] != $sql) { $ret['db_processlist'][] = $row; } } } $output = p4string::jsonencode($ret); break; case 'UNMOUNTBASE': $parm = $request->get_parms(array('sbas_id' => http_request::SANITIZE_NUMBER_INT)); $ret = array('sbas_id' => null); $databox = databox::get_instance((int) $parm['sbas_id']); $databox->unmount_databox($appbox); $ret['sbas_id'] = $parm['sbas_id']; $output = p4string::jsonencode($ret); break; case 'P_BAR_INFO': $parm = $request->get_parms(array('sbas_id' => http_request::SANITIZE_NUMBER_INT)); $ret = array( 'sbas_id' => null, 'indexable' => false, 'records' => 0, 'xml_indexed' => 0, 'thesaurus_indexed' => 0, 'viewname' => null, 'printLogoURL' => NULL ); $databox = databox::get_instance((int) $parm['sbas_id']); $ret['indexable'] = $appbox->is_databox_indexable($databox); $ret['viewname'] = (($databox->get_dbname() == $databox->get_viewname()) ? _('admin::base: aucun alias') : $databox->get_viewname()); $ret['records'] = $databox->get_record_amount(); $datas = $databox->get_indexed_record_amount(); $ret['sbas_id'] = $parm['sbas_id']; $tot = $idxxml = $idxth = 0; $ret['xml_indexed'] = $datas['xml_indexed']; $ret['thesaurus_indexed'] = $datas['thesaurus_indexed']; if (file_exists($registry->get('GV_RootPath') . 'config/minilogos/logopdf_' . $parm['sbas_id'] . '.jpg')) { $ret['printLogoURL'] = '/print/' . $parm['sbas_id']; } $output = p4string::jsonencode($ret); break; case 'CHGVIEWNAME': $parm = $request->get_parms('sbas_id', 'viewname'); $ret = array('sbas_id' => null, 'viewname' => null); $sbas_id = (int) $parm['sbas_id']; $databox = databox::get_instance($sbas_id); $appbox->set_databox_viewname($databox, $parm['viewname']); $output = p4string::jsonencode($ret); break; case 'MAKEINDEXABLE': $parm = $request->get_parms('sbas_id', 'INDEXABLE'); $ret = array('sbas_id' => null, 'indexable' => null); $sbas_id = (int) $parm['sbas_id']; $databox = databox::get_instance($sbas_id); $appbox->set_databox_indexable($databox, $parm['INDEXABLE']); $ret['sbas_id'] = $parm['sbas_id']; $ret['indexable'] = $parm['INDEXABLE']; $output = p4string::jsonencode($ret); break; case 'REINDEX': $parm = $request->get_parms(array('sbas_id' => http_request::SANITIZE_NUMBER_INT)); $ret = array('sbas_id' => null); $sbas_id = (int) $parm['sbas_id']; $databox = databox::get_instance($sbas_id); $databox->reindex(); $output = p4string::jsonencode($ret); break; case 'CLEARALLLOG': $parm = $request->get_parms(array('sbas_id' => http_request::SANITIZE_NUMBER_INT)); $ret = array('sbas_id' => null); $sbas_id = (int) $parm['sbas_id']; $databox = databox::get_instance($sbas_id); $databox->clear_logs(); $ret['sbas_id'] = $parm['sbas_id']; $output = p4string::jsonencode($ret); break; case 'DELLOGOPDF': $parm = $request->get_parms(array('sbas_id' => http_request::SANITIZE_NUMBER_INT)); $ret = array('sbas_id' => null); $sbas_id = (int) $parm['sbas_id']; $databox = databox::get_instance($sbas_id); $appbox->write_databox_pic($databox, null, databox::PIC_PDF); $ret['sbas_id'] = $parm['sbas_id']; $output = p4string::jsonencode($ret); break; case 'DELETEBASE': $parm = $request->get_parms(array('sbas_id' => http_request::SANITIZE_NUMBER_INT)); $ret = array('sbas_id' => null, 'err' => -1, 'errmsg' => null); try { $sbas_id = (int) $parm['sbas_id']; $databox = databox::get_instance($sbas_id); if ($databox->get_record_amount() == 0) { $databox->unmount_databox($appbox); $appbox->write_databox_pic($databox, null, databox::PIC_PDF); $databox->delete(); $ret['sbas_id'] = $parm['sbas_id']; $ret['err'] = 0; } else { $ret['errmsg'] = _('admin::base: vider la base avant de la supprimer'); } } catch (Exception $e) { $ret['errmsg'] = $e->getMessage(); } $output = p4string::jsonencode($ret); break; } unset($appbox); echo $output;