| CARVIEW |
Select Language
HTTP/2 302
server: nginx
date: Tue, 23 Dec 2025 18:29:27 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20100116101126
location: https://web.archive.org/web/20100116101126/https://github.com/mcurry/ab_test
server-timing: captures_list;dur=0.739699, exclusion.robots;dur=0.056941, exclusion.robots.policy;dur=0.043239, esindex;dur=0.013982, cdx.remote;dur=5.604350, LoadShardBlock;dur=468.318583, PetaboxLoader3.datanode;dur=117.346352, PetaboxLoader3.resolve;dur=322.011161
x-app-server: wwwb-app217-dc8
x-ts: 302
x-tr: 506
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
set-cookie: wb-p-SERVER=wwwb-app217; path=/
x-location: All
x-as: 14061
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 200
server: nginx
date: Tue, 23 Dec 2025 18:29:28 GMT
content-type: text/html; charset=utf-8
x-archive-orig-server: nginx/0.7.61
x-archive-orig-date: Sat, 16 Jan 2010 10:11:24 GMT
x-archive-orig-connection: close
x-archive-orig-status: 200 OK
x-archive-orig-etag: "169a200a82aaea0513136b4dca233bef"
x-archive-orig-x-runtime: 76ms
x-archive-orig-content-length: 23515
x-archive-orig-cache-control: private, max-age=0, must-revalidate
x-archive-guessed-content-type: text/html
x-archive-guessed-charset: utf-8
memento-datetime: Sat, 16 Jan 2010 10:11:26 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: 51_13_20100116054835_crawl103-c/51_13_20100116100504_crawl101.arc.gz
server-timing: captures_list;dur=1.571171, exclusion.robots;dur=0.023308, exclusion.robots.policy;dur=0.010913, esindex;dur=0.011617, cdx.remote;dur=7.248812, LoadShardBlock;dur=105.811677, PetaboxLoader3.datanode;dur=268.448970, PetaboxLoader3.resolve;dur=112.950898, load_resource;dur=310.132981
x-app-server: wwwb-app217-dc8
x-ts: 200
x-tr: 489
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=1
x-location: All
x-as: 14061
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
content-encoding: gzip
mcurry's ab_test at master - GitHub
This service is courtesy of Pledgie.
mcurry / ab_test
- Source
- Commits
- Network (1)
- Issues (0)
- Downloads (0)
- Wiki (1)
- Graphs
-
Branch:
master
-
Branches (1)
- master ✓
- Tags (0)
Sending Request…
Enable Donations
Pledgie Donations
Once activated, we'll place the following badge in your repository's detail box:
A/B Test Plugin for CakePHP — Read more
unknown (author)
Wed Dec 09 17:22:58 -0800 2009
ab_test /
| name | age | message | |
|---|---|---|---|
| |
README | Wed Dec 09 17:22:58 -0800 2009 | initial revision [unknown] |
| |
ab_test_app_controller.php | Wed Dec 09 17:22:58 -0800 2009 | initial revision [unknown] |
| |
ab_test_app_model.php | Wed Dec 09 17:22:58 -0800 2009 | initial revision [unknown] |
| |
config/ | Wed Dec 09 17:22:58 -0800 2009 | initial revision [unknown] |
| |
controllers/ | Wed Dec 09 17:22:58 -0800 2009 | initial revision [unknown] |
| |
models/ | Wed Dec 09 17:22:58 -0800 2009 | initial revision [unknown] |
| |
views/ | Wed Dec 09 17:22:58 -0800 2009 | initial revision [unknown] |
README
/* * CakePHP A/B Test Plugin * Copyright (c) 2009 Matt Curry * www.PseudoCoder.com * https://github.com/mcurry/ab_test * * @author Matt Curry <matt@pseudocoder.com> * @license MIT * */ /* Description */ A plugin to for doing A/B and Multivariate testing in CakePHP apps. Tested on CakePHP 1.2.5 /* Instructions */ 1. Download the plugin to app/plugins/ab_test. 2. Run /ab_test/config/sql ab_test.sql to create the database tables. 3. Include the component in your controller (this will also include the helper automatically): var $components = array('AbTest.AbTest'); 4. Define your tests in bootstrap.php Configure::write('AbTest', array('test-name' => array('option-name-1', 'option-name-2'))); 5. Create elements for each of the options in /app/views/elements/ab_tests/test-name For example using the test defined in step for your should have 2 files: /app/views/elements/ab_tests/test-name/option-name-1.ctp /app/views/elements/ab_tests/test-name/option-name-2.ctp 6. In your view, where the test option will appear: <?php echo $abTest->render('test-name'); ?> This will render either option-name-1.ctp or option-name-2.ctp in that spot. The options are shown evenly and a cookie is set, so that returning users will see the same one. 7. When a "conversion" happens track it with: $this->AbTest->conversion('test-name'); For example you could put this in your controller after a successful signup. /* Test Results */ There is no "admin" for this plugin. The DB schema is pretty simple and you could easily open up your favorite DB client and see the results. OR Install the CakePHP Status Plugin (https://github.com/mcurry/status) and include the panel: Configure::write('Status.panels', array('AbTest.stats')); /* Advanced */ 1. Which option the user is shown may affect how the user is handled. For example if you split test two different prices you want to make sure to charge them the right price. In your controller call $this->AbTest->variate('test-name'); and it will return the option-name for that user. For example: switch($this->AbTest->variate('price-test')) { default: case 'year-15': $price = 15; case 'year-20': $price = 20; } 2. There is no limit to the number of tests/options. Create as many elements as you'd like and add the names to the array in bootstrap.php. Configure::write('AbTest', array('test-name-1' => array('option-name-1-1', 'option-name-1-2')), array('test-name-2' => array('option-name-2-1', 'option-name-2-2', 'option-name-2-3', 'option-name-2-4')));
This feature is coming soon. Sit tight!
