/** Shows the page for a single participant */ public function get($participant_id) { $participant = $this->participantModel->get_participant_by_id($participant_id); $comments = $this->commentModel->get_comments_by_participant($participant_id); $impediments = $this->impedimentModel->get_impediments_by_participant($participant_id); $participations = $this->participationModel->get_participations_by_participant($participant_id, TRUE); $data['participant'] = $participant; $data['last_called'] = $this->participantModel->last_called($participant_id); $data['last_experiment'] = $this->participantModel->last_experiment($participant_id); $data['comment_size'] = count($comments); $data['impediment_size'] = count($impediments); $data['participation_size'] = count($participations); $data['page_title'] = sprintf(lang('data_for_pp'), name($participant)); $data['verify_languages'] = language_check($participant); $data['verify_dyslexia'] = dyslexia_check($participant); $this->load->view('templates/header', $data); $this->load->view('participant_view', $data); $this->load->view('templates/footer'); }
/** * * Shows the page for calling a participant * @param integer $participant_id * @param integer $experiment_id * @param integer $weeks_ahead */ public function call($participant_id, $experiment_id, $weeks_ahead = WEEKS_AHEAD) { // Retrieve entities $participant = $this->participantModel->get_participant_by_id($participant_id); $experiment = $this->experimentModel->get_experiment_by_id($experiment_id); // Check current user is caller for experiment if (!$this->callerModel->is_caller_for_experiment(current_user_id(), $experiment_id)) { $data['error'] = sprintf(lang('not_caller'), $experiment->name); $this->load->view('templates/error', $data); return; } // Check current participant is callable for experiment if (!in_array($participant, $this->participantModel->find_participants($experiment, $weeks_ahead))) { $data['error'] = sprintf(lang('not_callable_for'), name($participant), $experiment->name); $this->load->view('templates/error', $data); return; } // Check current participant is not being called if ($this->participationModel->is_locked_participant($participant_id, $experiment_id)) { $data['error'] = sprintf(lang('in_conversation'), name($participant)); $this->load->view('templates/error', $data); return; } // Retrieve links $comments = $this->commentModel->get_comments_by_participant($participant_id); $impediments = $this->impedimentModel->get_impediments_by_participant($participant_id); $experiments = $this->experimentModel->get_experiments_by_participant($participant_id); $participations = $this->participationModel->get_participations_by_experiment($experiment_id); $leaders = $this->leaderModel->get_leader_users_by_experiments($experiment_id); $first_visit = count($this->participationModel->get_participations_by_participant($participant_id, TRUE)) == 0; // Retrieve or create participation record $participation = $this->participationModel->get_participation($experiment_id, $participant_id); if ($participation) { $participation_id = $participation->id; } else { $participation_id = $this->participationModel->create_participation($experiment, $participant); $participation = $this->participationModel->get_participation_by_id($participation_id); } // Find the previous call (if is exists) $previous_call = $this->callModel->last_call($participation_id); // Lock the participation record $this->participationModel->lock($participation_id); // Create call record $call_id = $this->callModel->create_call($participation_id); // Find possible combined experiment, first check combinations $combinations = $this->relationModel->get_relation_ids_by_experiment($experiment->id, RelationType::Combination); $comb_exp = $combinations ? $this->experimentModel->get_experiment_by_id($combinations[0]) : FALSE; if (!$comb_exp) { // Then check prerequisites $prereqs = $this->relationModel->get_relation_ids_by_experiment($experiment->id, RelationType::Prerequisite); $comb_exp = $prereqs ? $this->experimentModel->get_experiment_by_id($prereqs[0]) : FALSE; } // Check if participation to combined experiment already exists $comb_part = $comb_exp ? $this->participationModel->get_participation($comb_exp->id, $participant_id) : FALSE; if ($comb_part) { $comb_exp = FALSE; } $comb_leaders = $comb_exp ? $this->leaderModel->get_leader_users_by_experiments($comb_exp->id) : array(); // Create page data $data = get_min_max_days($participant, $experiment); $data['participant'] = $participant; $data['experiment'] = $experiment; $data['participation'] = $participation; $data['participation_id'] = $participation_id; $data['leaders'] = leader_options($leaders); $data['call_id'] = $call_id; $data['previous_call'] = $previous_call; $data['comment_size'] = count($comments); $data['impediment_table'] = create_impediment_table($impediments); $data['impediment_size'] = count($impediments); $data['last_experiment'] = $this->participantModel->last_experiment($participant_id); $data['last_called'] = $this->participantModel->last_called($participant_id); $data['nr_participations'] = count($participations); $data['verify_languages'] = language_check($participant); $data['verify_dyslexia'] = dyslexia_check($participant); $data['first_visit'] = $first_visit; $data['combination_exp'] = $comb_exp; $data['combination_leaders'] = leader_options($comb_leaders); $data['page_title'] = sprintf(lang('call_participant'), name($participant)); $this->load->view('templates/header', $data); $this->load->view('participation_call', $data); $this->load->view('templates/footer'); }
function loadConstBook() { global $database, $mosConfig_absolute_path; $is_exception = false; $database->setQuery("SELECT * FROM #__booklibrary_languages"); $langs = $database->loadObjectList(); $component_path = JPath::clean($mosConfig_absolute_path . '/components/com_booklibrary/language/'); $component_layouts = array(); if (is_dir($component_path) && ($component_layouts = JFolder::files($component_path, '^[^_]*\\.php$', false, true))) { //check and add constants file in DB foreach ($component_layouts as $i => $file) { $file_name = pathinfo($file); $file_name = $file_name['filename']; if ($file_name === 'constant') { $database->setQuery("SELECT id FROM #__booklibrary_const"); $idConst = $database->loadResult(); if (empty($idConst)) { require $mosConfig_absolute_path . "/components/com_booklibrary/language/{$file_name}.php"; foreach ($constMas as $mas) { $database->setQuery("INSERT INTO #__booklibrary_const (const, sys_type) VALUES ('" . $mas["const"] . "','" . $mas["sys_type"] . "')"); $database->query(); } } } } //check and add new text files in DB foreach ($component_layouts as $i => $file) { $isLang = 0; $file_name = pathinfo($file); $file_name = $file_name['filename']; $LangLocal = ''; $isLang = 1; if ($file_name != 'constant') { require $mosConfig_absolute_path . "/components/com_booklibrary/language/{$file_name}.php"; foreach ($langs as $lang) { if ($lang->lang_code == $LangLocal['lang_code'] || $lang->title == $LangLocal['title']) { $isLang = 0; break; } else { $isLang = 1; } } try { if ($isLang === 1) { $sql = "INSERT INTO #__booklibrary_languages (lang_code,title) VALUES ('" . $LangLocal['lang_code'] . "','" . $LangLocal['title'] . "')"; $database->setQuery("INSERT INTO #__booklibrary_languages (lang_code,title) VALUES ('" . $LangLocal['lang_code'] . "','" . $LangLocal['title'] . "')"); $database->query(); echo $database->getErrorMsg(); $idLang = $database->insertid(); foreach ($constLang as $item) { $sql = "SELECT id FROM #__booklibrary_const WHERE const = '" . $item['const'] . "'"; $database->setQuery($sql); $idConst = $database->loadResult(); if (!array_key_exists('value_const', $item)) { echo "<br />:loadConstBook, This value constant " . $item['const'] . " for this lang file " . $LangLocal['title'] . " not exist"; } else { $database->setQuery("INSERT INTO #__booklibrary_const_languages (fk_constid,fk_languagesid,value_const) VALUES ({$idConst}, {$idLang}, " . $database->quote($item['value_const']) . ")"); $database->query(); } } } } catch (Exception $e) { $is_exception = true; echo 'Send exception, please write to admin for language check: ', $e->getMessage(), "\n"; } } } if ($is_exception) { language_check(); } //if text constant missing recover they in DB if (!defined('_BOOKLIBRARY_HEADER_NUMBER')) { $query = "SELECT c.const, cl.value_const "; $query .= "FROM #__booklibrary_const_languages as cl "; $query .= "LEFT JOIN #__booklibrary_languages AS l ON cl.fk_languagesid=l.id "; $query .= "LEFT JOIN #__booklibrary_const AS c ON cl.fk_constid=c.id "; $query .= "WHERE l.lang_code = 'en-GB'"; $database->setQuery($query); $langConst = $database->loadObjectList(); foreach ($langConst as $item) { define($item->const, $item->value_const); } } } //if some language file missing recover it $component_path = JPath::clean($mosConfig_absolute_path . '/components/com_booklibrary/language/'); $component_layouts = array(); if (is_dir($component_path) && ($component_layouts = JFolder::files($component_path, '^[^_]*\\.php$', false, true))) { foreach ($component_layouts as $i => $file) { $isLang = 0; $file_name = pathinfo($file); $file_name = $file_name['filename']; if ($file_name != 'constant') { require $mosConfig_absolute_path . "/components/com_booklibrary/language/{$file_name}.php"; //$fileMas[] = $LangLocal; $fileMas[] = $LangLocal['title']; } } } $database->setQuery("SELECT title FROM #__booklibrary_languages"); if (version_compare(JVERSION, '3.0', 'lt')) { $langs = $database->loadResultArray(); } else { $langs = $database->loadColumn(); } if (count($langs) > count($fileMas)) { $results = array_diff($langs, $fileMas); foreach ($results as $result) { $database->setQuery("SELECT lang_code FROM #__booklibrary_languages WHERE title = '{$result}'"); $lang_code = $database->loadResult(); $langfile = "<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );"; $langfile .= "\n\n/**\n*\n* @package BookLibrary\n* @copyright 2012 Andrey Kvasnevskiy-OrdaSoft(akbet@mail.ru); Rob de Cleen(rob@decleen.com);\n* Homepage: http://www.ordasoft.com\n* @version: 3.0 Pro\n*\n* */\n\n"; $langfile .= "\$LangLocal = array('lang_code'=>'{$lang_code}', 'title'=>'{$result}');\n"; $langfile .= "\$constLang = array();\n"; $query = "SELECT c.const, cl.value_const "; $query .= "FROM #__booklibrary_const_languages as cl "; $query .= "LEFT JOIN #__booklibrary_languages AS l ON cl.fk_languagesid=l.id "; $query .= "LEFT JOIN #__booklibrary_const AS c ON cl.fk_constid=c.id "; $query .= "WHERE l.title = '{$result}'"; $database->setQuery($query); $constlanguages = $database->loadObjectList(); foreach ($constlanguages as $constlanguage) { $langfile .= "\$constLang[] = array('const'=>'" . $constlanguage->const . "', 'value_const'=>'" . mysql_real_escape_string($constlanguage->value_const) . "');\n"; } // Write out new initialization file $fd = fopen($mosConfig_absolute_path . "/components/com_booklibrary/language/{$result}.php", "w") or die("Cannot create language file."); fwrite($fd, $langfile); fclose($fd); } } //language_check(); }