public function indexAction() { $field_id = $this->_request->getParam('f'); if ($field_id) { $_SESSION['Default']['field'] = $field_id; /**for groups view**/ $user = Zend_Auth::getInstance()->getStorage()->read(); $group_DB = new Application_Model_DbTable_Group(); $groups = $group_DB->getAll($user->ganID, $_SESSION['Default']['field']); if ($groups) { $this->view->groups = $groups; } /**for pop up**/ $plans_DB = new Application_Model_DbTable_Planing(); $goals_DB = new Application_Model_DbTable_Target(); $_groups = array(); foreach ($groups as $g) { $lastplan = $plans_DB->getLastPlan($g['groupID'], $_SESSION['Default']['field']); if ($lastplan) { $g['plan'] = $lastplan['game_name']; $g['goal'] = $goals_DB->getGoalName($lastplan['goal_id']); $_groups[] = $g; } } $this->view->groups_with_plans = $_groups; } }
public function targetsAction() { $group_id = $this->_request->getParam('g'); if ($group_id) { $target_DB = new Application_Model_DbTable_Target(); $level_DB = new Application_Model_DbTable_Level(); $targets = $target_DB->getAll(); $_targets = array(); foreach ($targets as $t) { $t['levels'] = $level_DB->getAll($t['target_id']); $_targets[] = $t; } $this->view->group_id = $group_id; $this->view->targets = $_targets; } }
public function targetsAction() { $group_id = $this->_request->getParam('g'); if ($group_id) { $target_DB = new Application_Model_DbTable_Target(); //$level_DB = new Application_Model_DbTable_Level(); $targets = $target_DB->getAll($_SESSION['Default']['field']); $_targets = array(); foreach ($targets as $t) { $t['subgoals'] = $target_DB->getAllSubGoals($t['goalID']); $_targets[] = $t; } $this->view->group_id = $group_id; $this->view->targets = $_targets; $groups_DB = new Application_Model_DbTable_Group(); $this->view->groupName = $groups_DB->getName($group_id); } }
public function updategoalAction() { $request = $this->getRequest(); $goal_data = $request->getPost(); $goal_DB = new Application_Model_DbTable_Target(); $goalID_parent = $this->_request->getParam('gp'); $goalID = $this->_request->getParam('g'); $grade_DB = new Application_Model_DbTable_Grade(); if ($_FILES["photo"]["name"] && !$goalID_parent) { if (isset($_FILES["photo"]["error"])) { if ($_FILES["photo"]["error"] > 0) { $this->msger->addMessage('<div class="alert alert-danger text-center" role="alert"><button type="button" class="close" data-dismiss="alert">×</button>' . $_FILES["photo"]["error"] . '</div>'); $this->_redirect('/admin/editgoal/g/' . $goalID . '/gp/' . $goalID_parent); } else { $allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png"); $filename = $_FILES["photo"]["name"]; $filetype = $_FILES["photo"]["type"]; $filesize = $_FILES["photo"]["size"]; // Verify file extension $ext = pathinfo($filename, PATHINFO_EXTENSION); if (!array_key_exists($ext, $allowed)) { $this->msger->addMessage('<div class="alert alert-danger text-center" role="alert"><button type="button" class="close" data-dismiss="alert">×</button>' . $this->lang->_('FILE_WRONG_FORMAT') . '</div>'); $this->_redirect('/admin/editgoal/g/' . $goalID . '/gp/' . $goalID_parent); } // Verify file size - 5MB maximum $maxsize = 5 * 1024 * 1024; if ($filesize > $maxsize) { $this->msger->addMessage('<div class="alert alert-danger text-center" role="alert"><button type="button" class="close" data-dismiss="alert">×</button>' . $this->lang->_('FILE_SIZE_LIMIT') . '</div>'); $this->_redirect('/admin/editgoal/g/' . $goalID . '/gp/' . $goalID_parent); } // Verify MYME type of the file if (in_array($filetype, $allowed)) { // Check whether file exists before uploading it if (!file_exists($this->config->paths->upload->goals . $_FILES["photo"]["name"])) { move_uploaded_file($_FILES["photo"]["tmp_name"], $this->config->paths->upload->goals . $_FILES["photo"]["name"]); } } else { $this->msger->addMessage('<div class="alert alert-danger text-center" role="alert"><button type="button" class="close" data-dismiss="alert">×</button>' . $this->lang->_('FILE_ERROR') . '</div>'); $this->_redirect('/admin/editgoal/g/' . $goalID . '/gp/' . $goalID_parent); } } } else { $this->msger->addMessage('<div class="alert alert-danger text-center" role="alert"><button type="button" class="close" data-dismiss="alert">×</button>' . $this->lang->_('FILE_ERROR') . '</div>'); $this->_redirect('/admin/editgoal/g/' . $goalID . '/gp/' . $goalID_parent); } } $goalName = trim($goal_data['goalName']); if (!strlen($goalName)) { $this->msger->addMessage('<div class="alert alert-danger text-center" role="alert"><button type="button" class="close" data-dismiss="alert">×</button>' . $this->lang->_('REQUIRED_GOAL_NAME') . '</div>'); $this->_redirect('/admin/editgoal/g/' . $goalID . '/gp/' . $goalID_parent); } $goalLevel = trim($goal_data['goalLevel']); if ($goalID_parent) { if (!strlen($goalLevel)) { $this->msger->addMessage('<div class="alert alert-danger text-center" role="alert"><button type="button" class="close" data-dismiss="alert">×</button>' . $this->lang->_('REQUIRED_GOAL_LEVEL') . '</div>'); $this->_redirect('/admin/editgoal/g/' . $goalID . '/gp/' . $goalID_parent); } else { if (!is_numeric($goal_data['goalLevel'])) { $this->msger->addMessage('<div class="alert alert-danger text-center" role="alert"><button type="button" class="close" data-dismiss="alert">×</button>' . $this->lang->_('REQUIRED_GOAL_LEVEL_INT') . '</div>'); $this->_redirect('/admin/editgoal/g/' . $goalID . '/gp/' . $goalID_parent); } } $grade1 = trim($goal_data['grade1']); $grade2 = trim($goal_data['grade2']); $grade3 = trim($goal_data['grade3']); $grade4 = trim($goal_data['grade4']); if (!strlen($grade1) || !strlen($grade2) || !strlen($grade3) || !strlen($grade4)) { $this->msger->addMessage('<div class="alert alert-danger text-center" role="alert"><button type="button" class="close" data-dismiss="alert">×</button>' . $this->lang->_('REQUIRED_GRADE_NAME') . '</div>'); $this->_redirect('/admin/editgoal/g/' . $goalID . '/gp/' . $goalID_parent); } $updated_goal = array('goalID_parent' => $goalID_parent, 'name' => $goal_data['goalName'], 'level' => $goalLevel, 'fieldID' => $_SESSION['Default']['field']); } else { $goalLevel = 0; if ($_FILES["photo"]["name"]) { //icon selected $updated_goal = array('name' => $goal_data['goalName'], 'icon' => $_FILES["photo"]["name"]); } else { $updated_goal = array('name' => $goal_data['goalName']); } } try { $where_goal = $goal_DB->getAdapter()->quoteInto('goalID = ?', $goalID); $goal_DB->update($updated_goal, $where_goal); } catch (Exception $ex) { die(json_encode(array('status' => 'danger', 'msg' => $ex->getMessage()))); } if ($goalID_parent) { $new_grade1 = array('goalID' => $goalID, 'name' => $goal_data['grade1'], 'value' => 1); $new_grade2 = array('goalID' => $goalID, 'name' => $goal_data['grade2'], 'value' => 2); $new_grade3 = array('goalID' => $goalID, 'name' => $goal_data['grade3'], 'value' => 3); $new_grade4 = array('goalID' => $goalID, 'name' => $goal_data['grade4'], 'value' => 4); try { $where_grade1['goalID = ?'] = $goalID; $where_grade1['value = ?'] = 1; $grade_DB->update($new_grade1, $where_grade1); $where_grade2['goalID = ?'] = $goalID; $where_grade2['value = ?'] = 2; $grade_DB->update($new_grade2, $where_grade2); $where_grade3['goalID = ?'] = $goalID; $where_grade3['value = ?'] = 3; $grade_DB->update($new_grade3, $where_grade3); $where_grade4['goalID = ?'] = $goalID; $where_grade4['value = ?'] = 4; $grade_DB->update($new_grade4, $where_grade4); } catch (Exception $ex) { die(json_encode(array('status' => 'danger', 'msg' => $ex->getMessage()))); } } if ($goalID_parent) { $this->_redirect("/admin/subgoals/g/" . $goalID_parent); } else { $this->_redirect("/admin/goals"); } }
public function recommend() { $group_id = $this->_request->getParam('g'); $plans_DB = new Application_Model_DbTable_Planing(); $last_plan = $plans_DB->getLastPlan($group_id, $_SESSION['Default']['field']); if ($last_plan) { $target_id = $last_plan['goal_id']; $game_id = $last_plan['game_id']; $related_plan_id = $last_plan['planID']; $targets_DB = new Application_Model_DbTable_Target(); $target_level = $targets_DB->getGoalLevel($target_id); settype($target_level, "integer"); $records_DB = new Application_Model_DbTable_Records(); $records = $records_DB->getAll($group_id, $game_id); $count_1 = 0; $count_2 = 0; $count_3 = 0; $count_4 = 0; foreach ($records as $r) { $grade = $r['grade_value']; settype($grade, "integer"); if ($grade == 1) { $count_1++; } else { if ($grade == 2) { $count_2++; } else { if ($grade == 3) { $count_3++; } else { if ($grade == 4) { $count_4++; } } } } } $num_of_students = count($records); $continue_childrenless = false; $students_DB = new Application_Model_DbTable_StudentsInField(); $real_num_of_students = count($students_DB->getAll($group_id)); if ($num_of_students < $real_num_of_students) { $continue_childrenless = true; } $num_of_levels = count($targets_DB->getLevels()); //current target $recommended_target = $target_id; $recommendation = $this->lang->_('RECOMMEND_CURRENT_LEVEL'); if ($num_of_students > 2 && $count_1 >= $num_of_students / 2 || $num_of_students == 1 && $count_1 == 1 || $num_of_students == 2 && ($count_1 == 2 || $count_1 == 1 && $count_2 == 1)) { //return to a game from prev goal if ($target_level > 1) { $target_level = $target_level - 1; $recommended_target = $targets_DB->getAllByLevel($target_level, $_SESSION['Default']['field']); $recommendation = $this->lang->_('RECOMMEND_PREV_LEVEL'); } } else { if ($num_of_students > 2 && $count_4 >= $num_of_students - 1 || $num_of_students == 1 && $count_4 == 1 || $num_of_students == 2 && ($count_4 == 2 || $count_4 == 1 && $count_3 == 1)) { $unlearned_targets = $targets_DB->getUnlearnedInLevel($target_level, $group_id, $_SESSION['Default']['field']); //next target in current level if (count($unlearned_targets) > 0) { $recommended_target = $unlearned_targets[0]['goalID']; $recommendation = $this->lang->_('RECOMMEND_NEXT_LEVEL'); } else { if ($target_level < $num_of_levels) { $target_level = $target_level + 1; $recommended_target = $targets_DB->getAllByLevel($target_level, $_SESSION['Default']['field']); $recommendation = $this->lang->_('RECOMMEND_NEXT_LEVEL'); } } } } $games_DB = new Application_Model_DbTable_Game(); settype($recommended_target, "integer"); $unplayed_games = $games_DB->getGamesNotPlayed($group_id, $recommended_target); //check if all games were played if (count($unplayed_games) == 0) { $recommended_game = $games_DB->getRandomGame($recommended_target); } else { $recommended_game = $unplayed_games[0]; } $recommended_target_name = $targets_DB->getGoalName($recommended_target); $this->view->recommended_target = $recommended_target_name; $this->view->recommendation = $recommendation; $this->view->recommended_game = $recommended_game['name']; //insert to DB as last plan $plan_DB = new Application_Model_DbTable_Planing(); $new_plan = array('groupID' => $group_id, 'gameID' => $recommended_game['gameID'], 'date' => date('Y-m-d H:i:s'), 'recommendation' => $recommendation, 'relatedPlanID' => $related_plan_id, 'fieldID' => $_SESSION['Default']['field']); try { $plan_id = $plan_DB->insert($new_plan); } catch (Exception $ex) { die(json_encode(array('status' => 'danger', 'msg' => $this->lang->_('FAILED_DOC')))); } //return json to ajax $this->getHelper('Layout')->disableLayout(); $this->getHelper('ViewRenderer')->setNoRender(); echo json_encode(array('recommendation' => $recommendation, 'recommended_game' => $recommended_game['name'], 'recommended_target' => $recommended_target_name, 'continue_childrenless' => $continue_childrenless)); } }