summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--db/entity.php70
-rw-r--r--db/item.php57
-rw-r--r--tests/db/EntityTest.php24
3 files changed, 84 insertions, 67 deletions
diff --git a/db/entity.php b/db/entity.php
index 58c42cca7..1adf9b518 100644
--- a/db/entity.php
+++ b/db/entity.php
@@ -27,11 +27,9 @@ namespace OCA\News\Db;
abstract class Entity {
- public $id;
-
+ public $id;
private $updatedFields;
-
public function __construct(){
$this->updatedFields = array();
}
@@ -44,10 +42,61 @@ abstract class Entity {
* getter method
*/
public function __call($methodName, $args){
- if(startsWith($methodName, 'set')){
- $setterPart = substr($methodName, 2);
- array_push($this->updatedFields, $setterPart);
+ if(strpos($methodName, 'set') === 0){
+ $setterPart = substr($methodName, 3);
+ $attr = lcfirst($setterPart);
+
+ // mark as accessed
+ array_push($this->updatedFields, $attr);
+ $this->$attr = $args[0];
+
+ } elseif(strpos($methodName, 'get') === 0) {
+ $getterPart = substr($methodName, 3);
+ $attr = lcfirst($getterPart);
+ return $this->$attr;
+ }
+ }
+
+
+ /**
+ * Transform a database columnname to a property
+ * @param string $columnName the name of the column
+ * @return string the property name
+ */
+ public function columnToProperty($columnName){
+ $parts = explode('_', $columnName);
+ $property = null;
+
+ foreach($parts as $part){
+ if($property === null){
+ $property = $part;
+ } else {
+ $property .= ucfirst($part);
+ }
+ }
+
+ return $property;
+ }
+
+
+ /**
+ * Transform a property to a database column name
+ * @param string $property the name of the property
+ * @return string the column name
+ */
+ public function propertyToColumn($property){
+ $parts = preg_split('/(?=[A-Z])/', $property);
+ $column = null;
+
+ foreach($parts as $part){
+ if($column === null){
+ $column = $part;
+ } else {
+ $column .= '_' . lcfirst($part);
+ }
}
+
+ return $column;
}
@@ -70,13 +119,4 @@ abstract class Entity {
}
- public function setId($id){
- $this->id = $id;
- }
-
-
- public function getId(){
- return $this->id;
- }
-
} \ No newline at end of file
diff --git a/db/item.php b/db/item.php
index ee25ab122..ad245d486 100644
--- a/db/item.php
+++ b/db/item.php
@@ -16,61 +16,14 @@ namespace OCA\News\Db;
class Item extends Entity {
public $url;
- public $feed_id;
+ public $title;
public $guid;
+ public $body;
public $status;
- public $title;
+ public $author;
+ public $date;
public $feedTitle;
-
-
- public function setUrl($url) {
- $this->url = $url;
- }
-
- public function getUrl() {
- return $this->url;
- }
-
- public function setFeedId($feed_id) {
- $this->feed_id = $feed_id;
- }
-
- public function getFeedId() {
- return $this->feed_id;
- }
-
- public function setGUID($guid) {
- $this->guid = $guid;
- }
-
- public function getGUID() {
- return $this->guid;
- }
-
- public function setStatus($status) {
- $this->status = $status;
- }
-
- public function getStatus() {
- return $this->status;
- }
-
- public function getTitle() {
- return $this->title;
- }
-
- public function setTitle($title) {
- $this->title = $title;
- }
-
- public function getFeedTitle() {
- return $this->feedTitle;
- }
-
- public function setFeedTitle($feedtitle) {
- $this->feedTitle = $feedtitle;
- }
-
+ public $enclosure;
}
diff --git a/tests/db/EntityTest.php b/tests/db/EntityTest.php
index 3e778d4fe..44f288a04 100644
--- a/tests/db/EntityTest.php
+++ b/tests/db/EntityTest.php
@@ -64,6 +64,30 @@ class EntityTest extends \PHPUnit_Framework_TestCase {
}
+ public function testColumnToPropertyNoReplacement(){
+ $column = 'my';
+ $entity = new TestEntity();
+ $this->assertEquals('my',
+ $entity->columnToProperty($column));
+ }
+
+
+ public function testColumnToProperty(){
+ $column = 'my_attribute';
+ $entity = new TestEntity();
+ $this->assertEquals('myAttribute',
+ $entity->columnToProperty($column));
+ }
+
+
+ public function testPropertyToColumnNoReplacement(){
+ $property = 'my';
+ $entity = new TestEntity();
+ $this->assertEquals('my',
+ $entity->propertyToColumn($property));
+ }
+
+
public function testSetterMarksFieldUpdated(){
$id = 3;
$entity = new TestEntity();