cancel
Showing results for 
Search instead for 
Did you mean: 

Acceder a un PATH específico - PHP

javigarcia
Champ in-the-making
Champ in-the-making
Buenas tardes foreros!

estoy trabajando con alfresco enterprise y mi cliente me ha dado la siguiente ruta creada en alfresco…

Gerhonte / OPE / Certificados_de_Notas

También ha creado un usuario con acceso único y exclusivo a ese path.

Programando en php, he definido el siguiente guestHome:


   $nodes = $conexion->session->query($conexion->spacesStore, "PATH:\"app:company_home/cm:Gerhonte/cm:OPE/cm:Certificados_de_Notas\"");
   $guestHome = $nodes[0];

Todo bien hasta aquí, pero cuando intento subir un archivo a ese path, me dice que no encuentra el archivo que quiero subir (¿?). Yo creo que todo viene por el path, porque si lo cambio a app:company_home/app:guest_home, todo va de perlas…

Alguna idea? gracias!!
8 REPLIES 8

javigarcia
Champ in-the-making
Champ in-the-making
Acabo de comprobar que si intento jugar en ese path logeado como admin no hay ningún problema… se me olvidó comentar antes que tengo un usuario creado para ese path exclusivamente, así que parece ser que el problema viene por los permisos de lectura y escritura… bueno, mañana será otro día, que por hoy ya está bien Smiley Very HappyD

Saludos!

javigarcia
Champ in-the-making
Champ in-the-making
Buenos días foreros,

confirmado, el problema venía por los permisos del usuario sobre la carpeta… ya lo tengo arreglado, perdón por este hilo inutil jejeje.

Saludos!!!

ajimenez
Champ in-the-making
Champ in-the-making
Para nada inútil.

De hecho en estos momentos estoy peleándome con el sdk de php de alfresco para ver si puedo gestionar usuarios y permisos desde este punto.

En tu código me llama la antención el fragmento:

$conexion->session

En el BasicTutorial1-Authentication.php de la sdk obtiene la sesión de otra menera:

   // The web service end point URL for the Alfresco repository
   $repositoryUrl = "http://localhost:8080/alfresco/api";
   
   // The user credentials we are going to use
   $userName = "admin";
   $password = "admin";
   
   // Create the repository object baseed on the repository URL.  The repository represents the Alfresco repository we are connecting to.
   // It can be used to authenticate users and as a session factory.
   $repository = new Repository($repositoryUrl);
   
   // Authenticate the user details for the repository we want to connect to.  Assuming authentication is succesful we will be returned
   // a ticket.  The ticket is a string which can be used to create Session's
   $ticket = $repository->authenticate($userName, $password);
   
   // Using the ticket we can now create a session.  In general it is better to create a new session for a new page or page sequence rather
   // than creating one and using across many pages as this helps to prevent resource usage from creaping up.
   $session = $repository->createSession($ticket);

Y este trozo tambíen,
$conexion->spacesStore
ya que en las query que he hecho, he tenido que indicar el store directamente:


$currentStore = "user://alfrescoUserStore";
$nodes = $session->query($currentStore, $statement);

¿Puedes contarnos cómo obtienes $conexion?
¿Cómo gestionaríamos los roles de los usuarios sobre los espacios desde php?

Gracias.

javigarcia
Champ in-the-making
Champ in-the-making
Muy buenas!!

$conexion es la istancia de una clase que creé para trabajar con la librería de Alfresco, tienes toda la información de la clase y su seguimiento en este hilo http://forums.alfresco.com/es/viewtopic.php?f=18&t=2037

Espero que te ayude, un saludo!

ajimenez
Champ in-the-making
Champ in-the-making
Gracias,

El nombre "$conexion->spacesStore" en plural me había confundido.

Al ver el código de  tu clase (menuda clse!  Smiley Very Happy ) he visto la sentencia que usabas para dar valor al storesSpace.

$spacesStore= new SpacesStore($session) 

que realmente corresponde a un solo espacio. Ahora todo encaja mejor con el formato de la función corresponde a un solo store como parámetro (Me estaba volviendo loco buscando la función query que admitiera varios espacios  Smiley Surprisedops: ).

public function query($store, $statement, $language='lucene');

Executes a given query statement on the specified store. The query language can be specified, but the default is lucene.

The result is returned as an array of matching Node's.

    * $store - the Store to execute the query upon
    * $statement - the query statement
    * $language - optional parameter specifying the query language
    * return Node[] - array of matching nodes
http://wiki.alfresco.com/wiki/Alfresco_PHP_API#Session

javigarcia
Champ in-the-making
Champ in-the-making
jejeje me alegra que te sirva de ayuda. Yo la uso a diario y le estoy implementando más métodos… pronto publicaré la nueva versión con las actualizaciones.

Saludos!

lmiguel_perez
Champ in-the-making
Champ in-the-making
Hola, espero que me podais ayudar con esto y gracias.

Cuando hago la query al repositorio no me funciona, sin embargo si lo hago para el 'Espacio de inicio del invitado' sí va bien.  Es decir,
// FUNCIONA
// ESPACIO ' PRUEBA' DENTRO DEL 'Espacio de Inicio del Invitado'
$nodes = $session->query($spacesStore, "PATH:\"app:company_home/app:guest_home/cmSmiley Tonguerueba\prueba.pdf"");

// NO FUNCIONA
// ESPACIO 'PRUEBA'  DENTRO DEL 'User homes'
// $nodes = $session->query($spacesStore, "PATH:\"app:company_home/app:user_homes/cmSmiley Tonguerueba\prueba.pdf"");


¿Creeis q esto es un problema de permisos? En la raiz 'User homes' tengo permisos de lectura únicamente sin embargo dentro de 'prueba' puedo leer el fichero prueba.pdf y subir nuevos ficheros sin problemas.

javigarcia
Champ in-the-making
Champ in-the-making
Es muy posible que sea problema de permisos, has probado a cambiarlos para ver si te funciona?? yo tuve un problema similar y la razón era esa, lo mismo te ocurre lo mismo…

Saludos