<?php
/*
* Application Programming Interface Plugin
*
* @author Chris Cagle
*/
class API_Request {
var $xml;
/*
* Authenticate
*
* @param string
* @return bool
*/
private function auth() {
$appid_file = getXML(GSDATAOTHERPATH.'appid.xml');
if ($appid_file->status == 'true') {
if ( (string)$appid_file->key == (string)$this->xml->key) {
return true;
} else {
$message = array('status' => 'error', 'message' => i18n_r('API_ERR_AUTHFAILED'));
echo json_encode($message);
}
} else {
$message = array('status' => 'error', 'message' => i18n_r('API_ERR_AUTHDISABLED'));
echo json_encode($message);
}
}
public function add_data($array) {
$this->xml = $array;
}
/*
* Read Page
*
* @return json
*/
public function page_read() {
if($this->auth()) {
$id = (string)$this->xml->data->slug;
if (file_exists(GSDATAPAGESPATH.$id.'.xml')) {
$page = getXML(GSDATAPAGESPATH.$id.'.xml');
$page->content = strip_decode($page->content);
$page->metak = strip_decode($page->metak);
$page->metad = strip_decode($page->metad);
$page->title = strip_decode($page->title);
$wrapper = array('status' => 'success', 'message' => 'page_read ok', 'response' => $page);
return json_encode($wrapper);
} else {
$error = array('status' => 'error', 'message' => sprintf(i18n_r('API_ERR_NOPAGE'), $id));
return json_encode($error);
}
}
}
/*
* Read Settings
*
* @return json
*/
public function settings_read() {
if($this->auth()) {
$settings = getXML(GSDATAOTHERPATH.'website.xml');
$wrapper = array('status' => 'success', 'message' => 'settings_read ok', 'response' => $settings);
return json_encode($wrapper);
}
}
/*
* Read All Pages
*
* @return json
*/
public function all_pages_read() {
if($this->auth()) {
$pages = get_available_pages();
$wrapper = array('status' => 'success', 'message' => 'all_pages_read ok', 'response' => $pages);
return json_encode($wrapper);
}
}
/*
* Upload File
*
* @return bool
*/
public function file_upload() {
if($this->auth()) {
$patho = (string)$this->xml->data->path;
$path = tsl(GSDATAUPLOADPATH . $patho);
}
}
/*
* Save Page
*
* @return bool
*/
public function page_save() {
if($this->auth()) {
$id = (string)$this->xml->data->slug;
$thisfile = GSDATAPAGESPATH.$id.'.xml';
if (file_exists($thisfile)) {
$page = getXML($thisfile);
$page->content = safe_slash_html($this->xml->data->content);
$page->title = safe_slash_html($this->xml->data->title);
$page->pubDate = date('r');
$bakfile = GSBACKUPSPATH."pages/". $id .".bak.xml";
copy($thisfile, $bakfile);
$status = XMLsave($page, $thisfile);
if ($status) {
touch($thisfile);
$wrapper = array('status' => 'success', 'message' => 'page_save ok', 'response' => $page);
} else {
$wrapper = array('status' => 'error', 'message' => 'There was an error saving your page');
}
return json_encode($wrapper);
} else {
$error = array('status' => 'error', 'message' => sprintf(i18n_r('API_ERR_NOPAGE'), $id));
return json_encode($error);
}
}
}
/*
* Read Files
*
* @return json
*/
public function all_files_read() {
if($this->auth()) {
$patho = (string)$this->xml->data->path;
$path = tsl(GSDATAUPLOADPATH . $patho);
$filesArray = array();
$count =0;
global $SITEURL;
$filenames = getFiles($path);
if (count($filenames) != 0) {
foreach ($filenames as $file) {
if ($file == "." || $file == ".." || $file == ".htaccess" ){
// not a upload file
} else {
$filesArray[$count]['name'] = $file;
if (is_dir($path . $file)) {
$filesArray[$count]['type'] = 'folder';
} else {
$filesArray[$count]['type'] = 'file';
$filesArray[$count]['url'] = tsl($SITEURL.'data/uploads/'.$patho).$file;
$ext = pathinfo($file,PATHINFO_EXTENSION);
$extention = get_FileType($ext);
$filesArray[$count]['category'] = $extention;
clearstatcache();
$ss = stat($path . $file);
$filesArray[$count]['date'] = date('c',$ss['mtime']);
$filesArray[$count]['size'] = $ss['size'];
}
}
$count++;
}
}
$filesArray = subval_sort($filesArray, 'name');
$filesArray = subval_sort($filesArray, 'type');
$wrapper = array('status' => 'success', 'message' => 'all_files_read ok', 'response' => $filesArray);
return json_encode($wrapper);
}
}
} // end of class
?>