public static function newRobotData() { $robotData = null; $newRobotData = null; if ($_SERVER["REQUEST_METHOD"] == "POST") { $creatorIds = array(); foreach ($_POST['creatorNames'] as $creatorName) { $creatorArray = UserDataDB::getUserDataBy('user_name', $creatorName); if (count($creatorArray) >= 1) { $creator = $creatorArray[0]; array_push($creatorIds, $creator->getUserDataId()); } } $_POST['creators'] = $creatorIds; $robotData = new RobotData($_POST); } $_SESSION['robotData'] = $robotData; if (is_null($robotData) || $robotData->getErrorCount() != 0) { RobotDataView::showNew(); } else { $newRobotData = RobotDataDB::addRobotData($robotData); foreach ($robotData->getCreators() as $creatorId) { $robotAssoc = new RobotAssoc($robotData->getRobotId(), $creatorId); $newRobotAssoc = RobotAssocsDB::addRobotAssoc($robotAssoc); } if (!is_null($newRobotData) && $newRobotData->getErrorCount() == 0) { $_SESSION['robotData'] = $newRobotData; } HomeView::show(); } }
public static function updateUserData() { $userDataArray = UserDataDB::getUserDataBy('userDataId', $_SESSION['arguments']); if (empty($userDataArray)) { HomeView::show(); header('Location: /' . $_SESSION['base']); } elseif ($_SERVER["REQUEST_METHOD"] == "GET") { $_SESSION['userData'] = $userDataArray[0]; UserDataView::showUpdate(); } else { $userData = $userDataArray[0]; $parms = $userData->getParameters(); $parms['userId'] = array_key_exists('userId', $_POST) ? $_POST['userId'] : $userData->getUserId(); $parms['user_name'] = array_key_exists('user_name', $_POST) ? $_POST['user_name'] : ""; $parms['skill_level'] = array_key_exists('skill_level', $_POST) ? $_POST['skill_level'] : ""; $parms['skill_areas'] = array_key_exists('skill_areas', $_POST) ? $_POST['skill_areas'] : array(); $parms['profile_pic'] = array_key_exists('profile_pic', $_POST) ? $_POST['profile_pic'] : ""; $parms['started_hobby'] = array_key_exists('started_hobby', $_POST) ? $_POST['started_hobby'] : ""; $parms['fav_color'] = array_key_exists('fav_color', $_POST) ? $_POST['fav_color'] : ""; $parms['url'] = array_key_exists('url', $_POST) ? $_POST['url'] : ""; $parms['phone'] = array_key_exists('phone', $_POST) ? $_POST['phone'] : ""; $newUserData = new UserData($parms); $newUserData->setUserDataId($userData->getUserDataId()); $userDataEntry = UserDataDB::updateUserData($newUserData); if ($userDataEntry->getErrorCount() != 0) { $_SESSION['userData'] = array($newUserData); //return; UserDataView::showUpdate(); } else { HomeView::show(); header('Location: /' . $_SESSION['base']); } } }
public static function showNavBar() { $base = array_key_exists('base', $_SESSION) ? $_SESSION['base'] : ""; $authenticatedUser = array_key_exists('authenticatedUser', $_SESSION) ? $_SESSION['authenticatedUser'] : null; if (!is_null($authenticatedUser)) { $authenticatedUserId = $authenticatedUser->getUserId(); $userDataArray = UserDataDB::getUserDataBy('userId', $authenticatedUserId); $authenticatedUserData = $userDataArray[0]; if (!is_null($userDataArray[0])) { $_SESSION['authenticatedUserData'] = $authenticatedUserData; } } echo '<nav class="navbar navbar-inverse navbar-fixed-top">'; echo '<div class="container-fluid">'; echo '<div class="navbar-header">'; // Hamburger echo '<button type="button" class="navbar-toggle collapsed"'; echo 'data-toggle="collapse" data-target="#navbar"'; echo 'aria-expanded="false" aria-controls="navbar">'; echo '<span class="icon-bar"></span>'; echo '<span class="icon-bar"></span>'; echo '<span class="icon-bar"></span>'; echo '</button>'; echo '<a class="navbar-brand" href="/' . $base . '/">botspace</a>'; echo '</div>'; // navbar-header echo '<div id="navbar" class="navbar-collapse collapse">'; // Show a link to the logged-in user's profile and a logout button if (!is_null($authenticatedUser)) { echo '<ul class="nav navbar-nav">'; echo '<li class="active"><a href="/' . $base . '/profile/show/' . $authenticatedUserId . '">Profile</a></li>'; echo '</ul>'; echo '<form class="navbar-form navbar-right" method="post" action="/' . $base . '/logout">'; echo '<div class="form-group">'; echo '<span class="label label-default">Hey ' . $authenticatedUserData->getUserName() . '</span> '; echo '</div>'; echo '<button type="submit" class="btn btn-success">Log out</button>'; echo '</form>'; } else { echo '<form class="navbar-form navbar-right" method="get" action="/' . $base . '/login">'; //echo '<div class="form-group">'; echo '<button type="submit" class="btn btn-success">Log in</button>'; //echo '</div>'; echo '   '; //echo '<div class="form-group">'; echo '<a class="btn btn-primary" href="/' . $base . '/signup" role="button">Sign up</a></p>'; //echo '</div>'; echo '</form>'; } //echo '</ul>'; //navbar-nav echo '</div>'; // navbar-collapse collapse echo '</div>'; // container-fluid echo '</nav>'; }
public static function getLastNRegisteredUsers($n) { $lastNUsers = array(); try { $registeredUsers = UserDataDB::getUserDataBy(); $lastNUsers = array_slice($registeredUsers, -$n, $n); } catch (Exception $e) { return $lastNUsers; } return $lastNUsers; }
public function testInsertDuplicateUserData() { ob_start(); $myDb = DBMaker::create('botspacetest'); Database::clearDB(); $db = Database::getDB('botspacetest', 'C:\\xampp\\myConfig.ini'); $beforeCount = count(UserDataDB::getUserDataBy()); $userDataCopy = UserDataDB::getUserDataRowSetsBy('userDataId', 1); $userDataCopy = $userDataCopy[0]; $s1 = new UserData($userDataCopy); $insertedUserData = UserDataDB::addUserData($s1); $this->assertGreaterThan(0, $insertedUserData->getErrorCount(), 'Duplicate attempt should return with an error'); $afterCount = count(UserDataDB::getUserDataBy()); $this->assertEquals($afterCount, $beforeCount, 'The database should have the same number of elements after the insertion attempt'); ob_get_clean(); }
public static function setProfileDataForUser($userId) { $retVal = false; if (empty($userId) || !is_numeric($userId)) { return $retVal; } $user = null; $userData = null; $skillAssocs = null; $userRobots = null; $users = UsersDB::getUsersBy('userId', $userId); if (count($users) > 0) { $user = $users[0]; if ($user->getErrorCount() != 0) { return $retVal; } $userDataArray = UserDataDB::getUserDataBy('userId', $userId); if (count($userDataArray) > 0) { $userData = $userDataArray[0]; } if ($userData->getErrorCount() != 0) { return $retVal; } $skillAssocs = SkillAssocsDB::getSkillAssocsBy('userDataId', $userData->getUserDataId()); foreach ($skillAssocs as $skillAssoc) { if ($skillAssoc->getErrorCount() != 0) { return $retVal; } } $robotAssocs = RobotAssocsDB::getRobotAssocsBy('creatorId', $userData->getUserDataId()); $userRobots = array(); foreach ($robotAssocs as $robotAssoc) { $robotArray = RobotDataDB::getRobotDataBy('robotId', $robotAssoc->getRobotId()); if (count($robotArray) > 0) { array_push($userRobots, $robotArray[0]); } } $_SESSION['user'] = $user; $_SESSION['userData'] = $userData; $_SESSION['skillAssocs'] = $skillAssocs; $_SESSION['userRobots'] = $userRobots; $retVal = true; } return $retVal; }
public static function show() { $arguments = array_key_exists('arguments', $_SESSION) ? $_SESSION['arguments'] : 0; $user = $_SESSION['user']; if (!is_null($user)) { $_SESSION['user'] = $user; $userDataArray = UserDataDB::getUserDataBy('userId', $user->getUserId()); $userData = $userDataArray[0]; $_SESSION['userData'] = $userData; $skillAssocs = SkillAssocsDB::getSkillAssocsBy('userDataId', $userData->getUserDataId()); $_SESSION['skillAssocs'] = $skillAssocs; // The robot data section might look something like this: //$robotDataArray = RobotDataDB::getRobotDataBy('creator', $user->getUserId()); //$_SESSION['robotData'] = $robotDataArray; UserView::show(); } else { HomeView::show(); } }
public static function updateUserData($userData) { try { $db = Database::getDB(); if (is_null($userData) || $userData->getErrorCount() > 0) { return $userData; } $checkUserData = UserDataDB::getUserDataBy('userDataId', $userData->getUserDataId()); if (empty($checkUserData)) { $userData->setError('userDataId', 'USER_DATA_DOES_NOT_EXIST'); return $userData; } if ($userData->getErrorCount() > 0) { return $userData; } $query = "UPDATE UserData SET userId = :userId, user_name = :user_name, \r\n\t\t\t\t\tskill_level = :skill_level, profile_pic = :profile_pic, \r\n\t\t\t\t\tstarted_hobby = :started_hobby, fav_color = :fav_color, url = :url,\r\n\t\t\t\t\tphone = :phone\r\n\t\t\t\t\tWHERE userDataId = :userDataId"; $statement = $db->prepare($query); $statement->bindValue(":userId", $userData->getUserId()); $statement->bindValue(":user_name", $userData->getUserName()); $statement->bindValue(":skill_level", $userData->getSkillLevel()); $statement->bindValue(":profile_pic", $userData->getProfilePic()); $statement->bindValue(":started_hobby", $userData->getStartedHobby()); $statement->bindValue(":fav_color", $userData->getFavColor()); $statement->bindValue(":url", $userData->getUrl()); $statement->bindValue(":phone", $userData->getPhone()); $statement->bindValue(":userDataId", $userData->getUserDataId()); $statement->execute(); $statement->closeCursor(); // Handle updates for the Skill Areas // 1 - Delete all existing skill associations for the user $deleteQuery = "DELETE from SkillAssocs WHERE userDataId = :userDataId"; $statement = $db->prepare($deleteQuery); $statement->bindValue(":userDataId", $userData->getUserDataId()); $statement->execute(); $statement->closeCursor(); // 2 - Add all of the new skill associations, if any $skillAreas = $userData->getSkillAreas(); $userDataId = $userData->getUserDataId(); foreach ($skillAreas as $skill_name) { // Translate the skill_name into a skillId first // skillIds start from 1, whereas array-indexing starts at 0; // so we add 1 to the index $skillId = array_search($skill_name, Skill::$SKILL_AREAS) + 1; $newSkillAssoc = new SkillAssocs($userDataId, $skillId); SkillAssocsDB::addSkillAssoc($newSkillAssoc); } } catch (Exception $e) { $userData->setError('userDataId', 'USER_DATA_COULD_NOT_BE_UPDATED'); } return $userData; }
public function testUpdateUserData() { $myDB = DBMaker::create('botspacetest'); Database::clearDB(); $db = Database::getDB('botspacetest', 'C:\\xampp\\myConfig.ini'); $testUserDataId = 1; $userDataArray = UserDataDB::getUserDataBy('userDataId', $testUserDataId); $userData = $userDataArray[0]; $params = $userData->getParameters(); $this->assertEquals($userData->getUserName(), 'jabituya', 'Before the update it should have username jabituya'); $testUserDataRowsArray = UserDataDB::getUserDataRowSetsBy('userDataId', $testUserDataId); $testUserDataRow = $testUserDataRowsArray[0]; $params['user_name'] = 'jabituya2000'; $newUserData = new UserData($params); $newUserData->setUserDataId($testUserDataId); $userData = UserDataDB::updateUserData($newUserData); $this->assertEquals($userData->getUserName(), 'jabituya2000', 'After the update it should have username jabituya2000'); $this->assertTrue(empty($userData->getErrors()), 'The updated user data should have no errors'); }
public static function showNew() { $userData = array_key_exists('userData', $_SESSION) ? $_SESSION['userData'] : null; $skillAssocs = array_key_exists('skillAssocs', $_SESSION) ? $_SESSION['skillAssocs'] : array(); $base = array_key_exists('base', $_SESSION) ? $_SESSION['base'] : ""; $_SESSION['headertitle'] = "botspace UserData Creator"; $_SESSION['styles'] = array('site.css'); MasterView::showHeader(); MasterView::showNavBar(); // First find some available userIds to associate the new UserData with $users = UsersDB::getUsersBy(); $availableUsers = array(); if (!is_null($users) && count($users) > 0) { foreach ($users as $user) { $userDataArray = UserDataDB::getUserDataBy('userId', $user->getUserId()); if (count($userDataArray) == 0) { array_push($availableUsers, $user); } } } echo '<h1>Create a new UserData entry</h1>'; echo '<form action="/' . $base . '/userdata/create/new" method="POST">'; if (!is_null($userData) && array_key_exists('userDataId', $userData->getErrors())) { echo 'Error: ' . $userData->getError('userDataId') . "<br>"; } echo 'UserId: '; echo '<select name="userId">'; echo '<option value="0"> </option>'; foreach ($availableUsers as $availUser) { $userId = $availUser->getUserId(); echo '<option value="' . $userId . '">' . $userId . '</option>'; } echo '</select><br><br>'; echo 'Name: <input type="text" name="user_name"'; if (!is_null($userData)) { echo 'value = "' . $userData->getUserName() . '"'; } echo 'tabindex="2" required>' . "\n"; echo '<span class="error">'; if (!is_null($userData)) { echo $userData->getError('user_name'); } echo '</span><br><br>' . "\n"; echo 'Skill Level: <input type="radio" name="skill_level" value="novice" tabindex="3"'; if (is_null($userData) || !is_null($userData) && strcmp($userData->getSkillLevel(), UserData::$SKILL_LEVELS['0']) == 0) { echo "checked"; } echo '>Novice'; echo '<input type="radio" name="skill_level" value="advanced" tabindex="4"'; if (!is_null($userData) && strcmp($userData->getSkillLevel(), UserData::$SKILL_LEVELS['1']) == 0) { echo "checked"; } echo '>Advanced'; echo '<input type="radio" name="skill_level" value="expert" tabindex="5"'; if (!is_null($userData) && strcmp($userData->getSkillLevel(), UserData::$SKILL_LEVELS['2']) == 0) { echo "checked"; } echo '>Expert' . "\n"; echo '<span class="error">' . "\n"; if (!is_null($userData)) { echo $userData->getError('skill_level'); } echo '</span><br><br>' . "\n"; if (!is_null($userData)) { echo $userData->getError('skill_area') . '<br>'; } echo '<fieldset>' . "\n"; echo '<legend>Skill Areas</legend>' . "\n"; echo '<input type="checkbox" name="skill_areas[]" value="system-design" tabindex="6"'; if (!is_null($userData) && in_array("system-design", $userData->getSkillAreas())) { echo "checked"; } echo '>system-design'; echo '<input type="checkbox" name="skill_areas[]" value="programming" tabindex="7"'; if (!is_null($userData) && in_array("programming", $userData->getSkillAreas())) { echo "checked"; } echo '>programming'; echo '<input type="checkbox" name="skill_areas[]" value="machining" tabindex="8"'; if (!is_null($userData) && in_array("machining", $userData->getSkillAreas())) { echo "checked"; } echo '>machining'; echo '<input type="checkbox" name="skill_areas[]" value="soldering" tabindex="9"'; if (!is_null($userData) && in_array("soldering", $userData->getSkillAreas())) { echo "checked"; } echo '>soldering'; echo '<input type="checkbox" name="skill_areas[]" value="wiring" tabindex="10"'; if (!is_null($userData) && in_array("wiring", $userData->getSkillAreas())) { echo "checked"; } echo '>wiring'; echo '<input type="checkbox" name="skill_areas[]" value="circuit-design" tabindex="11"'; if (!is_null($userData) && in_array("circuit-design", $userData->getSkillAreas())) { echo "checked"; } echo '>circuit-design'; echo '<input type="checkbox" name="skill_areas[]" value="power-systems" tabindex="12"'; if (!is_null($userData) && in_array("power-systems", $userData->getSkillAreas())) { echo "checked"; } echo '>power-systems'; echo '<input type="checkbox" name="skill_areas[]" value="computer-vision" tabindex="13"'; if (!is_null($userData) && in_array("computer-vision", $userData->getSkillAreas())) { echo "checked"; } echo '>computer-vision'; echo '<input type="checkbox" name="skill_areas[]" value="ultrasonic" tabindex="14"'; if (!is_null($userData) && in_array("ultrasonic", $userData->getSkillAreas())) { echo "checked"; } echo '>ultrasonic'; echo '<input type="checkbox" name="skill_areas[]" value="infrared" tabindex="15"'; if (!is_null($userData) && in_array("infrared", $userData->getSkillAreas())) { echo "checked"; } echo '>infrared'; echo '<input type="checkbox" name="skill_areas[]" value="gps" tabindex="16"'; if (!is_null($userData) && in_array("gps", $userData->getSkillAreas())) { echo "checked"; } echo '>GPS'; echo '<input type="checkbox" name="skill_areas[]" value="compass" tabindex="17"'; if (!is_null($userData) && in_array("compass", $userData->getSkillAreas())) { echo "checked"; } echo '>compass' . "\n"; echo '</fieldset><br>' . "\n"; echo 'Profile Picture: <input type="file" name="profile_pic" accept="image/*" tabindex="18">'; if (!is_null($userData)) { echo $userData->getError('profile_pic'); } echo '<br><br>'; echo 'Started Robotics: <input type="date" name="started_hobby" min="1970-01-01" max="'; echo 'date("Y-m-d")'; echo 'tabindex="19"'; if (!is_null($userData) && !empty($userData->getStartedHobby())) { echo 'value="' . $userData->getStartedHobby() . '"'; } echo '>' . "\n"; if (!is_null($userData)) { echo $userData->getError('started_hobby'); } echo '<br><br>'; echo 'Favorite Color: <input type="color" name="fav_color" tabindex="20"'; if (!is_null($userData) && !empty($userData->getFavColor())) { echo 'value="' . $userData->getFavColor() . '"'; } echo '>' . "\n"; if (!is_null($userData)) { echo $userData->getError('fav_color'); } echo '<br><br>' . "\n"; echo 'URL: <input type="url" name="url" tabindex="21"'; if (!is_null($userData)) { echo 'value="' . $userData->getUrl() . '"'; } echo '>'; if (!is_null($userData)) { echo $userData->getError('url'); } echo '<br><br>' . "\n"; echo 'Telephone: <input type="tel" name="phone" tabindex="22"'; if (!is_null($userData)) { echo 'value="' . $userData->getPhone() . '"'; } echo '>' . "\n"; if (!is_null($userData)) { echo $userData->getError('phone'); } echo '<br><br>' . "\n"; echo '<p><input type="submit" name="submit" value="Submit">'; echo '</form>'; MasterView::showFooter(); MasterView::showPageEnd(); }
// include_once("../models/Skill.class.php"); // include_once("../models/UserDataDB.class.php"); // include_once("../models/Database.class.php"); ?> <h2>It should call show() without crashing</h2> <?php $validUserData = array("user_name" => "Admiral_Ackbar", "skill_level" => "expert", "skill_areas" => array("system-design", "programming", "wiring"), "profile_pic" => "ackbar.jpg", "started_hobby" => "1983-05", "fav_color" => "#ff0000", "url" => "http://www.itsatrap.com", "phone" => "210-458-4436"); $sampleUser = new UserData($validUserData); ProfileView::show($sampleUser); ?> <h2>It should print all user information</h2> <?php $allUsers = UsersDB::getUsersBy(); foreach ($allUsers as $user) { //print username and pass echo '<p>'; echo 'User: '******'UserData: '; $userData = UserDataDB::getUserDataBy('userId', $user->getUserId()); print_r($userData); //print robots echo '</p>'; } ?> </body> </html>
?> <h2>It should allow a new valid user data to be added for a new user</h2> <?php makeDB('botspacetest'); Database::clearDB(); $db = Database::getDB('botspacetest'); echo "Number of user data in db before adding is: " . count(UserDataDB::getUserDataBy()) . "<br>"; $validTestUser = array("email" => "*****@*****.**", "password" => "validpassword"); $user = new User($validTestUser); $userId = UsersDB::addUser($user); $validTestUserData = array("user_name" => "newbie-user", "skill_level" => "novice", "skill_areas" => array("computer-vision", "soldering", "circuit-design"), "profile_pic" => "no-picture.jpg", "started_hobby" => "2015-10", "fav_color" => "#ff8000", "url" => "http://www.wired.com", "phone" => "210-555-1234"); $userData = new UserData($validTestUserData); $userData->setUserId($userId); $userDataId = UserDataDB::addUserData($userData); echo "Number of user data in db after adding is: " . count(UserDataDB::getUserDataBy()) . "<br>"; echo "UserData ID of new user is: {$userDataId}"; ?> <h2>It should not allow invalid user data to be added</h2> <h2>It should allow user data to be edited for an existing user</h2> <h2>It should not allow user data to be added for a nonexistent user</h2> <h2>It should not get user data not in UserData</h2>