diff --git a/core/modules/forum/forum.admin.inc b/core/modules/forum/forum.admin.inc
index e3c564a..b468e09 100644
--- a/core/modules/forum/forum.admin.inc
+++ b/core/modules/forum/forum.admin.inc
@@ -20,9 +20,10 @@
  * @see forum_menu()
  */
 function forum_form_main($type, $edit = array()) {
+
   $edit = (array) $edit;
   if ((isset($_POST['op']) && $_POST['op'] == t('Delete')) || !empty($_POST['confirm'])) {
-    return drupal_get_form('forum_confirm_delete', $edit['tid']);
+    return drupal_get_form('forum_confirm_delete', $edit['tid']);  
   }
   switch ($type) {
     case 'forum':
@@ -31,6 +32,18 @@ function forum_form_main($type, $edit = array()) {
     case 'container':
       return drupal_get_form('forum_form_container', $edit);
       break;
+    case 'lock_forum':
+      return drupal_get_form('forum_form_lock', $edit);
+      break;
+    case 'lock_container':
+      return drupal_get_form('forum_form_lock', $edit);
+      break;
+    case 'unlock_forum':
+      return drupal_get_form('forum_form_unlock', $edit);
+      break;
+    case 'unlock_container':
+      return drupal_get_form('forum_form_unlock', $edit);
+      break;
   }
 }
 
@@ -299,11 +312,28 @@ function forum_overview($form, &$form_state) {
       if (in_array($form[$key]['#term']['tid'], $config->get('containers'))) {
         $form[$key]['operations']['#links']['edit']['title'] = t('edit container');
         $form[$key]['operations']['#links']['edit']['href'] = 'admin/structure/forum/edit/container/' . $term['tid'];
+        if (_is_forum_locked($term['tid'])) {
+          $form[$key]['operations']['#links']['unlock']['title'] = t('unlock container');
+          $form[$key]['operations']['#links']['unlock']['href'] = 'admin/structure/forum/unlock/container/' . $term['tid'];
+        }
+        else {
+          $form[$key]['operations']['#links']['lock']['title'] = t('lock container');
+          $form[$key]['operations']['#links']['lock']['href'] = 'admin/structure/forum/lock/container/' . $term['tid'];
+        }
       }
       else {
         $form[$key]['operations']['#links']['edit']['title'] = t('edit forum');
         $form[$key]['operations']['#links']['edit']['href'] = 'admin/structure/forum/edit/forum/' . $term['tid'];
+        if (_is_forum_locked($term['tid'])) {
+          $form[$key]['operations']['#links']['unlock']['title'] = t('unlock forum');
+          $form[$key]['operations']['#links']['unlock']['href'] = 'admin/structure/forum/unlock/forum/' . $term['tid'];
+        }
+        else {
+          $form[$key]['operations']['#links']['lock']['title'] = t('lock forum');
+          $form[$key]['operations']['#links']['lock']['href'] = 'admin/structure/forum/lock/forum/' . $term['tid'];
+        }
       }
+        
     }
   }
 
@@ -326,6 +356,106 @@ function forum_overview($form, &$form_state) {
  *   Title for the select box.
  * @param $child_type
  *   Whether the child is a forum or a container.
+ * 
+ * Returns a confirmation page for block a forum taxonomy term.
+ *
+ * @param $tid ID of the term to be locked.
+ */
+function forum_form_lock($form, &$form_state, $forum = array()) {
+  //$form, &$form_state, $edit = array()
+  drupal_set_title(t('Are you sure you want to lock the forum %name?', array('%name' => $forum['name'])), PASS_THROUGH);
+  $form['tid'] = array('#type' => 'value', '#value' => $forum['tid']);
+  $form['name'] = array('#type' => 'value', '#value' => $forum['name']);
+  $form['reason'] = array('#type' => 'textarea',
+    '#title' => t('Reason'),
+    '#description' => t('Describe why reason lock this forum.'),
+    '#required' => TRUE,
+  );
+  $form['actions']['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Lock')
+  );
+  $options = array('path' => 'admin/structure/forum/');
+  $form['actions']['cancel'] = array(
+    '#type' => 'link',
+    '#title' => t('Cancel'),
+    '#href' => $options['path'],
+    '#options' => $options,
+  );
+  return $form;
+}
+
+/**
+ * Returns a select box for available parent terms.
+ *
+ * @param $tid
+ *   ID of the term that is being added or edited.
+ * @param $title
+ *   Title for the select box.
+ * @param $child_type
+ *   Whether the child is a forum or a container.
+ * 
+ * Returns a confirmation page for block a forum taxonomy term.
+ *
+ * @param $tid ID of the term to be locked.
+ */
+function forum_form_unlock($form, &$form_state, $forum = array()) {
+  //$form, &$form_state, $edit = array()
+  drupal_set_title(t('Are you sure you want to unlock the forum %name?', array('%name' => $forum['name'])), PASS_THROUGH);
+  $form['tid'] = array('#type' => 'value', '#value' => $forum['tid']);
+  $form['name'] = array('#type' => 'value', '#value' => $forum['name']);
+  $form['actions']['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Unock')
+  );
+  $options = array('path' => 'admin/structure/forum/');
+  $form['actions']['cancel'] = array(
+    '#type' => 'link',
+    '#title' => t('Cancel'),
+    '#href' => $options['path'],
+    '#options' => $options,
+  );
+  return $form;
+}
+
+
+/**
+ * Implementation of Callback form_ID_submit()
+ */
+function forum_form_lock_submit($form, $form_state) {
+  global $user;
+  $data = $form_state['values'];
+    // Locking tid
+  _lock_tid($data, $user->uid);
+  // Check if there are tid inside
+  // Get topics (nid) to set comment = 1
+  $arr_topics = _get_topics($data['tid']);
+  foreach($arr_topics as $topic) {
+    _update_topics($topic->nid, 1);
+  }
+
+  drupal_set_message('The forum locked succesfull');
+  drupal_goto('admin/structure/forum/');
+}
+
+/**
+ * Implementation of Callback form_ID_submit()
+ */
+function forum_form_unlock_submit($form, $form_state) {
+  $data = $form_state['values'];
+    $db_result = db_delete('forum_locked')
+    ->condition('term_id', $data['tid'])
+    ->execute();
+  $arr_topics = _get_topics($data['tid']);
+  foreach($arr_topics as $topic) {
+    _update_topics($topic->nid, 2);
+  }
+  drupal_set_message('The forum was unlock succesfull');
+  drupal_goto('admin/structure/forum/');
+}
+ 
+/**
+ * Returns a select box for available parent terms
  *
  * @return
  *   A select form element.
@@ -368,3 +498,55 @@ function _forum_parent_select($tid, $title, $child_type) {
 
   return array('#type' => 'select', '#title' => $title, '#default_value' => $parent, '#options' => $options, '#description' => $description, '#required' => TRUE);
 }
+
+/**
+ * Returns is forum or container is locked.
+ * 
+ * @param $tid ID of the term to be locked.
+ *
+ * @return $locked if a forum or container is locked.
+ *
+ */
+function _is_forum_locked($tid) {
+  $locked = FALSE;
+  $db_result = db_select('forum_locked', 'fl')
+    ->fields('fl', array('term_id'))
+    ->condition('term_id', $tid, '=')
+    ->execute()
+    ->fetchObject();
+  
+  if ($db_result) {
+    $locked = TRUE;
+  }
+  return $locked;
+}
+
+
+
+function _lock_tid($data, $uid) {
+  $query = db_insert('forum_locked')
+  ->fields(array(
+    'term_id' => $data['tid'],
+    'locked' => time(),
+    'user_id' => $uid,  
+    'reason' => $data['reason'],
+  ))
+  ->execute();
+  return $query;
+}
+
+function _get_topics($tid) {
+  // Get topics (nid)
+  $query = db_select('forum', 'f')
+    ->fields('f', array('nid'))
+    ->condition('tid', $tid, '=')
+    ->execute()
+    ->fetchAll();
+  return $query;
+}
+
+function _update_topics($nid, $val) {
+  $topic = node_load($nid);
+  $topic->comment = $val;
+  node_save($topic);
+}
diff --git a/core/modules/forum/forum.install b/core/modules/forum/forum.install
index 8e6fddf..bd925bc 100644
--- a/core/modules/forum/forum.install
+++ b/core/modules/forum/forum.install
@@ -244,7 +244,38 @@ function forum_schema() {
     ),
   );
 
-
+$schema['forum_locked'] = array(
+    'description' => 'Stores the lock forums.',
+    'fields' => array(
+      'term_id' => array(
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 0,
+        'description' => 'The {taxonomy_term_data}.tid of the lock forum.',
+      ),
+      'locked' => array(
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 0,
+        'description' => 'A Unix timestamp indicating when this forum was locked.',
+      ),
+      'user_id' => array(
+        'description' => 'The {users}.uid that lock this forum.',
+        'type' => 'int',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
+      'reason' => array(
+        'description' => 'A brief description of why this forum was locked.',
+        'type' => 'text',
+        'not null' => TRUE,
+        'size' => 'medium',
+      ),
+    ),
+    'primary key' => array('term_id'),
+  );
   return $schema;
 }
 
diff --git a/core/modules/forum/forum.module b/core/modules/forum/forum.module
index 30b1e6b..bad01e1 100644
--- a/core/modules/forum/forum.module
+++ b/core/modules/forum/forum.module
@@ -158,6 +158,35 @@ function forum_menu() {
     'access arguments' => array('administer forums'),
     'file' => 'forum.admin.inc',
   );
+  $items['admin/structure/forum/lock/forum/%taxonomy_term'] = array(
+    'title' => 'Inactive forum',
+    'page callback' => 'forum_form_main',
+    'page arguments' => array('lock_forum', 5),
+    'access arguments' => array('administer forums'),
+    'file' => 'forum.admin.inc',
+  );
+  $items['admin/structure/forum/lock/container/%taxonomy_term'] = array(
+    'title' => 'Inactive forum',
+    'page callback' => 'forum_form_main',
+    'page arguments' => array('lock_container', 5),
+    'access arguments' => array('administer forums'),
+    'file' => 'forum.admin.inc',
+  );
+  $items['admin/structure/forum/unlock/forum/%taxonomy_term'] = array(
+    'title' => 'Inactive forum',
+    'page callback' => 'forum_form_main',
+    'page arguments' => array('unlock_forum', 5),
+    'access arguments' => array('administer forums'),
+    'file' => 'forum.admin.inc',
+  );
+  $items['admin/structure/forum/unlock/container/%taxonomy_term'] = array(
+    'title' => 'Inactive forum',
+    'page callback' => 'forum_form_main',
+    'page arguments' => array('unlock_container', 5),
+    'access arguments' => array('administer forums'),
+    'file' => 'forum.admin.inc',
+  );
+
   return $items;
 }
 
@@ -624,6 +653,11 @@ function forum_form_taxonomy_term_form_alter(&$form, &$form_state, $form_id) {
  * Implements hook_form_BASE_FORM_ID_alter() for node_form().
  */
 function forum_form_node_form_alter(&$form, &$form_state, $form_id) {
+  // Remove the terms locked
+  $forum_lockeds = _get_locked_topics();
+  foreach ($forum_lockeds as $forum_lock) {
+    unset($form['taxonomy_forums']['und']['#options'][$forum_lock['term_id']]);
+  }
   if (isset($form['taxonomy_forums'])) {
     $langcode = $form['taxonomy_forums']['#language'];
     // Make the vocabulary required for 'real' forum-nodes.
@@ -1421,3 +1455,17 @@ function forum_rdf_mapping() {
     ),
   );
 }
+
+/**
+ * Returns all the forums locked.
+ *
+ * @return object $db_result.
+ *
+ */
+function _get_locked_topics() {
+  $db_result = db_select('forum_locked', 'fl')
+    ->fields('fl', array('term_id'))
+    ->execute()
+    ->fetchObject();
+  return $db_result;
+}
