Browse Source

Check if the tab is already inserted - refs #7173

Francis Gonzales 10 years ago
parent
commit
5b88eabe83
1 changed files with 21 additions and 5 deletions
  1. 21 5
      main/inc/lib/plugin.class.php

+ 21 - 5
main/inc/lib/plugin.class.php

@@ -481,11 +481,10 @@ class Plugin
     public function addTab($tabName, $url)
     {
         $sql = "SELECT * FROM settings_current
-                WHERE
-                    variable = 'show_tabs' AND
-                    subkey like 'custom_tab_%'";
+            WHERE
+            variable = 'show_tabs' AND
+            subkey like 'custom_tab_%'";
         $result = Database::query($sql);
-
         $customTabsNum = Database::num_rows($result);
 
         $tabNum = $customTabsNum + 1;
@@ -493,6 +492,22 @@ class Plugin
         //Avoid Tab Name Spaces
         $tabNameNoSpaces = preg_replace('/\s+/', '', $tabName);
         $subkeytext = "Tabs" . $tabNameNoSpaces;
+
+
+        //Check if it is already added
+        $checkCondition = array(
+            'where' =>
+                array(
+                    "variable = 'show_tabs' AND subkeytext = ?" => array(
+                        $subkeytext
+                    )
+                )
+        );
+        $checkDuplicate = Database::select('*', 'settings_current', $checkCondition);
+        if (!empty($checkDuplicate)) {
+            return false;
+        }
+        //End Check
         $subkey = 'custom_tab_' . $tabNum;
         $attributes = array(
             'variable' => 'show_tabs',
@@ -517,7 +532,6 @@ class Plugin
         $whereCondition = array(
             'id = ?' => key($settings)
         );
-
         Database::update('settings_current', $setData, $whereCondition);
 
         return $resp;
@@ -526,6 +540,8 @@ class Plugin
     /**
      * Delete a tab to chamilo's platform
      * @param string $key
+     *
+     * @return boolean $resp
      */
     public function deleteTab($key)
     {