From a191b75c3192156c67f45778e05cf88fff42bf50 Mon Sep 17 00:00:00 2001
From: Frank Karlitschek <karlitschek@kde.org>
Date: Fri, 23 Mar 2012 15:52:41 +0100
Subject: [PATCH] make it possible to connect to other ocs appstores and other
 ocs knowledgebase servers. also make it possible to switch the app store and
 the knowledgebase off completely.

---
 config/config.sample.php |  4 ++++
 lib/app.php              |  9 ++++---
 lib/ocsclient.php        | 52 ++++++++++++++++++++++++++++++++++++----
 3 files changed, 57 insertions(+), 8 deletions(-)
 mode change 100644 => 100755 lib/app.php
 mode change 100644 => 100755 lib/ocsclient.php

diff --git a/config/config.sample.php b/config/config.sample.php
index 5206737455..199c9248c5 100755
--- a/config/config.sample.php
+++ b/config/config.sample.php
@@ -15,6 +15,10 @@ $CONFIG = array(
 "theme" => "",
 "3rdpartyroot" => "",
 "3rdpartyurl" => "",
+"knowledgebaseenabled" => true,
+"knowledgebaseurl" => "",
+"appstoreenabled" => true,
+"appstoreurl" => "",
 // "datadirectory" => ""
 );
 ?>
diff --git a/lib/app.php b/lib/app.php
old mode 100644
new mode 100755
index 64cbe8894e..3daf539aa2
--- a/lib/app.php
+++ b/lib/app.php
@@ -210,10 +210,13 @@ class OC_App{
 	public static function getSettingsNavigation(){
 		$l=new OC_L10N('core');
 
+		$settings = array();
 		// by default, settings only contain the help menu
-		$settings = array(
-			array( "id" => "help", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "help.php" ), "name" => $l->t("Help"), "icon" => OC_Helper::imagePath( "settings", "help.svg" ))
- 		);
+		if(OC_Config::getValue('knowledgebaseenabled', true)==true){
+			$settings = array(
+				array( "id" => "help", "order" => 1000, "href" => OC_Helper::linkTo( "settings", "help.php" ), "name" => $l->t("Help"), "icon" => OC_Helper::imagePath( "settings", "help.svg" ))
+ 			);
+		}
 
 		// if the user is logged-in
 		if (OC_User::isLoggedIn()) {
diff --git a/lib/ocsclient.php b/lib/ocsclient.php
old mode 100644
new mode 100755
index 9d5932fb72..d830a4f3e7
--- a/lib/ocsclient.php
+++ b/lib/ocsclient.php
@@ -28,6 +28,38 @@
 
 class OC_OCSClient{
 
+	/**
+	 * @brief Get the url of the OCS AppStore server. 
+	 * @returns string of the AppStore server
+	 *
+	 * This function returns the url of the OCS AppStore server. It´s possible to set it in the config file or it will fallback to the default
+	 */
+	private static function getAppStoreURL(){
+		$configurl=OC_Config::getValue('appstoreurl', '');
+		if($configurl<>'') {
+			$url=$configurl;
+		}else{
+			$url='http://api.apps.owncloud.com/v1';
+		}
+		return($url);
+	}
+
+        /**
+         * @brief Get the url of the OCS KB server. 
+         * @returns string of the KB server
+         * This function returns the url of the OCS knowledge base server. It´s possible to set it in the config file or it will fallback to the default
+         */
+        private static function getKBURL(){
+                $configurl=OC_Config::getValue('knowledgebaseurl', '');
+                if($configurl<>'') {
+                        $url=$configurl;
+                }else{
+                        $url='http://api.apps.owncloud.com/v1';
+                }
+                return($url);
+        }
+
+
 	/**
 	 * @brief Get all the categories from the OCS server
 	 * @returns array with category ids
@@ -35,7 +67,7 @@ class OC_OCSClient{
 	 * This function returns a list of all the application categories on the OCS server
 	 */
 	public static function getCategories(){
-		$url='http://api.apps.owncloud.com/v1/content/categories';
+		$url=OC_OCSClient::getAppStoreURL().'/content/categories';
 	
 		$xml=@file_get_contents($url);
 		if($xml==FALSE){
@@ -64,12 +96,16 @@ class OC_OCSClient{
 	 * This function returns a list of all the applications on the OCS server
 	 */
 	public static function getApplications($categories){
+		if(OC_Config::getValue('appstoreenabled', true)==false){
+			return(array());
+		}
+
 		if(is_array($categories)) {
 			$categoriesstring=implode('x',$categories);
 		}else{
 			$categoriesstring=$categories;
 		}
-		$url='http://api.apps.owncloud.com/v1/content/data?categories='.urlencode($categoriesstring).'&sortmode=new&page=0&pagesize=10';
+		$url=OC_OCSClient::getAppStoreURL().'/content/data?categories='.urlencode($categoriesstring).'&sortmode=new&page=0&pagesize=10';
 		$apps=array();
 		$xml=@file_get_contents($url);
 		if($xml==FALSE){
@@ -104,7 +140,7 @@ class OC_OCSClient{
 	 * This function returns an  applications from the OCS server
 	 */
 	public static function getApplication($id){
-		$url='http://api.apps.owncloud.com/v1/content/data/'.urlencode($id);
+		$url=OC_OCSClient::getAppStoreURL().'/content/data/'.urlencode($id);
 
 		$xml=@file_get_contents($url);
 		if($xml==FALSE){
@@ -137,7 +173,7 @@ class OC_OCSClient{
          * This function returns an download url for an applications from the OCS server
          */
         public static function getApplicationDownload($id,$item){
-                $url='http://api.apps.owncloud.com/v1/content/download/'.urlencode($id).'/'.urlencode($item);
+                $url=OC_OCSClient::getAppStoreURL().'/content/download/'.urlencode($id).'/'.urlencode($item);
 
                 $xml=@file_get_contents($url);
                 if($xml==FALSE){
@@ -164,9 +200,15 @@ class OC_OCSClient{
 	 * This function returns a list of all the knowledgebase entries from the OCS server
 	 */
 	public static function getKnownledgebaseEntries($page,$pagesize){	
+		if(OC_Config::getValue('knowledgebaseenabled', true)==false){
+			$kbe=array();
+			$kbe['totalitems']=0;
+			return $kbe;
+		}
+
 		$p= (int) $page;
 		$s= (int) $pagesize;
-		$url='http://api.apps.owncloud.com/v1/knowledgebase/data?type=150&page='.$p.'&pagesize='.$s;
+		$url=OC_OCSClient::getKBURL().'/knowledgebase/data?type=150&page='.$p.'&pagesize='.$s;
 
 		$kbe=array();
 		$xml=@file_get_contents($url);
-- 
GitLab