Browse Source

Added group filtering for addons

The addons can now be attached to a group, made by request: https://opengamepanel.org/forum/viewthread.php?thread_id=6224
DieFeM 8 years ago
parent
commit
28d88ebc75

+ 4 - 0
lang/Arabic/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "أدخل اسم لهذه الإضافة ، 
 define('OGP_LANG_url_info', "أدخل عنوان الويب الذي يحتوى على ملف ليتم تحميله ، إذا كان مضغوطا بامتداد zip أو tar.gz سيتم فك الضغط فى المسار الأساسى للسيرفر أو فى المسار الذى بالأسفل.");
 define('OGP_LANG_path_info', "المسار يجب أن يكون قريبا لمجلد السيرفر ولا يحتى على شرطات مائلة فى البداية أو النهاية ، مثال : cstrike/cfg . اذا ترك فارغاً سيتم استخدام المسار الأساسى للسيرفر.");
 define('OGP_LANG_post-script_info', "أدخل كود الباش ، ستم تنفيذه كسكريبت ، يمكنك استخدام استبدال النص لتخصيص التثبيت ، سيتم استبدالها بالبيانات من السيرفر الذي تقوم بتثبيت الإضافة به. السكريبت سيبدأ من المجلد الأساسى للسيرفر أو المسار المحدد .");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/Czech(CzechRepublic)/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Enter a name for this addon, this is the nam
 define('OGP_LANG_url_info', "Enter a web address that contains a file to download, if compressed in zip or tar.gz will be unpacked in the root directory of the server or on the path given below.");
 define('OGP_LANG_path_info', "The path must be relative to the server folder and contain no slashes at the beginning or end, eg: cstrike/cfg. If left blank will use the server root path.");
 define('OGP_LANG_post-script_info', "Enter Bash language code, this will be executed as a script, you can use text replacements to customize the installation, they will be replaced by data from the server on which you install the addon. The script will start from the root folder of the server or the specified path.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/Danish/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Enter a name for this addon, this is the nam
 define('OGP_LANG_url_info', "Enter a web address that contains a file to download, if compressed in zip or tar.gz will be unpacked in the root directory of the server or on the path given below.");
 define('OGP_LANG_path_info', "The path must be relative to the server folder and contain no slashes at the beginning or end, eg: cstrike/cfg. If left blank will use the server root path.");
 define('OGP_LANG_post-script_info', "Enter Bash language code, this will be executed as a script, you can use text replacements to customize the installation, they will be replaced by data from the server on which you install the addon. The script will start from the root folder of the server or the specified path.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/English/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Enter a name for this addon, this is the nam
 define('OGP_LANG_url_info', "Enter a web address that contains a file to download, if compressed in zip or tar.gz will be unpacked in the root directory of the server or on the path given below.");
 define('OGP_LANG_path_info', "The path must be relative to the server folder and contain no slashes at the beginning or end, eg: cstrike/cfg. If left blank will use the server root path.");
 define('OGP_LANG_post-script_info', "Enter Bash language code, this will be executed as a script, you can use text replacements to customize the installation, they will be replaced by data from the server on which you install the addon. The script will start from the root folder of the server or the specified path.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/French/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Saisissez un nom pour votre Addon, ce sera l
 define('OGP_LANG_url_info', "Saisissez l'adresse internet (URL) hébergeant les fichiers à télécharger, si les fichiers sont compressés en zip ou en tar.gz, il seront automatiquement décompressés dans le répertoire racine du serveur ou dans le répertoire indiqué dans la rubrique 'Chemin'.");
 define('OGP_LANG_path_info', "Le répertoire doit être relatif au répertoire du serveur et ne contenir aucun slashes ('/') ni au début ni à la fin, exemple: 'cstrike/cfg'. Si le champ reste vide, le chemin par défaut sera le répertoire racine du serveur.");
 define('OGP_LANG_post-script_info', "Saisissez votre code en langage Bash, il sera exécuté comme un script, vous pouvez utiliser les variables de remplacement pour personnaliser l'installation, elles seront remplacées par les données du serveur pour lequel l'Addon est installé. Le script s'exécutera depuis le répertoire racine du serveur ou depuis le répertoire indiqué dans la rubrique 'Chemin'.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/German/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Geben Sie einen Namen für diese Erweiterung
 define('OGP_LANG_url_info', "Bitte geben Sie eine Webadresse ein, die die zu herunterladende Datei enthält. Wenn sich die Datei im zip oder tar.gz-Format befindet wird sie im Hauptverzeichnis des Servers oder im eingegebenen Pfad entpackt.");
 define('OGP_LANG_path_info', "Der Pfad muss relativ sein und am Anfang oder Ende keine Schrägstriche enthalten, z.B.: cstrike/cfg. Wenn er leer ist, wird das Hauptverzeichnis des Servers verwendet.");
 define('OGP_LANG_post-script_info', "Geben Sie Bash-Code ein, welcher als Script ausgeführt wird. Sie können Textersetzungen verwenden um die Installation anzupassen. Die Textersetzungen werden mit Daten vom Server ersetzt auf dem die Erweiterung installiert wird. Das Script startet vom Hauptverzeichnis des entsprechenden Servers oder einem eingegebenen Pfad.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/Greek(Greece)/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Βάλτε ένα όνομα για αυτό
 define('OGP_LANG_url_info', "Βάλτε μια διεύθυνση ιστού που περιέχει ένα αρχείο για κατέβασμα, αν είναι συμπιεσμένο σε zip ή tar.gz θα αποσυμπιεστεί στον ριζικό κατάλογο του διακομιστή ή στην διαδρομή που δίνεται παρακάτω.");
 define('OGP_LANG_path_info', "Η διαδρομή πρέπει να είναι συγγενική με τον φάκελο του διακομιστή και να μην περιέχει κάθετους στην αρχή ή στο τέλος, π.χ.: cstrike/cfg. Αν αφεθεί κενό θα χρησιμοποιηθεί η ριζική διαδρομή.");
 define('OGP_LANG_post-script_info', "Βάλτε κώδικα γλώσσας bash, θα εκτελεστεί σαν δέσμη ενεργειών, μπορείτε να χρησιμοποιήσετε αντικαταστάτες κειμένου για να προσαρμώσετε την εγκατάσταση, θα αντικατασταθούν από δεδομένα από τον διακομιστή στον οποίο εγκαταστήσατε το πρόσθετο. Η δέσμη ενεργειών θα ξεκινήσει από τον ριζικό φάκελο του διακομιστή ή την καθορισμένη διαδρομή.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/Hungarian/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Add meg ennek a kiegészítőnek a nevét, e
 define('OGP_LANG_url_info', "Adj meg egy webcímet ami tartalmazza a fájlt a letöltéshez, ha tömörítve van zip vagy tar.gz arhívumba, az ki lesz csomagolva a szerveren az alul megadott könyvtárba.");
 define('OGP_LANG_path_info', "Az elérési útnak relatívnak kell lennie a szerver mappához és nem tartalmazhat perjeleket az elején és a végén, pl.: cstrike/cfg. Ha üresen hagyod, akkor a szerver gyökérkönyvtárának az útvonalát fogja használni.");
 define('OGP_LANG_post-script_info', "Írd be a Bash nyelvi kódot, ez skriptként fog végrehajtódni, a szövegcserék használatával testre szabhatod a telepítést, azok helyettesítve lesznek a szerver adataival, amelyek a bővítményt telepíti. A parancsfájl a szerver gyökérmappájából vagy a megadott elérési útból indul.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/Italian/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Enter a name for this addon, this is the nam
 define('OGP_LANG_url_info', "Enter a web address that contains a file to download, if compressed in zip or tar.gz will be unpacked in the root directory of the server or on the path given below.");
 define('OGP_LANG_path_info', "The path must be relative to the server folder and contain no slashes at the beginning or end, eg: cstrike/cfg. If left blank will use the server root path.");
 define('OGP_LANG_post-script_info', "Enter Bash language code, this will be executed as a script, you can use text replacements to customize the installation, they will be replaced by data from the server on which you install the addon. The script will start from the root folder of the server or the specified path.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/Persian/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Enter a name for this addon, this is the nam
 define('OGP_LANG_url_info', "Enter a web address that contains a file to download, if compressed in zip or tar.gz will be unpacked in the root directory of the server or on the path given below.");
 define('OGP_LANG_path_info', "The path must be relative to the server folder and contain no slashes at the beginning or end, eg: cstrike/cfg. If left blank will use the server root path.");
 define('OGP_LANG_post-script_info', "Enter Bash language code, this will be executed as a script, you can use text replacements to customize the installation, they will be replaced by data from the server on which you install the addon. The script will start from the root folder of the server or the specified path.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/Polish/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Wprowadź nazwę dla tego dodatku, to jest n
 define('OGP_LANG_url_info', "Wpisz adres internetowy, który zawiera plik do pobrania,jeśli skompresowane w zip lub tar.gz zostaną rozpakowane w katalogu głównym serwera lub w ścieżce podanej poniżej.");
 define('OGP_LANG_path_info', "Ścieżka musi być w stosunku do folderu na serwerze i nie zawierać ukośników na początku lub na końcu, np: cstrike/cfg. Jeśli pozostanie puste będzie katalog root głównego serwera.");
 define('OGP_LANG_post-script_info', "Wprowadź kod BASH, zostanie wykonane jako skrypt, można używać zamienników tekstowych do dostosowania instalacji, zostaną one zastąpione przez dane z serwera, na którym można zainstalować dodatek. Skrypt rozpoczyna się od katalogu głównego serwera lub określonej ścieżce.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/Portuguese(Brazil)/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Digite um nome para este addon, este será o
 define('OGP_LANG_url_info', "Insira um endereço da Web que contenha um arquivo para download, se compactado no zip ou tar.gz será descompactado no diretório raiz do servidor ou no caminho fornecido abaixo.");
 define('OGP_LANG_path_info', "O caminho deve ser relativo à pasta do servidor e não contém barras no início ou no fim, por exemplo: cstrike / cfg. Se deixado em branco utilizará o caminho raiz do servidor.");
 define('OGP_LANG_post-script_info', "Digite o código de linguagem Bash, este será executado como um script, você pode usar substituições de texto para personalizar a instalação, eles serão substituídos por dados do servidor no qual você instala o addon. O script será iniciado a partir da pasta raiz do servidor ou o caminho especificado.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/Portuguese/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Digite um nome para este addon, este é o no
 define('OGP_LANG_url_info', "Insira um endereço da Web que contenha um arquivo para download, se compactado por zip ou tar.gz será descompactado no directório raiz do servidor ou no caminho fornecido abaixo.");
 define('OGP_LANG_path_info', "O caminho deve ser relativo à pasta do servidor e não contém barras no início ou no fim, por exemplo: cstrike/cfg. Se deixado em branco, este utilizará o caminho raiz do servidor.");
 define('OGP_LANG_post-script_info', "Digite os códigos de comando, pois estes serão executados em primeiro lugar, este será executado como um script, você pode usar substituições de texto para personalizar a instalação, eles serão substituídos por dados do servidor no qual você instala o addon. O script será iniciado a partir da pasta raiz do servidor no caminho especificado.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/Romanian(Romania)/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Enter a name for this addon, this is the nam
 define('OGP_LANG_url_info', "Enter a web address that contains a file to download, if compressed in zip or tar.gz will be unpacked in the root directory of the server or on the path given below.");
 define('OGP_LANG_path_info', "The path must be relative to the server folder and contain no slashes at the beginning or end, eg: cstrike/cfg. If left blank will use the server root path.");
 define('OGP_LANG_post-script_info', "Enter Bash language code, this will be executed as a script, you can use text replacements to customize the installation, they will be replaced by data from the server on which you install the addon. The script will start from the root folder of the server or the specified path.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/Russian/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Введите имя для этого ад
 define('OGP_LANG_url_info', "Введите веб-адрес, содержащий файл для загрузки. Если сжато в zip или tar.gz, тогда оно будет распаковано в корневом каталоге сервера или по пути, указанному ниже.");
 define('OGP_LANG_path_info', "Путь должен быть относительно папки сервера и не содержать нити в начале или конце cstrike/cfg. Если в пустом поле будет использоваться корневой путь сервера.");
 define('OGP_LANG_post-script_info', "Введите код языка Bash, это будет выполняться как скрипт, вы можете использовать текстовые замены для настройки установки, они будут заменены данными с сервера, на котором вы устанавливаете аддон. Сценарий начнется с корневой папки сервера или указанного пути.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/Serbian(Serbia)/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Enter a name for this addon, this is the nam
 define('OGP_LANG_url_info', "Enter a web address that contains a file to download, if compressed in zip or tar.gz will be unpacked in the root directory of the server or on the path given below.");
 define('OGP_LANG_path_info', "The path must be relative to the server folder and contain no slashes at the beginning or end, eg: cstrike/cfg. If left blank will use the server root path.");
 define('OGP_LANG_post-script_info', "Enter Bash language code, this will be executed as a script, you can use text replacements to customize the installation, they will be replaced by data from the server on which you install the addon. The script will start from the root folder of the server or the specified path.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/Spanish/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Introduzca un nombre descriptivo para este a
 define('OGP_LANG_url_info', "Introduzca una dirección web que contenga un archivo para descargar, si está comprimido en zip o tar.gz será descomprimido, en la raiz del directorio del servidor o en la ruta indicada a continuación.");
 define('OGP_LANG_path_info', "La ruta debe de ser relativa a la carpeta del servidor y no debe contener barras al principio ni al final, ejemplo: cstrike/cfg. Si lo deja en blanco se usara la raiz del servidor.");
 define('OGP_LANG_post-script_info', "Escriba código en lenguaje Bash, este será ejecutado como un script, puede usar los reemplazos de texto para personalizar la instalación, estos serán reemplazados por los datos del servidor en el que se instale el añadido. El script partirá de la carpeta raiz del servidor o de la ruta indicada.");
+define('OGP_LANG_show_to_group', "Mostrar al grupo");
+define('OGP_LANG_all_groups', "Todos los grupos");
+define('OGP_LANG_show_addons_for_selected_group', "Mostrar del grupo seleccionado");
+define('OGP_LANG_group', "Grupo");
 ?>

+ 4 - 0
lang/Swedish(Sweden)/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Fyll i ett namn för detta tillägg, detta 
 define('OGP_LANG_url_info', "Fyll i en webbadress som innehåller en nedladdningsbar fil, och om den är komprimerad i zip eller tar.gz kommer den att packas upp i rotkatalogen på servern, eller i sökvägen som anges nedan. ");
 define('OGP_LANG_path_info', "Sökvägen måste vara i förhållande till serverns mapp och får inte innehålla snedstreck i början eller slutet, t.ex.: cstrike/cfg. Om det lämnas tomt används serverns rotsökväg.");
 define('OGP_LANG_post-script_info', "Ange Bash språkkod, koden kommer att utföras som ett skript, du kan använda textbyte för att anpassa installationen, de kommer att ersättas med data från servern där du installerar tillägget. Skriptet startar från serverns rotmapp eller den angivna sökvägen.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 4 - 0
lang/Turkish(Turkey)/modules/addonsmanager.php

@@ -63,4 +63,8 @@ define('OGP_LANG_addon_name_info', "Bu Eklenti için bir ad girin, bu kullanıc
 define('OGP_LANG_url_info', "İndirilecek bir dosyayı içeren bir web adresi girin, zip biçiminde sıkıştırılmışsa veya tar.gz dosyasının, sunucunun kök dizininde veya aşağıda verilen yolda açılması gerekir.");
 define('OGP_LANG_path_info', "Yol, sunucu klasörüne göreli olmalı ve başında veya sonunda eğik çizgi içermemelidir, örneğin: cstrike / cfg. Boş bırakılırsa sunucu kök yolu kullanılır");
 define('OGP_LANG_post-script_info', "Bash dil kodunu girin, bu komut dosyası olarak yürütülecektir, yüklemeyi özelleştirmek için metin değiştirmelerini kullanabilir, eklentiyi yüklediğiniz sunucudaki verilerle değiştirilecektir. Komut dosyası sunucunun kök dizininden veya belirtilen yoldan başlayacaktır.");
+define('OGP_LANG_show_to_group', "Show to group");
+define('OGP_LANG_all_groups', "All groups");
+define('OGP_LANG_show_addons_for_selected_group', "Show addons for selected group");
+define('OGP_LANG_group', "Group");
 ?>

+ 15 - 6
modules/addonsmanager/addons_installer.php

@@ -52,10 +52,18 @@ function exec_ogp_module() {
 	$user_id = $_SESSION['user_id'];
 	
     $isAdmin = $db->isAdmin( $_SESSION['user_id'] );
+	$query_groups = "";
 	if($isAdmin) 
 		$home_info = $db->getGameHome($home_id);
 	else
-		$home_info = $db->getUserGameHome($_SESSION['user_id'],$home_id);
+	{
+		$home_info = $db->getUserGameHome($user_id,$home_id);
+		$groups = $db->getUsersGroups($_SESSION['user_id']);
+		$query_groups .= " AND (";
+		foreach($groups as $group)
+			$query_groups .= "group_id=".$group['group_id']." OR ";
+		$query_groups .= "group_id=0)";
+	}
 	
     if ( $home_info === FALSE )
     {
@@ -76,16 +84,17 @@ function exec_ogp_module() {
     if ( $state != "" )
     {
         $addon_id = (int)$_REQUEST['addon_id'];
-
-		$remote = new OGPRemoteLibrary($home_info['agent_ip'],$home_info['agent_port'],$home_info['encryption_key'],$home_info['timeout']);
-		$addons_rows = $db->resultQuery("SELECT url, path, post_script FROM OGP_DB_PREFIXaddons WHERE addon_id=".$addon_id);
+		
+		$addons_rows = $db->resultQuery("SELECT url, path, post_script FROM OGP_DB_PREFIXaddons WHERE addon_id=".$addon_id.$query_groups);
 
 		if (!$addons_rows) {
 			print_failure(get_lang('invalid_addon'));
 			$view->refresh('?m=addonsmanager&p=user_addons&home_id='. $home_id .'&mod_id='. $mod_id .'&ip='. $ip .'&port='.$port);
 			return;
 		}
-
+		
+		$remote = new OGPRemoteLibrary($home_info['agent_ip'],$home_info['agent_port'],$home_info['encryption_key'],$home_info['timeout']);
+		
 		$addon_info = $addons_rows[0];
 		$url = $addon_info['url'];
 		$filename = basename($url);
@@ -251,7 +260,7 @@ function exec_ogp_module() {
             <td align='left'>
 			<select name="addon_id">
 			<?php
-			$addons = $db->resultQuery("SELECT addon_id, name FROM OGP_DB_PREFIXaddons WHERE addon_type='".$addon_type."' AND home_cfg_id=" . $home_cfg_id . " ORDER BY name ASC");
+			$addons = $db->resultQuery("SELECT addon_id, name FROM OGP_DB_PREFIXaddons WHERE addon_type='".$addon_type."' AND home_cfg_id=" . $home_cfg_id . $query_groups . " ORDER BY name ASC");
 			foreach($addons as $addon) 
 			{
 			?>

+ 51 - 10
modules/addonsmanager/addons_manager.php

@@ -51,6 +51,7 @@ function exec_ogp_module() {
 		$fields['addon_type'] = $_POST['addon_type'];
 		$fields['home_cfg_id'] = $_POST['home_cfg_id'];
 		$fields['post_script'] = $_POST['post_script'];
+		$fields['group_id'] = $_POST['group_id'];
 		if( is_numeric($db->resultInsertId( 'addons', $fields )) )
 		{
 			print_success(get_lang_f("addon_has_been_created",$_POST['name']));
@@ -66,6 +67,7 @@ function exec_ogp_module() {
 	$post_script = isset($_POST['post_script']) ? $_POST['post_script'] : "";
 	$home_cfg_id = isset($_POST['home_cfg_id']) ? $_POST['home_cfg_id'] : "";
 	$addon_type = isset($_POST['addon_type']) ? $_POST['addon_type'] : "";
+	$group_id = isset($_POST['group_id']) ? $_POST['group_id'] : "";
 	$addon_types = array('plugin', 'mappack', 'config');
 
 	if (isset($_POST['addon_id']) && (int)$_POST['addon_id'] > 0 && isset($_POST['edit']))
@@ -78,6 +80,7 @@ function exec_ogp_module() {
 		$post_script = isset($addon_info['post_script']) ? $addon_info['post_script'] : "";
 		$home_cfg_id = isset($addon_info['home_cfg_id']) ? $addon_info['home_cfg_id'] : "";
 		$addon_type = isset($addon_info['addon_type']) ? $addon_info['addon_type'] : "";
+		$group_id = isset($addon_info['group_id']) ? $addon_info['group_id'] : "";
 	}
 	?>
 	<form action="" method="post">
@@ -174,6 +177,24 @@ function exec_ogp_module() {
 		?>
 				</td>
 			</tr>
+			<tr>
+				<td align="right">
+					<b><?php print_lang('show_to_group'); ?></b>
+				</td>
+				<td align="left">
+				<select name='group_id'>
+				<option value="0"><?php print_lang('all_groups'); ?></option>
+		<?php
+		$groups = $db->getGroupList();
+		foreach($groups as $group)
+		{
+			$selected = (isset($group_id) AND $group['group_id'] == $group_id) ? 'selected=selected' : '';
+			echo "<option value='".$group['group_id']."' $selected>".$group['group_name']."</option>\n";
+		}
+		?>
+				</select>
+				</td>
+			</tr>
 			<tr>
 				<td colspan="2" align="center">
 				<?php 
@@ -259,7 +280,18 @@ function exec_ogp_module() {
 					echo $option;
 				?>
 		
-				</select>			
+				</select>
+				<b><?php print_lang('group'); ?></b>
+				<select name='group_id'>
+				<option value="0"><?php print_lang('all_groups'); ?></option>
+				<?php
+				foreach($groups as $group)
+				{
+					$selected = (isset($_GET['group_id']) AND $group['group_id'] == $_GET['group_id']) ? 'selected=selected' : '';
+					echo "<option value='".$group['group_id']."' $selected>".$group['group_name']."</option>\n";
+				}
+				?>
+				</select>	
 				<button name="show" type="submit">
 				<?php print_lang('show'); ?>
 				</button>
@@ -269,6 +301,7 @@ function exec_ogp_module() {
 			<td>
 				<input name="show_game" type="submit" value="<?php print_lang('show_addons_for_selected_game'); ?>"/>
 				<input name="show_type" type="submit" value="<?php print_lang('show_addons_for_selected_type'); ?>"/>
+				<input name="show_group" type="submit" value="<?php print_lang('show_addons_for_selected_group'); ?>"/>
 				<input name="show_all" type="submit" value="<?php print_lang('show_all_addons'); ?>"/>
 			</td>
 		</tr>
@@ -283,30 +316,35 @@ function exec_ogp_module() {
 	
 	$home_cfg_id = !empty($_GET['home_cfg_id']) && (int)$_GET['home_cfg_id'] > 0 ? (int)$_GET['home_cfg_id'] : 0;
 	$addon_type = !empty($_GET['addon_type']) && in_array($_GET['addon_type'], $addon_types) ? $_GET['addon_type'] : "";
-
+	$group_id = isset($_GET['group_id']) && is_numeric($_GET['group_id']) ? (int)$_GET['group_id'] : 0;
+	
 	if ( isset($_GET['show']) )
 	{
-		$result = $db->resultQuery("SELECT DISTINCT addon_id, name, game_name, url, path FROM OGP_DB_PREFIXaddons NATURAL JOIN OGP_DB_PREFIXconfig_homes WHERE addon_type='".$addon_type."' AND home_cfg_id=".$home_cfg_id);
+		$result = $db->resultQuery("SELECT DISTINCT addon_id, name, game_name, url, path, group_id FROM OGP_DB_PREFIXaddons NATURAL JOIN OGP_DB_PREFIXconfig_homes WHERE addon_type='".$addon_type."' AND home_cfg_id=".$home_cfg_id);
 	}
 	elseif ( isset($_GET['show_all']) )
 	{
-		$result = $db->resultQuery("SELECT DISTINCT addon_id, name, game_name, url, path FROM OGP_DB_PREFIXaddons NATURAL JOIN OGP_DB_PREFIXconfig_homes");
+		$result = $db->resultQuery("SELECT DISTINCT addon_id, name, game_name, url, path, group_id FROM OGP_DB_PREFIXaddons NATURAL JOIN OGP_DB_PREFIXconfig_homes");
 	}
 	elseif ( isset($_GET['show_type']))
 	{
-		unset($_GET['show_all']);
-		unset($_GET['show_game']);
-		$result = $db->resultQuery("SELECT DISTINCT addon_id, name, game_name, url, path FROM OGP_DB_PREFIXaddons NATURAL JOIN OGP_DB_PREFIXconfig_homes WHERE addon_type='".$addon_type."'");
+		$result = $db->resultQuery("SELECT DISTINCT addon_id, name, game_name, url, path, group_id FROM OGP_DB_PREFIXaddons NATURAL JOIN OGP_DB_PREFIXconfig_homes WHERE addon_type='".$addon_type."'");
 	}
 	elseif ( isset($_GET['show_game']))
 	{
-		unset($_GET['show_all']);
-		unset($_GET['show_type']);
-		$result = $db->resultQuery("SELECT DISTINCT addon_id, name, game_name, url, path FROM OGP_DB_PREFIXaddons NATURAL JOIN OGP_DB_PREFIXconfig_homes WHERE home_cfg_id=".$home_cfg_id);
+		$result = $db->resultQuery("SELECT DISTINCT addon_id, name, game_name, url, path, group_id FROM OGP_DB_PREFIXaddons NATURAL JOIN OGP_DB_PREFIXconfig_homes WHERE home_cfg_id=".$home_cfg_id);
+	}
+	elseif ( isset($_GET['show_group']))
+	{
+		$result = $db->resultQuery("SELECT DISTINCT addon_id, name, game_name, url, path, group_id FROM OGP_DB_PREFIXaddons NATURAL JOIN OGP_DB_PREFIXconfig_homes WHERE group_id=".$group_id);
 	}
 	?>	
 	<table class="center">
 	<?php
+	$group_names = array();
+	foreach($groups as $group)
+		$group_names[$group['group_id']] = $group['group_name'];
+	
 	if (isset($result) and $result > 0)
 	{
 		foreach($result as $row)
@@ -320,6 +358,9 @@ function exec_ogp_module() {
 		 <td>
 		  <?php echo $row['name'];?>
 		 </td>
+		 <td>
+		  <?php echo "[".get_lang('group').": ". (isset($group_names[$row['group_id']])?$group_names[$row['group_id']]:get_lang('all_groups')) ."]";?>
+		 </td>
 		 <td>
 		  <input name="addon_id" type="hidden" value="<?php echo $row['addon_id'];?>"/>
 		  <input name="edit" type="submit" value="<?php print_lang('edit_addon'); ?>"/>

+ 5 - 3
modules/addonsmanager/module.php

@@ -24,8 +24,8 @@
 
 // Module general information
 $module_title = "Addons Manager";
-$module_version = "1.1";
-$db_version = 1;
+$module_version = "1.2";
+$db_version = 2;
 $module_required = TRUE;
 $module_menus = array( array( 'subpage' => 'addons_manager', 'name'=>'Addons Manager', 'group'=>'admin' ) );
 
@@ -42,5 +42,7 @@ $install_queries[0] = array(
 
 $install_queries[1] = array(
 	"ALTER TABLE `".OGP_DB_PREFIX."addons` ADD `post_script` longtext NOT NULL;");
-
+	
+$install_queries[2] = array(
+	"ALTER TABLE `".OGP_DB_PREFIX."addons` ADD `group_id` int(11) NULL;");
 ?>

+ 11 - 3
modules/addonsmanager/user_addons.php

@@ -31,10 +31,18 @@ function exec_ogp_module() {
 	$user_id = $_SESSION['user_id'];
 	// Check if user has some games.
 	$isAdmin = $db->isAdmin( $user_id );
+	$query_groups = "";
 	if($isAdmin) 
 		$home_info = $db->getGameHome($home_id);
 	else
+	{
 		$home_info = $db->getUserGameHome($user_id,$home_id);
+		$groups = $db->getUsersGroups($_SESSION['user_id']);
+		$query_groups .= " AND (";
+		foreach($groups as $group)
+			$query_groups .= "group_id=".$group['group_id']." OR ";
+		$query_groups .= "group_id=0)";
+	}
 	if ($home_info)
 	{
 		$home_cfg_id = $home_info['home_cfg_id'];
@@ -45,7 +53,7 @@ function exec_ogp_module() {
 									"FROM OGP_DB_PREFIXaddons ".
 									"NATURAL JOIN OGP_DB_PREFIXconfig_homes ".
 									"WHERE addon_type='plugin' ".
-									"AND home_cfg_id=".$home_cfg_id);
+									"AND home_cfg_id=".$home_cfg_id.$query_groups);
 		$plugins_qty = count($plugins);
 		if($plugins and $plugins_qty >= 1)
 			echo "<a href='?m=addonsmanager&amp;p=addons&amp;home_id=".$home_id.
@@ -56,7 +64,7 @@ function exec_ogp_module() {
 									 "FROM OGP_DB_PREFIXaddons ".
 									 "NATURAL JOIN OGP_DB_PREFIXconfig_homes ".
 									 "WHERE addon_type='mappack' ".
-									 "AND home_cfg_id=".$home_cfg_id);
+									 "AND home_cfg_id=".$home_cfg_id.$query_groups);
 		$mappacks_qty = count($mappacks);
 		if($mappacks and $mappacks_qty >= 1){
 			echo "</td><td>";
@@ -68,7 +76,7 @@ function exec_ogp_module() {
 									"FROM OGP_DB_PREFIXaddons ".
 									"NATURAL JOIN OGP_DB_PREFIXconfig_homes ".
 									"WHERE addon_type='config' ".
-									"AND home_cfg_id=".$home_cfg_id);
+									"AND home_cfg_id=".$home_cfg_id.$query_groups);
 		$configs_qty = count($configs);
 		if($configs and $configs_qty >= 1){
 			echo "</td><td>";

+ 16 - 2
modules/gamemanager/server_monitor.php

@@ -290,6 +290,20 @@ function exec_ogp_module() {
 			  $post_mod_id, 
 			  $post_ip, 
 			  $post_port ) = explode( "-", $_GET['home_id-mod_id-ip-port'] );
+			  
+	if($addonsmanager_installed)
+	{
+		$query_groups = "";
+		if(!$isAdmin)
+		{
+			$groups = $db->getUsersGroups($_SESSION['user_id']);
+			$query_groups .= " AND (";
+			foreach($groups as $group)
+				$query_groups .= "group_id=".$group['group_id']." OR ";
+			$query_groups .= "group_id=0)";
+		}
+	}
+	
 	foreach( $server_homes as $server_home )
 	{
 		if( ( $show_all or isset($_GET['home_cfg_id']) ) AND ( !isset($server_home['ip']) or !isset($server_home['mod_id']) ) )
@@ -371,8 +385,8 @@ function exec_ogp_module() {
 						</a>";
 			}
 			if ( $addonsmanager_installed )
-			{
-				$addons = $db->resultQuery("SELECT DISTINCT addon_id FROM OGP_DB_PREFIXaddons NATURAL JOIN OGP_DB_PREFIXconfig_homes WHERE home_cfg_id=".$server_home['home_cfg_id']);
+			{				
+				$addons = $db->resultQuery("SELECT addon_id FROM OGP_DB_PREFIXaddons WHERE home_cfg_id=".$server_home['home_cfg_id'].$query_groups);
 				$addons_qty = count($addons);
 				if($addons and $addons_qty >= 1){
 					$addonsmanager = "<a class='monitorbutton' href='?m=addonsmanager&amp;p=user_addons&amp;home_id=".