<?php

if (! defined ( 'BASEPATH' ))
	exit ( 'No direct script access allowed' );
/**
 * PrivateContent Class
 *
 * @author dzungnv02
 *
 */


class PrivateContent extends MX_Controller {
	public function __construct() {
		parent::__construct ();
		$user = $this->session->userdata ( 'userInfo' );
		$this->vservices->setApiUrl ( $this->config->item ( 'api_url' ) );
		$this->vservices->setConnection ( $this->curl );
		$this->vservices->setUserId ( $user ['us_id'] );
	}

	public function getContent() {
		$xmlData = $this->vservices->getPrivateTree ();

		$this->xml->parse ( $xmlData );

		$aryDirs = array ();
		$aryFiles = array ();
		write_file ( 'log.txt', var_export ( $xmlData, true ) );

		if (! isset ( $this->xml->tree )) {
			$aryError = array (
					'err' => 'Không thể kết nối đến máy chủ!',
					'errCode' => '-1'
			);
			$aryData = array (
					'DIRECTORIES' => array (),
					'FILES' => array (),
					'ERROR' => $aryError
			);
			echo json_encode ( $aryData );
			return;
		}

		$aryError = array (
				'err' => $this->xml->tree->_param ['err'],
				'errCode' => ( int ) $this->xml->tree->_param ['errCode']
		);

		if (isset ( $this->xml->tree->folderlist->folder )) {
			if (is_array ( $this->xml->tree->folderlist->folder )) {
				foreach ( $this->xml->tree->folderlist->folder as $key => $value ) {
					$aryDirs [] = array (
							'id' => $value->_param ['id'],
							'name' => $value->_value,
							'parentID' => $value->_param ['parentid'] == - 1 ? 0 : $value->_param ['parentid']
					);
				}
			} else {
				$folder = $this->xml->tree->folderlist->folder;
				$aryDirs [] = array (
						'id' => $folder->_param ['id'],
						'name' => $folder->_value,
						'parentID' => $folder->_param ['parentid'] == - 1 ? 0 : $folder->_param ['parentid']
				);
			}
		}

		if (isset ( $this->xml->tree->filelist->file )) {
			if (is_array ( $this->xml->tree->filelist->file )) {
				foreach ( $this->xml->tree->filelist->file as $key => $value ) {
					// $fileUrl = dirname(dirname(dirname($value->_param['fileurl'])));
					$fileUrl = "";
					if ($value->_param ['fileurl'] != "") {
						$fileUrl = $this->config->item ( 'api_url' ) . $value->_param ['fileurl'];
					}

					$thumbnail = "";
					if ($value->_param ['thumbnail'] != "") {
						$thumbnail = $this->config->item ( 'api_url' ) . $value->_param ['thumbnail'];
					}

					$aryFiles [] = array (
							'id' => $value->_param ['id'],
							'name' => $value->_value,
							'parentID' => $value->_param ['parentid'] == - 1 ? 0 : $value->_param ['parentid'],
							'minetype' => $value->_param ['filetype'],
							'size' => $value->_param ['size'],
							'thumbnail' => $thumbnail,
							'fileurl' => $fileUrl
					);
				}
			} else {
				$file = $this->xml->tree->filelist->file;
				$aryFiles [] = array (
						'id' => $file->_param ['id'],
						'name' => $file->_value,
						'parentID' => $file->_param ['parentid'] == - 1 ? 0 : $file->_param ['parentid'],
						'minetype' => $file->_param ['filetype'],
						'size' => $file->_param ['size'],
						'thumbnail' => $value->_param ['thumbnail'],
						'fileurl' => $value->_param ['fileurl']
				);
			}
		}

		$user = $this->session->userdata ( 'userInfo' );
		$aryData = array (
				'DIRECTORIES' => $aryDirs,
				'FILES' => $aryFiles,
				'ERROR' => $aryError,
				'userinfo' => $user
		);
		echo json_encode ( $aryData );
	}

	public function createDir() {
		$parentDir = $this->input->post ( 'fparentid', TRUE );
		$name = $this->input->post ( 'fname', TRUE );

		$xmlData = $this->vservices->actionExecute ( 'mkdir', array (
				'name' => $name,
				'parent_id' => $parentDir == 0 ? - 1 : $parentDir
		) );

		$this->xml->parse ( $xmlData );

		$aryError = array (
				'err' => $this->xml->status->_param ['err'],
				'errCode' => ( int ) $this->xml->status->_param ['errCode']
		);
		$aryData = array (
				'id' => $this->xml->status->_param ['id'],
				'name' => $this->xml->status->_param ['name'],
				'parentID' => $parentDir,
				'ERROR' => $aryError
		);
		echo json_encode ( $aryData );
	}

	public function delete() {
		$delobj = $this->input->post ( 'delobj', TRUE );
		$xmlData = $this->vservices->actionExecute ( 'deletemulti', array (
				'delobj' => $delobj
		) );
		$this->xml->parse ( $xmlData );
		$aryFolders = array ();

		if (isset ( $this->xml->tree->folder )) {
			if (is_array ( $this->xml->tree->folder )) {
				foreach ( $this->xml->tree->folder as $key => $folder ) {
					$aryFolders ['DIRECTORIES'] [] = $folder->_param ['id'];
				}
			} else {
				$aryFolders ['DIRECTORIES'] [] = $this->xml->tree->folder->_param ['id'];
			}
		}

		if (isset ( $this->xml->tree->file )) {
			if (is_array ( $this->xml->tree->file )) {
				foreach ( $this->xml->tree->file as $key => $file ) {
					$aryFolders ['FILES'] [] = $file->_param ['id'];
				}
			} else {
				$aryFolders ['FILES'] [] = $this->xml->tree->file->_param ['id'];
			}
		}

		$aryError = array (
				'err' => $this->xml->tree->_param ['err'],
				'errCode' => ( int ) $this->xml->tree->_param ['errCode']
		);
		$aryData = array (
				'DIRECTORIES' => isset ( $aryFolders ['DIRECTORIES'] ) ? $aryFolders ['DIRECTORIES'] : array (),
				'FILES' => isset ( $aryFolders ['FILES'] ) ? $aryFolders ['FILES'] : array (),
				'ERROR' => $aryError
		);
		echo json_encode ( $aryData );
	}

	public function rename() {
		$item = $this->input->post ( 'data', TRUE );
		$objItem = json_decode($item);

		$xmlData = $this->vservices->actionExecute ('rename', array ('id' => $objItem->id, 'name' => $objItem->name, 'type' => $objItem->type, 'parentid' => $objItem->parentID == 0 ? -1:$objItem->parentID, 'newName' => $objItem->newName));
		$this->xml->parse ( $xmlData );
		$err = $this->xml->tree->_param ['err'];
		$errCode = ( int ) $this->xml->tree->_param ['errCode'];
		$aryItem = array('id' => (int) $this->xml->tree->item->_param['id'],'name' => $this->xml->tree->item->_param['name'],'parentID' => $this->xml->tree->item->_param['parentId'] == -1 ? 0 : $this->xml->tree->item->_param['parentId']);

 		$aryData ['DIRECTORIES'] = $objItem->type == 'directory' ? $aryItem :array();
 		$aryData ['FILES'] = $objItem->type == 'file' ? $aryItem :array();
		$aryData ['ERROR'] = array ('err' => $err, 'errCode' => $errCode);

		echo json_encode ( $aryData );
	}

	public function copy() {
		$destination = $this->input->post ( 'destination', TRUE );
		$data = $this->input->post ( 'data', TRUE );
		$act = $this->input->post ( 'act', TRUE );

		$xmlData = $this->vservices->actionExecute ( 'copy', array (
				'act' => $act,
				'data' => $data,
				'destination' => $destination == 0 ? - 1 : $destination
		) );

		error_log ( date ( 'YmdHis' ) . ' - $xmlData: ' . var_export ( $xmlData, TRUE ), 3, '/srv/www/sbg/log/file.log' );

		$this->xml->parse ( $xmlData );

		$aryNewDirs = isset ( $this->xml->data->folderdata ) ? json_decode ( $this->xml->data->folderdata->_value ) : array ();
		$aryNewFiles = isset ( $this->xml->data->filedata ) ? json_decode ( $this->xml->data->filedata->_value ) : array ();

		$aryData = array (
				'DIRECTORIES' => $aryNewDirs,
				'FILES' => $aryNewFiles
		);
		$aryData ['ERROR'] = array (
				'err' => $this->xml->data->_param ['err'],
				'errCode' => ( int ) $this->xml->data->_param ['errCode']
		);
		echo json_encode ( $aryData );
	}
}

/* End of file privatecontent.php */
/* Location: ./application/modules/ajax/controllers/privatecontent.php */