<commit_before><?php 
/*
 *		@Fecha: 21 Agosto 2014
 *		@Ult. Actualizacion: 23 Septiembre 2014->función para querys
 * 		@Autor: <NAME>
 *      @Email: <EMAIL>
 * 		@Version: 1.2
 */

/*
* 		@ejemplo de uso:
*			$conexion = WMAlfresco::getInstance();
*			$conexion->conectar($urlRepositorio,$Usuario,$Pass);
*			$conexion->checkRespuesta();
*			$conexion->setCarpetaPorRuta($carpeta);
*/

require_once ("cmis_repository_wrapper.php");
require_once ("cmis_service.php");

class WMAlfresco{

	private static $instancia;
	public $urlRepositorio;
	public $usuario;
	public $pass;
	public $repositorio;
	public $carpetaPadre;

	// Singleton

	function __construct()
	{
		# de momento nada
	}

	public static function getInstance() {
		if (!isset(self::$instancia)) {
			$obj = __CLASS__;
			self::$instancia = new $obj;
		}
		return self::$instancia;
	}


	public function __clone(){
        trigger_error('Clone no se permite.', E_USER_ERROR);
    }

	/*
		Función para conectar con alfresco.
		@ejemplo
			$url = "http://127.0.0.1:8080/alfresco/cmisatom";
	*/

	public function conectar($url,$usuario,$pass){
		$this->urlRepositorio = $url;
		$this->usuario = $usuario;
		$this->pass = $pass;
		$this->repositorio = new CMISService($url,$usuario,$pass);
	}

	public function checkRespuesta(){
		if ($this->repositorio->getLastRequest()->code > 299){
	        print "Problema con el requerimiento";
	        exit (255);
    	}
	}

	/*
	Setea carpeta sobre la cual trabajaremos en alfresco
	@Ej:
		$carpeta = "/carpeta";
	*/

	public function setCarpetaPorRuta($carpeta,$opciones = array()){
		$obj = $this->repositorio->getObjectByPath($carpeta,$opciones);
		$propiedad = $obj->properties['cmis:baseTypeId'];
		/*
		echo "<pre>obj: ";
		print_r($obj);
		echo "</pre>";
		*/
		if($propiedad != "cmis:folder"){
			print "El objeto no es una carpeta";
			exit (255);
		}
		else{
			$this->carpetaPadre = $obj;			
		}
	}

	/*
	Setea carpeta (según id) sobre la cual trabajaremos en alfresco
	@Ej:
		$id = "workspace://SpacesStore/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"	
	*/

	public function setCarpetaPorId($id,$opciones = array()){
		$obj = $this->repositorio->getObject($id,$opciones);
		$propiedad = $obj->properties["cmis:baseTypeId"];
		if ($propiedad != "cmis:folder") {
			print "El objeto no es una carpeta";
			exit (255);
		}
		else{
			$this->carpetaPadre = $obj;
		}
	}

	/*
	Crea carpeta
	crea carpeta en la carpeta que ha sido SETEADA
	$nombre = nombre que tendrá la carpeta a crear.
	@Ej:
		$nombre = "carpeta";
	*/

	public function crearCarpeta($nombre,$propiedades = array(),$opciones = array()){
		$existe = $this->existeCarpeta($nombre);
		if ($existe){
			print "Error:->La carpeta ".$nombre." ya existe";
			exit (255);
		}
		else{
			return $this->repositorio->createFolder($this->carpetaPadre->id,$nombre);	
		}
	}

	/*
	Crear archivo
	crea archivo en la carpeta que ha sido SETEADA
	($this->carpetaPadre)
	$nombre = nombre del archivo a crear.
	@Ej:
		$nombre = "archivo.txt";
		$contenido = "hola este es un archivo";
	*/

	public function crearArchivo($nombre,$propiedades = array(),$contenido = null,$tipo_contenido = "application/octet-stream",$opciones = array()){
		$existe = $this->existeArchivo($nombre);
		if ($existe) {
			print "Error:->El archivo ".$nombre." ya existe";
			exit (255);
		}
		else{
			return $this->repositorio->createDocument($this->carpetaPadre->id,$nombre,$propiedades,$contenido,$tipo_contenido,$opciones);
		}
	}

	/*
	sube archivos	
	@Ej:
		$archivo = "c:/temp/hola.pdf";
	*/
	
	public function subirArchivo($archivo){
		//deben estar en base 64
		$nombre = basename($archivo);
		$archivoAbierto = fopen($archivo, "r");
		$contenido = fread($archivoAbierto, filesize($archivo));
		//activar extension php fileinfo
		$tipo_contenido = mime_content_type($archivo);
		$nuevoArchivo = $this->crearArchivo($nombre,array(),$contenido,$tipo_contenido,array());
		if ($nuevoArchivo) {
			return $nuevoArchivo;
		}
			
	}
	/*
	Descarga un archivo a un directorio local y temporal para que pueda ser visto en linea.
	*/
	public function verArchivo($id){
		$archivo = $this->getObjetoPorId($id);
		$nombre = $archivo->properties["cmis:name"];
		$mime = $archivo->properties["cmis:contentStreamMimeType"];
		$tamaño = $archivo->properties["cmis:contentStreamLength"];
		$contenido = $this->repositorio->getContentStream($id);
		$nombre = str_replace(" ", "_", $nombre);
		$archTemporal = fopen($nombre, "wb");
		fwrite($archTemporal, $contenido);
		fclose($archTemporal);
		$dominio = $_SERVER['SERVER_NAME'];
		$path = getcwd()."/".$nombre;
		header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header('Content-type: '.$mime);
        header('Content-Transfer-Encoding: Binary');
        header('Expires: 0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($nombre));
        ob_clean();
        flush();
        readfile($path);
        unlink($nombre);
        exit();
	}<commit_msg>ver para linux<commit_after><?php 
/*
 *		@Fecha: 21 Agosto 2014
 *		@Ult. Actualizacion: 23 Septiembre 2014->función para querys
 * 		@Autor: <NAME>
 *      @Email: <EMAIL>
 * 		@Version: 1.2
 */

/*
* 		@ejemplo de uso:
*			$conexion = WMAlfresco::getInstance();
*			$conexion->conectar($urlRepositorio,$Usuario,$Pass);
*			$conexion->checkRespuesta();
*			$conexion->setCarpetaPorRuta($carpeta);
*/

require_once ("cmis_repository_wrapper.php");
require_once ("cmis_service.php");

class WMAlfresco{

	private static $instancia;
	public $urlRepositorio;
	public $usuario;
	public $pass;
	public $repositorio;
	public $carpetaPadre;

	// Singleton

	function __construct()
	{
		# de momento nada
	}

	public static function getInstance() {
		if (!isset(self::$instancia)) {
			$obj = __CLASS__;
			self::$instancia = new $obj;
		}
		return self::$instancia;
	}


	public function __clone(){
        trigger_error('Clone no se permite.', E_USER_ERROR);
    }

	/*
		Función para conectar con alfresco.
		@ejemplo
			$url = "http://127.0.0.1:8080/alfresco/cmisatom";
	*/

	public function conectar($url,$usuario,$pass){
		$this->urlRepositorio = $url;
		$this->usuario = $usuario;
		$this->pass = <PASSWORD>;
		$this->repositorio = new CMISService($url,$usuario,$pass);
	}

	public function checkRespuesta(){
		if ($this->repositorio->getLastRequest()->code > 299){
	        print "Problema con el requerimiento";
	        exit (255);
    	}
	}

	/*
	Setea carpeta sobre la cual trabajaremos en alfresco
	@Ej:
		$carpeta = "/carpeta";
	*/

	public function setCarpetaPorRuta($carpeta,$opciones = array()){
		$obj = $this->repositorio->getObjectByPath($carpeta,$opciones);
		$propiedad = $obj->properties['cmis:baseTypeId'];
		/*
		echo "<pre>obj: ";
		print_r($obj);
		echo "</pre>";
		*/
		if($propiedad != "cmis:folder"){
			print "El objeto no es una carpeta";
			exit (255);
		}
		else{
			$this->carpetaPadre = $obj;			
		}
	}

	/*
	Setea carpeta (según id) sobre la cual trabajaremos en alfresco
	@Ej:
		$id = "workspace://SpacesStore/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"	
	*/

	public function setCarpetaPorId($id,$opciones = array()){
		$obj = $this->repositorio->getObject($id,$opciones);
		$propiedad = $obj->properties["cmis:baseTypeId"];
		if ($propiedad != "cmis:folder") {
			print "El objeto no es una carpeta";
			exit (255);
		}
		else{
			$this->carpetaPadre = $obj;
		}
	}

	/*
	Crea carpeta
	crea carpeta en la carpeta que ha sido SETEADA
	$nombre = nombre que tendrá la carpeta a crear.
	@Ej:
		$nombre = "carpeta";
	*/

	public function crearCarpeta($nombre,$propiedades = array(),$opciones = array()){
		$existe = $this->existeCarpeta($nombre);
		if ($existe){
			print "Error:->La carpeta ".$nombre." ya existe";
			exit (255);
		}
		else{
			return $this->repositorio->createFolder($this->carpetaPadre->id,$nombre);	
		}
	}

	/*
	Crear archivo
	crea archivo en la carpeta que ha sido SETEADA
	($this->carpetaPadre)
	$nombre = nombre del archivo a crear.
	@Ej:
		$nombre = "archivo.txt";
		$contenido = "hola este es un archivo";
	*/

	public function crearArchivo($nombre,$propiedades = array(),$contenido = null,$tipo_contenido = "application/octet-stream",$opciones = array()){
		$existe = $this->existeArchivo($nombre);
		if ($existe) {
			print "Error:->El archivo ".$nombre." ya existe";
			exit (255);
		}
		else{
			return $this->repositorio->createDocument($this->carpetaPadre->id,$nombre,$propiedades,$contenido,$tipo_contenido,$opciones);
		}
	}

	/*
	sube archivos	
	@Ej:
		$archivo = "c:/temp/hola.pdf";
	*/
	
	public function subirArchivo($archivo){
		//deben estar en base 64
		$nombre = basename($archivo);
		$archivoAbierto = fopen($archivo, "r");
		$contenido = fread($archivoAbierto, filesize($archivo));
		//activar extension php fileinfo
		$tipo_contenido = mime_content_type($archivo);
		$nuevoArchivo = $this->crearArchivo($nombre,array(),$contenido,$tipo_contenido,array());
		if ($nuevoArchivo) {
			return $nuevoArchivo;
		}
			
	}
	/*
	Descarga un archivo a un directorio local y temporal para que pueda ser visto en linea.
	*/
	public function verArchivo($id){
		$archivo = $this->getObjetoPorId($id);
		$nombre = $archivo->properties["cmis:name"];
		$mime = $archivo->properties["cmis:contentStreamMimeType"];
		$tamaño = $archivo->properties["cmis:contentStreamLength"];
		$contenido = $this->repositorio->getContentStream($id);
		$nombre = str_replace(" ", "_", $nombre);
		$archTemporal = fopen($nombre, "wb");
		fwrite($archTemporal, $contenido);
		fclose($archTemporal);
		$dominio = $_SERVER['SERVER_NAME'];
		$path = getcwd()."/".$nombre;
		header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header('Content-type: '.$mime);
        header('Content-Transfer-Encoding: Binary');
        header('Expires: 0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($nombre));
        ob_clean();
        flush();
        readfile($path);
        unlink($nombre);
        exit();
	}

	/* Para linux
	public function verArchivo($id){
		$archivo = $this->getObjetoPorId($id);
		$nombre = $archivo->properties["cmis:name"];
		$mime ="";
		if (substr($nombre,-3) == "pdf") {
			$mime = "application/pdf";
		}
		else{
			$mime = "octet-stream";
		}
		$tamaño = $archivo->properties["cmis:contentStreamLength"];
		$contenido = $this->repositorio->getContentStream($id);
		$nombre = str_replace(" ", "_", $nombre);
		$archTemporal = fopen($nombre, "wb");
		fwrite($archTemporal, $contenido);
		fclose($archTemporal);
		$dominio = $_SERVER['SERVER_NAME'];
		$path = getcwd()."/".$nombre;
		header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header('Content-type: '.$mime);        
        header('Content-Transfer-Encoding: Binary');
        header('Expires: 0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($nombre));
        if (ob_get_contents()) ob_end_clean();
        flush();
        readfile($path);
        unlink($nombre);
        exit();
	}*/
{'fraction_non_alphanumeric': 0.17132199071967974, 'fraction_numerical': 0.008916386134109727, 'mean_word_length': 3.902765388046387, 'pattern_counts': {'":': 0, '<': 14, '<?xml version=': 0, '>': 97, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 2, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3507476', 'n_tokens_mistral': 4559, 'n_tokens_neox': 4136, 'n_words': 789}