Page Menu
Home
DevCentral
Search
Configure Global Search
Log In
Files
F24893974
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
10 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/workspaces/src/includes/ObjectDeserializable.php b/workspaces/src/Engines/Serialization/ObjectDeserializable.php
similarity index 62%
rename from workspaces/src/includes/ObjectDeserializable.php
rename to workspaces/src/Engines/Serialization/ObjectDeserializable.php
index 39e55c1..48b5e56 100644
--- a/workspaces/src/includes/ObjectDeserializable.php
+++ b/workspaces/src/Engines/Serialization/ObjectDeserializable.php
@@ -1,30 +1,35 @@
<?php
/**
* _, __, _, _ __, _ _, _, _
* / \ |_) (_ | | \ | /_\ |\ |
* \ / |_) , ) | |_/ | | | | \|
* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
*
- * ObjectDeserializable and ObjectDeserializableWithContext interfaces
+ * ObjectDeserializable interface
*
* @package ObsidianWorkspaces
* @subpackage Keruald
* @author Sébastien Santoro aka Dereckson <dereckson@espace-win.org>
* @license http://www.opensource.org/licenses/bsd-license.php BSD
* @filesource
*
*/
+namespace Waystone\Workspaces\Engines\Serialization;
+
/**
* ObjectDeserializable interface
*/
interface ObjectDeserializable {
+
/**
- * Loads a specified class instance from a generic object. Typically used to deserialize a JSON document.
+ * Loads a specified class instance from a generic object.
+ * Typically used to deserialize a JSON document.
*
* @param object $data The object to deserialize
- * @return object The deserialized instance
+ *
+ * @return self The deserialized instance
*/
- public static function loadFromObject ($data);
+ public static function loadFromObject (object $data) : self;
}
diff --git a/workspaces/src/includes/autoload.php b/workspaces/src/includes/autoload.php
index 6e00cba..a5f00d7 100644
--- a/workspaces/src/includes/autoload.php
+++ b/workspaces/src/includes/autoload.php
@@ -1,106 +1,105 @@
<?php
/**
* _, __, _, _ __, _ _, _, _
* / \ |_) (_ | | \ | /_\ |\ |
* \ / |_) , ) | |_/ | | | | \|
* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
*
* Classes and interfaces auto loader
*
* @package ObsidianWorkspaces
* @filesource
*/
/**
* This SPL autoloader method is called when a class or an interface can't be loaded.
*/
function obsidian_autoload ($name) {
$dir = dirname(__DIR__);
///
/// Applications
///
if ($name == 'Document') { require $dir . '/apps/documents/Document.php'; return true; }
if ($name == 'DocumentsApplication') { require $dir . '/apps/documents/DocumentsApplication.php'; return true; }
if ($name == 'DocumentsApplicationConfiguration') { require $dir . '/apps/documents/DocumentsApplicationConfiguration.php'; return true; }
if ($name == 'DocumentType') { require $dir . '/apps/documents/DocumentType.php'; return true; }
if ($name == 'HelloWorldApplication') { require $dir . '/apps/helloworld/HelloWorldApplication.php'; return true; }
if ($name == 'MediaWikiMirrorApplication') { require $dir . '/apps/mediawikimirror/MediaWikiMirrorApplication.php'; return true; }
if ($name == 'MediaWikiMirrorApplicationConfiguration') { require $dir . '/apps/mediawikimirror/MediaWikiMirrorApplicationConfiguration.php'; return true; }
if ($name == 'StaticContentApplication') { require $dir . '/apps/staticcontent/StaticContentApplication.php'; return true; }
if ($name == 'StaticContentApplicationConfiguration') { require $dir . '/apps/staticcontent/StaticContentApplicationConfiguration.php'; return true; }
///
/// Core controllers
///
if ($name == 'ErrorPageController') { require $dir . '/controllers/errorpage.php'; return true; }
if ($name == 'FooterController') { require $dir . '/controllers/footer.php'; return true; }
if ($name == 'HeaderController') { require $dir . '/controllers/header.php'; return true; }
if ($name == 'HomepageController') { require $dir . '/controllers/home.php'; return true; }
///
/// Keruald and Obsidian Workspaces libraries
///
if ($name == 'Events') { require $dir . '/includes/Events.php'; return true; }
if ($name == 'LoadableWithContext') { require $dir . '/includes/LoadableWithContext.php'; return true; }
- if ($name == 'ObjectDeserializable') { require $dir . '/includes/ObjectDeserializable.php'; return true; }
if ($name == 'Application') { require $dir . '/includes/apps/Application.php'; return true; }
if ($name == 'ApplicationConfiguration') { require $dir . '/includes/apps/ApplicationConfiguration.php'; return true; }
if ($name == 'ApplicationContext') { require $dir . '/includes/apps/ApplicationContext.php'; return true; }
if ($name == 'AddToGroupUserAction') { require $dir . '/includes/auth/AddToGroupUserAction.php'; return true; }
if ($name == 'AuthenticationMethod') { require $dir . '/includes/auth/AuthenticationMethod.php'; return true; }
if ($name == 'AzharProvider') { require $dir . '/includes/auth/AzharProvider.php'; return true; }
if ($name == 'GivePermissionUserAction') { require $dir . '/includes/auth/GivePermissionUserAction.php'; return true; }
if ($name == 'UserAction') { require $dir . '/includes/auth/UserAction.php'; return true; }
if ($name == 'Cache') { require $dir . '/includes/cache/cache.php'; return true; }
if ($name == 'CacheMemcached') { require $dir . '/includes/cache/memcached.php'; return true; }
if ($name == 'CacheVoid') { require $dir . '/includes/cache/void.php'; return true; }
if ($name == 'Collection') { require $dir . '/includes/collection/Collection.php'; return true; }
if ($name == 'CollectionDocument') { require $dir . '/includes/collection/CollectionDocument.php'; return true; }
if ($name == 'FilesCollection') { require $dir . '/includes/collection/FilesCollection.php'; return true; }
if ($name == 'MongoDBCollection') { require $dir . '/includes/collection/MongoDBCollection.php'; return true; }
if ($name == 'MongoDBCollectionIterator') { require $dir . '/includes/collection/MongoDBCollectionIterator.php'; return true; }
if ($name == 'MySQLCollection') { require $dir . '/includes/collection/MySQLCollection.php'; return true; }
if ($name == 'SQLiteCollection') { require $dir . '/includes/collection/SQLiteCollection.php'; return true; }
if ($name == 'SQLCollection') { require $dir . '/includes/collection/SQLCollection.php'; return true; }
if ($name == 'Context') { require $dir . '/includes/controller/Context.php'; return true; }
if ($name == 'Controller') { require $dir . '/includes/controller/Controller.php'; return true; }
if ($name == 'RunnableWithContext') { require $dir . '/includes/controller/RunnableWithContext.php'; return true; }
if ($name == 'Database') { require $dir . '/includes/database/Database.php'; return true; }
if ($name == 'DatabaseException') { require $dir . '/includes/database/DatabaseException.php'; return true; }
if ($name == 'DatabaseResult') { require $dir . '/includes/database/DatabaseResult.php'; return true; }
if ($name == 'EmptyDatabaseResult') { require $dir . '/includes/database/EmptyDatabaseResult.php'; return true; }
if ($name == 'MySQLDatabase') { require $dir . '/includes/database/MySQLDatabase.php'; return true; }
if ($name == 'MySQLDatabaseResult') { require $dir . '/includes/database/MySQLDatabaseResult.php'; return true; }
if ($name == 'MySQLiDatabase') { require $dir . '/includes/database/MySQLiDatabase.php'; return true; }
if ($name == 'MySQLiDatabaseResult') { require $dir . '/includes/database/MySQLiDatabaseResult.php'; return true; }
if ($name == 'Language') { require $dir . '/includes/i18n/Language.php'; return true; }
if ($name == 'Message') { require $dir . '/includes/i18n/Message.php'; return true; }
if ($name == 'TextFileMessage') { require $dir . '/includes/i18n/TextFileMessage.php'; return true; }
if ($name == 'Disclaimer') { require $dir . '/includes/objects/Disclaimer.php'; return true; }
if ($name == 'Permission') { require $dir . '/includes/objects/Permission.php'; return true; }
if ($name == 'User') { require $dir . '/includes/objects/user.php'; return true; }
if ($name == 'UserGroup') { require $dir . '/includes/objects/usergroup.php'; return true; }
if ($name == 'Workspace') { require $dir . '/includes/workspaces/Workspace.php'; return true; }
if ($name == 'WorkspaceConfiguration') { require $dir . '/includes/workspaces/WorkspaceConfiguration.php'; return true; }
return false;
}
spl_autoload_register('obsidian_autoload');
diff --git a/workspaces/src/includes/collection/CollectionDocument.php b/workspaces/src/includes/collection/CollectionDocument.php
index e151325..9a448b1 100644
--- a/workspaces/src/includes/collection/CollectionDocument.php
+++ b/workspaces/src/includes/collection/CollectionDocument.php
@@ -1,57 +1,59 @@
<?php
/**
* _, __, _, _ __, _ _, _, _
* / \ |_) (_ | | \ | /_\ |\ |
* \ / |_) , ) | |_/ | | | | \|
* ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
*
* Collection document class
*
* @package ObsidianWorkspaces
* @subpackage Collection
* @author Sébastien Santoro aka Dereckson <dereckson@espace-win.org>
* @license http://www.opensource.org/licenses/bsd-license.php BSD
* @filesource
*/
- /**
+use Waystone\Workspaces\Engines\Serialization\ObjectDeserializable;
+
+/**
* Collection document class
*
* This class represents a document, inside a collection.
*/
class CollectionDocument implements JsonSerializable, ObjectDeserializable {
/**
* @var string The document identifier
*/
public $id = '';
/**
* Specifies data which should be serialized to JSON
*
* @return moxed data which can be serialized by json_encode()
*/
public function jsonSerialize () {
return $this;
}
/**
* Loads a CollectionDocument instance from a generic object.
*
* @param object $data The object to deserialize
* @return object The deserialized instance
*/
public static function loadFromObject ($data) {
$instance = new static;
foreach ($data as $key => $value) {
if ($key == '_id') {
//Kludge to let MongoCollection directly use this method
//without having to create an intermediary object or to
//browse each property twice, one to substitute _id, then here.
$instance->id = $value;
}
$instance->$key = $value;
}
return $instance;
}
}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Wed, Mar 18, 12:33 (1 d, 13 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3539656
Default Alt Text
(10 KB)
Attached To
Mode
rOBSIDIAN Obsidian Workspaces
Attached
Detach File
Event Timeline
Log In to Comment