Browse Source

Fixed documentation and use Koseven instead of KO7 there.

Tobias Oitzinger 6 years ago
parent
commit
66faa076b2

+ 1 - 1
modules/auth/README.md

@@ -1,4 +1,4 @@
-KO7 auth module
+Koseven auth module
 ---
 
 I've forked the main Auth module because there were some fundamental flaws with it:

+ 1 - 1
modules/auth/guide/auth/index.md

@@ -2,7 +2,7 @@
 
 User authentication and authorization is provided by the auth module.
 
-The auth module is included with KO7, but needs to be enabled before you can use it. To enable, open your `application/bootstrap.php` file and modify the call to [KO7::modules] by including the auth module like so:
+The auth module is included with Koseven, but needs to be enabled before you can use it. To enable, open your `application/bootstrap.php` file and modify the call to [KO7::modules] by including the auth module like so:
 
 ~~~
 KO7::modules(array(

+ 9 - 16
modules/cache/README.md

@@ -1,27 +1,20 @@
-KO7 Cache library
+Koseven Cache library
 ====================
 
-The cache library for KO7 3 provides a simple interface to the most common cache solutions. Developers are free to add their own caching solutions that follow the cache design pattern defined within this module.
+The cache library for Koseven provides a simple interface to the most common cache solutions. Developers are free to add their own caching solutions that follow the cache design pattern defined within this module.
 
 Supported cache solutions
 -------------------------
 
 Currently this module supports the following cache methods.
 
-1. APC
-2. Memcache
-3. Memcached-tags (Supports tags)
-4. SQLite (Supports tags)
-5. File
+1. APCu
+2. File
+3. Memcached
+4. Redis
+5. SQLite
 6. Wincache
 
-Planned support
----------------
-
-In the near future, additional support for the following methods will be included.
-
-1. Memcached
-
 Introduction to caching
 -----------------------
 
@@ -32,12 +25,12 @@ There are many different caching methods available for PHP, from the very basic
 Using Cache
 -----------
 
-To use KO7 Cache, download and extract the latest stable release of KO7 Cache from [Github](http://github.com/samsoir/koseven-cache). Place the module into your KO7 instances modules folder. Finally enable the module within the application bootstrap within the section entitled _modules_.
+To use Koseven Cache enable the module within the application bootstrap within the section entitled _modules_.
 
 Quick example
 -------------
 
-The following is a quick example of how to use KO7 Cache. The example is using the SQLite driver.
+The following is a quick example of how to use Koseven Cache. The example is using the SQLite driver.
 
 	<?php
 	// Get a Sqlite Cache instance  

+ 12 - 15
modules/cache/config/cache.memcached.php

@@ -1,17 +1,16 @@
 <?php
 return [
-    // @link http://github.com/gimpe/ko7-memcached
     /*
-    'memcached' => array(
+    'memcached' => [
         'driver' => 'memcached',
-        'servers' => array(
-            //array(
+        'servers' => [
+            //[
             //    'host' => 'localhost',
             //    'port' => 11211,
             //    'weight' => 1,
-            //    ),
-            ),
-        'options' => array(
+            //    ],
+            ],
+        'options' => [
             // see http://php.net/manual/en/memcached.setoption.php and http://www.php.net/manual/en/memcached.constants.php
 
             //Memcached::OPT_COMPRESSION => TRUE,
@@ -124,18 +123,16 @@ return [
             //Memcached::OPT_SERVER_FAILURE_LIMIT => 0,
             // Specifies the failure limit for server connection attempts. The server will be removed after this many continuous connection failures.
             // Type: integer, default: 0.
-            ),
-        ),
-    'apc' => array
-    (
+            ],
+        ],
+    'apc' => [
         'driver' => 'apc',
         'default_expire' => 3600,
-    ),
-    'file' => array
-    (
+    ],
+    'file' => [
         'driver' => 'file',
         'cache_dir' => APPPATH . 'cache',
         'default_expire' => 3600,
-    )
+    ]
 	*/
 ];

+ 0 - 219
modules/cache/guide/cache.usage.md

@@ -1,219 +0,0 @@
-# KO7 Cache usage
-
-[KO7_Cache] provides a simple interface allowing getting, setting and deleting of cached values. Two interfaces included in _KO7 Cache_ additionally provide _tagging_ and _garbage collection_ where they are supported by the respective drivers.
-
-## Getting a new cache instance
-
-Creating a new _KO7 Cache_ instance is simple, however it must be done using the [Cache::instance] method, rather than the traditional `new` constructor.
-
-     // Create a new instance of cache using the default group
-     $cache = Cache::instance();
-
-The default group will use whatever is set to [Cache::$default] and must have a corresponding [configuration](cache.config) definition for that group.
-
-To create a cache instance using a group other than the _default_, simply provide the group name as an argument.
-
-     // Create a new instance of the memcache group
-     $memcache = Cache::instance('memcache');
-
-If there is a cache instance already instantiated then you can get it directly from the class member.
-
- [!!] Beware that this can cause issues if you do not test for the instance before trying to access it.
-
-     // Check for the existance of the cache driver
-     if (isset(Cache::$instances['memcache']))
-     {
-          // Get the existing cache instance directly (faster)
-          $memcache = Cache::$instances['memcache'];
-     }
-     else
-     {
-          // Get the cache driver instance (slower)
-          $memcache = Cache::instance('memcache');
-     }
-
-## Setting and getting variables to and from cache
-
-The cache library supports scalar and object values, utilising object serialization where required (or not supported by the caching engine). This means that the majority or objects can be cached without any modification.
-
- [!!] Serialisation does not work with resource handles, such as filesystem, curl or socket resources.
-
-### Setting a value to cache
-
-Setting a value to cache using the [Cache::set] method can be done in one of two ways; either using the Cache instance interface, which is good for atomic operations; or getting an instance and using that for multiple operations.
-
-The first example demonstrates how to quickly load and set a value to the default cache instance.
-
-     // Create a cachable object
-     $object = new stdClass;
-
-     // Set a property
-     $object->foo = 'bar';
-
-     // Cache the object using default group (quick interface) with default time (3600 seconds)
-     Cache::instance()->set('foo', $object);
-
-If multiple cache operations are required, it is best to assign an instance of Cache to a variable and use that as below.
-
-     // Set the object using a defined group for a defined time period (30 seconds)
-     $memcache = Cache::instance('memcache');
-     $memcache->set('foo', $object, 30);
-
-#### Setting a value with tags
-
-Certain cache drivers support setting values with tags. To set a value to cache with tags using the following interface.
-
-     // Get a cache instance that supports tags
-     $memcache = Cache::instance('memcachetag');
-
-     // Test for tagging interface
-     if ($memcache instanceof Cache_Tagging)
-     {
-          // Set a value with some tags for 30 seconds
-          $memcache->set('foo', $object, 30, array('snafu', 'stfu', 'fubar'));
-     }
-     // Otherwise set without tags
-     else
-     {
-          // Set a value for 30 seconds
-          $memcache->set('foo', $object, 30);
-     }
-
-It is possible to implement custom tagging solutions onto existing or new cache drivers by implementing the [Cache_Tagging] interface. KO7_Cache only applies the interface to drivers that support tagging natively as standard.
-
-### Getting a value from cache
-
-Getting variables back from cache is achieved using the [Cache::get] method using a single key to identify the cache entry.
-
-     // Retrieve a value from cache (quickly)
-     $object = Cache::instance()->get('foo');
-
-In cases where the requested key is not available or the entry has expired, a default value will be returned (__NULL__ by default). It is possible to define the default value as the key is requested.
-
-     // If the cache key is available (with default value set to FALSE)
-     if ($object = Cache::instance()->get('foo', FALSE))
-     {
-          // Do something
-     }
-     else
-     {
-          // Do something else
-     }
-
-#### Getting values from cache using tags
-
-It is possible to retrieve values from cache grouped by tag, using the [Cache::find] method with drivers that support tagging.
-
- [!!] The __Memcachetag__ driver does not support the `Cache::find($tag)` interface and will throw an exception.
-
-     // Get an instance of cache
-     $cache = Cache::instance('memcachetag');
-
-     // Wrap in a try/catch statement to gracefully handle memcachetag
-     try
-     {
-          // Find values based on tag
-          return $cache->find('snafu');
-     }
-     catch (Cache_Exception $e)
-     {
-          // Handle gracefully
-          return FALSE;
-     }
-
-### Deleting values from cache
-
-Deleting variables is very similar to the getting and setting methods already described. Deleting operations are split into three categories:
-
- - __Delete value by key__. Deletes a cached value by the associated key.
- - __Delete all values__. Deletes all caches values stored in the cache instance.
- - __Delete values by tag__. Deletes all values that have the supplied tag. This is only supported by Memcached-Tag and Sqlite.
-
-#### Delete value by key
-
-To delete a specific value by its associated key:
-
-     // If the cache entry for 'foo' is deleted
-     if (Cache::instance()->delete('foo'))
-     {
-          // Cache entry successfully deleted, do something
-     }
-
-By default a `TRUE` value will be returned. However a `FALSE` value will be returned in instances where the key did not exist in the cache.
-
-#### Delete all values
-
-To delete all values in a specific instance:
-
-     // If all cache items where deleted successfully
-     if (Cache::instance()->delete_all())
-     {
-           // Do something
-     }
-
-It is also possible to delete all cache items in every instance:
-
-     // For each cache instance
-     foreach (Cache::$instances as $group => $instance)
-     {
-          if ($instance->delete_all())
-          {
-               var_dump('instance : '.$group.' has been flushed!');
-          }
-     }
-
-#### Delete values by tag
-
-Some of the caching drivers support deleting by tag. This will remove all the cached values that are associated with a specific tag. Below is an example of how to robustly handle deletion by tag.
-
-     // Get cache instance
-     $cache = Cache::instance();
-
-     // Check for tagging interface
-     if ($cache instanceof Cache_Tagging)
-     {
-           // Delete all entries by the tag 'snafu'
-           $cache->delete_tag('snafu');
-     }
-
-#### Garbage Collection
-
-Garbage Collection (GC) is the cleaning of expired cache entries. For the most part, caching engines will take care of garbage collection internally. However a few of the file based systems do not handle this task and in these circumstances it would be prudent to garbage collect at a predetermined frequency. If no garbage collection is executed, the resource storing the cache entries will eventually fill and become unusable.
-
-When not automated, garbage collection is the responsibility of the developer. It is prudent to have a GC probability value that dictates how likely the garbage collection routing will be run. An example of such a system is demonstrated below.
-
-     // Get a cache instance
-     $cache_file = Cache::instance('file');
-
-     // Set a GC probability of 10%
-     $gc = 10;
-
-     // If the GC probability is a hit
-     if (rand(0,99) <= $gc and $cache_file instanceof Cache_GarbageCollect)
-     {
-          // Garbage Collect
-          $cache_file->garbage_collect();
-     }
-
-# Interfaces
-
-KO7 Cache comes with two interfaces that are implemented where the drivers support them:
-
- - __[Cache_Tagging] for tagging support on cache entries__
-    - [Cache_MemcacheTag]
-    - [Cache_Sqlite]
- - __[Cache_GarbageCollect] for garbage collection with drivers without native support__
-    - [Cache_File]
-    - [Cache_Sqlite]
-
-When using interface specific caching features, ensure that code checks for the required interface before using the methods supplied. The following example checks whether the garbage collection interface is available before calling the `garbage_collect` method.
-
-    // Create a cache instance
-    $cache = Cache::instance();
-
-    // Test for Garbage Collection
-    if ($cache instanceof Cache_GarbageCollect)
-    {
-         // Collect garbage
-         $cache->garbage_collect();
-    }

+ 11 - 43
modules/cache/guide/cache/config.md

@@ -1,12 +1,12 @@
-# KO7 Cache configuration
+# Koseven Cache configuration
 
-KO7 Cache uses configuration groups to create cache instances. A configuration group can
+Koseven Cache uses configuration groups to create cache instances. A configuration group can
 use any supported driver, with successive groups using multiple instances of the same driver type.
 
 The default cache group is loaded based on the `Cache::$default` setting. It is set to the `file` driver as standard, however this can be changed within the `/application/boostrap.php` file.
 
      // Change the default cache driver to memcache
-     Cache::$default = 'memcache';
+     Cache::$default = 'memcached';
 
      // Load the memcache cache driver using default setting
      $memcache = Cache::instance();
@@ -28,16 +28,8 @@ default_expire | __NO__   | (_string_) The driver type to use
 		'cache_dir'          => APPPATH.'cache/.ko7_cache',
 		'default_expire'     => 3600,
 	),
-
-## Memcache & Memcached-tag settings
-
-Name           | Required | Description
--------------- | -------- | ---------------------------------------------------------------
-driver         | __YES__  | (_string_) The driver type to use
-servers        | __YES__  | (_array_) Associative array of server details, must include a __host__ key. (see _Memcache server configuration_ below)
-compression    | __NO__   | (_boolean_) Use data compression when caching
-
-### Memcache server configuration
+	
+### Memcached/Redis server configuration
 
 Name             | Required | Description
 ---------------- | -------- | ---------------------------------------------------------------
@@ -50,25 +42,9 @@ retry_interval   | __NO__   | (_integer_) Controls how often a failed server wil
 status           | __NO__   | (_boolean_) Controls if the server should be flagged as online. Default __TRUE__
 failure_callback | __NO__   | (_[callback](http://www.php.net/manual/en/language.pseudo-types.php#language.types.callback)_) Allows the user to specify a callback function to run upon encountering an error. The callback is run before failover is attempted. The function takes two parameters, the hostname and port of the failed server. Default __NULL__
 
-	'memcache' => array
-	(
-		'driver'             => 'memcache',
-		'default_expire'     => 3600,
-		'compression'        => FALSE,              // Use Zlib compression 
-		                                            // (can cause issues with integers)
-		'servers'            => array
-		(
-			'local' => array
-			(
-				'host'             => 'localhost',  // Memcache Server
-				'port'             => 11211,        // Memcache port number
-				'persistent'       => FALSE,        // Persistent connection
-			),
-		),
-	),
-	'memcachetag' => array
+	'memcached' => array
 	(
-		'driver'             => 'memcachetag',
+		'driver'             => 'memcached',
 		'default_expire'     => 3600,
 		'compression'        => FALSE,              // Use Zlib compression 
 		                                            // (can cause issues with integers)
@@ -81,15 +57,7 @@ failure_callback | __NO__   | (_[callback](http://www.php.net/manual/en/language
 				'persistent'       => FALSE,        // Persistent connection
 			),
 		),
-	),
-
-## APC settings
-
-	'apc'      => array
-	(
-		'driver'             => 'apc',
-		'default_expire'     => 3600,
-	),
+	)
 	
 ## APCu settings
 
@@ -136,9 +104,9 @@ The following example demonstrates how to override an existing configuration set
 	return array
 	(
 		// Override the default configuration
-		'memcache'   => array
+		'memcached'   => array
 		(
-			'driver'         => 'memcache',  // Use Memcached as the default driver
+			'driver'         => 'memcached',  // Use Memcached as the default driver
 			'default_expire' => 8000,        // Overide default expiry
 			'servers'        => array
 			(
@@ -164,7 +132,7 @@ The following example demonstrates how to add a new configuration setting, using
 		// Override the default configuration
 		'fastkv'   => array
 		(
-			'driver'         => 'apc',  // Use Memcached as the default driver
+			'driver'         => 'apcu',  // Use apcu as the default driver
 			'default_expire' => 1000,   // Overide default expiry
 		)
 	);

+ 0 - 0
modules/cache/guide/cache/examples.md


+ 15 - 14
modules/cache/guide/cache/index.md

@@ -1,16 +1,16 @@
-# About KO7 Cache
+# About Koseven Cache
 
 [KO7_Cache] provides a common interface to a variety of caching engines. [Cache_Tagging] is
-supported where available natively to the cache system. KO7 Cache supports multiple 
+supported where available natively to the cache system. Koseven Cache supports multiple 
 instances of cache engines through a grouped singleton pattern.
 
 ## Supported cache engines
 
- *  APC/APCu ([Cache_Apc])
+ *  APCu ([Cache_Apcu])
  *  File ([Cache_File])
- *  Memcached ([Cache_Memcache])
- *  Memcached-tags ([Cache_Memcachetag])
+ *  Memcached ([Cache_Memcached])
  *  SQLite ([Cache_Sqlite])
+ *  Redis ([Cache_Redis])
  *  Wincache
 
 ## Introduction to caching
@@ -22,17 +22,17 @@ a complex set of instructions.
 Caching engines that use memory are considerably faster than file based alternatives. But
 memory is limited whereas disk space is plentiful. If caching large datasets, such as large database result sets, it is best to use file caching.
 
-[!!] Cache drivers require the relevant PHP extensions to be installed. APC, eAccelerator, Memecached and Xcache all require non-standard PHP extensions.
+[!!] Cache drivers require the relevant PHP extensions to be installed. APCu, Memecached and Redis all require non-standard PHP extensions.
 
-## What the KO7 Cache module does (and does not do)
+## What the Koseven Cache module does (and does not do)
 
 This module provides a simple abstracted interface to a wide selection of popular PHP cache engines. The caching API provides the basic caching methods implemented across all solutions, memory, network or disk based. Basic key / value storing is supported by all drivers, with additional tagging and garbage collection support where implemented or required.
 
-_KO7 Cache_ does not provide HTTP style caching for clients (web browsers) and/or proxies (_Varnish_, _Squid_). There are other KO7 modules that provide this functionality.
+_Koseven Cache_ does not provide HTTP style caching for clients (web browsers) and/or proxies (_Varnish_, _Squid_). There are other Koseven modules that provide this functionality.
 
 ## Choosing a cache provider
 
-Getting and setting values to cache is very simple when using the _KO7 Cache_ interface. The hardest choice is choosing which cache engine to use. When choosing a caching engine, the following criteria must be considered:
+Getting and setting values to cache is very simple when using the _Koseven Cache_ interface. The hardest choice is choosing which cache engine to use. When choosing a caching engine, the following criteria must be considered:
 
  1. __Does the cache need to be distributed?__
     This is an important consideration as it will severely limit the options available to solutions such as Memcache when a distributed solution is required.
@@ -43,15 +43,16 @@ Getting and setting values to cache is very simple when using the _KO7 Cache_ in
 
 Driver           | Storage      | Speed     | Tags     | Distributed | Automatic Garbage Collection | Notes
 ---------------- | ------------ | --------- | -------- | ----------- | ---------------------------- | -----------------------
-APC/APCu         | __Memory__   | Excellent | No       | No          | Yes | Widely available PHP opcode caching solution, improves php execution performance
+APCu             | __Memory__   | Excellent | No       | No          | Yes | Widely available PHP opcode caching solution, improves php execution performance
 Wincache         | __Memory__   | Excellent | No       | No          | Yes | Windows variant of APC
 File             | __Disk__     | Poor      | No       | No          | No  | Marginally faster than execution
-Memcache (tag)   | __Memory__   | Good      | No (yes) | Yes         | Yes | Generally fast distributed solution, but has a speed hit due to variable network latency and serialization
+Memcached        | __Memory__   | Good      | No       | Yes         | Yes | Generally fast distributed solution, but has a speed hit due to variable network latency and serialization
 Sqlite           | __Disk__     | Poor      | Yes      | No          | No  | Marginally faster than execution
+Redis            | __Memory__   | Good      | Yes      | Yes         | Yes | Generally fast distributed solution (faster than memcached), but has a speed hit due to variable network latency and serialization
 
-It is possible to have hybrid cache solutions that use a combination of the engines above in different contexts. This is supported with _KO7 Cache_ as well
+It is possible to have hybrid cache solutions that use a combination of the engines above in different contexts. This is supported with _Koseven Cache_ as well
 
 ## Minimum requirements
 
- *  KO7 3.0.4
- *  PHP 5.2.4 or greater
+ *  Koseven 3.4
+ *  PHP 7.0 or greater

+ 16 - 18
modules/cache/guide/cache/usage.md

@@ -1,46 +1,46 @@
-# KO7 Cache usage
+# Koseven Cache usage
 
-[KO7_Cache] provides a simple interface allowing getting, setting and deleting of cached values. Two interfaces included in _KO7 Cache_ additionally provide _tagging_ and _garbage collection_ where they are supported by the respective drivers.
+[KO7_Cache] provides a simple interface allowing getting, setting and deleting of cached values. Two interfaces included in _Koseven Cache_ additionally provide _tagging_ and _garbage collection_ where they are supported by the respective drivers.
 
 ## Getting a new cache instance
 
-Creating a new _KO7 Cache_ instance is simple, however it must be done using the [Cache::instance] method, rather than the traditional `new` constructor.
+Creating a new _Koseven Cache_ instance is simple, however it must be done using the [Cache::instance] method, rather than the traditional `new` constructor.
 
      // Create a new instance of cache using the default group
      $cache = Cache::instance();
 
-The default group will use whatever is set to [Cache::$default] and must have a corresponding [configuration](config) definition for that group.
+The default group will use whatever is set to [Cache::$default] and must have a corresponding [configuration](cache.config) definition for that group.
 
 To create a cache instance using a group other than the _default_, simply provide the group name as an argument.
 
      // Create a new instance of the memcache group
-     $memcache = Cache::instance('memcache');
+     $memcache = Cache::instance('memcached');
 
 If there is a cache instance already instantiated then you can get it directly from the class member.
 
-[!!] Beware that this can cause issues if you do not test for the instance before trying to access it.
+ [!!] Beware that this can cause issues if you do not test for the instance before trying to access it.
 
      // Check for the existance of the cache driver
-     if (isset(Cache::$instances['memcache']))
+     if (isset(Cache::$instances['memcached']))
      {
           // Get the existing cache instance directly (faster)
-          $memcache = Cache::$instances['memcache'];
+          $memcache = Cache::$instances['memcached'];
      }
      else
      {
           // Get the cache driver instance (slower)
-          $memcache = Cache::instance('memcache');
+          $memcache = Cache::instance('memcached');
      }
 
 ## Setting and getting variables to and from cache
 
 The cache library supports scalar and object values, utilising object serialization where required (or not supported by the caching engine). This means that the majority or objects can be cached without any modification.
 
-[!!] Serialisation does not work with resource handles, such as filesystem, curl or socket resources.
+ [!!] Serialisation does not work with resource handles, such as filesystem, curl or socket resources.
 
 ### Setting a value to cache
 
-Setting a value to cache using the [Cache::set] method can be done in one of two ways: either using the Cache instance interface, which is good for atomic operations, or getting an instance and using that for multiple operations.
+Setting a value to cache using the [Cache::set] method can be done in one of two ways; either using the Cache instance interface, which is good for atomic operations; or getting an instance and using that for multiple operations.
 
 The first example demonstrates how to quickly load and set a value to the default cache instance.
 
@@ -56,7 +56,7 @@ The first example demonstrates how to quickly load and set a value to the defaul
 If multiple cache operations are required, it is best to assign an instance of Cache to a variable and use that as below.
 
      // Set the object using a defined group for a defined time period (30 seconds)
-     $memcache = Cache::instance('memcache');
+     $memcache = Cache::instance('memcached');
      $memcache->set('foo', $object, 30);
 
 #### Setting a value with tags
@@ -64,7 +64,7 @@ If multiple cache operations are required, it is best to assign an instance of C
 Certain cache drivers support setting values with tags. To set a value to cache with tags using the following interface.
 
      // Get a cache instance that supports tags
-     $memcache = Cache::instance('memcachetag');
+     $memcache = Cache::instance('redis');
 
      // Test for tagging interface
      if ($memcache instanceof Cache_Tagging)
@@ -104,10 +104,8 @@ In cases where the requested key is not available or the entry has expired, a de
 
 It is possible to retrieve values from cache grouped by tag, using the [Cache::find] method with drivers that support tagging.
 
-[!!] The __Memcachetag__ driver does not support the `Cache::find($tag)` interface and will throw an exception.
-
      // Get an instance of cache
-     $cache = Cache::instance('memcachetag');
+     $cache = Cache::instance('redis');
 
      // Wrap in a try/catch statement to gracefully handle memcachetag
      try
@@ -197,10 +195,10 @@ When not automated, garbage collection is the responsibility of the developer. I
 
 # Interfaces
 
-KO7 Cache comes with two interfaces that are implemented where the drivers support them:
+Koseven Cache comes with two interfaces that are implemented where the drivers support them:
 
  - __[Cache_Tagging] for tagging support on cache entries__
-    - [Cache_MemcacheTag]
+    - [Cache_Redis]
     - [Cache_Sqlite]
  - __[Cache_GarbageCollect] for garbage collection with drivers without native support__
     - [Cache_File]

+ 2 - 2
modules/codebench/guide/codebench/index.md

@@ -26,7 +26,7 @@ Throwing valuable benchmark data away every time I needed to optimize another re
 
 Obviously providing a visual representation of the benchmark results, via simple graphs, would make interpreting them easier. Having not to think about Internet Explorer for once, made writing CSS a whole lot more easy and fun. It resulted in some fine graphs which are fully resizable.
 
-Below are two screenshots of Codebench in action. `Valid_Color` is a class made for benchmarking different ways to validate hexadecimal HTML color values, e.g. `#FFF`. If you are interested in the story behind the actual regular expressions, take a look at [this topic in the KO7 forums](http://koseven.discourse.group/discussion/2192).
+Below are two screenshots of Codebench in action. `Valid_Color` is a class made for benchmarking different ways to validate hexadecimal HTML color values, e.g. `#FFF`. If you are interested in the story behind the actual regular expressions.
 
 ![Benchmarking several ways to validate HTML color values](codebench_screenshot1.png)
 **Benchmarking seven ways to validate HTML color values**
@@ -36,7 +36,7 @@ Below are two screenshots of Codebench in action. `Valid_Color` is a class made
 
 ## Working with Codebench
 
-Codebench is included in KO7 3, but if you need you [can download it](http://github.com/koseven/koseven/codebench/) from GitHub. Be sure Codebench is activated in your `application/bootstrap.php`.
+Codebench is included in Koseven. Be sure Codebench is activated in your `application/bootstrap.php`.
 
 Creating your own benchmarks is just a matter of creating a class that extends the Codebench class.  The class should go in `classes/bench` and the class name should have the `Bench_` prefix.  Put the code parts you want to compare into separate methods. Be sure to prefix those methods with `bench_`, other methods will not be benchmarked. Glance at the files in `modules/codebench/classes/bench/` for more examples.
 

Some files were not shown because too many files changed in this diff