コード例 #1
0
 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;
     }
 }
コード例 #2
0
 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;
     }
 }
コード例 #3
0
 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);
     }
 }
コード例 #4
0
 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">&times;</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">&times;</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">&times;</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">&times;</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">&times;</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">&times;</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">&times;</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">&times;</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">&times;</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");
     }
 }
コード例 #5
0
 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));
     }
 }