本文整理汇总了PHP中pts_strings::plural_handler方法的典型用法代码示例。如果您正苦于以下问题:PHP pts_strings::plural_handler方法的具体用法?PHP pts_strings::plural_handler怎么用?PHP pts_strings::plural_handler使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pts_strings
的用法示例。
在下文中一共展示了pts_strings::plural_handler方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: cpu_string
public static function cpu_string()
{
$model = phodevi::read_property('cpu', 'model');
// Append the processor frequency to string
if (($freq = phodevi::read_property('cpu', 'default-frequency')) > 0) {
$model = str_replace($freq . 'GHz', null, $model);
// we'll replace it if it's already in the string
$model .= ' @ ' . $freq . 'GHz';
}
$core_count = phodevi::read_property('cpu', 'core-count');
return $model . ' (' . pts_strings::plural_handler($core_count, 'Core') . ')';
}
示例2: render_page_process
public static function render_page_process($PATH)
{
echo phoromatic_webui_header_logged_in();
$main = '<h1>Phoromatic</h1>';
$main .= phoromatic_systems_needing_attention();
$main .= '<p>Phoromatic is the remote management and test orchestration component to the <a href="http://www.phoronix-test-suite.com/">Phoronix Test Suite</a>. Phoromatic allows you to take advantage of the Phoronix Test Suite\'s vast feature-set across multiple systems over the LAN/WAN, manage entire test farms of systems for benchmarking via a centralized interface, centrally collect test results, and carry out other enteprise-focused tasks.</p>';
$main_page_message = phoromatic_server::read_setting('main_page_message');
if (!PHOROMATIC_USER_IS_VIEWER) {
$main .= '<p>To get started with your new account, the basic steps to get started include:</p>
<ol>
<li>Connect/sync the Phoronix Test Suite client systems (the systems to be benchmarked) to this account. In the simplest form, you just need to run the following command on the test systems: <strong>phoronix-test-suite phoromatic.connect ' . phoromatic_web_socket_server_addr() . '</strong>. For more information view the instructions on the <a href="?systems">systems page</a>.</li>
<li>Configure your <a href="?settings">account settings</a>.</li>
<li><a href="?schedules">Create a test schedule</a>. A schedule is for running test(s) on selected system(s) on a routine, timed basis or whenever a custom trigger is passed to the Phoromatic server. A test schedule could be for running benchmarks on a daily basis, whenever a new Git commit is applied to a code-base, or other events occurred. You can also enrich the potential by adding pre/post-test hooks for ensuring the system is set to a proper state for benchmarking. Alternatively, you can <a href="?benchmark">create a benchmark ticket</a> for one-time testing on one or more systems.</li>
<li>View the automatically generated <a href="?results">test results</a>.</li>';
if (!empty($main_page_message)) {
$main .= '<li><strong>' . $main_page_message . '</strong></li>';
} else {
$main .= '<li><strong>If you are interested in Phoromatic and the Phoronix Test Suite for enterprise testing, please <a href="http://commercial.phoronix-test-suite.com/">contact us</a> for commercial support, custom test development, custom engineering services, and other professional services. It\'s not without corporate support and sponsorship that we can continue to develop this leading open-source Linux benchmarking software. If you run into any problems with our open-source software or would like to contribute patches, you can do so via our <a href="https://www.github.com/phoronix-test-suite/phoronix-test-suite">GitHub project</a>.</strong></li>
</ol>';
}
} else {
if (!empty($main_page_message)) {
$main .= '<p><strong>' . $main_page_message . '</strong></p>';
}
}
$main .= '<hr /><div id="phoromatic_fixed_main_table">';
$systems_needing_attention = phoromatic_server::systems_appearing_down($_SESSION['AccountID']);
$systems_idling = phoromatic_server::systems_idling($_SESSION['AccountID']);
$systems_shutdown = phoromatic_server::systems_shutdown($_SESSION['AccountID']);
$systems_running_tests = phoromatic_server::systems_running_tests($_SESSION['AccountID']);
$main .= '<div id="phoromatic_main_table_cell">
<h2>' . pts_strings::plural_handler(count($systems_running_tests), 'System') . ' Running Tests</h2>
<h2>' . pts_strings::plural_handler(count($systems_idling), 'System') . ' Idling</h2>
<h2>' . pts_strings::plural_handler(count($systems_shutdown), 'System') . ' Shutdown</h2>
<h2>' . pts_strings::plural_handler(count($systems_needing_attention), 'System') . ' Needing Attention</h2>';
$main .= '<hr /><h2>Systems Running Tests</h2>';
$stmt = phoromatic_server::$db->prepare('SELECT * FROM phoromatic_systems WHERE AccountID = :account_id AND State >= 0 AND CurrentTask NOT LIKE \'%Idling%\' AND CurrentTask NOT LIKE \'%Shutdown%\' ORDER BY LastCommunication DESC');
$stmt->bindValue(':account_id', $_SESSION['AccountID']);
$result = $stmt->execute();
while ($result && ($row = $result->fetchArray())) {
$main .= '<div class="phoromatic_overview_box">';
$main .= '<h1><a href="?systems/' . $row['SystemID'] . '">' . $row['Title'] . '</a></h1>';
$main .= $row['CurrentTask'] . '<br />';
if (!empty($row['CurrentProcessSchedule'])) {
$main .= '<a href="?schedules/' . $row['CurrentProcessSchedule'] . '">' . phoromatic_server::schedule_id_to_name($row['CurrentProcessSchedule']) . '</a><br />';
}
$time_remaining = phoromatic_compute_estimated_time_remaining($row['EstimatedTimeForTask'], $row['LastCommunication']);
if ($time_remaining) {
$main .= '<em>~ ' . pts_strings::plural_handler($time_remaining, 'Minute') . ' Remaining</em>';
}
$main .= '</div>';
}
$main .= '</div>';
$schedules_today = phoromatic_server::schedules_today($_SESSION['AccountID']);
$schedules_total = phoromatic_server::schedules_total($_SESSION['AccountID']);
$benchmark_tickets_today = phoromatic_server::benchmark_tickets_today($_SESSION['AccountID']);
$main .= '<div id="phoromatic_main_table_cell">
<h2>' . pts_strings::plural_handler(count($schedules_today), 'Schedule') . ' Active Today</h2>
<h2>' . pts_strings::plural_handler(count($schedules_total), 'Schedule') . ' In Total</h2>
<h2>' . pts_strings::plural_handler(count($benchmark_tickets_today), 'Active Benchmark Ticket') . '</h2>
<h2> </h2>';
$main .= '<hr /><h2>Today\'s Scheduled Tests</h2>';
foreach ($schedules_today as &$row) {
$systems_for_schedule = phoromatic_server::systems_associated_with_schedule($_SESSION['AccountID'], $row['ScheduleID']);
$extra_css = null;
if (empty($systems_for_schedule)) {
$extra_css = ' opacity: 0.4;';
}
list($h, $m) = explode('.', $row['RunAt']);
$main .= '<div style="' . $extra_css . '" class="phoromatic_overview_box">';
$main .= '<h1><a href="?schedules/' . $row['ScheduleID'] . '">' . $row['Title'] . '</a></h1>';
if (!empty($systems_for_schedule)) {
if ($row['RunAt'] > date('H.i')) {
$run_in_future = true;
$main .= '<h3>Runs In ' . pts_strings::format_time($h * 60 + $m - (date('H') * 60 + date('i')), 'MINUTES') . '</h3>';
} else {
$run_in_future = false;
$main .= '<h3>Triggered ' . pts_strings::format_time(max(1, date('H') * 60 + date('i') - ($h * 60 + $m)), 'MINUTES') . ' Ago</h3>';
}
}
foreach ($systems_for_schedule as $system_id) {
$pprid = self::result_match($row['ScheduleID'], $system_id, date('Y-m-d'));
if ($pprid) {
$main .= '<a href="?result/' . $pprid . '">';
}
$main .= phoromatic_server::system_id_to_name($system_id);
if ($pprid) {
$main .= '</a>';
} else {
if (!$run_in_future) {
$sys_info = self::system_info($system_id);
$last_comm_diff = time() - strtotime($sys_info['LastCommunication']);
$main .= ' <sup><a href="?systems/' . $system_id . '">';
if ($last_comm_diff > 3600) {
$main .= '<strong>Last Communication: ' . pts_strings::format_time($last_comm_diff, 'SECONDS', true, 60) . ' Ago</strong>';
} else {
$main .= $sys_info['CurrentTask'];
}
$main .= '</a></sup>';
}
//.........这里部分代码省略.........
示例3: test_install_process
public function test_install_process($test_install_manager)
{
$this->test_install_pos = 0;
$this->test_install_count = $test_install_manager->tests_to_install_count();
$download_size = 0;
$download_total = 0;
$cache_total = 0;
$cache_size = 0;
$install_size = 0;
$download_string_total = null;
$cache_string_total = null;
$disk_space_total = null;
foreach ($test_install_manager->get_test_run_requests() as $test_run_request) {
$install_size += $test_run_request->test_profile->get_environment_size();
foreach ($test_run_request->get_download_objects() as $test_file_download) {
switch ($test_file_download->get_download_location_type()) {
case 'IN_DESTINATION_DIR':
// We don't really care about these files here since they are good to go
break;
case 'LOCAL_DOWNLOAD_CACHE':
case 'REMOTE_DOWNLOAD_CACHE':
case 'LOOKASIDE_DOWNLOAD_CACHE':
$cache_size += $test_file_download->get_filesize();
$cache_total++;
break;
default:
$download_size += $test_file_download->get_filesize();
$download_total++;
break;
}
}
}
if ($download_total > 0) {
$download_string_total = pts_strings::plural_handler($download_total, 'File');
if ($download_size > 0) {
$download_string_total .= ' / ' . self::bytes_to_download_size($download_size) . 'MB';
}
}
if ($cache_total > 0) {
$cache_string_total = pts_strings::plural_handler($cache_total, 'File');
if ($cache_size > 0) {
$cache_string_total .= ' / ' . self::bytes_to_download_size($cache_size) . 'MB';
}
}
if ($install_size > 0) {
$disk_space_total = ceil($install_size) . 'MB';
}
$stats = array('download_total' => $download_string_total, 'cache_total' => $cache_string_total, 'disk_space_total' => $disk_space_total);
$this->update_install_status($test_install_manager, null, $stats);
}
示例4: phoromatic_compute_estimated_time_remaining_string
function phoromatic_compute_estimated_time_remaining_string($estimated_minutes, $last_comm, $append = 'Remaining')
{
$remaining = phoromatic_compute_estimated_time_remaining($estimated_minutes, $last_comm);
return $remaining > 0 ? '~' . pts_strings::plural_handler($remaining, 'Minute') . ' ' . $append : null;
}
示例5: days_ago_format_string
public static function days_ago_format_string($days_ago)
{
if ($days_ago < 30) {
$days_ago = pts_strings::plural_handler($days_ago, 'day');
} else {
$days_ago = floor($days_ago / 30);
if ($days_ago >= 12) {
$year = floor($days_ago / 12);
$months = $days_ago % 12;
$days_ago = pts_strings::plural_handler($year, 'year');
if ($months > 0) {
$days_ago .= ', ' . pts_strings::plural_handler($months, 'month');
}
} else {
$days_ago = pts_strings::plural_handler($days_ago, 'month');
}
}
return $days_ago;
}
示例6: render_page_process
//.........这里部分代码省略.........
if ($num_results > 1) {
$main .= '<p>Jump to the latest results from the past: ';
$main .= '<select name="view_results_from_past" id="view_results_from_past" onchange="phoromatic_jump_to_results_from(\'' . $PATH[0] . '\', \'view_results_from_past\');">';
$oldest_upload_time = strtotime($oldest_upload_time);
$opts = array('Week' => 7, 'Three Weeks' => 21, 'Month' => 30, 'Quarter' => 90, 'Six Months' => 180, 'Year' => 365);
foreach ($opts as $str_name => $time_offset) {
if ($oldest_upload_time > time() - 86400 * $time_offset) {
break;
}
$main .= '<option value="' . $time_offset . '">' . $str_name . '</option>';
}
$main .= '<option value="all">All Results</option>';
$main .= '</select>';
$main .= '</p><hr />';
}
$main .= '<p><strong>' . $num_results . ' Test Results Available For This Schedule.</strong></p>';
}
echo phoromatic_webui_main($main, phoromatic_webui_right_panel_logged_in());
echo phoromatic_webui_footer();
return;
}
$main = '<h1>Test Schedules</h1>
<p>Test schedules are used for tests that are intended to be run on a recurring basis -- either daily or other defined time period -- or whenever a trigger/event occurs, like a new Git commit to a software repository being tracked. Test schedules can be run on any given system(s)/group(s) and can be later edited.</p>';
if (!PHOROMATIC_USER_IS_VIEWER) {
$main .= '
<hr />
<h2>Create A Schedule</h2>
<p><a href="?sched">Create a schedule</a> followed by adding tests/suites to run for that schedule on the selected systems.</p>';
}
$main .= '<hr /><h2>Current Schedules</h2>';
$main .= '<div class="pts_phoromatic_info_box_area">
<ul>
<li><h1>Active Test Schedules</h1></li>';
$stmt = phoromatic_server::$db->prepare('SELECT Title, ScheduleID, Description, RunTargetSystems, RunTargetGroups, RunAt, ActiveOn FROM phoromatic_schedules WHERE AccountID = :account_id AND State >= 1 ORDER BY Title ASC');
$stmt->bindValue(':account_id', $_SESSION['AccountID']);
$result = $stmt->execute();
$row = $result->fetchArray();
if ($row == false) {
$main .= '<li class="light" style="text-align: center;">No Schedules Found</li>';
} else {
do {
$stmt_tests = phoromatic_server::$db->prepare('SELECT COUNT(*) AS TestCount FROM phoromatic_schedules_tests WHERE AccountID = :account_id AND ScheduleID = :schedule_id ORDER BY TestProfile ASC');
$stmt_tests->bindValue(':account_id', $_SESSION['AccountID']);
$stmt_tests->bindValue(':schedule_id', $row['ScheduleID']);
$result_tests = $stmt_tests->execute();
$row_tests = $result_tests->fetchArray();
$test_count = !empty($row_tests) ? $row_tests['TestCount'] : 0;
$group_count = empty($row['RunTargetGroups']) ? 0 : count(explode(',', $row['RunTargetGroups']));
$main .= '<a href="?schedules/' . $row['ScheduleID'] . '"><li>' . $row['Title'] . '<br /><table><tr><td>' . pts_strings::plural_handler(count(phoromatic_server::systems_associated_with_schedule($_SESSION['AccountID'], $row['ScheduleID'])), 'System') . '</td><td>' . pts_strings::plural_handler($group_count, 'Group') . '</td><td>' . pts_strings::plural_handler($test_count, 'Test') . '</td><td>' . pts_strings::plural_handler(phoromatic_results_for_schedule($row['ScheduleID']), 'Result') . ' Total</td><td>' . pts_strings::plural_handler(phoromatic_results_for_schedule($row['ScheduleID'], 'TODAY'), 'Result') . ' Today</td><td><strong>' . phoromatic_schedule_activeon_string($row['ActiveOn'], $row['RunAt']) . '</strong></td></tr></table></li></a>';
} while ($row = $result->fetchArray());
}
$main .= '</ul>
</div>';
$main .= '<hr /><h2>Schedule Overview</h2>';
$week = array('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday');
foreach ($week as $i => $day) {
$stmt = phoromatic_server::$db->prepare('SELECT Title, ScheduleID, RunAt, RunTargetGroups, RunTargetSystems FROM phoromatic_schedules WHERE AccountID = :account_id AND State >= 1 AND ActiveOn LIKE :active_on ORDER BY RunAt,ActiveOn,Title ASC');
$stmt->bindValue(':account_id', $_SESSION['AccountID']);
$stmt->bindValue(':active_on', '%' . $i . '%');
$result = $stmt->execute();
$has_matched = false;
while ($row = $result->fetchArray()) {
if (!$has_matched) {
$main .= '<h3>' . $day . '</h3>' . PHP_EOL . '<p>';
$has_matched = true;
}
$main .= '<em>' . $row['RunAt'] . '</em> <a href="?schedules/' . $row['ScheduleID'] . '">' . $row['Title'] . '</a>';
//$main .= $row['RunTargetSystems'] . ' ' . $row['RunTargetGroups'];
$main .= '<br />';
}
if ($has_matched) {
$main .= '</p>' . PHP_EOL;
}
}
$main .= '<div class="pts_phoromatic_info_box_area">
<ul>
<li><h1>Deactivated Test Schedules</h1></li>';
$stmt = phoromatic_server::$db->prepare('SELECT Title, ScheduleID, Description, RunTargetSystems, RunTargetGroups, RunAt, ActiveOn FROM phoromatic_schedules WHERE AccountID = :account_id AND State < 1 ORDER BY Title ASC');
$stmt->bindValue(':account_id', $_SESSION['AccountID']);
$result = $stmt->execute();
$row = $result->fetchArray();
if ($row == false) {
$main .= '<li class="light" style="text-align: center;">No Schedules Found</li>';
} else {
do {
$stmt_tests = phoromatic_server::$db->prepare('SELECT COUNT(*) AS TestCount FROM phoromatic_schedules_tests WHERE AccountID = :account_id AND ScheduleID = :schedule_id ORDER BY TestProfile ASC');
$stmt_tests->bindValue(':account_id', $_SESSION['AccountID']);
$stmt_tests->bindValue(':schedule_id', $row['ScheduleID']);
$result_tests = $stmt_tests->execute();
$row_tests = $result_tests->fetchArray();
$test_count = !empty($row_tests) ? $row_tests['TestCount'] : 0;
$group_count = empty($row['RunTargetGroups']) ? 0 : count(explode(',', $row['RunTargetGroups']));
$main .= '<a href="?schedules/' . $row['ScheduleID'] . '"><li>' . $row['Title'] . '<br /><table><tr><td>' . pts_strings::plural_handler(count(phoromatic_server::systems_associated_with_schedule($_SESSION['AccountID'], $row['ScheduleID'])), 'System') . '</td><td>' . pts_strings::plural_handler($group_count, 'Group') . '</td><td>' . pts_strings::plural_handler($test_count, 'Test') . '</td><td>' . pts_strings::plural_handler(phoromatic_results_for_schedule($row['ScheduleID']), 'Result') . ' Total</td><td>' . pts_strings::plural_handler(phoromatic_results_for_schedule($row['ScheduleID'], 'TODAY'), 'Result') . ' Today</td><td><strong>' . phoromatic_schedule_activeon_string($row['ActiveOn'], $row['RunAt']) . '</strong></td></tr></table></li></a>';
} while ($row = $result->fetchArray());
}
$main .= '</ul>
</div>';
echo '<div id="pts_phoromatic_main_area">' . $main . '</div>';
echo phoromatic_webui_footer();
}
示例7: render_page_process
public static function render_page_process($PATH)
{
if ($_SESSION['AdminLevel'] != -40) {
header('Location: /?main');
}
if (isset($PATH[0]) && isset($PATH[1])) {
switch ($PATH[0]) {
case 'delete':
if ($PATH[1] == 'result') {
$pprids = explode(',', $PATH[2]);
foreach ($pprids as $pprid) {
$stmt = phoromatic_server::$db->prepare('DELETE FROM phoromatic_results WHERE PPRID = :pprid');
$stmt->bindValue(':pprid', $pprid);
$result = $stmt->execute();
}
/* $stmt = phoromatic_server::$db->prepare('DELETE FROM phoromatic_results_results WHERE AccountID = :account_id AND UploadID = :upload_id');
$stmt->bindValue(':account_id', $PATH[2]);
$stmt->bindValue(':upload_id', $PATH[3]);
$result = $stmt->execute();
$stmt = phoromatic_server::$db->prepare('DELETE FROM phoromatic_results_systems WHERE AccountID = :account_id AND UploadID = :upload_id');
$stmt->bindValue(':account_id', $PATH[2]);
$stmt->bindValue(':upload_id', $PATH[3]);
$result = $stmt->execute();
$result_dir = phoromatic_server::phoromatic_account_result_path($PATH[2], $PATH[3]);
if(is_dir($result_dir))
{
pts_file_io::delete($result_dir, null, true);
}
*/
} else {
if ($PATH[1] == 'schedule') {
$stmt = phoromatic_server::$db->prepare('DELETE FROM phoromatic_schedules WHERE AccountID = :account_id AND ScheduleID = :schedule_id');
$stmt->bindValue(':account_id', $PATH[2]);
$stmt->bindValue(':schedule_id', $PATH[3]);
$result = $stmt->execute();
} else {
if ($PATH[1] == 'system') {
$stmt = phoromatic_server::$db->prepare('DELETE FROM phoromatic_systems WHERE AccountID = :account_id AND SystemID = :system_id');
$stmt->bindValue(':account_id', $PATH[2]);
$stmt->bindValue(':system_id', $PATH[3]);
$result = $stmt->execute();
} else {
if ($PATH[1] == 'ticket') {
$stmt = phoromatic_server::$db->prepare('DELETE FROM phoromatic_benchmark_tickets WHERE AccountID = :account_id AND TicketID = :ticket_id');
$stmt->bindValue(':account_id', $PATH[2]);
$stmt->bindValue(':ticket_id', $PATH[3]);
$result = $stmt->execute();
} else {
if ($PATH[1] == 'trigger') {
$stmt = phoromatic_server::$db->prepare('DELETE FROM phoromatic_schedules_triggers WHERE AccountID = :account_id AND ScheduleID = :schedule_id AND Trigger = :trigger');
$stmt->bindValue(':account_id', $PATH[2]);
$stmt->bindValue(':schedule_id', $PATH[3]);
$stmt->bindValue(':trigger', $PATH[4]);
$result = $stmt->execute();
var_dump($result);
}
}
}
}
}
break;
}
}
$main = '<h1>Phoromatic Server Data</h1>';
$main .= '<h1>Test Results</h1>';
$main .= '<a onclick="javascript:phoromatic_generate_comparison(\'public.php?ut=\');"><div id="phoromatic_result_compare_info_box" style="background: #1976d2; border: 1px solid #000;"></div></a> <a onclick="javascript:phoromatic_delete_results(\'?admin_data/delete/result/\'); return false;"><div id="phoromatic_result_delete_box" style="background: #1976d2; border: 1px solid #000;">Delete Selected Results</div></a>';
$main .= '<div class="pts_phoromatic_info_box_area">';
$main .= '<div style="height: 500px;"><ul style="max-height: 100%;"><li><h1>Recent Test Results</h1></li>';
$stmt = phoromatic_server::$db->prepare('SELECT Title, SystemID, ScheduleID, PPRID, UploadTime, TimesViewed, AccountID, UploadID FROM phoromatic_results ORDER BY UploadTime DESC');
$test_result_result = $stmt->execute();
$results = 0;
while ($test_result_row = $test_result_result->fetchArray()) {
$main .= '<a onclick=""><li id="result_select_' . $test_result_row['PPRID'] . '"><input type="checkbox" id="result_compare_checkbox_' . $test_result_row['PPRID'] . '" onclick="javascript:phoromatic_checkbox_toggle_result_comparison(\'' . $test_result_row['PPRID'] . '\');" onchange="return false;"></input> <span onclick="javascript:phoromatic_window_redirect(\'public.php?ut=' . $test_result_row['PPRID'] . '\');">' . $test_result_row['Title'] . '</span><br /><table><tr><td>' . phoromatic_system_id_to_name($test_result_row['SystemID'], $test_result_row['AccountID']) . '</td><td>' . phoromatic_user_friendly_timedate($test_result_row['UploadTime']) . '</td><td>' . $test_result_row['TimesViewed'] . ' Times Viewed</td></table></li></a>';
$results++;
}
if ($results == 0) {
$main .= '<li class="light" style="text-align: center;">No Results Found</li>';
}
$main .= '</ul></div>';
$main .= '</div>';
$main .= '<hr /><h1>Schedules</h1>';
$main .= '<h2>Active Test Schedules</h2>';
$main .= '<div class="pts_phoromatic_info_box_area">
<ul>
<li><h1>Active Test Schedules</h1></li>';
$stmt = phoromatic_server::$db->prepare('SELECT Title, ScheduleID, Description, RunTargetSystems, RunTargetGroups, RunAt, ActiveOn, AccountID FROM phoromatic_schedules WHERE State >= 1 ORDER BY Title ASC');
$result = $stmt->execute();
$row = $result->fetchArray();
if ($row == false) {
$main .= '<li class="light" style="text-align: center;">No Schedules Found</li>';
} else {
do {
$main .= '<a onclick=""><li>' . $row['Title'] . '<br /><table><tr><td>' . phoromatic_account_id_to_group_name($row['AccountID']) . '</td><td>' . pts_strings::plural_handler(count(phoromatic_server::systems_associated_with_schedule($row['AccountID'], $row['ScheduleID'])), 'System') . '</td><td><strong>' . phoromatic_schedule_activeon_string($row['ActiveOn'], $row['RunAt']) . '</strong></td><td><a onclick="return confirm(\'Permanently remove this schedule?\');" href="/?admin_data/delete/schedule/' . $row['AccountID'] . '/' . $row['ScheduleID'] . '">Permanently Remove</a></td></tr></table></li></a>';
} while ($row = $result->fetchArray());
}
$main .= '</ul></div>';
$main .= '<hr /><h2>Inactive Test Schedules</h2>';
$main .= '<div class="pts_phoromatic_info_box_area">
<ul>
//.........这里部分代码省略.........
示例8: render_page_process
public static function render_page_process($PATH)
{
echo phoromatic_webui_header_logged_in();
$main = null;
if (isset($PATH[0]) && !empty($PATH[0])) {
ini_set('memory_limit', '4G');
if (isset($_POST['view_results_from_past']) && is_numeric($_POST['view_results_from_past'])) {
$cut_duration = $_POST['view_results_from_past'];
} else {
$cut_duration = 21;
}
$stmt = phoromatic_server::$db->prepare('SELECT UploadID, UploadTime, ScheduleID, Trigger, SystemID FROM phoromatic_results WHERE AccountID = :account_id AND ScheduleID = :schedule_id ORDER BY UploadTime DESC');
$stmt->bindValue(':account_id', $_SESSION['AccountID']);
$stmt->bindValue(':schedule_id', $PATH[0]);
$test_result_result = $stmt->execute();
$cutoff_time = is_numeric($cut_duration) ? strtotime('today -' . $cut_duration . ' days') : false;
$show_only_latest_systems = array();
$result_files = array();
while ($test_result_result && ($row = $test_result_result->fetchArray())) {
if ($cutoff_time !== false && strtotime($row['UploadTime']) < $cutoff_time) {
break;
}
$composite_xml = phoromatic_server::phoromatic_account_result_path($_SESSION['AccountID'], $row['UploadID']) . 'composite.xml';
if (!is_file($composite_xml)) {
continue;
}
// Add to result file
$system_name = phoromatic_server::system_id_to_name($row['SystemID']) . ': ' . $row['Trigger'];
array_push($result_files, new pts_result_merge_select($composite_xml, null, $system_name));
if (!isset($show_only_latest_systems[$_SESSION['AccountID'] . $row['SystemID']])) {
$show_only_latest_systems[$_SESSION['AccountID'] . $row['SystemID']] = new pts_result_merge_select($composite_xml, null, $system_name);
}
}
if (count($result_files) < 21) {
$show_only_latest_systems = null;
}
$attributes = array('new_result_file_title' => phoromatic_schedule_id_to_name($row['ScheduleID']));
$result_file = new pts_result_file(null, true);
$result_file->merge($result_files, $attributes);
$extra_attributes = array('reverse_result_buffer' => true, 'force_simple_keys' => true, 'force_line_graph_compact' => true, 'force_tracking_line_graph' => true);
if (isset($_POST['normalize_results']) && $_POST['normalize_results']) {
$extra_attributes['normalize_result_buffer'] = true;
}
$main .= '<h1>' . $result_file->get_title() . '</h1>';
if ($result_file->get_system_count() == 1 || ($intent = pts_result_file_analyzer::analyze_result_file_intent($result_file, $intent, true))) {
$table = new pts_ResultFileCompactSystemsTable($result_file, $intent);
} else {
$table = new pts_ResultFileSystemsTable($result_file);
}
$main .= '<p style="text-align: center; overflow: auto;" class="result_object">' . pts_render::render_graph_inline_embed($table, $result_file, $extra_attributes) . '</p>';
$table = new pts_ResultFileTable($result_file, $intent);
$main .= '<p style="text-align: center; overflow: auto;" class="result_object">' . pts_render::render_graph_inline_embed($table, $result_file, $extra_attributes) . '</p>';
$main .= '<div id="pts_results_area">';
foreach ($result_file->get_result_objects(isset($_POST['show_only_changed_results']) ? 'ONLY_CHANGED_RESULTS' : -1) as $i => $result_object) {
$main .= '<h2><a name="r-' . $i . '"></a><a name="' . $result_object->get_comparison_hash(true, false) . '"></a>' . $result_object->test_profile->get_title() . '</h2>';
$main .= '<p class="result_object">';
$main .= pts_render::render_graph_inline_embed($result_object, $result_file, $extra_attributes);
$main .= '</p>';
}
$main .= '</div>';
$right = '<form action="' . $_SERVER['REQUEST_URI'] . '" name="update_result_view" method="post">';
$right .= '<p>Compare results for the past: ';
$right .= '<select name="view_results_from_past" id="view_results_from_past">';
$oldest_upload_time = strtotime(phoromatic_oldest_result_for_schedule($PATH[0]));
$opts = array('Two Weeks' => 14, 'Three Weeks' => 21, 'One Month' => 30, 'Two Months' => 60, 'Quarter' => 90, 'Six Months' => 180, 'Year' => 365);
foreach ($opts as $str_name => $time_offset) {
if ($oldest_upload_time > time() - 86400 * $time_offset) {
break;
}
$right .= '<option value="' . $time_offset . '">' . $str_name . '</option>';
}
$right .= '<option value="all">All Results</option>';
$right .= '</select>';
$right .= '</p>';
$right .= '<p><input type="checkbox" name="normalize_results" value="1" ' . (isset($_POST['normalize_results']) ? 'checked="checked" ' : null) . '/> Normalize Results?</p>';
$right .= '<p><input type="submit" value="Refresh Results"></p></form>';
} else {
if (empty($PATH)) {
$main .= '<h1>Phoromatic Tracker</h1>
<p>The Phoromatic Tracker will show result schedules that have enough uploaded test results from the associated systems to begin providing concise overviews of performance over time.</p>
<div class="pts_phoromatic_info_box_area">
<ul>
<li><h1>Trackable Results</h1></li>';
$stmt = phoromatic_server::$db->prepare('SELECT Title, ScheduleID, Description, RunTargetSystems, RunTargetGroups, RunAt, ActiveOn, (SELECT COUNT(*) FROM phoromatic_results WHERE ScheduleID = phoromatic_schedules.ScheduleID) AS UploadedResultCount FROM phoromatic_schedules WHERE AccountID = :account_id AND State >= 1 ORDER BY Title ASC');
$stmt->bindValue(':account_id', $_SESSION['AccountID']);
$result = $stmt->execute();
$row = $result->fetchArray();
if ($row == false) {
$main .= '<li class="light" style="text-align: center;">No Relevant Schedules Found</li>';
} else {
do {
if ($row['UploadedResultCount'] > ($row['RunTargetSystems'] + $row['RunTargetGroups'] + 1) * 7) {
$stmt_tests = phoromatic_server::$db->prepare('SELECT COUNT(*) AS TestCount FROM phoromatic_schedules_tests WHERE AccountID = :account_id AND ScheduleID = :schedule_id ORDER BY TestProfile ASC');
$stmt_tests->bindValue(':account_id', $_SESSION['AccountID']);
$stmt_tests->bindValue(':schedule_id', $row['ScheduleID']);
$result_tests = $stmt_tests->execute();
$row_tests = $result_tests->fetchArray();
$test_count = !empty($row_tests) ? $row_tests['TestCount'] : 0;
$group_count = empty($row['RunTargetGroups']) ? 0 : count(explode(',', $row['RunTargetGroups']));
$main .= '<a href="?tracker/' . $row['ScheduleID'] . '"><li>' . $row['Title'] . '<br /><table><tr><td>' . pts_strings::plural_handler(count(phoromatic_server::systems_associated_with_schedule($_SESSION['AccountID'], $row['ScheduleID'])), 'System') . '</td><td>' . pts_strings::plural_handler($group_count, 'Group') . '</td><td>' . pts_strings::plural_handler($test_count, 'Test') . '</td><td>' . pts_strings::plural_handler($row['UploadedResultCount'], 'Result') . ' Total</td></tr></table></li></a>';
//.........这里部分代码省略.........
示例9: render_page_process
//.........这里部分代码省略.........
$main .= '<p>' . $sensor . '</p>';
}
$main .= '</div>';
}
$main .= '<p><em><strong>Last Updated:</strong>' . date('d F H:i', filemtime(phoromatic_server::phoromatic_account_system_path($_SESSION['AccountID'], $row['SystemID']) . 'sensors.json')) . ' <strong>System Uptime:</strong> ' . $sensor_file['uptime'] . ' Minutes</em></p>';
}
}
}
$log_file = phoromatic_server::phoromatic_account_system_path($_SESSION['AccountID'], $row['SystemID']) . 'phoronix-test-suite.log';
if (is_file($log_file)) {
$main .= '<hr /><h2>Phoronix Test Suite Client Log</h2>';
$main .= '<p><textarea style="width: 60%; height: 200px;">' . file_get_contents($log_file) . '</textarea></p>';
$main .= '<p><em><strong>Last Updated:</strong>' . date('d F H:i', filemtime($log_file)) . '</em></p>';
}
$groups = explode('#', $row['Groups']);
foreach ($groups as $i => $group) {
if (empty($group)) {
unset($groups[$i]);
}
}
$schedules = phoromatic_server::schedules_that_run_on_system($_SESSION['AccountID'], $row['SystemID']);
if (!empty($groups) || !empty($schedules)) {
$main .= '<hr /><h2>Schedules</h2>';
if (!empty($groups)) {
$group_msg = 'This system belongs to the following groups: <strong>' . implode(', ', $groups) . '</strong>.';
} else {
$group_msg = 'This system does not currently belong to any groups.';
}
$main .= '<p>' . $group_msg . ' Manage groups via the <a href="?systems">systems page</a>.</p>';
if (!empty($schedules)) {
$main .= '<div class="pts_phoromatic_info_box_area" style="margin: 0 10%;"><ul><li><h1>Schedules Running On This System</h1></li>';
foreach ($schedules as &$row) {
$group_count = empty($row['RunTargetGroups']) ? 0 : count(explode(',', $row['RunTargetGroups']));
$main .= '<a href="?schedules/' . $row['ScheduleID'] . '"><li>' . $row['Title'] . '<br /><table><tr><td>' . pts_strings::plural_handler(count(phoromatic_server::systems_associated_with_schedule($_SESSION['AccountID'], $row['ScheduleID'])), 'System') . '</td><td>' . pts_strings::plural_handler($group_count, 'Group') . '</td><td>' . pts_strings::plural_handler(phoromatic_results_for_schedule($row['ScheduleID']), 'Result') . '</td><td><strong>' . phoromatic_schedule_activeon_string($row['ActiveOn'], $row['RunAt']) . '</strong></td></tr></table></li></a>';
}
$main .= '</ul></div>';
}
}
$stmt = phoromatic_server::$db->prepare('SELECT Title, SystemID, ScheduleID, PPRID, UploadTime FROM phoromatic_results WHERE AccountID = :account_id AND SystemID = :system_id ORDER BY UploadTime DESC');
$stmt->bindValue(':account_id', $_SESSION['AccountID']);
$stmt->bindValue(':system_id', $PATH[0]);
$test_result_result = $stmt->execute();
$test_result_row = $test_result_result->fetchArray();
$results = 0;
if ($test_result_row != false) {
$main .= '<hr /><h2>Test Results</h2>';
$main .= '<div class="pts_phoromatic_info_box_area" style="margin: 0 10%;">';
$main .= '<ul><li><h1>Recent Test Results</h1></li>';
do {
if ($results > 20) {
break;
}
$main .= '<a href="?result/' . $test_result_row['PPRID'] . '"><li>' . $test_result_row['Title'] . '<br /><table><tr><td>' . phoromatic_system_id_to_name($test_result_row['SystemID']) . '</td><td>' . phoromatic_user_friendly_timedate($test_result_row['UploadTime']) . '</td></tr></table></li></a>';
$results++;
} while ($test_result_row = $test_result_result->fetchArray());
}
if ($results > 0) {
$main .= '</ul></div>';
}
// Any System Errors?
$stmt = phoromatic_server::$db->prepare('SELECT ErrorMessage, UploadTime, SystemID, TestIdentifier FROM phoromatic_system_client_errors WHERE AccountID = :account_id AND SystemID = :system_id ORDER BY UploadTime DESC LIMIT 10');
$stmt->bindValue(':account_id', $_SESSION['AccountID']);
$stmt->bindValue(':system_id', $PATH[0]);
$result = $stmt->execute();
$row = $result->fetchArray();
if ($row != false) {
示例10: render_page_process
public static function render_page_process($PATH)
{
$test_version = self::$test_profile->get_app_version();
$test_title = self::$test_profile->get_title() . ($test_version != null ? ' ' . $test_version : null);
echo '<h1>' . $test_title . '</h1>';
echo '<div id="test_main_area">';
echo '<p>' . self::$test_profile->get_description() . '</p>';
echo '<h4 style="margin-top: 60px;">Run This Test</h4>';
echo '<div id="pts_add_test_area">';
$test_settings = array();
$test_options = self::$test_profile->get_test_option_objects();
$identifiers = array();
for ($i = 0; $i < count($test_options); $i++) {
$o = $test_options[$i];
$option_count = $o->option_count();
$test_prefix = 'test_option_';
$option_name = $o->get_name();
if ($option_count == 0) {
$option_value = '<input type="text" id="' . $test_prefix . $o->get_identifier() . '" />';
} else {
$option_value = '<select id="' . $test_prefix . $o->get_identifier() . '">';
for ($j = 0; $j < $option_count; $j++) {
$option_value .= '<option value="' . $o->format_option_value_from_input($o->get_option_value($j)) . '">' . $o->get_option_name($j) . '</option>';
}
$option_value .= '</select>';
}
$identifiers[] = $o->get_identifier();
echo '<input id="' . $test_prefix . $o->get_identifier() . '_title" type="hidden" value="' . $option_name . '" />';
$test_settings[] = array($option_name, $option_value);
}
$test_settings[] = array('<input type="Submit" value="Add Test To Run Queue" onclick="test_add_to_queue(\'' . (isset($test_prefix) ? $test_prefix : "") . '\', \'' . implode(':', $identifiers) . '\', \'' . self::$test_profile->get_identifier() . '\', \'' . base64_encode(json_encode(self::$test_profile->to_json())) . '\'); return false;" />');
echo pts_webui::r2d_array_to_table($test_settings);
echo '</div>';
echo '</div>';
echo '<div id="test_side_area">';
$tabular_info = array(array('Test Profile', self::$test_profile->get_identifier()), array('Maintainer', self::$test_profile->get_maintainer()), array('Test Type', self::$test_profile->get_test_hardware_type()), array('Software Type', self::$test_profile->get_test_software_type()), array('License Type', self::$test_profile->get_license()), array('Test Status', self::$test_profile->get_status()));
$project_url = self::$test_profile->get_project_url();
$project_url = parse_url($project_url);
if ($project_url != null && isset($project_url['host'])) {
$tabular_info[] = array('Project Site', '<a href="' . self::$test_profile->get_project_url() . '" target="_blank">' . $project_url['host'] . '</a>');
}
echo '<h4>Test Profile Information</h4>';
echo pts_webui::r2d_array_to_table($tabular_info);
$tabular_info = array();
if (self::$test_profile->get_estimated_run_time() > 1) {
$tabular_info[] = array('Estimated Test Run-Time', pts_strings::plural_handler(ceil(self::$test_profile->get_estimated_run_time() / 60), 'Minute'));
}
$download_size = self::$test_profile->get_download_size();
if (!empty($download_size)) {
$tabular_info[] = array('Download Size', $download_size . ' MB');
}
$environment_size = self::$test_profile->get_environment_size();
if (!empty($environment_size)) {
$tabular_info[] = array('Environment Size', $environment_size . ' MB');
}
if (self::$test_profile->test_installation != false) {
$last_run = self::$test_profile->test_installation->get_last_run_date();
$last_run = $last_run == '0000-00-00' ? 'Never' : date('j F Y', strtotime($last_run));
$avg_time = self::$test_profile->test_installation->get_average_run_time();
$avg_time = !empty($avg_time) ? pts_strings::format_time($avg_time, 'SECONDS') : null;
$latest_time = self::$test_profile->test_installation->get_latest_run_time();
$latest_time = !empty($latest_time) ? pts_strings::format_time($latest_time, 'SECONDS') : 'N/A';
$tabular_info[] = array('Last Local Run', $last_run);
if ($last_run != 'Never') {
if (self::$test_profile->test_installation->get_run_count() > 1) {
$tabular_info[] = array('Average Local Run-Time', $avg_time);
}
if ($latest_time != null) {
$tabular_info[] = array('Latest Local Run-Time', $latest_time);
}
if (self::$test_profile->test_installation->get_run_count() > 0) {
$tabular_info[] = array('Times Run Locally', self::$test_profile->test_installation->get_run_count());
}
}
}
echo '<h4>Installation Data</h4>';
echo pts_webui::r2d_array_to_table($tabular_info);
$dependencies = self::$test_profile->get_dependency_names();
if (!empty($dependencies) && !empty($dependencies[0])) {
array_unshift($dependencies, 'Test Dependencies');
pts_webui::r1d_array_to_table($dependencies);
}
if (self::$test_profile->test_installation == false) {
$files = pts_test_install_request::read_download_object_list(self::$test_profile);
if (count($files) > 0) {
$download_files = array('Test Files');
foreach ($files as &$file) {
$download_files[] = $file->get_filename() . ' [' . max(0.1, round($file->get_filesize() / 1048576, 1)) . 'MB]';
}
pts_webui::r1d_array_to_table($download_files);
}
}
echo '</div>';
}
示例11: test_install_process
public function test_install_process($test_install_manager)
{
$this->test_install_pos = 0;
$this->test_install_count = $test_install_manager->tests_to_install_count();
echo PHP_EOL;
echo $this->tab . pts_strings::plural_handler($this->test_install_count, 'Test') . ' To Install' . PHP_EOL;
$download_size = 0;
$download_total = 0;
$cache_total = 0;
$cache_size = 0;
$install_size = 0;
foreach ($test_install_manager->get_test_run_requests() as $test_run_request) {
$install_size += $test_run_request->test_profile->get_environment_size();
foreach ($test_run_request->get_download_objects() as $test_file_download) {
switch ($test_file_download->get_download_location_type()) {
case 'IN_DESTINATION_DIR':
// We don't really care about these files here since they are good to go
break;
case 'LOCAL_DOWNLOAD_CACHE':
case 'REMOTE_DOWNLOAD_CACHE':
case 'LOOKASIDE_DOWNLOAD_CACHE':
$cache_size += $test_file_download->get_filesize();
$cache_total++;
break;
default:
$download_size += $test_file_download->get_filesize();
$download_total++;
break;
}
}
}
if ($download_total > 0) {
echo $this->tab . $this->tab . pts_strings::plural_handler($download_total, 'File') . ' To Download';
if ($download_size > 0) {
echo ' [' . self::bytes_to_download_size($download_size) . 'MB]';
}
echo PHP_EOL;
}
if ($cache_total > 0) {
echo $this->tab . $this->tab . pts_strings::plural_handler($cache_total, 'File') . ' In Cache';
if ($cache_size > 0) {
echo ' [' . self::bytes_to_download_size($cache_size) . 'MB]';
}
echo PHP_EOL;
}
if ($install_size > 0) {
echo $this->tab . $this->tab . ceil($install_size) . 'MB Of Disk Space Is Needed' . PHP_EOL;
}
echo PHP_EOL;
}