diff --git a/licensing/admin/classes/common/DatabaseObject.php b/licensing/admin/classes/common/DatabaseObject.php index f7a1331cc..7c27624fb 100644 --- a/licensing/admin/classes/common/DatabaseObject.php +++ b/licensing/admin/classes/common/DatabaseObject.php @@ -64,6 +64,15 @@ protected function init(NamedArguments $arguments) { protected function defineRelationships() {} protected function overridePrimaryKeyName() {} + protected function asArray() { + $aarray = array(); + foreach (array_keys($this->attributeNames) as $attributeName) { + if ($this->$attributeName != null) { + $aarray[$attributeName] = $this->$attributeName; + } + } + return $aarray; + } protected function defineAttributes() { // Figure out attributes from existing database @@ -298,4 +307,4 @@ public function load() { } -?> \ No newline at end of file +?> diff --git a/licensing/admin/classes/domain/Document.php b/licensing/admin/classes/domain/Document.php index 5b956d7d2..cfde84763 100644 --- a/licensing/admin/classes/domain/Document.php +++ b/licensing/admin/classes/domain/Document.php @@ -23,6 +23,18 @@ protected function defineRelationships() {} protected function overridePrimaryKeyName() {} + public function asArray() { + $aarray = array(); + foreach (array_keys($this->attributeNames) as $attributeName) { + if ($this->$attributeName != null) { + $aarray[$attributeName] = $this->$attributeName; + } + } + $documentType = new DocumentType(new NamedArguments(array("primaryKey" => $this->documentTypeID))); + $aarray['documentType'] = $documentType->shortName; + return $aarray; + } + //returns 1 or 0 indicating if this particular document has children agreements public function getNumberOfChildren(){ @@ -248,4 +260,4 @@ public function getExpressionsForDisplay(){ } -?> \ No newline at end of file +?> diff --git a/licensing/admin/classes/domain/Expression.php b/licensing/admin/classes/domain/Expression.php index 5b7d9f8cb..80e907b1d 100644 --- a/licensing/admin/classes/domain/Expression.php +++ b/licensing/admin/classes/domain/Expression.php @@ -23,7 +23,17 @@ protected function defineRelationships() {} protected function overridePrimaryKeyName() {} - + public function asArray() { + $aarray = array(); + foreach (array_keys($this->attributeNames) as $attributeName) { + if ($this->$attributeName != null) { + $aarray[$attributeName] = $this->$attributeName; + } + } + $expressionType = new ExpressionType(new NamedArguments(array("primaryKey" => $this->expressionTypeID))); + $aarray['expressionType'] = $expressionType->shortName; + return $aarray; + } diff --git a/licensing/admin/classes/domain/ExpressionNote.php b/licensing/admin/classes/domain/ExpressionNote.php index f5e7b3afb..1d9dfe348 100644 --- a/licensing/admin/classes/domain/ExpressionNote.php +++ b/licensing/admin/classes/domain/ExpressionNote.php @@ -23,6 +23,17 @@ protected function defineRelationships() {} protected function overridePrimaryKeyName() {} + public function asArray() { + $aarray = array(); + foreach (array_keys($this->attributeNames) as $attributeName) { + if ($this->$attributeName != null) { + $aarray[$attributeName] = $this->$attributeName; + } + } + return $aarray; + // return parent::asArray(); + } + //reorders expression note based on direction the user clicked @@ -67,4 +78,4 @@ public function reorder($dir, $oldSeq){ } -?> \ No newline at end of file +?> diff --git a/licensing/admin/classes/domain/License.php b/licensing/admin/classes/domain/License.php index 21cf4fcf3..00a9f6674 100644 --- a/licensing/admin/classes/domain/License.php +++ b/licensing/admin/classes/domain/License.php @@ -23,6 +23,33 @@ protected function defineRelationships() {} protected function overridePrimaryKeyName() {} + public function asArray() { + $larray = array(); + foreach (array_keys($this->attributeNames) as $attributeName) { + if ($this->$attributeName != null) { + $larray[$attributeName] = $this->$attributeName; + } + } + $doccount = 0; + foreach ($this->getDocuments() as $document) { + $larray['documents'][$doccount]['content'] = $document->asArray();; + $exprcount = 0; + foreach ($document->getExpressions() as $expression) { + $expressionType = new ExpressionType(new NamedArguments(array('primaryKey' => $expression->expressionTypeID))); + if ($expressionType->noteType == "Display") { + $larray['documents'][$doccount]['expressions'][$exprcount]['content'] = $expression->asArray(); + $notescount = 0; + foreach ($expression->getExpressionNotes() as $expressionNote) { + $larray['documents'][$doccount]['expressions'][$exprcount]['notes'][$notescount] = $expressionNote->asArray();; + $notescount++; + } + $exprcount++; + } + } + $doccount++; + } + return $larray; + } //returns array of Document objects - used by forms to get dropdowns of available documents @@ -51,7 +78,6 @@ public function getDocuments(){ array_push($objects, $object); } } - return $objects; } diff --git a/management/admin/classes/domain/Document.php b/management/admin/classes/domain/Document.php index 0961a4bb3..a7ceaa108 100644 --- a/management/admin/classes/domain/Document.php +++ b/management/admin/classes/domain/Document.php @@ -248,4 +248,4 @@ public function getExpressionsForDisplay(){ } -?> \ No newline at end of file +?> diff --git a/organizations/admin/classes/domain/Organization.php b/organizations/admin/classes/domain/Organization.php index 0b9827236..6e7923c60 100644 --- a/organizations/admin/classes/domain/Organization.php +++ b/organizations/admin/classes/domain/Organization.php @@ -24,6 +24,23 @@ protected function defineRelationships() {} protected function overridePrimaryKeyName() {} + public function asArray() { + $rarray = array(); + foreach (array_keys($this->attributeNames) as $attributeName) { + if ($this->$attributeName != null) { + $rarray[$attributeName] = $this->$attributeName; + } + } + + $aliases = $this->getAliases(); + $rarray['aliases'] = array(); + foreach ($aliases as $alias) { + array_push($rarray['aliases'], $alias->name); + } + + return $rarray; + } + //returns array of parent organization objects diff --git a/resources/admin/classes/common/DBService.php b/resources/admin/classes/common/DBService.php index 4cbc77ffb..d6970fdd6 100644 --- a/resources/admin/classes/common/DBService.php +++ b/resources/admin/classes/common/DBService.php @@ -22,6 +22,19 @@ class DBService extends Object { protected $db; protected $config; protected $error; + private static $_instance; //The single instance + + +/* + Get an instance of the Database + @return Instance + */ + public static function getInstance() { + if(!self::$_instance) { // If no instance then make one + self::$_instance = new self(); + } + return self::$_instance; + } protected function init(NamedArguments $arguments) { parent::init($arguments); @@ -53,6 +66,11 @@ protected function connect() { $this->checkForError(); } + public function changeDb($name = null) { + $dbName = ($name == null) ? $this->config->database->name : $this->config->settings->$name; + $this->db->select_db($dbName); + } + protected function disconnect() { //mysqli_close($this->db); } diff --git a/resources/admin/classes/common/DatabaseObject.php b/resources/admin/classes/common/DatabaseObject.php index 4fafa6b45..dff15fb6c 100644 --- a/resources/admin/classes/common/DatabaseObject.php +++ b/resources/admin/classes/common/DatabaseObject.php @@ -52,10 +52,10 @@ protected function init(NamedArguments $arguments) { $this->primaryKeyName = $arguments->primaryKeyName; $this->primaryKey = $arguments->primaryKey; - $this->db = new DBService; + $this->db = DBService::getInstance();; $arguments->setDefaultValueForArgumentName('db',false); - $this->db = $arguments->db ? $arguments->db : new DBService; + $this->db = $arguments->db ? $arguments->db : DBService::getInstance(); $this->defineRelationships(); //$this->defineAttributes(); //now performed in load @@ -309,4 +309,4 @@ public function load() { } -?> \ No newline at end of file +?> diff --git a/resources/admin/classes/domain/Organization.php b/resources/admin/classes/domain/Organization.php index 2bf8f72a1..18cd27251 100644 --- a/resources/admin/classes/domain/Organization.php +++ b/resources/admin/classes/domain/Organization.php @@ -24,7 +24,15 @@ protected function defineRelationships() {} protected function overridePrimaryKeyName() {} - + public function asArray() { + $rarray = array(); + foreach (array_keys($this->attributeNames) as $attributeName) { + if ($this->$attributeName != null) { + $rarray[$attributeName] = $this->$attributeName; + } + } + return $rarray; + } //returns number of children for this particular contact role public function getNumberOfChildren(){ diff --git a/resources/admin/classes/domain/Resource.php b/resources/admin/classes/domain/Resource.php index 0675b5625..14780f3f8 100644 --- a/resources/admin/classes/domain/Resource.php +++ b/resources/admin/classes/domain/Resource.php @@ -25,8 +25,43 @@ protected function defineIsbnOrIssn() {} protected function overridePrimaryKeyName() {} + public function asArray() { + $rarray = array(); + foreach (array_keys($this->attributeNames) as $attributeName) { + if ($this->$attributeName != null) { + $rarray[$attributeName] = $this->$attributeName; + } + } + + $status = new Status(new NamedArguments(array('primaryKey' => $this->statusID))); + $rarray['status'] = $status->shortName; + + if ($this->resourceTypeID) { + $resourceType = new ResourceType(new NamedArguments(array('primaryKey' => $this->resourceTypeID))); + $rarray['resourceType'] = $resourceType->shortName; + } + + if ($this->resourceFormatID) { + $resourceFormat = new ResourceFormat(new NamedArguments(array('primaryKey' => $this->resourceFormatID))); + $rarray['resourceFormat'] = $resourceFormat->shortName; + } + + if ($this->acquisitionTypeID) { + $acquisitionType = new AcquisitionType(new NamedArguments(array('primaryKey' => $this->acquisitionTypeID))); + $rarray['acquisitionType'] = $acquisitionType->shortName; + } + $identifiers = $this->getIsbnOrIssn(); + $rarray['isbnOrIssn'] = array(); + foreach ($identifiers as $identifier) { + array_push($rarray['isbnOrIssn'], $identifier->isbnOrIssn); + } + return $rarray; + + + } + //returns resource objects by title public function getResourceByTitle($title) { @@ -141,7 +176,7 @@ private function getRelatedResources($key) { $object = new ResourceRelationship(new NamedArguments(array('primaryKey' => $result['resourceRelationshipID']))); array_push($objects, $object); }else{ - $db = new DBService; + $db = DBService::getInstance(); foreach ($result as $row) { $object = new ResourceRelationship(new NamedArguments(array('primaryKey' => $row['resourceRelationshipID'],'db'=>$db))); array_push($objects, $object); diff --git a/resources/api/index.php b/resources/api/index.php index 52adbb359..773ba5eb9 100644 --- a/resources/api/index.php +++ b/resources/api/index.php @@ -2,30 +2,6 @@ require 'Flight/flight/Flight.php'; include_once '../directory.php'; -include_once '../admin/classes/common/NamedArguments.php'; -include_once '../admin/classes/common/Object.php'; -include_once '../admin/classes/common/DynamicObject.php'; -include_once '../admin/classes/common/Utility.php'; -include_once '../admin/classes/common/Configuration.php'; -include_once '../admin/classes/common/DBService.php'; -include_once '../admin/classes/common/DatabaseObject.php'; -include_once '../admin/classes/common/Email.php'; -include_once '../admin/classes/domain/Resource.php'; -include_once '../admin/classes/domain/ResourceType.php'; -include_once '../admin/classes/domain/AcquisitionType.php'; -include_once '../admin/classes/domain/ResourceFormat.php'; -include_once '../admin/classes/domain/NoteType.php'; -include_once '../admin/classes/domain/ResourceNote.php'; -include_once '../admin/classes/domain/ResourcePayment.php'; -include_once '../admin/classes/domain/AdministeringSite.php'; -include_once '../admin/classes/domain/ResourceAdministeringSiteLink.php'; -include_once '../admin/classes/domain/Status.php'; -include_once '../admin/classes/domain/User.php'; -include_once '../admin/classes/domain/Workflow.php'; -include_once '../admin/classes/domain/Step.php'; -include_once '../admin/classes/domain/ResourceStep.php'; -include_once '../admin/classes/domain/UserGroup.php'; -include_once '../admin/classes/domain/Fund.php'; if (!isAllowed()) { header('HTTP/1.0 403 Forbidden'); @@ -283,6 +259,69 @@ Flight::json($as->shortName); }); +Flight::route('GET /resources/@id', function($id) { + $r = new Resource(new NamedArguments(array('primaryKey' => $id))); + Flight::json($r->asArray()); + +}); + +Flight::route('GET /resources/', function() { + $identifier = Flight::request()->query->identifier; + if ($identifier) { + $r = new Resource(); + Flight::json(array_map(function($value) { return $value->asArray(); }, $r->getResourceByIsbnOrISSN($identifier))); + } +}); + +Flight::route('GET /resources/@id/titles', function($id) { + $r = new Resource(new NamedArguments(array('primaryKey' => $id))); + $childResourceArray = array(); + $childResourceIDArray = array(); + foreach ($r->getChildResources() as $instance) { + foreach (array_keys($instance->attributeNames) as $attributeName) { + $sanitizedInstance[$attributeName] = $instance->$attributeName; + } + $sanitizedInstance[$instance->primaryKeyName] = $instance->primaryKey; + array_push($childResourceIDArray, $sanitizedInstance); + } + + foreach ($childResourceIDArray as $childResource){ + $childResourceObj = new Resource(new NamedArguments(array('primaryKey' => $childResource['resourceID']))); + array_push($childResourceArray, $childResourceObj->asArray()); + } + Flight::json($childResourceArray); +}); + +Flight::route('GET /resources/@id/licenses', function($id) { + $db = DBService::getInstance(); + $r = new Resource(new NamedArguments(array('primaryKey' => $id))); + $licensesArray = array(); + $rla = $r->getLicenseArray(); + $db->changeDb('licensingDatabaseName'); + foreach($rla as $license) { + $l = new License(new NamedArguments(array('primaryKey' => $license['licenseID']))); + array_push($licensesArray, $l->asArray()); + } + $db->changeDb(); + Flight::json($licensesArray); +}); + + +Flight::route('GET /organizations/@id', function($id) { + $config = new Configuration(); + $db = DBService::getInstance(); + if ($config->settings->organizationsModule == 'Y') { + include_once '../../organizations/admin/classes/domain/Organization.php'; + $db->changeDb('organizationsDatabaseName'); + $organization = new Organization(new NamedArguments(array('primaryKey' => $id))); + Flight::json($organization->asArray()); + $db->changeDb(); + } else { + include_once '../admin/classes/domain/Organization.php'; + $organization = new Organization(new NamedArguments(array('primaryKey' => $id))); + Flight::json($organization->asArray()); + } +}); Flight::start();