Loader changes & optimizations related to issue #2551
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 2bd34c3..08a8f0b 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -375,6 +375,8 @@
- ``$config['rewrite_short_tags']`` now has no effect when using PHP 5.4 as ``<?=`` will always be available.
- Changed method ``config()`` to return whatever ``CI_Config::load()`` returns instead of always being void.
- Added support for model aliasing on autoload.
+ - Changed method ``is_loaded()`` to ask for the (case sensitive) library name instead of its instance name.
+ - Removed ``$_base_classes`` property and unified all class data in ``$_ci_classes`` instead.
- :doc:`Input Library <libraries/input>` changes include:
@@ -596,6 +598,7 @@
- Fixed a bug (#2490) - :doc:`Database Class <database/queries>` method ``query()`` returning boolean instead of a result object for PostgreSQL-specific *INSERT INTO ... RETURNING* statements.
- Fixed a bug (#249) - :doc:`Cache Library <libraries/caching>` didn't properly handle Memcache(d) configurations with missing options.
- Fixed a bug (#180) - :php:func:`config_item()` didn't take into account run-time configuration changes.
+- Fixed a bug (#2551) - :doc:`Loader Library <libraries/loader>` method ``library()`` didn't properly check if a class that is being loaded already exits.
Version 2.1.4
=============
diff --git a/user_guide_src/source/libraries/loader.rst b/user_guide_src/source/libraries/loader.rst
index 1597bf1..19446a9 100644
--- a/user_guide_src/source/libraries/loader.rst
+++ b/user_guide_src/source/libraries/loader.rst
@@ -261,6 +261,32 @@
This method is an alias of the :doc:`config file loading
method <config>`: ``$this->config->load()``
+$this->load->is_loaded('library_name')
+======================================
+
+The ``is_loaded()`` method allows you to check if a class has already
+been loaded or not.
+
+.. note:: The word "class" here refers to libraries and drivers.
+
+If the requested class has been loaded, the method returns its assigned
+name in the CI Super-object and FALSE if it's not::
+
+ $this->load->library('form_validation');
+ $this->load->is_loaded('Form_validation'); // returns 'form_validation'
+
+ $this->load->is_loaded('Nonexistent_library'); // returns FALSE
+
+.. important:: If you have more than one instance of a class (assigned to
+ different properties), then the first one will be returned.
+
+::
+
+ $this->load->library('form_validation', $config, 'fv');
+ $this->load->library('form_validation');
+
+ $this->load->is_loaded('Form_validation'); // returns 'fv'
+
Application "Packages"
======================