aggiunto metodo per salvare i media con file associato
correzioni varie al dao/model quando usano campo id/_id
This commit is contained in:
@@ -16,8 +16,10 @@ abstract class DaoSaveableDefaultImplementation implements DaoSaveable {
|
||||
}
|
||||
|
||||
public function __set($attr,$value){
|
||||
if (strcmp($attr,"id")==0){
|
||||
$attr = "_id";
|
||||
if (strcmp($attr,"id")==0 || strcmp($attr,"_id")==0){
|
||||
if (strcmp($attr,"id")==0){
|
||||
$attr = "_id";
|
||||
}
|
||||
if (!($value instanceof MongoId)){
|
||||
$value = new MongoId($value);
|
||||
}
|
||||
@@ -26,10 +28,23 @@ abstract class DaoSaveableDefaultImplementation implements DaoSaveable {
|
||||
}
|
||||
|
||||
public function &__get($attr){
|
||||
if (strcmp($attr,"id")==0){
|
||||
$attr = "_id";
|
||||
$rval = null;
|
||||
if (strcmp($attr,"id")==0 || strcmp($attr,"_id")==0){
|
||||
if (strcmp($attr,"id")==0){
|
||||
$attr = "_id";
|
||||
}
|
||||
if ($this->hasProperty($attr)){
|
||||
$idf = '$id';
|
||||
$rval = &$this->saveableObject->$attr->$idf;
|
||||
}
|
||||
else {
|
||||
$rval = null;
|
||||
}
|
||||
}
|
||||
$rval = &$this->saveableObject->$attr;
|
||||
else {
|
||||
$rval = &$this->saveableObject->$attr;
|
||||
}
|
||||
|
||||
return $rval;
|
||||
}
|
||||
|
||||
|
||||
@@ -58,6 +58,10 @@ class GenericDao{
|
||||
unset($useFilter["id"]);
|
||||
}
|
||||
|
||||
if (array_key_exists("_id",$useFilter) && is_string($useFilter["_id"])){
|
||||
$useFilter["_id"] = new MongoId($useFilter["_id"]);
|
||||
}
|
||||
|
||||
$cursor = $collection->find($useFilter);
|
||||
|
||||
if (array_key_exists("sort",$options)){
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<?php
|
||||
|
||||
class DaoMediaHandler implements MediaHandlerInterface{
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -152,6 +151,17 @@ class DaoMediaHandler implements MediaHandlerInterface{
|
||||
return $tmp;
|
||||
}
|
||||
|
||||
|
||||
public static function createNewFileBasedMedia($saveableObj, $filePath){
|
||||
$basepath = GlobalVariables::get("config")->paths->media;
|
||||
$info = pathinfo($filePath);
|
||||
$media = new MediaModel($saveableObj);
|
||||
$media->extension = $info["extension"];
|
||||
GlobalVariables::get("dao")->save($media);
|
||||
SFSManager::copyFile($filePath, $basepath."/".$media->id.".".$media->extension);
|
||||
return $media;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -21,22 +21,31 @@ class MediaModel extends Model implements MediaInterface{
|
||||
|
||||
public function __construct($saveableObject = null){
|
||||
parent::__construct($saveableObject);
|
||||
$this->setMediaRenderer();
|
||||
}
|
||||
|
||||
public function setMediaRenderer(){
|
||||
if($this->hasProperty("mediaType")){
|
||||
if ($this->mediaType == self::TYPE_HTML5){
|
||||
$this->mediaRenderer = new MediaHtml5($this);
|
||||
if ($this->hasProperty("code")){
|
||||
$this->mediaRenderer = new MediaHtml5($this->code);
|
||||
}
|
||||
else {
|
||||
throw new MediaException("Media of type 'HTML5' has no code field");
|
||||
}
|
||||
}
|
||||
if ($this->mediaType == self::TYPE_LOCALVIDEO){
|
||||
$this->mediaRenderer = new MediaLocalVideo($this);
|
||||
}
|
||||
if ($this->mediaType == self::TYPE_IMAGE){
|
||||
$this->mediaRenderer = new MediaImage($this);
|
||||
$this->mediaRenderer = new MediaImage($this->id);
|
||||
}
|
||||
if ($this->mediaType == self::TYPE_PDF){
|
||||
$this->mediaRenderer = new MediaPdf($this);
|
||||
}
|
||||
if ($this->mediaType == self::TYPE_YOUTUBE){
|
||||
$this->mediaRenderer = new MediaYoutube($this);
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
throw new MediaException("Missing mediatype for Media in MediaModel construct");
|
||||
@@ -72,6 +81,9 @@ class MediaModel extends Model implements MediaInterface{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
|
||||
public function updateFromSaveableObj($saveableObject){
|
||||
parent::updateFromSaveableObj($saveableObject);
|
||||
$this->setMediaRenderer();
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,14 +1,14 @@
|
||||
<?php
|
||||
|
||||
class MediaHtml5 implements MediaRendererInterface{
|
||||
private $modelRef;
|
||||
private $code;
|
||||
|
||||
public function __construct(MediaModel $model){
|
||||
$this->modelRef = $model;
|
||||
public function __construct($code){
|
||||
$this->code = $code;
|
||||
}
|
||||
|
||||
public function asText(){
|
||||
return $this->modelRef->code;
|
||||
return $this->code;
|
||||
}
|
||||
|
||||
public function render(){
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
<?php
|
||||
class MediaImage implements MediaRendererInterface{
|
||||
private $modelRef;
|
||||
private $id;
|
||||
|
||||
public function __construct(MediaModel $model){
|
||||
$this->modelRef = $model;
|
||||
public function __construct($id){
|
||||
$this->id = $id;
|
||||
}
|
||||
|
||||
public function asText(){
|
||||
return $this->modelRef->path;
|
||||
return '<a href="'.GUIHandler::getBaseUrl().'getImage.php?id='.$this->id.'&size=original">'.
|
||||
'<img src="'.GUIHandler::getBaseUrl().'getImage.php?id='.$this->id.'&size=small"/>'.
|
||||
'</a>';
|
||||
}
|
||||
|
||||
public function render(){
|
||||
|
||||
Reference in New Issue
Block a user