예제 #1
0
 function select()
 {
     $response = $this->response;
     $form = $response->get_form($this->actions_name, 'select');
     $response->form = $form;
     require_once $this->webdir . "/plugins/cloud/class/clouduser.class.php";
     $cloud_user = new clouduser();
     require_once $this->webdir . "/plugins/cloud/class/cloudusergroup.class.php";
     $cloud_group = new cloudusergroup();
     require_once $this->webdir . "/plugins/cloud/class/cloudrequest.class.php";
     $cloud_request = new cloudrequest();
     $active_state_icon = "/openqrm/base/img/active.png";
     $inactive_state_icon = "/openqrm/base/img/idle.png";
     $a = $this->response->html->a();
     $a->label = $this->lang['cloud_request_clean'];
     $a->css = 'add';
     $a->handler = 'onclick="wait();"';
     $a->href = $this->response->get_url($this->actions_name, "clean");
     $clean_up_button = $a->get_string();
     $head['cr_status']['title'] = ' ';
     $head['cr_status']['sortable'] = false;
     $head['cr_id']['title'] = $this->lang['cloud_request_id'];
     $head['cr_id']['hidden'] = true;
     $head['cr_cu_id']['title'] = $this->lang['cloud_request_user'];
     $head['cr_cu_id']['hidden'] = true;
     $head['cr_request_time']['title'] = $this->lang['cloud_request_time'];
     $head['cr_request_time']['hidden'] = true;
     $head['cr_start']['title'] = $this->lang['cloud_request_start_time'];
     $head['cr_start']['hidden'] = true;
     $head['cr_stop']['title'] = $this->lang['cloud_request_stop_time'];
     $head['cr_stop']['hidden'] = true;
     $head['cr_appliance_id']['title'] = $this->lang['cloud_request_app_id'];
     $head['cr_appliance_id']['hidden'] = true;
     $head['info']['title'] = ' ';
     $head['info']['sortable'] = false;
     $head['cr_details']['title'] = ' ';
     $head['cr_details']['sortable'] = false;
     $table = $response->html->tablebuilder('cloud_request_table', $response->get_array($this->actions_name, 'select'));
     $table->css = 'htmlobject_table';
     $table->id = 'cloud_requests';
     $table->head = $head;
     $table->sort = 'cr_id';
     $table->order = 'DESC';
     $table->sort_link = false;
     $table->autosort = false;
     $table->limit = 10;
     $table->max = $cloud_request->get_count();
     $table->identifier = 'cr_id';
     $table->identifier_name = $this->identifier_name;
     $table->actions = array('approve', 'cancel', 'delete', 'deny', 'deprovision');
     $table->actions_name = $this->actions_name;
     $table->init();
     $cloud_request_array = $cloud_request->display_overview(0, 10000, $table->sort, $table->order);
     $ta = '';
     foreach ($cloud_request_array as $index => $cz) {
         $cloud_request->get_instance_by_id($cz['cr_id']);
         if ($this->response->html->request()->get('requests_filter') === '' || $this->response->html->request()->get('requests_filter') == $cloud_request->status) {
             $cloud_user->get_instance_by_id($cloud_request->cu_id);
             $cr_status = '<span class="pill">' . $cloud_request->getstatus($cloud_request->id) . '</span>';
             // details action
             $a = $this->response->html->a();
             $a->title = $this->lang['cloud_request_details'];
             $a->label = $this->lang['cloud_request_details'];
             $a->handler = 'onclick="javascript:cloudopenPopup(' . $cloud_request->id . '); return false;"';
             $a->css = 'edit_nojs';
             $a->href = $this->response->get_url($this->actions_name, 'details') . "&" . $this->identifier_name . "=" . $cloud_request->id;
             $request_details = $a->get_string();
             // server pause action
             $request_pause = '';
             $appliance_state = '';
             if ($cloud_request->status == 3 && $cloud_request->appliance_id != '') {
                 $appliance = new appliance();
                 $appliance->get_instance_by_id($cloud_request->appliance_id);
                 if ($appliance->state == 'active') {
                     $a = $this->response->html->a();
                     $a->title = $this->lang['cloud_request_pause'];
                     $a->label = $this->lang['cloud_request_pause'];
                     $a->css = 'edit';
                     $a->href = $this->response->get_url($this->actions_name, 'pause') . "&" . $this->identifier_name . "=" . $cloud_request->id;
                     $request_pause = $a->get_string();
                     $appliance_state = $cloud_request->appliance_id . ' - <span class="pill">' . $appliance->state . '</span>';
                 } else {
                     if ($appliance->state == 'stopped') {
                         $a = $this->response->html->a();
                         $a->title = $this->lang['cloud_request_unpause'];
                         $a->label = $this->lang['cloud_request_unpause'];
                         $a->css = 'edit';
                         $a->href = $this->response->get_url($this->actions_name, 'unpause') . "&" . $this->identifier_name . "=" . $cloud_request->id;
                         $request_pause = $a->get_string();
                         $appliance_state = $cloud_request->appliance_id . ' - <span class="pill">' . $appliance->state . '</span>';
                     }
                 }
             }
             $request_details = $request_pause . $request_details;
             $info = '<b>' . $this->lang['cloud_request_id'] . '</b>: ' . $cloud_request->id . '<br>';
             $info .= '<b>' . $this->lang['cloud_request_user'] . '</b>: ' . $cloud_user->name . '<br>';
             $info .= '<b>' . $this->lang['cloud_request_time'] . '</b>: ' . date("Y-m-d H:i:s", $cloud_request->request_time) . '<br>';
             $info .= '<b>' . $this->lang['cloud_request_start_time'] . '</b>: ' . date("Y-m-d H:i:s", $cloud_request->start) . '<br>';
             $info .= '<b>' . $this->lang['cloud_request_stop_time'] . '</b>: ' . date("Y-m-d H:i:s", $cloud_request->stop) . '<br>';
             $info .= '<b>' . $this->lang['cloud_request_app_id'] . '</b>: ' . $appliance_state . '<br>';
             $ta[] = array('cr_status' => $cr_status, 'cr_id' => $cloud_request->id, 'cr_cu_id' => $cloud_user->name, 'cr_request_time' => date("Y-m-d H:i:s", $cloud_request->request_time), 'cr_start' => date("Y-m-d H:i:s", $cloud_request->start), 'cr_stop' => date("Y-m-d H:i:s", $cloud_request->stop), 'info' => $info, 'cr_appliance_id' => $appliance_state, 'cr_details' => $request_details);
         }
     }
     // Filter
     $list = $cloud_request->getstates();
     $filter = array();
     $filter[] = array('', '');
     foreach ($list as $l) {
         $filter[] = array($l[0], $l[1]);
     }
     $select = $this->response->html->select();
     $select->add($filter, array(0, 1));
     $select->name = 'requests_filter';
     $select->handler = 'onchange="wait();this.form.submit();return false;"';
     $select->selected = array($this->response->html->request()->get('requests_filter'));
     $box = $this->response->html->box();
     $box->add($select);
     $box->id = 'requests_filter';
     $box->css = 'htmlobject_box';
     $box->label = $this->lang['cloud_request_state_filter'];
     $table->body = $ta;
     $table->max = count($ta);
     $response->clean = $clean_up_button;
     $response->table = $table;
     $response->filter = $box;
     return $response;
 }