/** * 存储完整意见--$comments */ public static function insertComment($array, $examinee_id, $manager_id) { try { $manager = new TxManager(); $transaction = $manager->get(); $interview = Interview::findFirst(array('manager_id=?0 and examinee_id=?1', 'bind' => array(0 => $manager_id, 1 => $examinee_id))); $interview->setTransaction($transaction); $advantage = array('advantage1' => $array['advantage1'], 'advantage2' => $array['advantage2'], 'advantage3' => $array['advantage3'], 'advantage4' => $array['advantage4'], 'advantage5' => $array['advantage5']); $interview->advantage = json_encode($advantage, JSON_UNESCAPED_UNICODE); $disadvantage = array('disadvantage1' => $array['disadvantage1'], 'disadvantage2' => $array['disadvantage2'], 'disadvantage3' => $array['disadvantage3']); $interview->disadvantage = json_encode($disadvantage, JSON_UNESCAPED_UNICODE); $interview->remark = $array['remark']; $examinee = Examinee::findFirst($examinee_id); $examinee->setTransaction($transaction); $examinee->state = 5; if ($interview->save() == false || $examinee->save() == false) { $transaction->rollback("数据插入失败"); } $transaction->commit(); return true; } catch (TxFailed $e) { throw new Exception($e->getMessage()); } }
/** * Execute the console command. * * @todo DON'T UPDATE LOCATIONS IF THEY'RE ALREADY SET * * @return mixed */ public function fire() { $Bodmin = Area::firstOrCreate(['name' => 'Bodmin']); // Ensure current locations are saved. foreach (array_unique(Interview::where('location_id', '=', '')->lists('location')) as $location) { if (strlen($location) === 0) { continue; // don't want to clobber real locations } $L = Location::firstOrNew(['name' => $location]); if ($L->exists) { continue; } $L->area()->associate($Bodmin); $L->save(); } Interview::all()->each(function ($Interview) { $Location = Location::where('name', '=', $Interview->location); if ($Location->count() <= 0) { \Log::error("This location not found despite having just been confirmed a few lines above", $Interview->toArray()); return; } $Interview->location_id = $Location->first()->id; $Interview->save(); }); }
/** * Campsite interview_form block plugin * * Type: block * Name: interview_form * Purpose: Provides a form for an interview * * @param string * $p_params * @param string * $p_smarty * @param string * $p_content * * @return * */ function smarty_block_interview_form($p_params, $p_content, &$p_smarty, &$p_repeat) { require_once $p_smarty->_get_plugin_filepath('shared','escape_special_chars'); // gets the context variable $campsite = $p_smarty->get_template_vars('gimme'); $html = ''; if (0) { $Interview = new Interview($campsite->interview->identifier); return $Interview->getForm('/en/first/interview/', '', true); } if (isset($p_params['template'])) { $template = new Template($p_params['template']); $tpl_id = $template->getTemplateId(); } if (!isset($p_params['submit_button'])) { $p_params['submit_button'] = 'Submit'; } if (!isset($p_params['html_code']) || empty($p_params['html_code'])) { $p_params['html_code'] = ''; } if (isset($p_content)) { $html = "<form name=\"interview\" action=\"{$campsite->url->uri_path}\" method=\"post\" enctype=\"multipart/form-data\">\n"; $html .= "<input type=\"hidden\" name=\"_qf__interview\">\n"; $html .= "<input type=\"hidden\" name=\"f_interview\" value=\"edit\">\n"; if ($tpl_id) { $html .= "<input type=\"hidden\" name=\"".TEMPLATE_ID."\" value=\"$tpl_id\" />\n"; } if ($campsite->interview->identifier) { $html .= "<input type=\"hidden\" name=\"f_interview_id\" value=\"{$campsite->interview->identifier}\" />\n"; } $html .= $p_content; $html .= "<input type=\"submit\" name=\"f_interview_submit\" value=\"" .smarty_function_escape_special_chars($p_params['submit_button']) ."\" ".$p_params['html_code']." />\n</form>\n"; } return $html; } // fn smarty_block_poll_form
/** * Campsite interview_form block plugin * * Type: block * Name: poll_form * Purpose: Provides a form for an interview * * @param string * $p_params * @param string * $p_smarty * @param string * $p_content * * @return * */ function smarty_block_interview_form($p_params, $p_content, &$p_smarty, &$p_repeat) { require_once $p_smarty->_get_plugin_filepath('shared','escape_special_chars'); // gets the context variable $camp = $p_smarty->get_template_vars('gimme'); $html = ''; if (isset($p_content)) { require_once $p_smarty->_get_plugin_filepath('function', 'urlparameters'); require_once $p_smarty->_get_plugin_filepath('function', 'uripath'); parse_str(smarty_function_urlparameters($p_params, &$p_smarty), $urlparameters); $uripath = smarty_function_uripath($p_params, &$p_smarty); $Interview = new Interview($camp->interview->identifier); $html = $Interview->getForm($uripath, $urlparameters, true); } return $html; } // fn smarty_block_poll_form
/** * get interview questions and answers when possible * @param int $wikiId wiki id * @param bool $answeredOnly get only answered questions * @param bool $asArray return array of arrays instead of objects */ public function getInterviewQuestions($wikiId, $answeredOnly = false, $asArray = false) { $interview = new Interview($wikiId); $questions = array(); $answers = $this->parseInterviewAnswers(); $index = 0; $interviewQuestions = $interview->getQuestions(); $questionsNum = count($interviewQuestions); foreach ($interviewQuestions as $question) { $index++; $question->setCaption(wfMsg('userprofilepage-question-caption', $index, $questionsNum)); if (isset($answers[$question->getId()])) { $question->setAnswerBody($answers[$question->getId()]); } if ($answeredOnly && $question->hasAnswer()) { $questions[] = $asArray ? $question->toArray() : $question; } else { if (!$answeredOnly) { $questions[] = $asArray ? $question->toArray() : $question; } } } return $questions; }
/** * Store a newly created resource in storage. * * Interviews are submitted as sets of tags and responses to questionnaires. * * @return Response */ public function store() { $v = Validator::make(Request::all(), ['type' => 'required|string', 'questionSet' => 'required|string', 'recordedAt' => 'required', 'questions' => 'array', 'taggable' => 'array', 'location' => 'required|string', 'area' => 'required|string', 'houseno' => 'string']); if ($v->fails()) { return Response::json(['errors' => $v->errors()], 400); } $Date = Carbon::createFromTimeStamp(Input::get('recordedAt')); $interview = Interview::firstOrNew(['date' => $Date, 'interviewer_id' => Auth::user()->id]); $Questionnaire = Questionnaire::where('name', '=', Input::get('questionSet'))->first(); // important to fail here, you shouldn't be able to submit an interview for a questionnaire that doesn't exist if (!$Questionnaire) { return Response::json(['message' => 'questionnaire "' . Input::get('questionSet') . '" does not exist'], 400); } $interview->questionnaire_id = $Questionnaire->id; $interview->type = Input::get('type'); // similarly, area has to exist already $area = Area::where(['name' => Input::get('area')])->first(); if (!$area) { return Response::json(['message' => 'area "' . Input::get('area') . '" does not exist'], 400); } // although we can allow for dynamically adding new locations as they come in. $location = Location::firstOrCreate(['name' => Input::get('location'), 'area_id' => $area->id]); $interview->location_id = $location->id; if (Input::has('houseno')) { $interview->house_number = Input::get('houseno'); } $interview->save(); if (Input::has('questions') && $interview->type === 'interview') { foreach (Input::get('questions') as $response) { InterviewResponse::create(['question' => $response['question'], 'answer' => $response['answer'], 'interview_id' => $interview->id]); } } if (Input::has('taggable') && $interview->type === 'interview') { foreach (Input::get('taggable') as $list) { if (isset($list['id'])) { $this->saveTagsToQuestionnaire($list); } $TagList = new TagList(); $TagList->name = $list['name']; $interview->tagLists()->save($TagList); foreach ($list['tagged'] as $tag) { $TagList->tags()->save(Tag::create(['name' => $tag, 'tag_list_id' => $TagList->id])); } } } $interview->push(); return Response::json(Interview::with('responses')->find($interview->id), 200); }
/** * Creates the list of objects. Sets the parameter $p_hasNextElements to * true if this list is limited and elements still exist in the original * list (from which this was truncated) after the last element of this * list. * * @param int $p_start * @param int $p_limit * @param bool $p_hasNextElements * @return array */ protected function CreateList($p_start = 0, $p_limit = 0, array $p_parameters, &$p_count) { if (!defined('PLUGIN_INTERVIEW_ADMIN_MODE')) { $operator = new Operator('is', 'integer'); $context = CampTemplate::singleton()->context(); if ($context->language->defined) { $comparisonOperation = new ComparisonOperation('language_id', $operator, $context->language->number); $this->m_constraints[] = $comparisonOperation; } } $interviewsList = Interview::GetList($this->m_constraints, $this->m_item, $this->m_order, $p_start, $p_limit, $p_count); $metaInterviewsList = array(); foreach ($interviewsList as $interview) { $metaInterviewsList[] = new MetaInterview($interview->getId()); } return $metaInterviewsList; }
public function testDeleteWithCallback() { $this->assertNotNull(InterviewTest::$interviewId); Interview::delete(InterviewTest::$interviewId, array()); }
/** * 取消面询分配 */ public static function delallocExaminees($data, $interviewer_id) { try { $manager = new TxManager(); $transaction = $manager->get(); foreach ($data as $value) { $interview = Interview::findFirst(array('examinee_id = ?1 AND manager_id = ?2', 'bind' => array(1 => $value, 2 => $interviewer_id))); if (!isset($interview->examinee_id)) { continue; } $interview->setTransaction($transaction); if ($interview->delete() == false) { $transaction->rollback("数据删除失败"); } } $transaction->commit(); return true; } catch (TxFailed $e) { throw new Exception($e->getMessage()); } }
<FORM name="selector" method="get"> <TABLE CELLSPACING="0" CELLPADDING="0" class="table_actions"> <TR> <TD> <TABLE cellpadding="0" cellspacing="0"> <TR> <TD ALIGN="left"> <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="3" > <TR> <TD><?php putGS('Language'); ?>:</TD> <TD valign="middle"> <SELECT NAME="f_language_id" class="input_select" onchange="this.form.submit()"> <option value="0"><?php putGS("All"); ?></option> <?php foreach (Interview::GetCampLanguagesList() as $k => $v) { echo '<OPTION value="'.$k.'"' ; if ($k == $f_language_id) { echo " selected"; } echo '>'.htmlspecialchars($v).'</option>'; } ?> </SELECT> </TD> </TR> </TABLE> </TD> <TD ALIGN="left"> <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="3" > <TR> <TD><?php putGS('Status'); ?>:</TD>
/** * @depends testCreateWithQuestionAndInterviewName */ public function testCreateWithCallback() { $param = ["mail" => "*****@*****.**", "alert" => false, "questions" => [["content" => "question 1", "readingTime" => 60, "answerTime" => 60, "number" => 1]], "lang" => "en", "deadline" => intval((microtime(true) + ApplicantTest::$oneMonth) * 1000), "callback" => "http://mycustomeurl.com/done"]; $res = Applicant::create($param); $this->assertEquals("*****@*****.**", $res->mail); $this->assertFalse($res->deleted); $this->assertCount(1, $res->questions); $this->assertEquals("http://mycustomeurl.com/done", $res->callback); Interview::delete($res->interview, array("withApplicant" => true)); $app = Applicant::findOne($res->id); $this->assertTrue($app->deleted); }
break; case 'interview_move_up_rel': case 'interview_move_down_rel': $f_interviews = Input::Get('f_interviews', 'array'); list(,,$dir,) = explode('_', $f_action); foreach ($f_interviews as $interview_id) { $Interview = new Interview($interview_id); $Interview->positionRelative($dir); } break; case 'interview_move_abs': $f_interviews = Input::Get('f_interviews', 'array'); $f_new_pos = Input::Get('f_new_pos', 'int'); foreach ($f_interviews as $interview_id) { $Interview = new Interview($interview_id); $Interview->positionAbsolute($f_new_pos); } break; } // Need to exit to avoid output of the menue. exit; ?>
public function listexamineeAction() { $this->view->disable(); $manager = $this->session->get('Manager'); if (empty($manager)) { $this->dataReturn(array('error' => '获取用户信息失败,请重新登陆')); return; } $manager_id = $manager->id; $page = $this->request->get('page'); $rows = $this->request->get('rows'); $offset = $rows * ($page - 1); $limit = $rows; $sidx = $this->request->getQuery('sidx', 'string'); $sord = $this->request->getQuery('sord', 'string'); if ($sidx != null) { $sort = $sidx; } else { $sort = 'id'; $sord = 'desc'; } if ($sord != null) { $sort = $sort . ' ' . $sord; } //default get $search_state = $this->request->get('_search'); if ($search_state == 'false') { $result = $this->modelsManager->createBuilder()->columns(array('Examinee.id as id', 'Examinee.number as number', 'Examinee.name as name', 'Examinee.sex as sex', 'Examinee.last_login as last_login', 'Examinee.state as state'))->from('Examinee')->join('Interview', 'Interview.examinee_id = Examinee.id AND Interview.manager_id = ' . $manager_id)->limit($limit, $offset)->orderBy($sort)->getQuery()->execute(); $rtn_array = array(); $examinees = Interview::find(array('manager_id=?1', 'bind' => array(1 => $manager_id))); //获取该项目下答题的总人数 $count = count($examinees); $rtn_array['total'] = ceil($count / $rows); $rtn_array['records'] = $count; $rtn_array['rows'] = array(); foreach ($result as $value) { $rtn_array['rows'][] = $value; } $rtn_array['page'] = $page; $this->dataReturn($rtn_array); return; } else { //处理search情况 $search_field = $this->request->get('searchField'); $search_string = $this->request->get('searchString'); $search_oper = $this->request->get('searchOper'); #分情况讨论 $filed = 'Examinee.' . $search_field; if ($search_oper == 'eq') { if ($search_field == 'name') { $oper = 'LIKE'; $value = "'%{$search_string}%'"; } else { if ($search_field == 'number' || $search_field == 'sex') { $oper = '='; $value = "'{$search_string}'"; } else { if ($search_field == 'exam_state' || $search_field == 'interview_state') { $filed = 'Examinee.state'; if ($search_string == 'true') { $oper = '>='; } else { $oper = '<'; } if ($search_field == 'exam_state') { $value = 1; } else { $value = 4; } } } } } else { if ($search_oper == 'bw' || $search_oper == 'ew') { if ($search_field == 'last_login') { $value = "'{$search_string}'"; } if ($search_oper == 'bw') { $oper = '>='; } else { if ($search_oper == 'ew') { $oper = '<='; } } } else { //add ... } } $result = $this->modelsManager->createBuilder()->columns(array('Examinee.id as id', 'Examinee.number as number', 'Examinee.name as name', 'Examinee.sex as sex', 'Examinee.last_login as last_login', 'Examinee.state as state'))->from('Examinee')->join('Interview', 'Interview.examinee_id = Examinee.id AND Interview.manager_id = ' . $manager_id . " AND {$filed} {$oper} {$value}")->orderBy($sort)->getQuery()->execute(); $rtn_array = array(); $count = count($result); $rtn_array['total'] = ceil($count / $rows); $rtn_array['records'] = $count; $rtn_array['rows'] = array(); foreach ($result as $value) { $rtn_array['rows'][] = $value; } $rtn_array['page'] = $page; $this->dataReturn($rtn_array); return; } }
$f_order = Input::Get('f_order', 'string', 'byorder'); if ($f_status = Input::Get('f_status', 'string')) { $constraints .= "status is $f_status "; } elseif ($is_guest) { $constraints .= "status not draft "; } $parameters = array( 'length' => $f_length, 'order' => "$f_order ASC", 'constraints' => $constraints ); define('ADMIN_INTERVIEW_ID', $f_interview_id); # we need this constant in InterviewItemsList::createList() $Interview = new Interview($f_interview_id); $InterviewItemsList = new InterviewItemsList($f_start, $parameters); $count = $InterviewItemsList->count; $TotalItems = new InterviewItemsList(); $total = $TotalItems->count; $pager = new SimplePager($count, $f_length, "f_start", "index.php?f_order=$f_order&f_interview_id=$f_interview_id&", false); include_once($GLOBALS['g_campsiteDir']."/$ADMIN_DIR/javascript_common.php"); ?> <script type="text/javascript" src="<?php echo $Campsite['WEBSITE_URL']; ?>/javascript/campsite-checkbox.js"></script> <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1" class="action_buttons" style="padding-top: 5px;"> <TR>
public function getdetailAction() { $this->view->disable(); $id = $this->request->getPost('id', 'int'); $project = Project::findFirst($id); if (!isset($project->id)) { $this->dataReturn(array('error' => '该编号下的项目不存在,请返回刷新!')); return; } $ans_array = array(); $ans_array['project_name'] = $project->name; $ans_array['begintime'] = $project->begintime; $ans_array['endtime'] = $project->endtime; //添加绿色通道与正常被试判断 $examinees = Examinee::find(array('project_id=?1 AND type= 0', 'bind' => array(1 => $id))); //获取该项目下答题的总人数 $ans_array['exam_count'] = count($examinees); $examinee_com = 0; $examinee_coms = array(); $examinee_not_coms = array(); foreach ($examinees as $examinee) { if ($examinee->state > 0) { $examinee_com++; $examinee_coms[$examinee_com - 1] = $examinee->id; } else { $examinee_not_coms[] = $examinee->id; } } //答题完成人数 $ans_array['exam_finish'] = $examinee_com; $interview_com = 0; for ($i = 0; $i < $examinee_com; $i++) { $interview = Interview::findFirst(array("examinee_id =:id:", 'bind' => array('id' => $examinee_coms[$i]))); //判定条件 if (!empty($interview->advantage) && !empty($interview->disadvantage) && !empty($interview->remark)) { $interview_com++; } } $ans_array['interview_finish'] = $interview_com; $this->dataReturn(array('success' => $ans_array)); return; }
public function getComments($examinee_id) { $interview = Interview::findFirst(array('examinee_id=?1', 'bind' => array(1 => $examinee_id))); if (!isset($interview->examinee_id)) { throw new Exception($examinee_id . '-专家面询未完成'); } $advantage = json_decode($interview->advantage, true); $disadvantage = json_decode($interview->disadvantage, true); $comments = array('advantage' => $advantage, 'disadvantage' => $disadvantage, 'remark' => $interview->remark); return $comments; }
/** * Gets an issue list based on the given parameters. * * @param array $p_parameters * An array of ComparisonOperation objects * @param string item * An indentifier which assignment should be used (publication/issue/section/article) * @param string $p_order * An array of columns and directions to order by * @param integer $p_start * The record number to start the list * @param integer $p_limit * The offset. How many records from $p_start will be retrieved. * * @return array $issuesList * An array of Issue objects */ public static function GetList($p_parameters, $p_item = null, $p_order = null, $p_start = 0, $p_limit = 0, &$p_count) { global $g_ado_db; if (!is_array($p_parameters)) { return null; } // adodb::selectLimit() interpretes -1 as unlimited if ($p_limit == 0) { $p_limit = -1; } $selectClauseObj = new SQLSelectClause(); // sets the where conditions foreach ($p_parameters as $param) { $comparisonOperation = self::ProcessListParameters($param); if (empty($comparisonOperation)) { continue; } $whereCondition = $comparisonOperation['left'] . ' ' . $comparisonOperation['symbol'] . " '" . $g_ado_db->escape($comparisonOperation['right']) . "' "; $selectClauseObj->addWhere($whereCondition); } // sets the columns to be fetched $tmpInterview = new Interview(); $columnNames = $tmpInterview->getColumnNames(true); foreach ($columnNames as $columnName) { $selectClauseObj->addColumn($columnName); } // sets the main table for the query $mainTblName = $tmpInterview->getDbTableName(); $selectClauseObj->setTable($mainTblName); unset($tmpInterview); if (is_array($p_order)) { $order = self::ProcessListOrder($p_order); // sets the order condition if any foreach ($order as $orderField=>$orderDirection) { $selectClauseObj->addOrderBy($orderField . ' ' . $orderDirection); } } $sqlQuery = $selectClauseObj->buildQuery(); // count all available results $countRes = $g_ado_db->Execute($sqlQuery); $p_count = $countRes->recordCount(); //get tlimited rows $interviewRes = $g_ado_db->SelectLimit($sqlQuery, $p_limit, $p_start); // builds the array of interview objects $interviewsList = array(); while ($interview = $interviewRes->FetchRow()) { $interviewObj = new Interview($interview['interview_id']); if ($interviewObj->exists()) { $interviewsList[] = $interviewObj; } } return $interviewsList; } // fn GetList
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer $id the ID of the model to be loaded * @return Interview the loaded model * @throws CHttpException */ public function loadModel($id) { $model = Interview::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }
<?php // Check permissions if (!$g_user->hasPermission('plugin_interview_admin')) { camp_html_display_error(getGS('You do not have the right to manage interviews.')); exit; } $f_interview_id = Input::Get('f_interview_id', 'int', 0, true); if (!Input::IsValid()) { camp_html_display_error(getGS('Invalid input: $1', Input::GetErrorString()), $_SERVER['REQUEST_URI']); exit; } $Interview = new Interview($f_interview_id); // new usernames may exist foreach(array('guest') as $type) { if ($_REQUEST['f_'.$type.'_user_id'] == '__new__') { require_once($GLOBALS['g_campsiteDir']. "/$ADMIN_DIR/users/users_common.php"); if (User::UserNameExists($_REQUEST['f_'.$type.'_new_user_login']) || Phorum_user::UserNameExists($_REQUEST['f_'.$type.'_new_user_login'])) { $errorMsg = getGS('User name $1 already exists, please choose a different login name.', $_REQUEST['f_'.$type.'_new_user_login']); camp_html_add_msg($errorMsg); $error = true; } } }; if (!$error && $Interview->store()) {
public function listinterviewerAction() { $this->view->disable(); $manager = $this->session->get('Manager'); if (empty($manager)) { $this->dataReturn(array('error' => '获取用户信息失败,请重新登陆')); return; } $project_id = $manager->project_id; $page = $this->request->get('page'); $rows = $this->request->get('rows'); $offset = $rows * ($page - 1); $limit = $rows; $sidx = $this->request->getQuery('sidx', 'string'); $sord = $this->request->getQuery('sord', 'string'); if ($sidx != null) { $sort = $sidx; } else { $sort = 'id'; $sord = 'desc'; } if ($sord != null) { $sort = $sort . ' ' . $sord; } //default get $search_state = $this->request->get('_search'); if ($search_state == 'false') { $result = $this->modelsManager->createBuilder()->columns(array('Manager.id as id', 'Manager.username as username', 'Manager.name as name', 'Manager.password as password', 'Manager.last_login as last_login', 'count(Interview.examinee_id) as count'))->from('Manager')->where('Manager.project_id = ' . $project_id . " AND Manager.role = 'I'")->leftJoin('Interview', "Interview.manager_id = Manager.id")->groupBy('Manager.id')->limit($limit, $offset)->orderBy($sort)->getQuery()->execute(); $result = $result->toArray(); foreach ($result as &$value) { $term = "remark<>'' AND advantage<>'' AND disadvantage<>'' AND manager_id=:manager_id:"; $interview_info = Interview::find(array($term, 'bind' => array('manager_id' => $value['id']))); $finish = count($interview_info); $value['count'] = $finish . '/' . $value['count']; } $rtn_array = array(); $interviewers = Manager::find(array('project_id=?1 AND role = ?2', 'bind' => array(1 => $project_id, 2 => 'I'))); //获取该项目下答题的总人数 $count = count($interviewers); $rtn_array['total'] = ceil($count / $rows); $rtn_array['records'] = $count; $rtn_array['rows'] = $result; $rtn_array['page'] = $page; $this->dataReturn($rtn_array); return; } else { //处理search情况 $search_field = $this->request->get('searchField'); $search_string = $this->request->get('searchString'); $search_oper = $this->request->get('searchOper'); if ($search_field == 'username') { $filed = 'Manager.' . $search_field; $oper = '='; $value = $search_string; } else { if ($search_field == 'name') { $filed = 'Manager.' . $search_field; $oper = 'LIKE'; $value = '%' . $search_string . '%'; } else { if ($search_field == 'last_login') { $filed = 'Manager.' . $search_field; if ($search_oper == 'bw') { $oper = '>='; } else { if ($search_oper == 'ew') { $oper = '<='; } } $value = $search_string; } else { //.. return; } } } $result = $this->modelsManager->createBuilder()->columns(array('Manager.id as id', 'Manager.username as username', 'Manager.name as name', 'Manager.password as password', 'Manager.last_login as last_login', 'count(Interview.examinee_id) as count'))->from('Manager')->where('Manager.project_id = ' . $project_id . " AND Manager.role = 'I' AND {$filed} {$oper} '{$value}'")->leftJoin('Interview', "Interview.manager_id = Manager.id")->groupBy('Manager.id')->limit($limit, $offset)->orderBy($sort)->getQuery()->execute(); $result = $result->toArray(); foreach ($result as &$value) { $term = "remark<>'' AND advantage<>'' AND disadvantage<>'' AND manager_id=:manager_id:"; $interview_info = Interview::find(array($term, 'bind' => array('manager_id' => $value['id']))); $finish = count($interview_info); $value['count'] = $finish . '/' . $value['count']; } $rtn_array = array(); $interviewers = Manager::find(array('project_id=?1 AND role = ?2', 'bind' => array(1 => $project_id, 2 => 'I'))); //获取该项目下答题的总人数 $count = count($interviewers); $rtn_array['total'] = ceil($count / $rows); $rtn_array['records'] = $count; $rtn_array['rows'] = $result; // foreach($result as $value){ // $rtn_array['rows'][] = $value; // } $rtn_array['page'] = $page; $this->dataReturn($rtn_array); return; } }
<?php // Check permissions if (!$g_user->hasPermission('plugin_interview_admin')) { camp_html_display_error(getGS('You do not have the right to manage interviews.')); exit; } $f_interview_id = Input::Get('f_interview_id', 'int'); if (!Input::IsValid()) { camp_html_display_error(getGS('Invalid input: $1', Input::GetErrorString()), $_SERVER['REQUEST_URI']); exit; } $Interview = new Interview($f_interview_id); if (isset($_REQUEST['f_preview'])) { $Interview->storeInvitation(); } if (isset($_REQUEST['f_invite_now'])) { $Interview->sendGuestInvitation(); ?> <script language="javascript"> window.opener.location.reload(); window.close(); </script> <?php exit(); }