/api/index.php
PHP | 153 lines | 127 code | 15 blank | 11 comment | 0 complexity | fd16766c712f3b5c3467e67ec49af53b MD5 | raw file
- <?php
- require 'Slim/Slim.php';
- require 'php-activerecord/ActiveRecord.php';
- require 'utilities/Utilities.php';
- ActiveRecord\Config::initialize(function($cfg)
- {
- $cfg->set_model_directory('models');
- $cfg->set_connections
- ( array
- (
- 'development' => 'mysql://root:root@localhost/cellar'
- )
- );
- });
- $app = new Slim();
- $app->get('/wines', 'getWines');
- $app->get('/wines/:id', 'getWine');
- $app->get('/wines/search/:query', 'findByName');
- $app->post('/wines', 'addWine');
- $app->put('/wines/:id', 'updateWine');
- $app->delete('/wines/:id', 'deleteWine');
- $app->run();
- function getWines() {
- try {
- $utility = new Utilities();
- $dataObjects = Wine::find('all');
- echo '[{"wine": ' . json_encode($utility->convertMultiplePhpActiveRecordObjectsToArray($dataObjects)) . '}]'; // sending an array back to match both origional and CanJS code
- //echo json_encode($utility->convertMultiplePhpActiveRecordObjectsToArray($dataObjects));
- } catch (\ActiveRecord\RecordNotFound $e) {
- echo '{"error":{"text":'. $e->getMessage() .'}}';
- }
- /* $sql = "select * FROM wine ORDER BY name";
- try {
- $db = getConnection();
- $stmt = $db->query($sql);
- $wines = $stmt->fetchAll(PDO::FETCH_OBJ);
- $db = null;
- echo '{"wine": ' . json_encode($wines) . '}';
- } catch(PDOException $e) {
- echo '{"error":{"text":'. $e->getMessage() .'}}';
- }*/
- }
- function getWine($id) {
- $sql = "SELECT * FROM wine WHERE id=:id";
- try {
- $db = getConnection();
- $stmt = $db->prepare($sql);
- $stmt->bindParam("id", $id);
- $stmt->execute();
- $wine = $stmt->fetchObject();
- $db = null;
- echo json_encode($wine);
- } catch(PDOException $e) {
- echo '{"error":{"text":'. $e->getMessage() .'}}';
- }
- }
- function addWine() {
- error_log('addWine\n', 3, '/var/tmp/php.log');
- $request = Slim::getInstance()->request();
- $wine = json_decode($request->getBody());
- $sql = "INSERT INTO wine (name, grapes, country, region, year, description) VALUES (:name, :grapes, :country, :region, :year, :description)";
- try {
- $db = getConnection();
- $stmt = $db->prepare($sql);
- $stmt->bindParam("name", $wine->name);
- $stmt->bindParam("grapes", $wine->grapes);
- $stmt->bindParam("country", $wine->country);
- $stmt->bindParam("region", $wine->region);
- $stmt->bindParam("year", $wine->year);
- $stmt->bindParam("description", $wine->description);
- $stmt->execute();
- $wine->id = $db->lastInsertId();
- $db = null;
- echo json_encode($wine);
- } catch(PDOException $e) {
- error_log($e->getMessage(), 3, '/var/tmp/php.log');
- echo '{"error":{"text":'. $e->getMessage() .'}}';
- }
- }
- function updateWine($id) {
- $request = Slim::getInstance()->request();
- $body = $request->getBody();
- $wine = json_decode($body);
- $sql = "UPDATE wine SET name=:name, grapes=:grapes, country=:country, region=:region, year=:year, description=:description WHERE id=:id";
- try {
- $db = getConnection();
- $stmt = $db->prepare($sql);
- $stmt->bindParam("name", $wine->name);
- $stmt->bindParam("grapes", $wine->grapes);
- $stmt->bindParam("country", $wine->country);
- $stmt->bindParam("region", $wine->region);
- $stmt->bindParam("year", $wine->year);
- $stmt->bindParam("description", $wine->description);
- $stmt->bindParam("id", $id);
- $stmt->execute();
- $db = null;
- echo json_encode($wine);
- } catch(PDOException $e) {
- echo '{"error":{"text":'. $e->getMessage() .'}}';
- }
- }
- function deleteWine($id) {
- $sql = "DELETE FROM wine WHERE id=:id";
- try {
- $db = getConnection();
- $stmt = $db->prepare($sql);
- $stmt->bindParam("id", $id);
- $stmt->execute();
- $db = null;
- } catch(PDOException $e) {
- echo '{"error":{"text":'. $e->getMessage() .'}}';
- }
- }
- function findByName($query) {
- $sql = "SELECT * FROM wine WHERE UPPER(name) LIKE :query ORDER BY name";
- try {
- $db = getConnection();
- $stmt = $db->prepare($sql);
- $query = "%".$query."%";
- $stmt->bindParam("query", $query);
- $stmt->execute();
- $wines = $stmt->fetchAll(PDO::FETCH_OBJ);
- $db = null;
- echo '{"wine": ' . json_encode($wines) . '}';
- } catch(PDOException $e) {
- echo '{"error":{"text":'. $e->getMessage() .'}}';
- }
- }
- function getConnection() {
- $dbhost="localhost";
- $dbuser="root";
- $dbpass="root";
- $dbname="cellar";
- $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
- $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- return $dbh;
- }
- ?>