Exemple #1
0
 /**
  * Get all active pets owned by a user
  *
  * @param int $id
  *
  * @return array
  */
 public function getActivePetsForUser($id)
 {
     $ret = [];
     // Pet variables
     $res_id = null;
     $owner_id = null;
     $species_id = null;
     $name = null;
     $experience = null;
     $brawn = null;
     $guts = null;
     $essence = null;
     $speed = null;
     $focus = null;
     $grit = null;
     $active = null;
     // User variables
     $username = null;
     $email_address = null;
     $description = null;
     // Species variables
     $species = null;
     $type = null;
     $stats = null;
     $this->getActivePetsForUserStatement->bind_param("i", $id);
     $this->getActivePetsForUserStatement->execute();
     $this->getActivePetsForUserStatement->bind_result($res_id, $owner_id, $species_id, $name, $experience, $brawn, $guts, $essence, $speed, $focus, $grit, $active, $username, $email_address, $description, $species, $type, $stats);
     while ($this->getActivePetsForUserStatement->fetch()) {
         $newUser = new User($username, $email_address, $description);
         $newUser->setId($owner_id);
         $newSpecies = new Species($species, $type, $stats);
         $newSpecies->setId($species_id);
         $newPet = new Pet($newUser, $newSpecies, $name);
         $newPet->setId($res_id);
         $newPet->setExperience($experience);
         $newPet->setBrawn($brawn);
         $newPet->setGuts($guts);
         $newPet->setEssence($essence);
         $newPet->setSpeed($speed);
         $newPet->setFocus($focus);
         $newPet->setGrit($grit);
         $newPet->setActive(boolval($active));
         array_push($ret, $newPet);
     }
     return $ret;
 }
 /**
  * Create/Edit a pet
  *
  * @param      $view_data
  * @param bool $create whether a pet is being created or edited
  *
  * @return mixed
  */
 private function editPet($view_data, $create = false)
 {
     // POST keys
     $submit_key = 'submit';
     $name_key = 'name';
     $species_id_key = 'species_id';
     $pet_id_key = 'pet_id';
     $errors_found = false;
     // Gather sanitized form inputs
     $form_name = empty($_POST[$name_key]) ? null : StringUtils::sanitize($_POST[$name_key]);
     $form_species_id = empty($_POST[$species_id_key]) ? null : intval(StringUtils::sanitize($_POST[$species_id_key]));
     $form_submit = isset($_POST[$submit_key]);
     // Other data
     $species = null;
     // View config
     $view_data['species_list'] = $this->species_list;
     // Pet is being created
     if ($create) {
         // Fill in view data
         if ($form_name !== null) {
             $view_data[$name_key] = $form_name;
         }
         if ($form_species_id !== null) {
             $view_data[$species_id_key] = $form_species_id;
         }
     } else {
         // Set the flag that this pet is being edited
         // Species should not be modifiable
         $view_data['edit_mode'] = true;
         // Fill in view data
         $view_data[$pet_id_key] = $this->pet_to_edit->getId();
         $view_data[$name_key] = $form_name === null ? $this->pet_to_edit->getName() : $form_name;
         $view_data[$species_id_key] = $this->pet_to_edit->getSpecies()->getId();
     }
     // Check form was submitted without error
     if ($form_submit) {
         // Check name is set
         if ($form_name === null || StringUtils::whitespaceOnly($form_name)) {
             $view_data['err_name'] = "Please enter a name.";
             $errors_found = true;
         } elseif (strlen($form_name) > 64) {
             $view_data['err_name'] = "Please enter a name that is no greater than 64 characters.";
             $errors_found = true;
         }
         // Check species_id is set
         // Only using in create mode
         if ($create && $form_species_id === 0) {
             $view_data['err_species'] = "Please select a species.";
             $errors_found = true;
         } elseif ($create) {
             $species = $this->data->getSpecies($form_species_id);
             if ($species === null) {
                 $view_data['err_species'] = "Could not find species. Please try again.";
                 $errors_found = true;
             }
         }
         if ($errors_found) {
             $view_data['form_err'] = "Please see errors below.";
         } else {
             // Check if a pet is being created
             if ($create) {
                 $new_pet = new Pet($this->logged_in_user, $species, $form_name);
                 // Generate initial stats
                 $new_pet->rollStats();
                 // Make pet active if user does not have a full active set
                 $active_pets = $this->data->getActivePetsForUser($this->logged_in_user->getId());
                 if (count($active_pets) < 3) {
                     $new_pet->setActive(true);
                 }
                 // Add pet to database
                 $new_pet_id = $this->data->addPet($new_pet);
                 // Redirect to view pet if added successfully
                 if ($new_pet_id) {
                     HTTPUtils::my_http_redirect('pet.php?pet_id=' . $new_pet_id);
                 } else {
                     $view_data['form_err'] = 'Failed to add pet. Please try again.';
                 }
             } else {
                 // Update pet fields
                 // Species cannot be modified
                 $this->pet_to_edit->setName($form_name);
                 // Update pet in database
                 $updated = $this->data->updatePet($this->pet_to_edit);
                 // Redirect to view pet if updated successfully
                 if ($updated) {
                     HTTPUtils::my_http_redirect('pet.php?pet_id=' . $this->pet_to_edit->getId());
                 } else {
                     $view_data['form_err'] = 'Failed to update pet. Please try again.';
                 }
             }
         }
     }
     return $view_data;
 }