Alfresco PHP API - Clase para conectar con Alfresco

cancel
Showing results for 
Search instead for 
Did you mean: 
javigarcia
Member II

Alfresco PHP API - Clase para conectar con Alfresco

Buenos días foreros,

tras unos días investigando y recopilando información, ya tengo la api de php para alfresco completa y funcionando. He diseñado una pequeña clase que me sirve para conectar con alfresco que me gustaría compartir con vosotros, ya que gracias a muchos he podido sacar el trabajo adelante.


<?php

/**
* ##### CONEXION ENTRE UNA APLICACION PHP Y UN SERVIDOR ALFRESCO
*        @Fecha: 15 Octubre 2009
*        @Autor: Javier Garcia Marques
*              @Email: javier.garcia.ext@sadiel.es
*        @Version: 1.0
*
* DESCRIPCION
* ================================================================================================================
*      Clase para conectar una aplicacion PHP con un servidor ALFRESCO
*
* REQUISITOS
* ================================================================================================================
*      Libreria PHP-API para Alfresco (Logger, Service, WebService)
*      PHP 5.0
*      Apache server
*      MySQL 5.1.37
*      Alfresco Enterprise 3.0
*              Include path -> include_path= ".C:\php\PEAR;C:\Alfresco"
*
* PATRONES
* ================================================================================================================
*      Uso del patron de diseño Singleton para garantizar la correcta y unica instanciacion de la clase
*
* PROPIEDADES DE CLASE
* ================================================================================================================
*      $istancia         privada y estatica              Guarda la istancia de la clase
*      $repositoryUrl        publica               URL para conectar con Alfresco
*      $userName            publica               Nombre de usuario
*      $password         publica               Contraseña de usuario
*      $ticket         publica               Ticket ID de conexion
*      $session         publica               ID de inicio de sesion Alfresco
*      $repository      publica               Referencia al repositorio de Alfresco
*      $spacesStore      publica               Referencia al Space store de Alfresco
*
* METODOS
* ================================================================================================================
*      getIstance()                        Metodo para obtener la instancia de la clase
*                                    para evitar la duplicacion de objetos (Singleton)
*                                       
*      __construct()                        Constructor. La unica manera de instanciar es con getIstance()
*
*      __clone()                           Metodo para evitar que se puedan clonar istancias.
*
*      connectRepository($url, $user, $pass)                      Metodo para conectar, autentificar y referenciar una sesion
*                                       alfresco y el space store
*                                        Parametros:
*                                           $url  -> Direccion URL donde tengo alojado Alfresco
*                                           $user -> Nombre de usuario de inicio de sesion
*                                           $pass -> Contraseña de usuario de inicio de sesion      
*      Getters:
*         getRepositoryUrl()      getPassword()               getSession()           getSpacesStore()
*         getUserName()         getTicket()         getRepository()           *getInstace()*
*
* ================================================================================================================
* #### USO
* ================================================================================================================
*      require_once "Alfresco/Service/Conexion.php";
*      $conexion = Conexion::getIstance();
*      $conexion->connectRepository("http://localhost:8080/alfresco/api", "admin", "admin");
**/

// Alfresco PHP - API
require_once "Alfresco/Service/Repository.php";
require_once "Alfresco/Service/Session.php";
require_once "Alfresco/Service/SpacesStore.php";

Class Conexion {

   private static $instancia;
   public $repositoryUrl;
   public $userName;
   public $password;
   public $ticket;
   public $session;
   public $repository;
   public $spacesStore;
   
   // Singleton
   public static function getIstance() {
      if (!isset(self::$instancia)) {
         $obj = __CLASS__;
         self::$instancia = new $obj;
      }
      return self::$instancia;
   }
   
   private function __construct() {}
   
   private function __clone() {
      throw new Exception ("Este objeto no se puede clonar");
   }
   
   // Conexion, autenticacion e inicio de sesion
   public function connectRepository($url, $user, $pass) {
      $this->repositoryUrl = $url;
      $this->userName = $user;
      $this->password = $pass;
      $this->repository = new Repository($this->repositoryUrl);
      $this->ticket = $this->repository->authenticate($this->userName, $this->password);
      $this->session = $this->repository->createSession($this->ticket);   
      $this->spacesStore = new SpacesStore($this->session);      
   }
   
   // GETTERS
   public function getRepositoryUrl() {
      return $this->repositoryUrl;
   }
   
   public function getUserName() {
      return $this->userName;
   }
   
   public function getPassword() {
      return $this->password;
   }
   
   public function getTicket() {
      return $this->ticket;
   }
   
   public function getSession() {
      return $this->session;
   }
   
   public function getRepository() {
      return $this->repository;
   }
   
   public function getSpacesStore() {
      return $this->spacesStore;
   }
}
?>

Espero que os sea de utilidad, saludos!!
J
13 Replies
venzia
Senior Member

Re: Alfresco PHP API - Clase para conectar con Alfresco

Hola javi, gracias por el aporte. Puedes crear este post en el apartado general de "Comparte tu codigo"? .. con el mismo titulo y contenido.
Es para mantener centralizado el lugar donde vamos compartiendo tips o "trucos".
Saludos y gracias de nuevo.
javigarcia
Member II

Re: Alfresco PHP API - Clase para conectar con Alfresco

Algún admin online que pueda mover este tema? es que estoy hasta arriba!

Saludos!
J
venzia
Senior Member

Re: Alfresco PHP API - Clase para conectar con Alfresco

javigarcia
Member II

Re: Alfresco PHP API - Clase para conectar con Alfresco

Perfect!!! gracias Smiley Very Happy
javigarcia
Member II

Re: Alfresco PHP API - Clase para conectar con Alfresco

V1.1

Features:

- Añadida la librería contentData.php
- Añadida la variable pública $total_coincidencias
- Añadido el método uploadFile($nodo, $nombre, $titulo, $descripcion, $tipo, $file)
- Añadido el método saveChanges()
- Añadido el método getTotal()


<?php

/**
* ##### CONEXION ENTRE UNA APLICACION PHP Y UN SERVIDOR ALFRESCO
*
*        @Fecha: 15 Octubre 2009
*       @Ult. Actualizacion: 19 Octubre 2009
*        @Autor: Javier Garcia Marques
*       @Email: javier.garcia.ext@sadiel.es
*        @Version: 1.1
*
* HISTORIAL
* =======================================================================================================================================
*      V1.1 - Añadida la librería Alfresco/Service/ContentData.php
*          - Añadida la variable pública total_coincidencias
*          - Añadido metodo uploadFile($nodo, $nombre, $titulo, $descripcion, $tipo, $file)
*          - Añadido metodo saveChanges();
*          - Añadido metodo getTotal() a la lista de GETTERS
*
* DESCRIPCION
* =======================================================================================================================================
*      Clase para conectar una aplicacion PHP con un servidor ALFRESCO
*
* REQUISITOS
* =======================================================================================================================================
*      Libreria PHP-API para Alfresco (Logger, Service, WebService)
*      PHP 5.0
*      Apache server
*      MySQL 5.1.37
*      Alfresco Enterprise 3.0
*      Include path -> include_path= ".C:\php\PEAR;C:\Alfresco"
*
* PATRONES
* =======================================================================================================================================
*      Uso del patron de diseño Singleton para garantizar la correcta y unica instanciacion de la clase
*
* PROPIEDADES DE CLASE
* =======================================================================================================================================
*      $istancia            privada y estatica      Guarda la istancia de la clase
*      $repositoryUrl        publica               URL para conectar con Alfresco
*      $userName             publica               Nombre de usuario
*      $password            publica               Contraseña de usuario
*      $ticket               publica               Ticket ID de conexion
*      $session            publica               ID de inicio de sesion Alfresco
*      $repository            publica               Referencia al repositorio de Alfresco
*      $spacesStore         publica               Referencia al Space store de Alfresco
*      $total_coincidencias   publica               Total de coincidencias encontradas en el metodo upload
*
* METODOS
* =======================================================================================================================================
*      getIstance()                                          Metodo para obtener la instancia de la clase
*                                                         para evitar la duplicacion de objetos (Singleton)
*                                       
*      __construct()                                          Constructor. La unica manera de instanciar es con getIstance()
*
*      __clone()                                             Metodo para evitar que se puedan clonar istancias.
*
*      connectRepository($url, $user, $pass)                        Metodo para conectar, autentificar y referenciar una sesion
*                                                         alfresco y el space store
*                                                          Parametros:
*                                                             $url  -> Direccion URL donde tengo alojado Alfresco
*                                                             $user -> Nombre de usuario de inicio de sesion
*                                                             $pass -> Contraseña de usuario de inicio de sesion
*
*      uploadFile($nodo, $nombre, $titulo, $descripcion, $tipo, $file)      Metodo para subir archivos locales al repositorio
*                                                         Parametros:
*                                                            $nodo -> Nodo de destino
*                                                            $nombre -> Nombre del archivo
*                                                            $titulo -> Titulo del archivo
*                                                            $descripcion -> Descripcion del archivo
*                                                            $tipo -> Tipo de archivo
*                                                            $file -> Archivo
*
*      saveChanges()                                          Metodo para guardar los cambios realizados en el repositorio
*
*      Getters:
*         getRepositoryUrl()      getPassword()      getSession()      getSpacesStore()
*         getUserName()         getTicket()         getRepository()      *getInstace()*
*
* =======================================================================================================================================
* #### USO
* =======================================================================================================================================
*      require_once "Alfresco/Service/Conexion.php";
*      $conexion = Conexion::getIstance();
*      $conexion->connectRepository("http://localhost:8080/alfresco/api", "admin", "admin");
**/

// Alfresco PHP - API
require_once "Alfresco/Service/Repository.php";
require_once "Alfresco/Service/Session.php";
require_once "Alfresco/Service/SpacesStore.php";
require_once "Alfresco/Service/ContentData.php";

Class Conexion {

   private static $instancia;
   public $repositoryUrl;
   public $userName;
   public $password;
   public $ticket;
   public $session;
   public $repository;
   public $spacesStore;
   public $total_coincidencias;
   
   // Singleton
   public static function getIstance() {
      if (!isset(self::$instancia)) {
         $obj = __CLASS__;
         self::$instancia = new $obj;
      }
      return self::$instancia;
   }
   
   private function __construct() {}
   
   private function __clone() {
      throw new Exception ("Este objeto no se puede clonar");
   }
   
   // Conexion, autenticacion e inicio de sesion
   public function connectRepository($url, $user, $pass) {
      $this->repositoryUrl = $url;
      $this->userName = $user;
      $this->password = $pass;
      $this->repository = new Repository($this->repositoryUrl);
      $this->ticket = $this->repository->authenticate($this->userName, $this->password);
      $this->session = $this->repository->createSession($this->ticket);   
      $this->spacesStore = new SpacesStore($this->session);      
   }
   
   // Upload archivos, recibe los datos de un form
   public function uploadFile($nodo, $nombre, $titulo, $descripcion, $tipo, $file) {
      $this->total_coincidencias = 0;
      // Compruebo si el archivo ya existe
      foreach ($nodo->children as $c) {
         if ($c->child->cm_name == $nombre && $c->child->cm_title == $titulo && $c->child->cm_description == $descripcion) {
            $this->total_coincidencias++;
         }
      }
      // Si no existe…
      if ($this->total_coincidencias == 0) {
         $contentNode = $nodo->createChild("cm_content", "cm_contains", "cm_".$nombre);
         $contentNode->addAspect("cm_titled");
         $contentNode->cm_name = $nombre;
         $contentNode->cm_title = $titulo;
         $contentNode->cm_description = $descripcion;
         $contentData = $contentNode->updateContent("cm_content", $tipo, "UTF-8");
         $contentData->writeContentFromFile($file);
         $this->saveChanges();
      }else{
         echo "<script>alert('El archivo ya existe.');</script>";
      }
   }
   
   // Guardar cambios en un nodo
   private function saveChanges() {
      $this->session->save();
   }
   
   // GETTERS
   public function getRepositoryUrl() {
      return $this->repositoryUrl;
   }
   
   public function getUserName() {
      return $this->userName;
   }
   
   public function getPassword() {
      return $this->password;
   }
   
   public function getTicket() {
      return $this->ticket;
   }
   
   public function getSession() {
      return $this->session;
   }
   
   public function getRepository() {
      return $this->repository;
   }
   
   public function getSpacesStore() {
      return $this->spacesStore;
   }
   
   public function getTotal() {
      return $this->total_coincidencias;
   }
}
?>
javigarcia
Member II

Re: Alfresco PHP API - Clase para conectar con Alfresco

V1.2

Features:

- Añadido el método buscarArchivo($nodo, $archivo)



<?php
/**
* ##### CONEXION ENTRE UNA APLICACION PHP Y UN SERVIDOR ALFRESCO
*
*        @Fecha: 15 Octubre 2009
*       @Ult. Actualizacion: 26 Octubre 2009
*        @Autor: Javier Garcia Marques
*       @Email: javier.garcia.ext@sadiel.es
*        @Version: 1.2
*
* HISTORIAL
* =======================================================================================================================================
*      V1.1 - Añadida la librería Alfresco/Service/ContentData.php
*          - Añadida la variable pública total_coincidencias
*          - Añadido metodo uploadFile($nodo, $nombre, $titulo, $descripcion, $tipo, $file)
*          - Añadido metodo saveChanges();
*          - Añadido metodo getTotal() a la lista de GETTERS
*      V1.2 - Añadido el metodo buscarArchivo($nodo, $archivo)
*
* DESCRIPCION
* =======================================================================================================================================
*      Clase para conectar una aplicacion PHP con un servidor ALFRESCO
*
* REQUISITOS
* =======================================================================================================================================
*      Libreria PHP-API para Alfresco (Logger, Service, WebService)
*      PHP 5.0
*      Apache server
*      MySQL 5.1.37
*      Alfresco Enterprise 3.0
*      Include path -> include_path= ".C:\php\PEAR;C:\Alfresco"
*
* PATRONES
* =======================================================================================================================================
*      Uso del patron de diseño Singleton para garantizar la correcta y unica instanciacion de la clase
*
* PROPIEDADES DE CLASE
* =======================================================================================================================================
*      $istancia            privada y estatica      Guarda la istancia de la clase
*      $repositoryUrl        publica               URL para conectar con Alfresco
*      $userName             publica               Nombre de usuario
*      $password            publica               Contraseña de usuario
*      $ticket               publica               Ticket ID de conexion
*      $session            publica               ID de inicio de sesion Alfresco
*      $repository            publica               Referencia al repositorio de Alfresco
*      $spacesStore         publica               Referencia al Space store de Alfresco
*      $total_coincidencias   publica               Total de coincidencias encontradas en el metodo upload
*
* METODOS
* =======================================================================================================================================
*      getIstance()                                          Metodo para obtener la instancia de la clase
*                                                         para evitar la duplicacion de objetos (Singleton)
*                                       
*      __construct()                                          Constructor. La unica manera de instanciar es con getIstance()
*
*      __clone()                                             Metodo para evitar que se puedan clonar istancias.
*
*      connectRepository($url, $user, $pass)                        Metodo para conectar, autentificar y referenciar una sesion
*                                                         alfresco y el space store
*                                                          Parametros:
*                                                             $url  -> Direccion URL donde tengo alojado Alfresco
*                                                             $user -> Nombre de usuario de inicio de sesion
*                                                             $pass -> Contraseña de usuario de inicio de sesion
*
*      uploadFile($nodo, $nombre, $titulo, $descripcion, $tipo, $file)      Metodo para subir archivos locales al repositorio
*                                                         Parametros:
*                                                            $nodo -> Nodo de destino
*                                                            $nombre -> Nombre del archivo
*                                                            $titulo -> Titulo del archivo
*                                                            $descripcion -> Descripcion del archivo
*                                                            $tipo -> Tipo de archivo
*                                                            $file -> Archivo
*
*      buscarArchivo($nodo, $archivo)                              Metodo para buscar archivos en el repositorio
*                                                         Parametros:
*                                                            $nodo -> Nodo de destino
*                                                            $archivo -> Nombre del archivo
*
*      saveChanges()                                          Metodo para guardar los cambios realizados en el repositorio
*
*      Getters:
*         getRepositoryUrl()      getPassword()      getSession()      getSpacesStore()
*         getUserName()         getTicket()         getRepository()      *getInstace()*
*
* =======================================================================================================================================
* #### USO
* =======================================================================================================================================
*      require_once "Alfresco/Service/Conexion.php";
*      $conexion = Conexion::getIstance();
*      $conexion->connectRepository("http://localhost:8080/alfresco/api", "admin", "admin");
**/

// Alfresco PHP - API
require_once "Alfresco/Service/Repository.php";
require_once "Alfresco/Service/Session.php";
require_once "Alfresco/Service/SpacesStore.php";
require_once "Alfresco/Service/ContentData.php";

Class Conexion {

   private static $instancia;
   public $repositoryUrl;
   public $userName;
   public $password;
   public $ticket;
   public $session;
   public $repository;
   public $spacesStore;
   public $total_coincidencias;
   
   // Singleton
   public static function getIstance() {
      if (!isset(self::$instancia)) {
         $obj = __CLASS__;
         self::$instancia = new $obj;
      }
      return self::$instancia;
   }
   
   private function __construct() {}
   
   private function __clone() {
      throw new Exception ("Este objeto no se puede clonar");
   }
   
   // Conexion, autenticacion e inicio de sesion
   public function connectRepository($url, $user, $pass) {
      $this->repositoryUrl = $url;
      $this->userName = $user;
      $this->password = $pass;
      $this->repository = new Repository($this->repositoryUrl);
      $this->ticket = $this->repository->authenticate($this->userName, $this->password);
      $this->session = $this->repository->createSession($this->ticket);   
      $this->spacesStore = new SpacesStore($this->session);      
   }
   
   // Upload archivos, recibe los datos de un form
   public function uploadFile($nodo, $nombre, $titulo, $descripcion, $tipo, $file) {
      $this->total_coincidencias = 0;
      // Compruebo si el archivo ya existe
      foreach ($nodo->children as $c) {
         if ($c->child->cm_name == $nombre && $c->child->cm_title == $titulo && $c->child->cm_description == $descripcion) {
            $this->total_coincidencias++;
         }
      }
      // Si no existe…
      if ($this->total_coincidencias == 0) {
         $contentNode = $nodo->createChild("cm_content", "cm_contains", "cm_".$nombre);
         $contentNode->addAspect("cm_titled");
         $contentNode->cm_name = $nombre;
         $contentNode->cm_title = $titulo;
         $contentNode->cm_description = $descripcion;
         $contentData = $contentNode->updateContent("cm_content", $tipo, "UTF-8");
         $contentData->writeContentFromFile($file);
         $this->saveChanges();
         return true;
      }else{
         return false;
      }
   }
   
   // Busqueda de documentos
   public function buscarArchivo($nodo, $nombre) {
      $this->total_coincidencias = 0;
      foreach ($nodo->children as $c) {
         if ($c->child->cm_name == $nombre) {
            $this->total_coincidencias++;
         }
      }
      if ($this->total_coincidencias > 0) {
         return $this->total_coincidencias;
      }else{
         return "El archivo que buscas no existe.";
      }
   }
   
   // Guardar cambios en un nodo
   private function saveChanges() {
      $this->session->save();
   }
   
   // GETTERS
   public function getRepositoryUrl() {
      return $this->repositoryUrl;
   }
   
   public function getUserName() {
      return $this->userName;
   }
   
   public function getPassword() {
      return $this->password;
   }
   
   public function getTicket() {
      return $this->ticket;
   }
   
   public function getSession() {
      return $this->session;
   }
   
   public function getRepository() {
      return $this->repository;
   }
   
   public function getSpacesStore() {
      return $this->spacesStore;
   }
   
   public function getTotal() {
      return $this->total_coincidencias;
   }
}
?>
javigarcia
Member II

Re: Alfresco PHP API - Clase para conectar con Alfresco

V1.3

Features:

- Añadido el método getDatos($nodo, $archivo)


<?php

/**
* ##### CONEXION ENTRE UNA APLICACION PHP Y UN SERVIDOR ALFRESCO
*
*        @Fecha: 15 Octubre 2009
*       @Ult. Actualizacion: 27 Octubre 2009
*        @Autor: Javier Garcia Marques
*       @Email: javier.garcia.ext@sadiel.es
*        @Version: 1.3
*
* HISTORIAL
* =======================================================================================================================================
*      V1.1 - Añadida la librería Alfresco/Service/ContentData.php
*          - Añadida la variable pública total_coincidencias
*          - Añadido metodo uploadFile($nodo, $nombre, $titulo, $descripcion, $tipo, $file)
*          - Añadido metodo saveChanges();
*          - Añadido metodo getTotal() a la lista de GETTERS
*      V1.2 - Añadido el metodo buscarArchivo($nodo, $archivo)
*      V1.3 - Añadido el metodo getDatos($nodo, $archivo)
*
* DESCRIPCION
* =======================================================================================================================================
*      Clase para conectar una aplicacion PHP con un servidor ALFRESCO
*
* REQUISITOS
* =======================================================================================================================================
*      Libreria PHP-API para Alfresco (Logger, Service, WebService)
*      PHP 5.0
*      Apache server
*      MySQL 5.1.37
*      Alfresco Enterprise 3.0
*      Include path -> include_path= ".C:\php\PEAR;C:\Alfresco"
*
* PATRONES
* =======================================================================================================================================
*      Uso del patron de diseño Singleton para garantizar la correcta y unica instanciacion de la clase
*
* PROPIEDADES DE CLASE
* =======================================================================================================================================
*      $istancia            privada y estatica      Guarda la istancia de la clase
*      $repositoryUrl        publica               URL para conectar con Alfresco
*      $userName             publica               Nombre de usuario
*      $password            publica               Contraseña de usuario
*      $ticket               publica               Ticket ID de conexion
*      $session            publica               ID de inicio de sesion Alfresco
*      $repository            publica               Referencia al repositorio de Alfresco
*      $spacesStore         publica               Referencia al Space store de Alfresco
*      $total_coincidencias   publica               Total de coincidencias encontradas en el metodo upload
*
* METODOS
* =======================================================================================================================================
*      getIstance()                                          Metodo para obtener la instancia de la clase
*                                                         para evitar la duplicacion de objetos (Singleton)
*                                       
*      __construct()                                          Constructor. La unica manera de instanciar es con getIstance()
*
*      __clone()                                             Metodo para evitar que se puedan clonar istancias.
*
*      connectRepository($url, $user, $pass)                        Metodo para conectar, autentificar y referenciar una sesion
*                                                         alfresco y el space store
*                                                          Parametros:
*                                                             $url  -> Direccion URL donde tengo alojado Alfresco
*                                                             $user -> Nombre de usuario de inicio de sesion
*                                                             $pass -> Contraseña de usuario de inicio de sesion
*
*      uploadFile($nodo, $nombre, $titulo, $descripcion, $tipo, $file)      Metodo para subir archivos locales al repositorio
*                                                         Parametros:
*                                                            $nodo -> Nodo de destino
*                                                            $nombre -> Nombre del archivo
*                                                            $titulo -> Titulo del archivo
*                                                            $descripcion -> Descripcion del archivo
*                                                            $tipo -> Tipo de archivo
*                                                            $file -> Archivo
*
*      buscarArchivo($nodo, $archivo)                              Metodo para buscar archivos en el repositorio
*                                                         Parametros:
*                                                            $nodo -> Nodo de destino
*                                                            $archivo -> Nombre del archivo
*
*      saveChanges()                                          Metodo para guardar los cambios realizados en el repositorio
*
*      Getters:
*         getRepositoryUrl()      getPassword()      getSession()      getSpacesStore()   getDatos($nodo, $archivo)
*         getUserName()         getTicket()         getRepository()      *getInstace()*
*
* =======================================================================================================================================
* #### USO
* =======================================================================================================================================
*      require_once "Alfresco/Service/Conexion.php";
*      $conexion = Conexion::getIstance();
*      $conexion->connectRepository("http://localhost:8080/alfresco/api", "admin", "admin");
**/

// Alfresco PHP - API
require_once "Alfresco/Service/Repository.php";
require_once "Alfresco/Service/Session.php";
require_once "Alfresco/Service/SpacesStore.php";
require_once "Alfresco/Service/ContentData.php";

Class Conexion {

   private static $instancia;
   public $repositoryUrl;
   public $userName;
   public $password;
   public $ticket;
   public $session;
   public $repository;
   public $spacesStore;
   public $total_coincidencias;
   
   // Singleton
   public static function getIstance() {
      if (!isset(self::$instancia)) {
         $obj = __CLASS__;
         self::$instancia = new $obj;
      }
      return self::$instancia;
   }
   
   private function __construct() {}
   
   private function __clone() {
      throw new Exception ("Este objeto no se puede clonar");
   }
   
   // Conexion, autenticacion e inicio de sesion
   public function connectRepository($url, $user, $pass) {
      $this->repositoryUrl = $url;
      $this->userName = $user;
      $this->password = $pass;
      $this->repository = new Repository($this->repositoryUrl);
      $this->ticket = $this->repository->authenticate($this->userName, $this->password);
      $this->session = $this->repository->createSession($this->ticket);   
      $this->spacesStore = new SpacesStore($this->session);      
   }
   
   // Upload archivos, recibe los datos de un form
   public function uploadFile($nodo, $nombre, $titulo, $descripcion, $tipo, $file) {
      $this->total_coincidencias = 0;
      // Compruebo si el archivo ya existe
      foreach ($nodo->children as $c) {
         if ($c->child->cm_name == $nombre && $c->child->cm_title == $titulo && $c->child->cm_description == $descripcion) {
            $this->total_coincidencias++;
         }
      }
      // Si no existe…
      if ($this->total_coincidencias == 0) {
         $contentNode = $nodo->createChild("cm_content", "cm_contains", "cm_".$nombre);
         $contentNode->addAspect("cm_titled");
         $contentNode->cm_name = $nombre;
         $contentNode->cm_title = $titulo;
         $contentNode->cm_description = $descripcion;
         $contentData = $contentNode->updateContent("cm_content", $tipo, "UTF-8");
         $contentData->writeContentFromFile($file);
         $this->saveChanges();
         return true;
      }else{
         return false;
      }
   }
   
   // Busqueda de documentos
   public function buscarArchivo($nodo, $nombre) {
      $this->total_coincidencias = 0;
      foreach ($nodo->children as $c) {
         if ($c->child->cm_name == $nombre) {
            $this->total_coincidencias++;
         }
      }
      return $this->total_coincidencias;
   }
   
   // Guardar cambios en un nodo
   private function saveChanges() {
      $this->session->save();
   }
   
   // GETTERS
   public function getDatos($nodo, $archivo) {
      $encontrado = "";
      foreach ($nodo->children as $c) {
         if ($c->child->cm_name == $archivo) {
            $encontrado = $c->child->cm_created;
         }
      }
      if ($encontrado != "") {
         // Fecha
         $fecha = substr($encontrado, 0, 10);
         $fecha = explode ("-", $fecha);
         $fecha = $fecha[2]."/".$fecha[1]."/".$fecha[0];
         // Hora
         $hora = substr($encontrado, 11, 5);
         return "Certificado obtenido el ".$fecha." a las ".$hora;      
      }else{
         return "No se ha encontrado el certificado de notas.";
      }
   }   

   public function getRepositoryUrl() {
      return $this->repositoryUrl;
   }
   
   public function getUserName() {
      return $this->userName;
   }
   
   public function getPassword() {
      return $this->password;
   }
   
   public function getTicket() {
      return $this->ticket;
   }
   
   public function getSession() {
      return $this->session;
   }
   
   public function getRepository() {
      return $this->repository;
   }
   
   public function getSpacesStore() {
      return $this->spacesStore;
   }
   
   public function getTotal() {
      return $this->total_coincidencias;
   }
}
?>
vicentvic
Member II

Re: Alfresco PHP API - Clase para conectar con Alfresco

Muy Interesante ese codigo….

supongo que ese codigo debo ponerse en la pagina web para el webservice…

o acaso debo colocarlo en una carpeta del alfresco???


soy nuevo usando el alfresco asi que por favor aclaren mi duda… gracias
juancarlos1
Member II

Re: Alfresco PHP API - Clase para conectar con Alfresco

Buenas Tardes:

La clase de conexion requiere de Repository.php";Session.php";SpacesStore.php";ContentData.php"; donde puedo conseguir estos archivos.

gracias por su ayuda