
LCARS is a template for the GetSimple CMS that mimics the monitor appearance in the television series Star Trek: The Next Generation
178 lines
4.5 KiB
PHP
178 lines
4.5 KiB
PHP
<?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['ctime']);
|
|
$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
|
|
?>
|