geti18nLanguages('knowledgeTree'); $aLanguageNames = $oReg->getLanguages('knowledgeTree'); $languages = array(); if(!empty($aRegisteredLangs)){ foreach (array_keys($aRegisteredLangs) as $sLang){ $languages[] = array( 'isoCode' => $sLang, 'language' => $aLanguageNames[$sLang] ); } } $this->setResponse(array('languages' => $languages, 'count' => count($languages), 'defaultLanguage' => $default->defaultLanguage)); } function get_rootfolder_detail($params){ $params['folderId'] = '1'; $this->get_folder_detail($params); } function get_folder_detail($params) { $kt = &$this->KT; $folder = &$kt->get_folder_by_id($params['folderId']); if (PEAR::isError($folder)) { $this->setError("Could not get folder by Id: {$params['folderId']}"); $this->setDebug('FolderError',array('kt'=>$kt,'folder'=>$folder)); return; } $detail = $folder->get_detail(); if (PEAR::isError($detail)) { $this->response= "detail error {$params['node']}"; } if(strtolower($detail['folder_name']) == 'root folder') { $detail['folder_name'] = 'KnowledgeTree'; } $qtip .= $this->xlate('Folder name').": {$detail['folder_name']}
"; $class = 'folder'; $permissions = $detail['permissions']; $perms = ''; //default write permissions to false $canWrite = false; //iterate through the permissions and convert to human-readable for ($j = 0; $j < strlen($permissions); $j++) { switch (strtoupper($permissions{$j})) { case 'W': $canWrite = true; $perms .= $this->xlate('write, '); break; case 'R': $perms .= $this->xlate('read, '); break; case 'A': $perms .= $this->xlate('add folder, '); break; } } //now chop off trailing ', ' if any if (strlen($perms) > 2) { $perms = substr($perms, 0, strlen($perms)-2); } //permissions $qtip .= $this->xlate('Permissions:') . " {$perms}
"; //comment $qtip .= $canWrite ? $this->xlate('You may add content to this folder') : $this->xlate('You may not add content to this folder'); $result[] = array ( 'text' => $detail['folder_name'], 'id' => $params['control'] . $params['node'], 'filename' => $detail['folder_name'], 'cls' => 'folder', 'leaf' => false, 'document_type' => '', 'item_type' => 'F', 'permissions' => $permissions, 'qtip'=> $qtip ); $this->setResponse($result); } function get_folder_contents($params){ $kt=&$this->KT; $params['control'] = 'F_'; $params['node'] = substr($params['node'], strlen($params['control'])); $folder = &$kt->get_folder_by_id($params['node']); if (PEAR::isError($folder)){ $this->addError("[error 1] Folder Not Found: {$params['control']}{$params['node']}"); return false; } $types = (isset($params['types']) ? $params['types'] : 'DF'); $listing = $folder->get_listing(1, $types); $result = $this->_processListing($listing, 'folderContents', $params); $this->setResponse($result); } private function _processListing($listing, $type, $arr){ $result = array(); $methodToIncludeItem = '_processItemInclusion_'.$type; foreach ($listing as $item) { $filename = $item['filename']; $itemType = $item['item_type']; $includeMe = true; //build up tooltip $qtip = ''; //default write permissions to false $canWrite = false; //default immutable to false $immutable = false; //first do permissions since they are applicable to both folders and docs $permissions = $item['permissions']; $perms = ''; //iterate through the permissions and convert to human-readable for ($j = 0; $j < strlen($permissions); $j++) { switch (strtoupper($permissions{$j})) { case 'W': $canWrite = true; $perms .= $this->xlate('write, '); break; case 'R': $perms .= $this->xlate('read, '); break; case 'A': $perms .= $this->xlate('add folder, '); break; // default: // $perms .= strtoupper($permissions{$j}); // break; } } //now chop off trailing ', ' if any if (strlen($perms) > 2) { $perms = substr($perms, 0, strlen($perms)-2); } //folders if ($itemType == 'F') { $qtip .= $this->xlate('Folder name').": {$filename}
"; $class = 'folder'; //permissions $qtip .= $this->xlate('Permissions:') . " {$perms}
"; //comment $qtip .= $canWrite ? $this->xlate('You may add content to this folder') : $this->xlate('You may not add content to this folder'); } //documents else { $qtip = ''; //get file extension so can determine mimetype $extpos = strrpos($filename, '.') ; if ($extpos === false) { $class = 'file-unknown'; } else { $ext = substr($filename, $extpos); // Get Extension including the dot $class = 'file-' . substr($filename, $extpos +1); // Get Extension without the dot } // Convert list to array $extensions = explode(',', $arr['extensions']); //don't include results which don't have the correct file extensions if(!in_array(strtolower($ext), $extensions)) { $includeMe = false; } else { //filename $qtip .= $this->xlate('Filename') . ": {$filename}
"; //size $qtip .= $this->xlate('File Size') . ": " . fsize_desc($item['filesize']) . "
"; //last modified $qtip .= $this->xlate('Modified') . ": {$item['modified_date']}
"; //owner $qtip .= $this->xlate('Owner') . ": {$item['created_by']}
"; //version $qtip .= $this->xlate('Version') . ": {$item['version']}
"; //immutability if (bool2str(strtolower($item['is_immutable'])) == 'true') { $canWrite = false; $immutable = true; } //status, i.e. checked out or not, or immutable if ($immutable) { $qtip .= $this->xlate('Status: Immutable') . '
'; } else if (strtolower($item['checked_out_by']) != 'n/a' && ($item['checked_out_by'] != '')) { $qtip .= $this->xlate('Status: Checked out by') . " {$item['checked_out_by']}
"; } else { $qtip .= $this->xlate('Status: Available') . '
'; } //permissions $qtip .= $this->xlate('Permissions:') . " {$perms}
"; //immutable if($immutable) { $qtip .= $this->xlate('This document is not editable'); } else if ($canWrite) { $qtip .= $this->xlate('You may edit this document'); } else { $qtip .= $this->xlate('This document is not editable'); } } }//end of if for files if($includeMe) { $result[] = $this->$methodToIncludeItem($item, $class, $qtip); } } return $result; } private function _processItemInclusion_folderContents($item, $class, $qtip) { return array ( 'text' => htmlspecialchars($item['title']), 'originaltext' => $item['title'], 'id' => ($item['item_type'] == 'F' ? $item['item_type']."_" : "").$item['id'], 'filename' => $item['filename'], 'cls' => $class, 'leaf' => ($item['item_type'] == 'D'), 'document_type' => $item['document_type'], 'item_type' => $item['item_type'], 'permissions' => $item['permissions'], 'content_id' => $item['content_id'], 'qtip'=> $qtip ); } private function _processItemInclusion_search($item, $class, $qtip) { return array ( 'text' => htmlspecialchars($item['title']), 'originaltext' => $item['title'], 'id' => $item['document_id'], 'filename' => $item['filename'], 'cls' => $class, 'leaf' => true, 'document_type' => $item['document_type'], 'item_type' => 'D', 'permissions' => $item['permissions'], 'content_id' => $item['content_id'], 'relevance' => $item['relevance'], 'qtip'=> $qtip ); } public function get_metadata($params) { $kt = &$this->KT; $document_id = (int)$params['document_id']; if($document_id > 0) { $document = $kt->get_document_by_id($params['document_id']); $detail = $document->get_metadata(); $document_detail = $document->get_detail(); $title = $document_detail['title']; $document_type = $document_detail['document_type']; } else { if(isset($params['document_type'])) { $document_type = $params['document_type']; } else { $document_type = 'Default'; } $detail = $kt->get_document_type_metadata($document_type); $title = ""; } $result = array(); $items = array(); $index = 0; $items[] = array("name" => "__title", "index" => 0, "value" => $title, "control_type" => "string"); // Commented out for timebeing - will be used by 'Save in Format' if (isset($params['extensions'])) { $fileParts = pathinfo($document_detail['filename']); $items[] = array("name" => "__document_extension", "index" => 0, "value" => strtolower($fileParts['extension']), "control_type" => "lookup", "selection" => explode(',', str_replace('.', '', $params['extensions']))); } $document_types = $this->get_documenttypes($params); $json_document_types = array(); foreach($document_types['items'] as $val) { $json_document_types[] = $val['name']; } $items[] = array("name" => "__document_type", "index" => 0, "value" => $document_type, "control_type" => "lookup", "selection" => $json_document_types); for($i=0;$i $detail[$i]['fieldset'], 'name' => $detail[$i]['fields'][$j]['name'], // Change for value. If blank value is set to 1, change value to '' // Overcomes issue of n/a 'value' => ($document_id > 0 ? ($detail[$i]['fields'][$j]['blankvalue'] == '1' ? '' : $detail[$i]['fields'][$j]['value']) : ''), 'description' => $detail[$i]['fields'][$j]['description'], 'control_type' => $detail[$i]['fields'][$j]['control_type'], 'selection' => $detail[$i]['fields'][$j]['selection'], 'required' => $detail[$i]['fields'][$j]['required'], 'blankvalue' => $detail[$i]['fields'][$j]['blankvalue'], 'index' => $index ); $index++; } } $this->setResponse(array('id' => $title, 'items' => $items, 'count' => count($items))); } public function get_documenttypes($params) { $kt = &$this->KT; $detail = $kt->get_documenttypes(); $result = array(); $items = array(); for($i=0;$i $detail[$i] ); } } $this->setResponse(array('items' => $items, 'count' => count($items))); } function update_document_type($params) { $kt = &$this->KT; $document_id = (int)$params['document_id']; if($document_id > 0) { $document = $kt->get_document_by_id($document_id); $document->change_document_type($params['document_type']); $this->setResponse(array('status_code' => 0)); return true; }else{ $this->addError("Invalid document Id : {$document_id}"); $this->setResponse(array('status_code' => 1)); return false; } } function download_document($params) { $kt=&$this->KT; $params['session_id']=$params['session_id']?$params['session_id']:$this->AuthInfo['session']; $params['app_type']=$params['app_type']?$params['app_type']:$this->AuthInfo['appType']; $this->addDebug('parameters',$params); $session_id=$params['session_id']; $document = &$kt->get_document_by_id($params['document_id']); $docname = $document->document->getFileName(); // $docname='test.txt'; if (PEAR::isError($document)) { $response['message'] = $document->getMessage(); $this->debug("download_document - cannot get $document_id - " . $document->getMessage(), $session_id); $this->setResponse(new SOAP_Value('$this->response=',"{urn:$this->namespace}kt_response", $response)); return; } $result = $document->download(); if (PEAR::isError($result)) { $response['message'] = $result->getMessage(); $this->setResponse(array('status_code' => 1, 'message' => $result->getMessage())); return; } $session = &$kt->get_session(); $download_manager = new KTDownloadManager(); $download_manager->set_session($session->session); $download_manager->cleanup(); $url = $download_manager->allow_download($document); $response['status_code'] = 0; $response['message'] = $url; $response['filename'] = $docname; $this->setResponse($response); } /** * Checkout a Document * params contains: * document_id the id of the document * reason the checkout reason * * @param array $params * */ function checkout_document($params){ $responseType = 'kt_response'; $kt=&$this->KT; $document = &$kt->get_document_by_id($params['document_id']); if (PEAR::isError($document)) { $this->addError("checkout_document - cannot get documentid {$params['document_id']} - " . $document->getMessage()); $this->setResponse(array('status_code' => 1, 'message' => $document->getMessage())); return; } $result = $document->checkout($params['reason']); if (PEAR::isError($result)) { $this->addError($result->getMessage()); $this->setResponse(array('status_code' => 1, 'message' => $result->getMessage())); return; } $url = ''; if ($params['download']) { $download_manager = new KTDownloadManager(); $download_manager->set_session($params['session_id']); $download_manager->cleanup(); $url = $download_manager->allow_download($document); } $this->setResponse(array('status_code' => 0, 'message' => $url)); } /** * Checkin Document //TODO: Find out how upload works * params contains: * document_id * filename * reason * tempfilename * * @param array $params */ function checkin_document($params){ $session_id = $this->AuthInfo['session']; $document_id = $params['document_id']; $filename = $params['filename']; $reason = $params['reason']; $tempfilename = $params['tempfilename']; $application = $this->AuthInfo['appType']; $this->addDebug('Checkin',"checkin_document('$session_id',$document_id,'$filename','$reason','$tempfilename', '$application')"); $kt = &$this->KT; // we need to add some security to ensure that people don't frig the checkin process to access restricted files. // possibly should change 'tempfilename' to be a hash or id of some sort if this is troublesome. $upload_manager = new KTUploadManager(); if (!$upload_manager->is_valid_temporary_file($tempfilename)) { $this->setResponse(array('status_code' => 12)); return; } $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) { $this->setResponse(array('status_code' => 13)); } // checkin $result = $document->checkin($filename, $reason, $tempfilename, false); if (PEAR::isError($result)) { $this->setResponse(array('status_code' => 14)); } // get status after checkin //$this->response= $this->get_document_detail($session_id, $document_id); $detail = $document->get_detail(); $detail['status_code'] = 0; $detail['message'] = ''; $this->setResponse($detail); } /** * Upload a document * * @param unknown_type $arr */ function add_document_with_metadata($arr){ $session_id = $arr['session_id']; //error_reporting(E_ALL); $metadata = array(); $packed = @json_decode($arr['metadata']); $this->debug('Entered add_document_with_metadata'); foreach($packed as $key => $val) { if(!is_array($metadata[$val->fieldset])) { $metadata[$val->fieldset]['fieldset'] = $val->fieldset; $metadata[$val->fieldset]['fields'] = array(); } $metadata[$val->fieldset]['fields'][] = array( 'name' => $val->name, 'value' => $val->value ); } $add_result = $this->add_document($arr['session_id'], $arr['folder_id'], $arr['title'], $arr['filename'], $arr['documenttype'], $arr['tempfilename'], $arr['application']); $this->debug('$this->response= from add_document'); $status_code = $add_result['status_code']; if ($status_code != 0) { $this->response= $add_result; } $document_id = $add_result['document_id']; $content_id = $add_result['content_id']; $update_result = $this->update_document_metadata($arr['session_id'], $document_id, $metadata, $arr['application'], array()); $this->debug('$this->response= from update_document_metadata'); $status_code = $update_result['status_code']; if ($status_code != 0) { $this->delete_document($arr['session_id'], $document_id, 'Rollback because metadata could not be added', $arr['application']); $this->response= $update_result; } $kt = &$this->KT; if (is_array($kt)) { $this->response= array('status_code' => 1); } $document = $kt->get_document_by_id($document_id); $result = $document->removeUpdateNotification(); if (PEAR::isError($result)) { // not much we can do, maybe just log! } $result = $document->mergeWithLastMetadataVersion(); if (PEAR::isError($result)) { // not much we can do, maybe just log! } $this->response= array('status_code' => 0, 'document_id' => $document_id, 'content_id' => $content_id); } } /* function debug($str) { $this->response= true; if(!is_resource($this->dfp)) { $this->dfp = fopen("./debug.log", "a+"); } fwrite($this->dfp, strftime("[DEBUG %Y-%m-%d %H:%M:%S] ").$str."\r\n"); } function add_document_params($params) { $session_id = $params['session_id']; $folder_id = $params['folder_id']; $title = $params['title']; $filename = $params['filename']; $documenttype = $params['documenttype']; $tempfilename = $params['tempfilename']; $application = $params['application']; $this->debug('Entered add_document'); $kt = &$this->get$this->xlateapi($session_id, $application); if (is_array($kt)) { $this->response= array('status_code' => 1); } $this->debug("Got \$kt"); $upload_manager = new KTUploadManager(); if (!$upload_manager->is_valid_temporary_file($tempfilename)) { $this->response= array('status_code' => 1); } $this->debug('Exited is_valid_temporary file'); $folder = &$kt->get_folder_by_id($folder_id); if (PEAR::isError($folder)) { $this->response= array('status_code' => 1); } $this->debug('Exited get_folder_by_id'); $document = &$folder->add_document($title, $filename, $documenttype, $tempfilename); if (PEAR::isError($document)) { $this->response= array('status_code' => 1); } $this->debug('Exited folder add_document'); $detail = $document->get_detail(); $detail['status_code'] = 0; $detail['message'] = ''; $this->response= $detail; } function add_document($session_id, $folder_id, $title, $filename, $documenttype, $tempfilename, $application) { $this->debug('Entered add_document'); $kt = &$this->get$this->xlateapi($session_id, $application); if (is_array($kt)) { $this->response= array('status_code' => 1); } $this->debug("Got \$kt"); $upload_manager = new KTUploadManager(); if (!$upload_manager->is_valid_temporary_file($tempfilename)) { $this->response= array('status_code' => 1); } $this->debug('Exited is_valid_temporary file'); $folder = &$kt->get_folder_by_id($folder_id); if (PEAR::isError($folder)) { $this->response= array('status_code' => 1); } $this->debug('Exited get_folder_by_id'); $document = &$folder->add_document($title, $filename, $documenttype, $tempfilename); if (PEAR::isError($document)) { $this->response= array('status_code' => 1); } $this->debug('Exited folder add_document'); $detail = $document->get_detail(); $detail['status_code'] = 0; $detail['message'] = ''; $this->response= $detail; } function delete_document($session_id, $document_id, $reason, $application) { $kt = &$this->get$this->xlateapi($session_id, $application ); if (is_array($kt)) { $this->response= array('status_code' => 1); } $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) { $this->response= array('status_code' => 1); } $result = $document->delete($reason); if (PEAR::isError($result)) { $this->response= array('status_code' => 1); } $response['status_code'] = 0; $this->response= $response; } function update_document_metadata($session_id, $document_id, $metadata, $application, $sysdata=null) { $this->debug('entered update_document_metadata'); $kt = &$this->get$this->xlateapi($session_id, $application ); $responseType = 'kt_response'; if ($this->version >= 2) { $responseType = 'kt_document_detail'; } if (is_array($kt)) { $this->response= array('status_code' => 1, 'kterror'=>$kt); } $document = &$kt->get_document_by_id($document_id); if (PEAR::isError($document)) { $this->response= array('status_code' => 1, 'error'=>'Error getting document'); } $result = $document->update_metadata($metadata); if (PEAR::isError($result)) { $this->response= array('status_code' => 1, 'error'=>'Error updating metadata'); } if ($this->version >= 2) { $result = $document->update_sysdata($sysdata); if (PEAR::isError($result)) { $this->response= array('status_code' => 1, 'error'=>'Error update_sysdata'); } } $response['status_code'] = 0; $this->response= array('status_code' => 0); } function get_client_policy($arr) { $policy_name = $arr['policy_name']; $config = KTConfig::getSingleton(); $policy = array( 'name' => $policy_name, 'value' => bool2str($config->get($policy_name)), 'type' => 'boolean' ); $response['policy'] = $policy; $response['message'] = 'Knowledgetree client policies retrieval succeeded.'; $response['status_code'] = 0; $this->response= $response; } function get_all_client_policies() { $config = KTConfig::getSingleton(); $policies = array('allowRememberPassword', 'captureReasonsCheckin', 'captureReasonsCheckout'); $$this->response=Policies = array(); foreach ($policies as $policy_name) { $policyInfo = array( 'name' => $policy_name, 'value' => bool2str($config->get('addInPolicies/'.$policy_name)), 'type' => 'boolean' ); $this->response=Policies[$policy_name] = $policyInfo; } $languages = $this->get_languages(); $metadata = array('totalProperty'=>'resultsCounter', 'root'=>'languages', 'fields'=>array('isoCode', 'language')); $finalArray = array(); $finalArray['metaData'] = $metadata; $finalArray['policies'] = $$this->response=Policies; $finalArray['languages'] = $languages['languages']; $finalArray['defaultLanguage'] = $languages['defaultLanguage']; $finalArray['resultsCounter'] = $languages['count']; $this->response= $finalArray; } function search($arr) { $kt = &$this->get$this->xlateapi($arr['session_id'], $arr['application']); if (is_array($kt)) { $this->response= $kt; } $listing = processSearchExpression("(GeneralText contains \"".$arr['query']."\")"); $result = ListController::_processListing($listing, 'search', $arr); if(!count($result)) { $result[] = array ( 'text' => $this->xlate("No results found"), 'id' => ($listing[$i]['item_type'] == 'F' ? $listing[$i]['item_type']."_" : "").$listing[$i]['id'], 'leaf' => true, 'relevance' => 0, 'qtip'=> $this->xlate("Please retry your search") ); } else { $result = array_slice($result, 0, 200); } $this->response= $result; } public function update_metadata($arr) { $session_id = $arr['session_id']; $metadata = array(); $packed = @json_decode($arr['metadata']); $this->debug('Entered add_document_with_metadata'); $special = array(); foreach($packed as $key => $val) { if(substr($val->name,0,2) != '__') { if(!is_array($metadata[$val->fieldset])) { $metadata[$val->fieldset]['fieldset'] = $val->fieldset; $metadata[$val->fieldset]['fields'] = array(); } $metadata[$val->fieldset]['fields'][] = array( 'name' => $val->name, 'value' => $val->value ); } else { $special[$val->name] = $val->value; } } $document_id = $arr['document_id']; $update_result = $this->update_document_metadata($arr['session_id'], $document_id, $metadata, $arr['application'], array()); $this->debug('$this->response= from update_document_metadata'); $status_code = $update_result['status_code']; if ($status_code != 0) { $this->response= $update_result; } $kt = &$this->get$this->xlateapi($arr['session_id']); if (is_array($kt)) { $this->response= $kt; } if(!empty($special)) { if($document_id > 0) { $document = $kt->get_document_by_id($document_id); if(isset($special['__title'])) { $this->debug("Renaming to {$special['__title']}"); $res = $document->rename($special['__title']); } } } $this->response= array('status_code' => 0, 'document_id' => $document_id); } function check_document_title($arr) { $kt = &$this->get$this->xlateapi($arr['session_id'], $arr['application'] ); if (is_array($kt)) { $this->response= array('status_code' => 1); } $folder = $kt->get_folder_by_id($arr['folder_id']); if(PEAR::isError($folder)) { $this->response= array('status_code' => 1, 'reason' => 'No such folder'); } $doc = $folder->get_document_by_name($arr['title']); if(PEAR::isError($doc)) { $this->response= array('status_code' => 1, 'reason' => 'No document with that title '.$arr['title']); } $this->response= array('status_code' => 0); } //$session_id, $document_id, $reason function cancel_checkout($params) { //$this->debug("undo_document_checkout({$params['session_id']}, {$params['document_id']}, {$params['reason']})"); $kt = &$this->get$this->xlateapi($params['session_id'], $params['application'] ); if (is_array($kt)) { $this->response= array('status_code' => 1); } $document = &$kt->get_document_by_id($params['document_id']); if (PEAR::isError($document)) { $this->response= array('status_code' => 1, 'message' => $document->getMessage()); } $result = $document->undo_checkout($params['reason']); if (PEAR::isError($result)) { $this->response= array('status_code' => 1, 'message' => $result->getMessage()); } $response['status_code'] = 0; $this->response= $response; } function get_users_groups($params) { $kt = &$this->get$this->xlateapi($params['session_id'],$params['application'] ); if (is_array($kt)) { $this->response= array('status_code' => 1); } $query = $params['query']; //$start = $params['start']; //$page = $params['page']; $results = KTAPI_User::getList('name LIKE "%'.$query.'%" AND id>0'); $$this->response=Array = array(); if (count($results) > 0) { foreach ($results as $user) { $$this->response=Array[] = array('emailid'=>'u_'.$user->getId(), 'name'=> $user->getName(), 'to'=>preg_replace('/('.$query.')/i', '${0}', $user->getName())); } } $groups = KTAPI_Group::getList('name LIKE "%'.$query.'%"'); if (count($groups) > 0) { foreach ($groups as $group) { $$this->response=Array[] = array('emailid'=>'g_'.$group->getId(), 'name'=> $group->getName(), 'to'=>preg_replace('/('.$query.')/i', '${0}', $group->getName())); } } $sendArray = array ('emails'=>$$this->response=Array, 'metaData'=>array('count'=>count($finalArray), 'root'=>'emails', fields=>array('name', 'to', 'emailid'))); $this->response= $sendArray; } function send_email($params) { $kt = &$this->get$this->xlateapi($params['session_id'], $params['application'] ); if (is_array($kt)) { $this->response= array('status_code' => 1); } $message = $params['message']; $list = $params['users']; $recipientsList = array(); $list = explode(',', $list); foreach ($list as $recipient) { if (trim($recipient) != '') { // check that value is present // if @ sign is present, signifies email address if(strpos($recipient, '@') === false) { // Not email $recipient = trim($recipient); switch (substr($recipient, 0, 2)) { case 'u_': $id = substr($recipient, 2); $user = KTAPI_User::getById($id); if ($user != null) { $recipientsList[] = $user; } break; case 'g_': $id = substr($recipient, 2); $group = KTAPI_Group::getById($id); if ($group != null) { $recipientsList[] = $group; } break; } } else { // Email - just add to list $recipientsList[] = trim($recipient); } } } $document = $kt->get_document_by_id($params['document']); if (count($recipientsList) == 0) { $this->response= array('status'=>'norecipients'); } else { $document->email($recipientsList, $message, TRUE); // true to attach document $this->response= array('status'=>'documentemailed'); } } function is_latest_version($params) { $kt=&$this->KT; if (is_array($kt)) { $this->response= $kt; } $documentId = $params['document_id']; $contentId = $params['content_id']; $result = $kt->is_latest_version($documentId, $contentId); $this->response= $result; } function check_permission($params) { $kt=&$this->KT; if (is_array($kt)) { $this->response= $kt; } $user = $kt->get_user(); $document = $kt->get_document_by_id($params['document_id']); $folder = &$kt->get_folder_by_id($document->ktapi_folder->folderid); $folderDetail = $folder->get_detail(); $permissions = $folderDetail['permissions']; if ($user->getId() == $document->document->getCheckedOutUserID()) { $permissions .= 'E'; } $this->response= array('status_code'=>0, 'permissions'=>$permissions); //$this->response= $permissions; } function renamefolder($params) { $kt = &$this->get$this->xlateapi($params['session_id'], $params['application'] ); if (is_array($kt)) { $this->response= array('status_code' => 1); } $response = $kt->rename_folder($params['currentfolderid'], $params['newname']); if ($response['status_code'] == 0) { $this->response= array('status_code' => 0, 'status'=>'folderupdated', 'icon'=>'success', 'title'=>$this->xlate('Folder Renamed'), 'message'=>$this->xlate('Folder has been successfully renamed')); } else { $this->response= array('status_code' => 1, 'status'=>'error', 'icon'=>'failure', 'title'=>$this->xlate('Unable to rename folder'), 'message'=>$this->xlate('Unable to rename folder')); //$response['message'] } } function addfolder($params) { $kt = &$this->get$this->xlateapi($params['session_id'], $params['application'] ); if (is_array($kt)) { $this->response= array('status_code' => 1); } $response = $kt->create_folder($params['currentfolderid'], $params['newname']); if ($response['status_code'] == 0) { $this->response= array('status_code' => 0, 'status'=>'folderupdated', 'icon'=>'success', 'title'=>$this->xlate('Folder Created'), 'message'=>$this->xlate('Folder has been successfully created'), 'id' =>$response['results']['id']); //$params['newname']);// } else { $this->response= array('status_code' => 1, 'status'=>'error', 'icon'=>'failure', 'title'=>$this->xlate('Unable to create folder'), 'message'=>$this->xlate('Unable to create folder')); //$response['message'] } } function deletefolder($params) { $kt = &$this->get$this->xlateapi($params['session_id'], $params['application'] ); if (is_array($kt)) { $this->response= array('status_code' => 1); } $response = $kt->delete_folder($params['folderid'], 'Deleted from office addin'); if ($response['status_code'] == 0) { $this->response= array('status_code' => 0, 'status'=>'folderdeleted', 'icon'=>'success', 'title'=>$this->xlate('Folder Deleted'), 'message'=>$this->xlate('Folder has been successfully deleted')); } else { $this->response= array('status_code' => 1, 'status'=>'error', 'icon'=>'failure', 'title'=>$this->xlate('Unable to delete folder'), 'message'=>$this->xlate('Unable to delete folder')); //$response['message'] } } function candeletefolder($arr) { $kt = &$this->get$this->xlateapi($arr['session_id'], $arr['application']); if (is_array($kt)) { $this->response= $kt; } $folder = &$kt->get_folder_by_id($arr['folderid']); if (PEAR::isError($folder)) { $response = 'error'; $this->response= 'error 1'; } $listing = $folder->get_listing(1, 'DF'); if (count($listing) == 0) { $this->response= array('status_code' => 0, 'candelete'=>TRUE); } else { $this->response= array('status_code' => 0, 'candelete'=>FALSE); } } */ ?>