Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Subscribe To Our Newsletter
Subscribe To Our Newsletter

GFO Issue 330,   Article Number: 9

Share:

Aidspan survey deadline extended

Sub-title :

Article Type:
Announcement
     Author:
Aidspan staff
     Date: 2018-02-06

ABSTRACT

ABSTRACT The deadline for completing the Aidspan Strategy Survey has been extended to 18 February 2018.

Dear valued GFO reader, We want to thank everyone who has completed the Aidspan Strategy Survey. For those who have not had the opportunity, we encourage you to do so. The deadline has been extended to
Sunday, 18 February
. The survey should take about five minutes and the responses will remain anonymous and confidential. It is important that we hear from you, the readers of Global Fund Observer, about how you think Aidspan is performing and which issues you would like to see Aidspan focus on (in GFO and elsewhere). Your valuable responses and comments will help us develop our new strategy for the 2018–2022 period. Click here to access the Aidspan Strategy Survey. Thank you. Ida Hakizinka Executive Director

Publication Date: 2018-02-06


Tags:

Leave a reply

  • Anonymous comments (0)
  • Facebook Comments

Leave a reply

  • Comments

Your email address will not be published.

Aidspan

Categories*

Loading
Aidspan

Catégories*

Original text
Rate this translation
Your feedback will be used to help improve Google Translate
NAME COMPONENT DURATION 0 ms 5 ms 10 ms
BootstrapTimer1.11 ms
RoutingTimer0.17 ms
Before FiltersTimer0.01 ms
ControllerTimer9.45 ms
Controller ConstructorTimer1.65 ms
QueryDatabase0.29 ms
QueryDatabase0.16 ms
QueryDatabase0.66 ms
QueryDatabase5.41 ms
View: pages/public/viewgfo.phpViews0.75 ms
After FiltersTimer0.11 ms

Database (5 total Queries, 5 of them unique across 1 Connection)

Time Query String
0.14 ms SELECT `id`, `name` FROM `categories` ORDER BY `name` ASC LIMIT 3 APPPATH/Controllers/Blog.php:75
0.28 ms SELECT `articles`.*, `issue_no`.`issue_no`, `issue_no`.`issue_name`, `post_type`.`name` as `post_type_name` FROM `articles` INNER JOIN `issue_no` ON `articles`.`issue_no_id` = `issue_no`.`issue_no_id` INNER JOIN `post_type` ON `articles`.`post_type_id` = `post_type`.`post_type_id` WHERE `articles`.`article_id` = '12975' LIMIT 1 APPPATH/Controllers/Blog.php:1765
0.15 ms SELECT `views` FROM `articles` WHERE `article_id` = '12975' APPPATH/Models/Articles.php:76
0.66 ms UPDATE `articles` SET `views` = 28 WHERE `article_id` = '12975' APPPATH/Models/Articles.php:85
5.41 ms SELECT * FROM `articles` WHERE `issue_no_id` = '759' AND `article_id` != '12975' ORDER BY `article_no` ASC APPPATH/Controllers/Blog.php:1782

Files ( 165 )

App.php APPPATH/Config/App.php
Articles.php APPPATH/Models/Articles.php
Auth.php APPPATH/Models/Auth.php
Autoload.php APPPATH/Config/Autoload.php
BaseController.php APPPATH/Controllers/BaseController.php
Blog.php APPPATH/Controllers/Blog.php
Cache.php APPPATH/Config/Cache.php
Categories.php APPPATH/Models/Categories.php
ClassLoader.php FCPATH/vendor/composer/ClassLoader.php
CliRenderer.php FCPATH/vendor/kint-php/kint/src/Renderer/CliRenderer.php
Common.php APPPATH/Common.php
Constants.php APPPATH/Config/Constants.php
Contact.php APPPATH/Models/Contact.php
Contact_us.php APPPATH/Models/Contact_us.php
ContentSecurityPolicy.php APPPATH/Config/ContentSecurityPolicy.php
Cookie.php APPPATH/Config/Cookie.php
Database.php APPPATH/Config/Database.php
Escaper.php FCPATH/vendor/laminas/laminas-escaper/src/Escaper.php
Events.php APPPATH/Config/Events.php
Events.php APPPATH/Models/Events.php
Exception.php APPPATH/ThirdParty/PHPMailer/src/Exception.php
Exceptions.php APPPATH/Config/Exceptions.php
Feature.php APPPATH/Config/Feature.php
Filters.php APPPATH/Config/Filters.php
Functions.php FCPATH/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php
Gallery.php APPPATH/Models/Gallery.php
Gallery_groups.php APPPATH/Models/Gallery_groups.php
Issues.php APPPATH/Models/Issues.php
Kint.php APPPATH/Config/Kint.php
Kint.php FCPATH/vendor/kint-php/kint/src/Kint.php
Logger.php APPPATH/Config/Logger.php
LoggerAwareTrait.php FCPATH/vendor/psr/log/Psr/Log/LoggerAwareTrait.php
LoggerInterface.php FCPATH/vendor/psr/log/Psr/Log/LoggerInterface.php
Modules.php APPPATH/Config/Modules.php
PHPMailer.php APPPATH/ThirdParty/PHPMailer/src/PHPMailer.php
PageViews.php APPPATH/Models/PageViews.php
Paths.php APPPATH/Config/Paths.php
Post_Type.php APPPATH/Models/Post_Type.php
Posts.php APPPATH/Models/Posts.php
Publications.php APPPATH/Models/Publications.php
Renderer.php FCPATH/vendor/kint-php/kint/src/Renderer/Renderer.php
Replies.php APPPATH/Models/Replies.php
Repliesdoc.php APPPATH/Models/Repliesdoc.php
RichRenderer.php FCPATH/vendor/kint-php/kint/src/Renderer/RichRenderer.php
Routes.php APPPATH/Config/Routes.php
SMTP.php APPPATH/ThirdParty/PHPMailer/src/SMTP.php
Services.php APPPATH/Config/Services.php
TextRenderer.php FCPATH/vendor/kint-php/kint/src/Renderer/TextRenderer.php
Toolbar.php APPPATH/Config/Toolbar.php
Topics.php APPPATH/Models/Topics.php
Uploads.php APPPATH/Models/Uploads.php
UserAgents.php APPPATH/Config/UserAgents.php
UserReport.php APPPATH/Models/UserReport.php
Utils.php FCPATH/vendor/kint-php/kint/src/Utils.php
Validation.php APPPATH/Config/Validation.php
View.php APPPATH/Config/View.php
autoload.php FCPATH/vendor/autoload.php
autoload_real.php FCPATH/vendor/composer/autoload_real.php
autoload_static.php FCPATH/vendor/composer/autoload_static.php
bootstrap.php FCPATH/vendor/phpstan/phpstan/bootstrap.php
bootstrap.php FCPATH/vendor/rector/rector/bootstrap.php
bootstrap.php FCPATH/vendor/symfony/polyfill-ctype/bootstrap.php
bootstrap.php FCPATH/vendor/symfony/polyfill-intl-grapheme/bootstrap.php
bootstrap.php FCPATH/vendor/symfony/polyfill-intl-normalizer/bootstrap.php
bootstrap.php FCPATH/vendor/symfony/polyfill-mbstring/bootstrap.php
bootstrap.php FCPATH/vendor/symfony/polyfill-php80/bootstrap.php
bootstrap.php FCPATH/vendor/symfony/polyfill-php81/bootstrap.php
bootstrap80.php FCPATH/vendor/symfony/polyfill-ctype/bootstrap80.php
bootstrap80.php FCPATH/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php
bootstrap80.php FCPATH/vendor/symfony/polyfill-mbstring/bootstrap80.php
deep_copy.php FCPATH/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php
development.php APPPATH/Config/Boot/development.php
function.php FCPATH/vendor/symfony/deprecation-contracts/function.php
functions.php FCPATH/vendor/symfony/string/Resources/functions.php
index.php FCPATH/index.php
init.php FCPATH/vendor/kint-php/kint/init.php
init_helpers.php FCPATH/vendor/kint-php/kint/init_helpers.php
platform_check.php FCPATH/vendor/composer/platform_check.php
viewgfo.php APPPATH/Views/pages/public/viewgfo.php
AutoloadConfig.php SYSTEMPATH/Config/AutoloadConfig.php
Autoloader.php SYSTEMPATH/Autoloader/Autoloader.php
BaseBuilder.php SYSTEMPATH/Database/BaseBuilder.php
BaseCollector.php SYSTEMPATH/Debug/Toolbar/Collectors/BaseCollector.php
BaseConfig.php SYSTEMPATH/Config/BaseConfig.php
BaseConnection.php SYSTEMPATH/Database/BaseConnection.php
BaseHandler.php SYSTEMPATH/Cache/Handlers/BaseHandler.php
BaseHandler.php SYSTEMPATH/Session/Handlers/BaseHandler.php
BaseModel.php SYSTEMPATH/BaseModel.php
BaseResult.php SYSTEMPATH/Database/BaseResult.php
BaseService.php SYSTEMPATH/Config/BaseService.php
Builder.php SYSTEMPATH/Database/MySQLi/Builder.php
CacheFactory.php SYSTEMPATH/Cache/CacheFactory.php
CacheInterface.php SYSTEMPATH/Cache/CacheInterface.php
CloneableCookieInterface.php SYSTEMPATH/Cookie/CloneableCookieInterface.php
CodeIgniter.php SYSTEMPATH/CodeIgniter.php
Common.php SYSTEMPATH/Common.php
Config.php SYSTEMPATH/Database/Config.php
Connection.php SYSTEMPATH/Database/MySQLi/Connection.php
ConnectionInterface.php SYSTEMPATH/Database/ConnectionInterface.php
ContentSecurityPolicy.php SYSTEMPATH/HTTP/ContentSecurityPolicy.php
Controller.php SYSTEMPATH/Controller.php
Cookie.php SYSTEMPATH/Cookie/Cookie.php
CookieInterface.php SYSTEMPATH/Cookie/CookieInterface.php
CookieStore.php SYSTEMPATH/Cookie/CookieStore.php
Database.php SYSTEMPATH/Database/Database.php
Database.php SYSTEMPATH/Debug/Toolbar/Collectors/Database.php
DebugToolbar.php SYSTEMPATH/Filters/DebugToolbar.php
DotEnv.php SYSTEMPATH/Config/DotEnv.php
Events.php SYSTEMPATH/Debug/Toolbar/Collectors/Events.php
Events.php SYSTEMPATH/Events/Events.php
Exceptions.php SYSTEMPATH/Debug/Exceptions.php
Factories.php SYSTEMPATH/Config/Factories.php
Factory.php SYSTEMPATH/Config/Factory.php
FileHandler.php SYSTEMPATH/Cache/Handlers/FileHandler.php
FileHandler.php SYSTEMPATH/Session/Handlers/FileHandler.php
FileLocator.php SYSTEMPATH/Autoloader/FileLocator.php
Files.php SYSTEMPATH/Debug/Toolbar/Collectors/Files.php
FilterInterface.php SYSTEMPATH/Filters/FilterInterface.php
Filters.php SYSTEMPATH/Filters/Filters.php
FormatRules.php SYSTEMPATH/Validation/FormatRules.php
Header.php SYSTEMPATH/HTTP/Header.php
IncomingRequest.php SYSTEMPATH/HTTP/IncomingRequest.php
Logger.php SYSTEMPATH/Log/Logger.php
Logs.php SYSTEMPATH/Debug/Toolbar/Collectors/Logs.php
Message.php SYSTEMPATH/HTTP/Message.php
MessageInterface.php SYSTEMPATH/HTTP/MessageInterface.php
MessageTrait.php SYSTEMPATH/HTTP/MessageTrait.php
Model.php SYSTEMPATH/Model.php
Modules.php SYSTEMPATH/Modules/Modules.php
Query.php SYSTEMPATH/Database/Query.php
QueryInterface.php SYSTEMPATH/Database/QueryInterface.php
RendererInterface.php SYSTEMPATH/View/RendererInterface.php
Request.php SYSTEMPATH/HTTP/Request.php
RequestInterface.php SYSTEMPATH/HTTP/RequestInterface.php
RequestTrait.php SYSTEMPATH/HTTP/RequestTrait.php
Response.php SYSTEMPATH/HTTP/Response.php
ResponseInterface.php SYSTEMPATH/HTTP/ResponseInterface.php
ResponseTrait.php SYSTEMPATH/API/ResponseTrait.php
ResponseTrait.php SYSTEMPATH/HTTP/ResponseTrait.php
Result.php SYSTEMPATH/Database/MySQLi/Result.php
ResultInterface.php SYSTEMPATH/Database/ResultInterface.php
RouteCollection.php SYSTEMPATH/Router/RouteCollection.php
RouteCollectionInterface.php SYSTEMPATH/Router/RouteCollectionInterface.php
Router.php SYSTEMPATH/Router/Router.php
RouterInterface.php SYSTEMPATH/Router/RouterInterface.php
Routes.php SYSTEMPATH/Config/Routes.php
Routes.php SYSTEMPATH/Debug/Toolbar/Collectors/Routes.php
Services.php SYSTEMPATH/Config/Services.php
Session.php SYSTEMPATH/Session/Session.php
SessionInterface.php SYSTEMPATH/Session/SessionInterface.php
Timer.php SYSTEMPATH/Debug/Timer.php
Timers.php SYSTEMPATH/Debug/Toolbar/Collectors/Timers.php
Toolbar.php SYSTEMPATH/Debug/Toolbar.php
URI.php SYSTEMPATH/HTTP/URI.php
UserAgent.php SYSTEMPATH/HTTP/UserAgent.php
Validation.php SYSTEMPATH/Validation/Validation.php
ValidationInterface.php SYSTEMPATH/Validation/ValidationInterface.php
View.php SYSTEMPATH/Config/View.php
View.php SYSTEMPATH/View/View.php
ViewDecoratorTrait.php SYSTEMPATH/View/ViewDecoratorTrait.php
Views.php SYSTEMPATH/Debug/Toolbar/Collectors/Views.php
array_helper.php SYSTEMPATH/Helpers/array_helper.php
bootstrap.php SYSTEMPATH/bootstrap.php
form_helper.php SYSTEMPATH/Helpers/form_helper.php
url_helper.php SYSTEMPATH/Helpers/url_helper.php

Routes

Matched Route

Directory:
Controller: \App\Controllers\Blog
Method: view
Params: 2 / 1
$article_id = 12975

Defined Routes

Method Route Handler
GET controller/index \App\Controllers\Controller::index
GET / \App\Controllers\Blog::index
GET register \App\Controllers\Auth::register
GET Auth \App\Controllers\Auth::index
GET update_user \App\Controllers\Auth::update_user
GET Auth/([^/]+) \App\Controllers\Auth::$1
GET logout \App\Controllers\Auth::logout
GET sent_emails_report \App\Controllers\SentEmailsController::sent_emails_report
GET SentEmailsController/download_filtered \App\Controllers\SentEmailsController::download_filtered
GET issue_no_report \App\Controllers\IssueNoController::issue_no_report
GET IssueNoController/download_filtered \App\Controllers\IssueNoController::download_filtered
GET subscriber_report \App\Controllers\UserController::subscriber_report
GET download_filtered_subscribers \App\Controllers\UserController::download_filtered_subscribers
GET Main/articles_report \App\Controllers\ArticleController::articles_report
GET Main/download_filtered \App\Controllers\ArticleController::download_filtered
GET Main/authors_list \App\Controllers\Main::authors_list
GET Main/events_report \App\Controllers\Main::events_report
GET Main/template_list \App\Controllers\Main::template_list
GET Main \App\Controllers\Main::index
GET Main/([^/]+) \App\Controllers\Main::$1
GET Main/([^/]+)/(.*) \App\Controllers\Main::$1/$2
GET Main/article/([^/]+) \App\Controllers\ArticleController::viewArticle/$1
GET Main/review_article/([0-9]+) \App\Controllers\Main::reviewArticle/$1
GET Main/revert_article/([0-9]+) \App\Controllers\Main::revertArticle/$1
GET Main/publish_article/([0-9]+) \App\Controllers\Main::publishArticle/$1
GET Main/tracker \App\Controllers\Main::tracker/$1
GET Main/Main/exportToExcel \App\Controllers\Main::exportToExcel
GET Main/subscriber/edit/([0-9]+) \App\Controllers\Main::subscriber_edit/$1
GET Main/pages/articles/ckeditor_view \App\Controllers\Main::insert_data
GET subscribe \App\Controllers\UserController::showRegistrationForm
GET Blog/fetch_gallery \App\Controllers\Blog::fetch_gallery
GET Blog/test_gallery \App\Controllers\Blog::test_gallery
GET Email \App\Controllers\Email::index
GET Email/([^/]+) \App\Controllers\Email::$1
GET Email/([^/]+)/(.*) \App\Controllers\Email::$1/$2
GET Blog \App\Controllers\Blog::index
GET Blog/([^/]+) \App\Controllers\Blog::$1
GET Blog/([^/]+)/(.*) \App\Controllers\Blog::$1/$2
GET Blog/articles/tagged/(.*) \App\Controllers\Blog::viewTaggedArticles/$1
GET Blog/Blog/viewTaggedArticles/(.*) \App\Controllers\Blog::viewTaggedArticles/$1
GET Main/Main/publishArticles/([^/]+) \App\Controllers\Main::publishArticles/$1
HEAD Main/Main/publishArticles/([^/]+) \App\Controllers\Main::publishArticles/$1
POST update_user \App\Controllers\Auth::update_user
POST register \App\Controllers\Auth::register
POST login \App\Controllers\Auth::index
POST SentEmailsController/fetch_data \App\Controllers\SentEmailsController::fetch_data
POST IssueNoController/fetch_data \App\Controllers\IssueNoController::fetch_data
POST fetch_subscribers \App\Controllers\UserController::fetch_subscribers
POST Main/fetch_data \App\Controllers\ArticleController::fetch_data
POST Main/fetch_authors \App\Controllers\Main::getAllAuthors
POST Main/add_author \App\Controllers\Main::add_author
POST Main/edit_author/([0-9]+) \App\Controllers\Main::edit_author/$1
POST Main/delete_author/([0-9]+) \App\Controllers\Main::delete_author/$1
POST Main/event_list \App\Controllers\Main::event_list
POST Main/event_add \App\Controllers\Main::event_add
POST Main/event_edit/([0-9]+) \App\Controllers\Main::event_edit/$1
POST Main/fetch_templates \App\Controllers\Main::getAllTemplates
POST Main/template_add \App\Controllers\Main::template_add
POST Main/template_edit/([0-9]+) \App\Controllers\Main::template_edit/$1
POST Main/template_delete/([0-9]+) \App\Controllers\Main::template_delete/$1
POST Main/user_add \App\Controllers\Main::user_add
POST Main/user_edit/([0-9]+) \App\Controllers\Main::user_edit/$1
POST Main/subscriber_edit/([0-9]+) \App\Controllers\Main::subscriber_edit/$1
POST Main/publications_edit/([0-9]+) \App\Controllers\Main::publications_edit/$1
POST Main/category_edit/([0-9]+) \App\Controllers\Main::category_edit/$1
POST Main/category_add \App\Controllers\Main::category_add/$1
POST Main/post_edit/([0-9]+) \App\Controllers\Main::post_edit/$1
POST Main/post_add \App\Controllers\Main::post_add/$1
POST Main/issues_add \App\Controllers\Main::issues_add/$1
POST Main/addSubscriberAdmin \App\Controllers\Main::addSubscriberAdmin/$1
POST Main/issues_edit/([0-9]+) \App\Controllers\Main::issues_edit/$1
POST Main/post_types_add \App\Controllers\Main::post_types_add/$1
POST Main/post_types_edit/([0-9]+) \App\Controllers\Main::post_types_edit/$1
POST Main/upload_types_add \App\Controllers\Main::upload_types_add/$1
POST Main/upload_types_edit/([0-9]+) \App\Controllers\Main::upload_types_edit/$1
POST Main/articles_add \App\Controllers\Main::articles_add/$1
POST Main/issue_articles/([0-9]+) \App\Controllers\Main::issue_articles/$1
POST Main/articles_edit/([0-9]+) \App\Controllers\Main::articles_edit/$1
POST Main/Main/articles_edit/([0-9]+) \App\Controllers\Main::articles_edit/$1
POST Main/processQueue \App\Controllers\Main::processQueue
POST Main/Main/processQueue \App\Controllers\Main::processQueue
POST Main/DeleteEmails \App\Controllers\Main::DeleteEmails
POST Main/Main/DeleteEmails \App\Controllers\Main::DeleteEmails
POST Main/filterbydates \App\Controllers\Main::filterbydates
POST Main/Main/trackpageviews \App\Controllers\Main::trackpageviews
POST Main/trackpageviews \App\Controllers\Main::trackpageviews
POST Main/subscriber_add \App\Controllers\Main::subscriber_add/$1
POST Main/gfotemplate \App\Controllers\Main::gfotemplate/$1
POST Main/previewissue \App\Controllers\Main::previewissue/$1
POST Main/sendnewsletter \App\Controllers\Main::sendnewsletter/$1
POST Main/publications_add \App\Controllers\Main::publications_add/$1
POST Main/uploads_add \App\Controllers\Main::uploads_add/$1
POST Main/gallery_groups_add \App\Controllers\Main::gallery_groups_add/$1
POST Main/gallery_groups_edit/([0-9]+) \App\Controllers\Main::gallery_groups_edit/$1
POST Main/gallery_add \App\Controllers\Main::gallery_add/$1
POST Main/gfotemplate_edit/([0-9]+) \App\Controllers\Main::gfotemplate_edit/$1
POST Main/contact1 \App\Controllers\Main::contact1/$1
POST Main/contact_add \App\Controllers\Main::contact_add/$1
POST Main/events_add \App\Controllers\Main::events_add/$1
POST Main/topics_add \App\Controllers\Main::topics_add/$1
POST Main/replies_add \App\Controllers\Blog::replies_add/$1
POST Main/ofm_replies_add \App\Controllers\Blog::ofm_replies_add/$1
POST Main/gfo_add \App\Controllers\Main::gfo_add/$1
POST Main/newslettertemplates_gfotest \App\Controllers\Main::newslettertemplates_gfo/$1
POST Main/postComment \App\Controllers\CommentController::postComment/$1
POST Main/insert_data \App\Controllers\Main::insert_data/$1
POST Blog/subscribe \App\Controllers\UserController::subscribe
POST / \App\Controllers\UserController::subscribe
POST Blog/searchByDates \App\Controllers\Blog::searchByDates
POST Blog/searchByDatesFrench \App\Controllers\Blog::searchByDatesFrench
POST Blog/downloadArticleAsPDF \App\Controllers\Blog::downloadArticleAsPDF
POST Blog/viewlinks/([^/]+) \App\Controllers\Blog::viewlinks/$1
POST Blog \App\Controllers\UserController::subscribe
POST Blog/events1 \App\Controllers\UserController::subscribe
POST Blog/aboutus1 \App\Controllers\UserController::subscribe
POST Blog/careers \App\Controllers\UserController::subscribe
POST Blog/contact1 \App\Controllers\UserController::subscribe
POST Blog/contactSubmit \App\Controllers\UserController::contactSubmit
POST Blog/contactSubmitFrench \App\Controllers\UserController::contactSubmitFrench
POST Blog/submitReport \App\Controllers\UserController::submitReport
POST Blog/submitReportFrench \App\Controllers\UserController::submitReportFrench
POST Blog/dataanalytics1 \App\Controllers\UserController::subscribe
POST Blog/discussions1 \App\Controllers\UserController::subscribe
POST Blog/events2 \App\Controllers\UserController::subscribe
POST Blog/gallery \App\Controllers\UserController::subscribe
POST Blog/gfo1 \App\Controllers\UserController::subscribe
POST Blog/home \App\Controllers\UserController::subscribe
POST Blog/home1 \App\Controllers\UserController::subscribe
POST Blog/ofm \App\Controllers\UserController::subscribe
POST Blog/posts \App\Controllers\UserController::subscribe
POST Blog/publications1 \App\Controllers\UserController::subscribe
POST Blog/watchdog1 \App\Controllers\UserController::subscribe
POST Blog/makereport \App\Controllers\UserController::subscribe
POST Blog/makereport_french \App\Controllers\UserController::subscribe
POST Blog/archivegfoarticles \App\Controllers\UserController::subscribe
POST Blog/archivedofmarticles \App\Controllers\UserController::subscribe
POST event_details/([0-9]+) \App\Controllers\Blog::event_details/$1
POST event_details_fr/([0-9]+) \App\Controllers\Blog::event_details_fr/$1
POST event_list \App\Controllers\Blog::event_list
POST past_event_list \App\Controllers\Blog::past_event_list
POST upcoming_event_list \App\Controllers\Blog::upcoming_event_list
POST past_event_list_fr \App\Controllers\Blog::past_event_list_fr
POST upcoming_event_list_fr \App\Controllers\Blog::upcoming_event_list_fr
POST Blog/homefrench \App\Controllers\UserController::subscribefrench
POST Blog/contactfrench \App\Controllers\UserController::subscribefrench
POST Blog/eventsfrench \App\Controllers\UserController::subscribefrench
POST Blog/aboutusfrench \App\Controllers\UserController::subscribefrench
POST Blog/careersfrench \App\Controllers\UserController::subscribefrench
POST Blog/galleryfrench \App\Controllers\UserController::subscribefrench
POST Blog/dataanalytics_french \App\Controllers\UserController::subscribefrench
POST Blog/discussionsfrench \App\Controllers\UserController::subscribefrench
POST Blog/publicationsfrench \App\Controllers\UserController::subscribefrench
POST Blog/watchdogfrench \App\Controllers\UserController::subscribefrench
POST Blog/viewarticlesfrench \App\Controllers\UserController::subscribefrench
POST Blog/contact_add \App\Controllers\Main::contact_add
POST Email/send_mail \App\Controllers\Email::send_mail/$1
POST Blog/replies_add \App\Controllers\Blog::replies_add/$1
POST Blog/repliesdoc_add \App\Controllers\Blog::repliesdoc_add/$1
POST Blog/ofm_repliesdoc_add \App\Controllers\Blog::ofm_repliesdoc_add/$1
POST Blog/ofm_replies_add \App\Controllers\Blog::ofm_replies_add/$1
POST Blog/Blog/viewlinks/([^/]+) \App\Controllers\Blog::viewlinks/$1
POST Main/Main/publishArticles/([^/]+) \App\Controllers\Main::publishArticles/$1
PUT Main/Main/publishArticles/([^/]+) \App\Controllers\Main::publishArticles/$1
DELETE Main/Main/publishArticles/([^/]+) \App\Controllers\Main::publishArticles/$1
OPTIONS Main/Main/publishArticles/([^/]+) \App\Controllers\Main::publishArticles/$1
TRACE Main/Main/publishArticles/([^/]+) \App\Controllers\Main::publishArticles/$1
CONNECT Main/Main/publishArticles/([^/]+) \App\Controllers\Main::publishArticles/$1
CLI ci(.*) \CodeIgniter\CLI\CommandRunner::index/$1
CLI Main/Main/publishArticles/([^/]+) \App\Controllers\Main::publishArticles/$1

Events

Time Event Name Times Called
0.33 ms pre_system 1
0.07 ms dbquery 5

History

Action Datetime Status Method URL Content-Type Is AJAX?
2025-04-21 01:46:33.082706 200 GET https://aidspan.org/Blog/viewTaggedArticles/Development text/html; charset=UTF-8 No
2025-04-21 01:46:32.690943 200 GET https://aidspan.org/Blog/archivedofmarticles text/html; charset=UTF-8 No
2025-04-21 01:46:32.662377 200 GET https://aidspan.org/Blog/view/12975/Aidspan%20survey%20deadline%20extended text/html; charset=UTF-8 No
2025-04-21 01:46:31.858397 200 GET https://aidspan.org/Blog/viewTaggedArticles/JimTulloch text/html; charset=UTF-8 No
2025-04-21 01:46:28.532810 200 GET https://aidspan.org/ text/html; charset=UTF-8 No
2025-04-21 01:46:13.133175 200 GET https://aidspan.org/Blog/archivegfoarticles text/html; charset=UTF-8 No
2025-04-21 01:46:12.338538 200 GET https://aidspan.org/Blog/viewTaggedArticles/Sub%20Issue text/html; charset=UTF-8 No
2025-04-21 01:46:04.158127 200 GET https://aidspan.org/Blog/viewTaggedArticles/Gender%20Equality text/html; charset=UTF-8 No
2025-04-21 01:45:40.273159 200 GET https://aidspan.org/Blog/downloadArticleAsPDF/16382 text/html; charset=UTF-8 No
2025-04-21 01:45:32.645666 200 GET https://aidspan.org/Blog/view/15466/Le%20fonds%20mondial%20explore%20l%E2%80%99utilisation%20d%E2%80%99obligations%20%C3%A0%20impact%20et%20d%E2%80%99obligations%20de%20r%C3%A9ussite%20sociale text/html; charset=UTF-8 No
2025-04-21 01:45:27.333600 200 GET https://aidspan.org/ text/html; charset=UTF-8 No
2025-04-21 01:45:25.992268 200 GET https://aidspan.org/Blog/archivegfoarticles text/html; charset=UTF-8 No
2025-04-21 01:45:20.572838 200 GET https://aidspan.org/Blog/viewTaggedArticles/Save%20the%20Children text/html; charset=UTF-8 No
2025-04-21 01:45:14.462559 200 GET https://aidspan.org/Blog/downloadArticleAsPDF/11746 text/html; charset=UTF-8 No
2025-04-21 01:45:14.229134 200 GET https://aidspan.org/Blog/viewTaggedArticles/Donald%20Trump text/html; charset=UTF-8 No
2025-04-21 01:45:10.817312 200 GET https://aidspan.org/ text/html; charset=UTF-8 No
2025-04-21 01:45:04.088778 200 GET https://aidspan.org/Blog/view/15864/UNE%20ENTREVUE%20AVEC%20LE%20FONDATEUR%20D%27AIDSPAN text/html; charset=UTF-8 No
2025-04-21 01:44:58.959209 200 GET https://aidspan.org/Blog/view/15880/TROP%20D%E2%80%99INCLUSION%20A-T-ELLE%20TU%C3%89%20LE%20D%C3%89BAT%20CONTRADICTOIRE%20ET%20UNE%20R%C3%89FLEXION%20INNOVANTE text/html; charset=UTF-8 No
2025-04-21 01:44:56.629723 200 GET https://aidspan.org/Blog/view/8105/SOUTH%20AFRICAN%20GRANT%20AGREEMENTS%20FINALLY%20SIGNED text/html; charset=UTF-8 No
2025-04-21 01:44:51.820770 200 GET https://aidspan.org/Blog/archivegfoarticles text/html; charset=UTF-8 No

View Data

session
$value CodeIgniter\Session\Session (15)
  • Properties (15)
  • Available methods (32)
  • protected cookie -> CodeIgniter\Cookie\Cookie (10)
    • Properties (10)
    • Available methods (42)
    • Static class properties (7)
    • protected domain -> string (0) ""
      protected expires -> integer 1745207192
      2025-04-21 03:46:32 UTC
      protected httponly -> boolean true
      protected name -> string (10) "ci_session"
      protected path -> string (1) "/"
      protected prefix -> string (0) ""
      protected raw -> boolean false
      protected samesite -> string (3) "Lax"
      protected secure -> boolean false
      protected value -> string (0) ""
    • final public __construct(string $name, string $value = '', array $options = array()) Construct a new Cookie instance.
      /**
      * Construct a new Cookie instance.
      *
      * @param string               $name    The cookie's name
      * @param string               $value   The cookie's value
      * @param array<string, mixed> $options The cookie's options
      *
      * @throws CookieException
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:201
      public getId(): string {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:248
      public getPrefix(): string {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:256
      public getName(): string {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:264
      public getPrefixedName(): string {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:272
      public getValue(): string {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:291
      public getExpiresTimestamp(): int {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:299
      public getExpiresString(): string {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:307
      public isExpired(): bool {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:315
      public getMaxAge(): int {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:323
      public getPath(): string {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:333
      public getDomain(): string {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:341
      public isSecure(): bool {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:349
      public isHTTPOnly(): bool {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:357
      public getSameSite(): string {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:365
      public isRaw(): bool {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:373
      public getOptions(): array {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:381
      public withPrefix(string $prefix = '') {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:401
      public withName(string $name) {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:415
      public withValue(string $value) {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:429
      public withExpires($expires) {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:441
      public withExpired() {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:453
      public withNeverExpiring() {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:465
      public withPath(?string $path) {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:477
      public withDomain(?string $domain) {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:492
      public withSecure(bool $secure = true) {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:507
      public withHTTPOnly(bool $httponly = true) {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:522
      public withSameSite(string $samesite) {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:534
      public withRaw(bool $raw = true) {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:548
      public offsetExists($offset): bool Whether an offset exists.
      /**
      * Whether an offset exists.
      *
      * @param mixed $offset
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:568
      public offsetGet($offset): mixed Offset to retrieve.
      /**
      * Offset to retrieve.
      *
      * @param mixed $offset
      *
      * @throws InvalidArgumentException
      *
      * @return mixed
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:583
      public offsetSet($offset, $value): void Offset to set.
      /**
      * Offset to set.
      *
      * @param mixed $offset
      * @param mixed $value
      *
      * @throws LogicException
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:600
      public offsetUnset($offset): void Offset to unset.
      /**
      * Offset to unset.
      *
      * @param mixed $offset
      *
      * @throws LogicException
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:612
      public toHeaderString(): string {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:624
      public __toString(): string {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:632
      public toArray(): array {@inheritDoc}
      /**
      * {@inheritDoc}
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:683
      protected validateName(string $name, bool $raw): void Validates the cookie name per RFC 2616.
      /**
      * Validates the cookie name per RFC 2616.
      *
      * If `$raw` is true, names should not contain invalid characters
      * as `setrawcookie()` will reject this.
      *
      * @throws CookieException
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:731
      protected validatePrefix(string $prefix, bool $secure, string $path, string $domain): void Validates the special prefixes if some attribute requirements are met.
      /**
      * Validates the special prefixes if some attribute requirements are met.
      *
      * @throws CookieException
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:747
      protected validateSameSite(string $samesite, bool $secure): void Validates the `SameSite` to be within the allowed types.
      /**
      * Validates the `SameSite` to be within the allowed types.
      *
      * @throws CookieException
      *
      * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:765
      public static setDefaults($config = array()): array<string, mixed> The old defaults array. Useful for resetting. Set the default attributes to a Cookie instance by injecting the values from...
      \CodeIgniter\Cookie\Cookie::setDefaults($config = array())
      /**
      * Set the default attributes to a Cookie instance by injecting
      * the values from the `CookieConfig` config or an array.
      *
      * This method is called from Response::__construct().
      *
      * @param array<string, mixed>|CookieConfig $config
      *
      * @return array<string, mixed> The old defaults array. Useful for resetting.
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:128
      public static fromHeaderString(string $cookie, bool $raw = false): static Create a new Cookie instance from a `Set-Cookie` header.
      \CodeIgniter\Cookie\Cookie::fromHeaderString(string $cookie, bool $raw = false)
      /**
      * Create a new Cookie instance from a `Set-Cookie` header.
      *
      * @throws CookieException
      *
      * @return static
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:166
      protected static convertExpiresTimestamp($expires0): int Converts expires time to Unix format.
      /**
      * Converts expires time to Unix format.
      *
      * @param DateTimeInterface|int|string $expires
      */
      
      Defined in <ROOT>/system/Cookie/Cookie.php:698
    • private static $defaults :: array (8)
      prefix => string (0) ""
      expires => integer 0
      path => string (1) "/"
      domain => string (0) ""
      secure => boolean false
      httponly => boolean true
      samesite => string (3) "Lax"
      raw => boolean false
      private static $reservedCharsList :: string (23) "=,; ()<>@:\"/[]?{}"
      =,; 	
      ()<>@:\"/[]?{}
      
      const SAMESITE_NONE :: string (4) "none"
      \CodeIgniter\Cookie\Cookie::SAMESITE_NONE
      const SAMESITE_LAX :: string (3) "lax"
      \CodeIgniter\Cookie\Cookie::SAMESITE_LAX
      const SAMESITE_STRICT :: string (6) "strict"
      \CodeIgniter\Cookie\Cookie::SAMESITE_STRICT
      const ALLOWED_SAMESITE_VALUES :: array (3)
      \CodeIgniter\Cookie\Cookie::ALLOWED_SAMESITE_VALUES
      0 => string (4) "none"
      \CodeIgniter\Cookie\Cookie::ALLOWED_SAMESITE_VALUES[0]
      1 => string (3) "lax"
      \CodeIgniter\Cookie\Cookie::ALLOWED_SAMESITE_VALUES[1]
      2 => string (6) "strict"
      \CodeIgniter\Cookie\Cookie::ALLOWED_SAMESITE_VALUES[2]
      const EXPIRES_FORMAT :: string (16) "D, d-M-Y H:i:s T"
      \CodeIgniter\Cookie\Cookie::EXPIRES_FORMAT
    protected cookieDomain -> string (0) ""
    protected cookiePath -> string (1) "/"
    protected cookieSameSite -> string (3) "Lax"
    protected cookieSecure -> boolean false
    protected driver -> CodeIgniter\Session\Handlers\FileHandler (16)
    • Properties (16)
    • Available methods (13)
    • protected cookieDomain -> string (0) ""
      protected cookieName -> string (10) "ci_session"
      protected cookiePath -> string (1) "/"
      protected cookiePrefix -> string (0) ""
      protected cookieSecure -> boolean false
      protected fileHandle -> stream resource <ROOT>/writable/session/ci_sessionha8kuchhphmo12pnfuvo8ksc0v41a1nf
      timed_out => boolean false
      blocked => boolean true
      eof => boolean false
      wrapper_type => string (9) "plainfile"
      stream_type => string (5) "STDIO"
      mode => string (3) "c+b"
      unread_bytes => integer 0
      seekable => boolean true
      uri => string (85) "/var/www/html/aidspan_new/writable/session/ci_sessionha8kuchhphmo12pnfuvo8ks...
      • File ()
      • Contents
      • -rw------- 33 33  Apr 21 04:46 /var/www/html/aidspan_new/writable/session/ci_sessionha8kuchhphmo12pnfuvo8ksc0v41a1nf
        
      • /var/www/html/aidspan_new/writable/session/ci_sessionha8kuchhphmo12pnfuvo8ksc0v41a1nf
        
      protected fileNew -> boolean true
      protected filePath -> string (53) "/var/www/html/aidspan_new/writable/session/ci_session"
      protected fingerprint -> string (32) "d41d8cd98f00b204e9800998ecf8427e"
      protected ipAddress -> string (12) "3.142.50.218"
      protected lock -> boolean false
      protected logger -> CodeIgniter\Log\Logger (9)
      • Properties (9)
      • Available methods (13)
      • public logCache -> array (0)
        protected cacheLogs -> boolean true
        protected dateFormat -> string (11) "Y-m-d H:i:s"
        protected fileExt -> null
        protected filePermissions -> integer 420
        protected handlerConfig -> array (1)
        CodeIgniter\Log\Handlers\FileHandler => array (4)
        handles => array (8)
        0 => string (8) "critical"
        1 => string (5) "alert"
        2 => string (9) "emergency"
        3 => string (5) "debug"
        4 => string (5) "error"
        5 => string (4) "info"
        6 => string (6) "notice"
        7 => string (7) "warning"
        fileExtension => string (0) ""
        filePermissions => integer 420
        path => string (0) ""
        protected handlers -> array (0)
        protected loggableLevels -> array (4)
        0 => string (9) "emergency"
        1 => string (5) "alert"
        2 => string (8) "critical"
        3 => string (5) "error"
        protected logLevels -> array (8)
        emergency => integer 1
        alert => integer 2
        critical => integer 3
        error => integer 4
        warning => integer 5
        notice => integer 6
        info => integer 7
        debug => integer 8
      • public __construct($config, bool $debug = true) Constructor.
        /**
        * Constructor.
        *
        * @param \Config\Logger $config
        *
        * @throws RuntimeException
        */
        
        Defined in <ROOT>/system/Log/Logger.php:119
        public emergency($message, array $context = array()): bool System is unusable.
        /**
        * System is unusable.
        *
        * @param string $message
        */
        
        Defined in <ROOT>/system/Log/Logger.php:157
        public alert($message, array $context = array()): bool Action must be taken immediately.
        /**
        * Action must be taken immediately.
        *
        * Example: Entire website down, database unavailable, etc. This should
        * trigger the SMS alerts and wake you up.
        *
        * @param string $message
        */
        
        Defined in <ROOT>/system/Log/Logger.php:170
        public critical($message, array $context = array()): bool Critical conditions.
        /**
        * Critical conditions.
        *
        * Example: Application component unavailable, unexpected exception.
        *
        * @param string $message
        */
        
        Defined in <ROOT>/system/Log/Logger.php:182
        public error($message, array $context = array()): bool Runtime errors that do not require immediate action but should typically be ...
        /**
        * Runtime errors that do not require immediate action but should typically
        * be logged and monitored.
        *
        * @param string $message
        */
        
        Defined in <ROOT>/system/Log/Logger.php:193
        public warning($message, array $context = array()): bool Exceptional occurrences that are not errors.
        /**
        * Exceptional occurrences that are not errors.
        *
        * Example: Use of deprecated APIs, poor use of an API, undesirable things
        * that are not necessarily wrong.
        *
        * @param string $message
        */
        
        Defined in <ROOT>/system/Log/Logger.php:206
        public notice($message, array $context = array()): bool Normal but significant events.
        /**
        * Normal but significant events.
        *
        * @param string $message
        */
        
        Defined in <ROOT>/system/Log/Logger.php:216
        public info($message, array $context = array()): bool Interesting events.
        /**
        * Interesting events.
        *
        * Example: User logs in, SQL logs.
        *
        * @param string $message
        */
        
        Defined in <ROOT>/system/Log/Logger.php:228
        public debug($message, array $context = array()): bool Detailed debug information.
        /**
        * Detailed debug information.
        *
        * @param string $message
        */
        
        Defined in <ROOT>/system/Log/Logger.php:238
        public log($level, $message, array $context = array()): bool Logs with an arbitrary level.
        /**
        * Logs with an arbitrary level.
        *
        * @param mixed  $level
        * @param string $message
        */
        
        Defined in <ROOT>/system/Log/Logger.php:249
        public determineFile(): array Determines the file and line that the logging call was made from by analyzin...
        /**
        * Determines the file and line that the logging call
        * was made from by analyzing the backtrace.
        * Find the earliest stack frame that is part of our logging system.
        */
        
        Defined in <ROOT>/system/Log/Logger.php:377
        protected interpolate($message, array $context = array()): mixed Replaces any placeholders in the message with variables from the context, as...
        /**
        * Replaces any placeholders in the message with variables
        * from the context, as well as a few special items like:
        *
        * {session_vars}
        * {post_vars}
        * {get_vars}
        * {env}
        * {env:foo}
        * {file}
        * {line}
        *
        * @param mixed $message
        *
        * @return mixed
        */
        
        Defined in <ROOT>/system/Log/Logger.php:319
        protected cleanFileNames(string $file): string Cleans the paths of filenames by replacing APPPATH, SYSTEMPATH, FCPATH with ...
        /**
        * Cleans the paths of filenames by replacing APPPATH, SYSTEMPATH, FCPATH
        * with the actual var. i.e.
        *
        *  /var/www/site/app/Controllers/Home.php
        *      becomes:
        *  APPPATH/Controllers/Home.php
        *
        * @deprecated Use dedicated `clean_path()` function.
        */
        
        Defined in <ROOT>/system/Log/Logger.php:427
      protected matchIP -> boolean false
      protected savePath -> string (42) "/var/www/html/aidspan_new/writable/session"
      • Directory (98.3MB)
      • drwxr-xr-x 33 33 98.3MB Apr 21 04:46 /var/www/html/aidspan_new/writable/session
        
      protected sessionID -> string (32) "ha8kuchhphmo12pnfuvo8ksc0v41a1nf"
      • Base64
      • base64_decode(sessionID) binary string (24)
      protected sessionIDRegex -> string (12) "[0-9a-v]{32}"
    • public __construct(Config\App $config, string $ipAddress)
      Defined in <ROOT>/system/Session/Handlers/FileHandler.php:65
      public open($path, $name): bool Re-initialize existing session, or creates a new one.
      /**
      * Re-initialize existing session, or creates a new one.
      *
      * @param string $path The path where to store/retrieve the session
      * @param string $name The session name
      *
      * @throws SessionException
      */
      
      Defined in <ROOT>/system/Session/Handlers/FileHandler.php:95
      public read($id): false|string Returns an encoded string of the read data. Reads the session data from the session storage, and returns the results.
      /**
      * Reads the session data from the session storage, and returns the results.
      *
      * @param string $id The session ID
      *
      * @return false|string Returns an encoded string of the read data.
      *                      If nothing was read, it must return false.
      */
      
      Defined in <ROOT>/system/Session/Handlers/FileHandler.php:122
      public write($id, $data): bool Writes the session data to the session storage.
      /**
      * Writes the session data to the session storage.
      *
      * @param string $id   The session ID
      * @param string $data The encoded session data
      */
      
      Defined in <ROOT>/system/Session/Handlers/FileHandler.php:180
      public close(): bool Closes the current session.
      /**
      * Closes the current session.
      */
      
      Defined in <ROOT>/system/Session/Handlers/FileHandler.php:225
      public destroy($id): bool Destroys a session
      /**
      * Destroys a session
      *
      * @param string $id The session ID being destroyed
      */
      
      Defined in <ROOT>/system/Session/Handlers/FileHandler.php:243
      public gc($max_lifetime): false|int Returns the number of deleted sessions on success, or false on failure. Cleans up expired sessions.
      /**
      * Cleans up expired sessions.
      *
      * @param int $max_lifetime Sessions that have not updated
      *                          for the last max_lifetime seconds will be removed.
      *
      * @return false|int Returns the number of deleted sessions on success, or false on failure.
      */
      
      Defined in <ROOT>/system/Session/Handlers/FileHandler.php:271
      public setLogger(Psr\Log\LoggerInterface $logger) Sets a logger.
      /**
      * Sets a logger.
      *
      * @param LoggerInterface $logger
      */
      
      Inherited from CodeIgniter\Session\Handlers\BaseHandler
      Defined in <ROOT>/vendor/psr/log/Psr/Log/LoggerAwareTrait.php:22
      protected configureSessionIDRegex() Configure Session ID regular expression
      /**
      * Configure Session ID regular expression
      */
      
      Defined in <ROOT>/system/Session/Handlers/FileHandler.php:312
      protected destroyCookie(): bool Internal method to force removal of a cookie by the client when session_dest...
      /**
      * Internal method to force removal of a cookie by the client
      * when session_destroy() is called.
      */
      
      Inherited from CodeIgniter\Session\Handlers\BaseHandler
      Defined in <ROOT>/system/Session/Handlers/BaseHandler.php:136
      protected lockSession(string $sessionID): bool A dummy method allowing drivers with no locking functionality (databases oth...
      /**
      * A dummy method allowing drivers with no locking functionality
      * (databases other than PostgreSQL and MySQL) to act as if they
      * do acquire a lock.
      */
      
      Inherited from CodeIgniter\Session\Handlers\BaseHandler
      Defined in <ROOT>/system/Session/Handlers/BaseHandler.php:150
      protected releaseLock(): bool Releases the lock, if any.
      /**
      * Releases the lock, if any.
      */
      
      Inherited from CodeIgniter\Session\Handlers\BaseHandler
      Defined in <ROOT>/system/Session/Handlers/BaseHandler.php:160
      protected fail(): bool Drivers other than the 'files' one don't (need to) use the session.save_path...
      /**
      * Drivers other than the 'files' one don't (need to) use the
      * session.save_path INI setting, but that leads to confusing
      * error messages emitted by PHP when open() or write() fail,
      * as the message contains session.save_path ...
      *
      * To work around the problem, the drivers will call this method
      * so that the INI is set just in time for the error message to
      * be properly generated.
      */
      
      Inherited from CodeIgniter\Session\Handlers\BaseHandler
      Defined in <ROOT>/system/Session/Handlers/BaseHandler.php:177
    protected logger -> CodeIgniter\Log\Logger (9)
    • Properties (9)
    • Available methods (13)
    • public logCache -> array (0)
      protected cacheLogs -> boolean true
      protected dateFormat -> string (11) "Y-m-d H:i:s"
      protected fileExt -> null
      protected filePermissions -> integer 420
      protected handlerConfig -> array (1)
      CodeIgniter\Log\Handlers\FileHandler => array (4)
      handles => array (8)
      0 => string (8) "critical"
      1 => string (5) "alert"
      2 => string (9) "emergency"
      3 => string (5) "debug"
      4 => string (5) "error"
      5 => string (4) "info"
      6 => string (6) "notice"
      7 => string (7) "warning"
      fileExtension => string (0) ""
      filePermissions => integer 420
      path => string (0) ""
      protected handlers -> array (0)
      protected loggableLevels -> array (4)
      0 => string (9) "emergency"
      1 => string (5) "alert"
      2 => string (8) "critical"
      3 => string (5) "error"
      protected logLevels -> array (8)
      emergency => integer 1
      alert => integer 2
      critical => integer 3
      error => integer 4
      warning => integer 5
      notice => integer 6
      info => integer 7
      debug => integer 8
    • public __construct($config, bool $debug = true) Constructor.
      /**
      * Constructor.
      *
      * @param \Config\Logger $config
      *
      * @throws RuntimeException
      */
      
      Defined in <ROOT>/system/Log/Logger.php:119
      public emergency($message, array $context = array()): bool System is unusable.
      /**
      * System is unusable.
      *
      * @param string $message
      */
      
      Defined in <ROOT>/system/Log/Logger.php:157
      public alert($message, array $context = array()): bool Action must be taken immediately.
      /**
      * Action must be taken immediately.
      *
      * Example: Entire website down, database unavailable, etc. This should
      * trigger the SMS alerts and wake you up.
      *
      * @param string $message
      */
      
      Defined in <ROOT>/system/Log/Logger.php:170
      public critical($message, array $context = array()): bool Critical conditions.
      /**
      * Critical conditions.
      *
      * Example: Application component unavailable, unexpected exception.
      *
      * @param string $message
      */
      
      Defined in <ROOT>/system/Log/Logger.php:182
      public error($message, array $context = array()): bool Runtime errors that do not require immediate action but should typically be ...
      /**
      * Runtime errors that do not require immediate action but should typically
      * be logged and monitored.
      *
      * @param string $message
      */
      
      Defined in <ROOT>/system/Log/Logger.php:193
      public warning($message, array $context = array()): bool Exceptional occurrences that are not errors.
      /**
      * Exceptional occurrences that are not errors.
      *
      * Example: Use of deprecated APIs, poor use of an API, undesirable things
      * that are not necessarily wrong.
      *
      * @param string $message
      */
      
      Defined in <ROOT>/system/Log/Logger.php:206
      public notice($message, array $context = array()): bool Normal but significant events.
      /**
      * Normal but significant events.
      *
      * @param string $message
      */
      
      Defined in <ROOT>/system/Log/Logger.php:216
      public info($message, array $context = array()): bool Interesting events.
      /**
      * Interesting events.
      *
      * Example: User logs in, SQL logs.
      *
      * @param string $message
      */
      
      Defined in <ROOT>/system/Log/Logger.php:228
      public debug($message, array $context = array()): bool Detailed debug information.
      /**
      * Detailed debug information.
      *
      * @param string $message
      */
      
      Defined in <ROOT>/system/Log/Logger.php:238
      public log($level, $message, array $context = array()): bool Logs with an arbitrary level.
      /**
      * Logs with an arbitrary level.
      *
      * @param mixed  $level
      * @param string $message
      */
      
      Defined in <ROOT>/system/Log/Logger.php:249
      public determineFile(): array Determines the file and line that the logging call was made from by analyzin...
      /**
      * Determines the file and line that the logging call
      * was made from by analyzing the backtrace.
      * Find the earliest stack frame that is part of our logging system.
      */
      
      Defined in <ROOT>/system/Log/Logger.php:377
      protected interpolate($message, array $context = array()): mixed Replaces any placeholders in the message with variables from the context, as...
      /**
      * Replaces any placeholders in the message with variables
      * from the context, as well as a few special items like:
      *
      * {session_vars}
      * {post_vars}
      * {get_vars}
      * {env}
      * {env:foo}
      * {file}
      * {line}
      *
      * @param mixed $message
      *
      * @return mixed
      */
      
      Defined in <ROOT>/system/Log/Logger.php:319
      protected cleanFileNames(string $file): string Cleans the paths of filenames by replacing APPPATH, SYSTEMPATH, FCPATH with ...
      /**
      * Cleans the paths of filenames by replacing APPPATH, SYSTEMPATH, FCPATH
      * with the actual var. i.e.
      *
      *  /var/www/site/app/Controllers/Home.php
      *      becomes:
      *  APPPATH/Controllers/Home.php
      *
      * @deprecated Use dedicated `clean_path()` function.
      */
      
      Defined in <ROOT>/system/Log/Logger.php:427
    protected sessionCookieName -> string (10) "ci_session"
    protected sessionDriverName -> string (40) "CodeIgniter\Session\Handlers\FileHandler"
    protected sessionExpiration -> integer 7200
    protected sessionMatchIP -> boolean false
    protected sessionRegenerateDestroy -> boolean false
    protected sessionSavePath -> string (42) "/var/www/html/aidspan_new/writable/session"
    • Directory (98.3MB)
    • drwxr-xr-x 33 33 98.3MB Apr 21 04:46 /var/www/html/aidspan_new/writable/session
      
    protected sessionTimeToUpdate -> integer 300
    protected sidRegexp -> string (12) "[0-9a-v]{32}"
  • public setLogger(Psr\Log\LoggerInterface $logger) Sets a logger.
    $value->setLogger(Psr\Log\LoggerInterface $logger)
    /**
    * Sets a logger.
    *
    * @param LoggerInterface $logger
    */
    
    Defined in <ROOT>/vendor/psr/log/Psr/Log/LoggerAwareTrait.php:22
    public __construct(SessionHandlerInterface $driver, Config\App $config) Constructor.
    new \CodeIgniter\Session\Session(SessionHandlerInterface $driver, Config\App $config)
    /**
    * Constructor.
    *
    * Extract configuration settings and save them here.
    */
    
    Defined in <ROOT>/system/Session/Session.php:169
    public start(): mixed Initialize the session container and starts up the session.
    $value->start()
    /**
    * Initialize the session container and starts up the session.
    *
    * @return mixed
    */
    
    Defined in <ROOT>/system/Session/Session.php:208
    public stop() Does a full stop of the session:
    $value->stop()
    /**
    * Does a full stop of the session:
    *
    * - destroys the session
    * - unsets the session id
    * - destroys the session cookie
    */
    
    Defined in <ROOT>/system/Session/Session.php:271
    public regenerate(bool $destroy = false) Regenerates the session ID.
    $value->regenerate(bool $destroy = false)
    /**
    * Regenerates the session ID.
    *
    * @param bool $destroy Should old session data be destroyed?
    */
    
    Defined in <ROOT>/system/Session/Session.php:410
    public destroy() Destroys the current session.
    $value->destroy()
    /**
    * Destroys the current session.
    */
    
    Defined in <ROOT>/system/Session/Session.php:419
    public set($data, $value = null) Sets user data into the session.
    $value->set($data, $value = null)
    /**
    * Sets user data into the session.
    *
    * If $data is a string, then it is interpreted as a session property
    * key, and  $value is expected to be non-null.
    *
    * If $data is an array, it is expected to be an array of key/value pairs
    * to be set as session properties.
    *
    * @param array|string $data  Property name or associative array of properties
    * @param mixed        $value Property value if single key provided
    */
    
    Defined in <ROOT>/system/Session/Session.php:440
    public get(?string $key = null): mixed The property value(s) Get user data that has been set in the session.
    $value->get(?string $key = null)
    /**
    * Get user data that has been set in the session.
    *
    * If the property exists as "normal", returns it.
    * Otherwise, returns an array of any temp or flash data values with the
    * property key.
    *
    * Replaces the legacy method $session->userdata();
    *
    * @param string|null $key Identifier of the session property to retrieve
    *
    * @return mixed The property value(s)
    */
    
    Defined in <ROOT>/system/Session/Session.php:470
    public has(string $key): bool Returns whether an index exists in the session array.
    $value->has(string $key)
    /**
    * Returns whether an index exists in the session array.
    *
    * @param string $key Identifier of the session property we are interested in.
    */
    
    Defined in <ROOT>/system/Session/Session.php:503
    public push(string $key, array $data) Push new value onto session value that is array.
    $value->push(string $key, array $data)
    /**
    * Push new value onto session value that is array.
    *
    * @param string $key  Identifier of the session property we are interested in.
    * @param array  $data value to be pushed to existing session key.
    */
    
    Defined in <ROOT>/system/Session/Session.php:514
    public remove($key) Remove one or more session properties.
    $value->remove($key)
    /**
    * Remove one or more session properties.
    *
    * If $key is an array, it is interpreted as an array of string property
    * identifiers to remove. Otherwise, it is interpreted as the identifier
    * of a specific session property to remove.
    *
    * @param array|string $key Identifier of the session property or properties to remove.
    */
    
    Defined in <ROOT>/system/Session/Session.php:530
    public __set(string $key, $value) Magic method to set variables in the session by simply calling $session->foo...
    /**
    * Magic method to set variables in the session by simply calling
    *  $session->foo = bar;
    *
    * @param string       $key   Identifier of the session property to set.
    * @param array|string $value
    */
    
    Defined in <ROOT>/system/Session/Session.php:550
    public __get(string $key): string|null Magic method to get session variables by simply calling $foo = $session->foo;
    /**
    * Magic method to get session variables by simply calling
    *  $foo = $session->foo;
    *
    * @param string $key Identifier of the session property to remove.
    *
    * @return string|null
    */
    
    Defined in <ROOT>/system/Session/Session.php:563
    public __isset(string $key): bool Magic method to check for session variables. Different from has() in that it...
    /**
    * Magic method to check for session variables.
    * Different from has() in that it will validate 'session_id' as well.
    * Mostly used by internal PHP functions, users should stick to has()
    *
    * @param string $key Identifier of the session property to remove.
    */
    
    Defined in <ROOT>/system/Session/Session.php:585
    public setFlashdata($data, $value = null) Sets data into the session that will only last for a single request. Perfect...
    $value->setFlashdata($data, $value = null)
    /**
    * Sets data into the session that will only last for a single request.
    * Perfect for use with single-use status update messages.
    *
    * If $data is an array, it is interpreted as an associative array of
    * key/value pairs for flashdata properties.
    * Otherwise, it is interpreted as the identifier of a specific
    * flashdata property, with $value containing the property value.
    *
    * @param array|string $data  Property identifier or associative array of properties
    * @param array|string $value Property value if $data is a scalar
    */
    
    Defined in <ROOT>/system/Session/Session.php:602
    public getFlashdata(?string $key = null): array|null The requested property value, or an associative array of them Retrieve one or more items of flash data from the session.
    $value->getFlashdata(?string $key = null)
    /**
    * Retrieve one or more items of flash data from the session.
    *
    * If the item key is null, return all flashdata.
    *
    * @param string $key Property identifier
    *
    * @return array|null The requested property value, or an associative array  of them
    */
    
    Defined in <ROOT>/system/Session/Session.php:617
    public keepFlashdata($key) Keeps a single piece of flash data alive for one more request.
    $value->keepFlashdata($key)
    /**
    * Keeps a single piece of flash data alive for one more request.
    *
    * @param array|string $key Property identifier or array of them
    */
    
    Defined in <ROOT>/system/Session/Session.php:642
    public markAsFlashdata($key): bool Mark a session property or properties as flashdata.
    $value->markAsFlashdata($key)
    /**
    * Mark a session property or properties as flashdata.
    *
    * @param array|string $key Property identifier or array of them
    *
    * @return bool False if any of the properties are not already set
    */
    
    Defined in <ROOT>/system/Session/Session.php:654
    public unmarkFlashdata($key) Unmark data in the session as flashdata.
    $value->unmarkFlashdata($key)
    /**
    * Unmark data in the session as flashdata.
    *
    * @param mixed $key Property identifier or array of them
    */
    
    Defined in <ROOT>/system/Session/Session.php:684
    public getFlashKeys(): array Retrieve all of the keys for session data marked as flashdata.
    $value->getFlashKeys()
    /**
    * Retrieve all of the keys for session data marked as flashdata.
    *
    * @return array The property names of all flashdata
    */
    
    Defined in <ROOT>/system/Session/Session.php:710
    public setTempdata($data, $value = null, int $ttl = 300) Sets new data into the session, and marks it as temporary data with a set li...
    $value->setTempdata($data, $value = null, int $ttl = 300)
    /**
    * Sets new data into the session, and marks it as temporary data
    * with a set lifespan.
    *
    * @param array|string $data  Session data key or associative array of items
    * @param null         $value Value to store
    * @param int          $ttl   Time-to-live in seconds
    */
    
    Defined in <ROOT>/system/Session/Session.php:735
    public getTempdata(?string $key = null): mixed Session data value or null if not found. Returns either a single piece of tempdata, or all temp data currently in the...
    $value->getTempdata(?string $key = null)
    /**
    * Returns either a single piece of tempdata, or all temp data currently
    * in the session.
    *
    * @param string $key Session data key
    *
    * @return mixed Session data value or null if not found.
    */
    
    Defined in <ROOT>/system/Session/Session.php:749
    public removeTempdata(string $key) Removes a single piece of temporary data from the session.
    $value->removeTempdata(string $key)
    /**
    * Removes a single piece of temporary data from the session.
    *
    * @param string $key Session data key
    */
    
    Defined in <ROOT>/system/Session/Session.php:774
    public markAsTempdata($key, int $ttl = 300): bool Mark one of more pieces of data as being temporary, meaning that it has a se...
    $value->markAsTempdata($key, int $ttl = 300)
    /**
    * Mark one of more pieces of data as being temporary, meaning that
    * it has a set lifespan within the session.
    *
    * @param array|string $key Property identifier or array of them
    * @param int          $ttl Time to live, in seconds
    *
    * @return bool False if any of the properties were not set
    */
    
    Defined in <ROOT>/system/Session/Session.php:789
    public unmarkTempdata($key) Unmarks temporary data in the session, effectively removing its lifespan and...
    $value->unmarkTempdata($key)
    /**
    * Unmarks temporary data in the session, effectively removing its
    * lifespan and allowing it to live as long as the session does.
    *
    * @param array|string $key Property identifier or array of them
    */
    
    Defined in <ROOT>/system/Session/Session.php:834
    public getTempKeys(): array Retrieve the keys of all session data that have been marked as temporary data.
    $value->getTempKeys()
    /**
    * Retrieve the keys of all session data that have been marked as temporary data.
    */
    
    Defined in <ROOT>/system/Session/Session.php:858
    protected configure() Configuration.
    /**
    * Configuration.
    *
    * Handle input binds and configuration defaults.
    */
    
    Defined in <ROOT>/system/Session/Session.php:287
    protected configureSidLength() Configure session ID length
    /**
    * Configure session ID length
    *
    * To make life easier, we used to force SHA-1 and 4 bits per
    * character on everyone. And of course, someone was unhappy.
    *
    * Then PHP 7.1 broke backwards-compatibility because ext/session
    * is such a mess that nobody wants to touch it with a pole stick,
    * and the one guy who does, nobody has the energy to argue with.
    *
    * So we were forced to make changes, and OF COURSE something was
    * going to break and now we have this pile of shit. -- Narf
    */
    
    Defined in <ROOT>/system/Session/Session.php:341
    protected initVars() Handle temporary variables
    /**
    * Handle temporary variables
    *
    * Clears old "flash" data, marks the new one for deletion and handles
    * "temp" data deletion.
    */
    
    Defined in <ROOT>/system/Session/Session.php:382
    protected setSaveHandler() Sets the driver as the session handler in PHP. Extracted for easier testing.
    /**
    * Sets the driver as the session handler in PHP.
    * Extracted for easier testing.
    */
    
    Defined in <ROOT>/system/Session/Session.php:879
    protected startSession() Starts the session. Extracted for testing reasons.
    /**
    * Starts the session.
    * Extracted for testing reasons.
    */
    
    Defined in <ROOT>/system/Session/Session.php:888
    protected setCookie() Takes care of setting the cookie on the client side.
    /**
    * Takes care of setting the cookie on the client side.
    *
    * @codeCoverageIgnore
    */
    
    Defined in <ROOT>/system/Session/Session.php:904
request
$value CodeIgniter\HTTP\IncomingRequest (20)
  • Properties (20)
  • Available methods (58)
  • public config -> Config\App (31)
    $value->config
    • Properties (31)
    • Available methods (4)
    • Static class properties (3)
    • public appTimezone -> string (14) "Africa/Nairobi"
      $value->config->appTimezone
      public baseURL -> string (20) "https://aidspan.org/"
      $value->config->baseURL
      public charset -> string (5) "UTF-8"
      $value->config->charset
      public cookieDomain -> string (0) ""
      $value->config->cookieDomain
      public cookieHTTPOnly -> boolean true
      $value->config->cookieHTTPOnly
      public cookiePath -> string (1) "/"
      $value->config->cookiePath
      public cookiePrefix -> string (0) ""
      $value->config->cookiePrefix
      public cookieSameSite -> string (3) "Lax"
      $value->config->cookieSameSite
      public cookieSecure -> boolean false
      $value->config->cookieSecure
      public CSPEnabled -> boolean false
      $value->config->CSPEnabled
      public CSRFCookieName -> string (16) "csrf_cookie_name"
      $value->config->CSRFCookieName
      public CSRFExpire -> integer 7200
      $value->config->CSRFExpire
      public CSRFHeaderName -> string (12) "X-CSRF-TOKEN"
      $value->config->CSRFHeaderName
      public CSRFRedirect -> boolean true
      $value->config->CSRFRedirect
      public CSRFRegenerate -> boolean true
      $value->config->CSRFRegenerate
      public CSRFSameSite -> string (3) "Lax"
      $value->config->CSRFSameSite
      public CSRFTokenName -> string (14) "csrf_test_name"
      $value->config->CSRFTokenName
      public defaultLocale -> string (2) "en"
      $value->config->defaultLocale
      public forceGlobalSecureRequests -> boolean false
      $value->config->forceGlobalSecureRequests
      public indexPage -> string (0) ""
      $value->config->indexPage
      public negotiateLocale -> boolean false
      $value->config->negotiateLocale
      public proxyIPs -> string (0) ""
      $value->config->proxyIPs
      public sessionCookieName -> string (10) "ci_session"
      $value->config->sessionCookieName
      public sessionDriver -> string (40) "CodeIgniter\Session\Handlers\FileHandler"
      $value->config->sessionDriver
      public sessionExpiration -> integer 7200
      $value->config->sessionExpiration
      public sessionMatchIP -> boolean false
      $value->config->sessionMatchIP
      public sessionRegenerateDestroy -> boolean false
      $value->config->sessionRegenerateDestroy
      public sessionSavePath -> string (42) "/var/www/html/aidspan_new/writable/session"
      $value->config->sessionSavePath
      • Directory (98.3MB)
      • drwxr-xr-x 33 33 98.3MB Apr 21 04:46 /var/www/html/aidspan_new/writable/session
        
      public sessionTimeToUpdate -> integer 300
      $value->config->sessionTimeToUpdate
      public supportedLocales -> array (1)
      $value->config->supportedLocales
      0 => string (2) "en"
      $value->config->supportedLocales[0]
      public uriProtocol -> string (9) "PATH_INFO"
      $value->config->uriProtocol
    • public __construct() Will attempt to get environment variables with names that match the properti...
      new \Config\App()
      /**
      * Will attempt to get environment variables with names
      * that match the properties of the child class.
      *
      * The "shortPrefix" is the lowercase-only config class name.
      */
      
      Inherited from CodeIgniter\Config\BaseConfig
      Defined in <ROOT>/system/Config/BaseConfig.php:60
      protected initEnvValue(&$property, string $name, string $prefix, string $shortPrefix): void Initialization an environment-specific configuration setting
      /**
      * Initialization an environment-specific configuration setting
      *
      * @param mixed $property
      *
      * @return void
      */
      
      Inherited from CodeIgniter\Config\BaseConfig
      Defined in <ROOT>/system/Config/BaseConfig.php:93
      protected getEnvValue(string $property, string $prefix, string $shortPrefix): string|null Retrieve an environment-specific configuration setting
      /**
      * Retrieve an environment-specific configuration setting
      *
      * @return string|null
      */
      
      Inherited from CodeIgniter\Config\BaseConfig
      Defined in <ROOT>/system/Config/BaseConfig.php:128
      protected registerProperties() Provides external libraries a simple way to register one or more options int...
      /**
      * Provides external libraries a simple way to register one or more
      * options into a config file.
      *
      * @throws ReflectionException
      */
      
      Inherited from CodeIgniter\Config\BaseConfig
      Defined in <ROOT>/system/Config/BaseConfig.php:174
    • public static $registrars :: array (0)
      \CodeIgniter\Config\BaseConfig::$registrars
      protected static $didDiscovery :: boolean true
      protected static $moduleConfig :: Config\Modules (3)
      • Properties (3)
      • Available methods
      • public aliases -> array (5)
        0 => string (6) "events"
        1 => string (7) "filters"
        2 => string (10) "registrars"
        3 => string (6) "routes"
        4 => string (8) "services"
        public discoverInComposer -> boolean true
        public enabled -> boolean true
      • public shouldDiscover(string $alias): bool Should the application auto-discover the requested resource.
        /**
        * Should the application auto-discover the requested resource.
        */
        
        Inherited from CodeIgniter\Modules\Modules
        Defined in <ROOT>/system/Modules/Modules.php:45
    public uri -> CodeIgniter\HTTP\URI (14)
    $value->uri
    • Properties (14)
    • Available methods (39)
    • Static class properties (2)
    • protected defaultPorts -> array (4)
      http => integer 80
      https => integer 443
      ftp => integer 21
      sftp => integer 22
      protected fragment -> string (0) ""
      protected host -> string (11) "aidspan.org"
      protected password -> null
      protected path -> string (55) "/Blog/view/12975/Aidspan%20survey%20deadline%20extended"
      protected port -> null
      protected query -> array (0)
      protected rawQueryString -> boolean false
      protected scheme -> string (5) "https"
      protected segments -> array (4)
      0 => string (4) "Blog"
      1 => string (4) "view"
      2 => string (5) "12975"
      3 => string (38) "Aidspan%20survey%20deadline%20extended"
      protected showPassword -> boolean false
      protected silent -> boolean false
      protected uriString -> null
      protected user -> null
    • public __construct(?string $uri = null) Constructor.
      new \CodeIgniter\HTTP\URI(?string $uri = null)
      /**
      * Constructor.
      *
      * @param string $uri
      *
      * @throws InvalidArgumentException
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:232
      public setSilent(bool $silent = true): URI If $silent == true, then will not throw exceptions and will attempt to conti...
      $value->uri->setSilent(bool $silent = true)
      /**
      * If $silent == true, then will not throw exceptions and will
      * attempt to continue gracefully.
      *
      * @return URI
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:245
      public useRawQueryString(bool $raw = true): URI If $raw == true, then will use parseStr() method instead of native parse_str...
      $value->uri->useRawQueryString(bool $raw = true)
      /**
      * If $raw == true, then will use parseStr() method
      * instead of native parse_str() function.
      *
      * @return URI
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:258
      public setURI(?string $uri = null): URI Sets and overwrites any current URI information.
      $value->uri->setURI(?string $uri = null)
      /**
      * Sets and overwrites any current URI information.
      *
      * @return URI
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:270
      public getScheme(): string Retrieve the scheme component of the URI.
      $value->uri->getScheme()
      /**
      * Retrieve the scheme component of the URI.
      *
      * If no scheme is present, this method MUST return an empty string.
      *
      * The value returned MUST be normalized to lowercase, per RFC 3986
      * Section 3.1.
      *
      * The trailing ":" character is not part of the scheme and MUST NOT be
      * added.
      *
      * @see    https://tools.ietf.org/html/rfc3986#section-3.1
      *
      * @return string The URI scheme.
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:304
      public getAuthority(bool $ignorePort = false): string Retrieve the authority component of the URI.
      $value->uri->getAuthority(bool $ignorePort = false)
      /**
      * Retrieve the authority component of the URI.
      *
      * If no authority information is present, this method MUST return an empty
      * string.
      *
      * The authority syntax of the URI is:
      *
      * <pre>
      * [user-info@]host[:port]
      * </pre>
      *
      * If the port component is not set or is the standard port for the current
      * scheme, it SHOULD NOT be included.
      *
      * @see https://tools.ietf.org/html/rfc3986#section-3.2
      *
      * @return string The URI authority, in "[user-info@]host[:port]" format.
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:328
      public getUserInfo(): string|null The URI user information, in "username[:password]" format. Retrieve the user information component of the URI.
      $value->uri->getUserInfo()
      /**
      * Retrieve the user information component of the URI.
      *
      * If no user information is present, this method MUST return an empty
      * string.
      *
      * If a user is present in the URI, this will return that value;
      * additionally, if the password is also present, it will be appended to the
      * user value, with a colon (":") separating the values.
      *
      * NOTE that be default, the password, if available, will NOT be shown
      * as a security measure as discussed in RFC 3986, Section 7.5. If you know
      * the password is not a security issue, you can force it to be shown
      * with $this->showPassword();
      *
      * The trailing "@" character is not part of the user information and MUST
      * NOT be added.
      *
      * @return string|null The URI user information, in "username[:password]" format.
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:371
      public showPassword(bool $val = true): URI Temporarily sets the URI to show a password in userInfo. Will reset itself a...
      $value->uri->showPassword(bool $val = true)
      /**
      * Temporarily sets the URI to show a password in userInfo. Will
      * reset itself after the first call to authority().
      *
      * @return URI
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:388
      public getHost(): string Retrieve the host component of the URI.
      $value->uri->getHost()
      /**
      * Retrieve the host component of the URI.
      *
      * If no host is present, this method MUST return an empty string.
      *
      * The value returned MUST be normalized to lowercase, per RFC 3986
      * Section 3.2.2.
      *
      * @see    http://tools.ietf.org/html/rfc3986#section-3.2.2
      *
      * @return string The URI host.
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:407
      public getPort(): int|null The URI port. Retrieve the port component of the URI.
      $value->uri->getPort()
      /**
      * Retrieve the port component of the URI.
      *
      * If a port is present, and it is non-standard for the current scheme,
      * this method MUST return it as an integer. If the port is the standard port
      * used with the current scheme, this method SHOULD return null.
      *
      * If no port is present, and no scheme is present, this method MUST return
      * a null value.
      *
      * If no port is present, but a scheme is present, this method MAY return
      * the standard port for that scheme, but SHOULD return null.
      *
      * @return int|null The URI port.
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:427
      public getPath(): string Retrieve the path component of the URI.
      $value->uri->getPath()
      /**
      * Retrieve the path component of the URI.
      *
      * The path can either be empty or absolute (starting with a slash) or
      * rootless (not starting with a slash). Implementations MUST support all
      * three syntaxes.
      *
      * Normally, the empty path "" and absolute path "/" are considered equal as
      * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically
      * do this normalization because in contexts with a trimmed base path, e.g.
      * the front controller, this difference becomes significant. It's the task
      * of the user to handle both "" and "/".
      *
      * The value returned MUST be percent-encoded, but MUST NOT double-encode
      * any characters. To determine what characters to encode, please refer to
      * RFC 3986, Sections 2 and 3.3.
      *
      * As an example, if the value should include a slash ("/") not intended as
      * delimiter between path segments, that value MUST be passed in encoded
      * form (e.g., "%2F") to the instance.
      *
      * @see    https://tools.ietf.org/html/rfc3986#section-2
      * @see    https://tools.ietf.org/html/rfc3986#section-3.3
      *
      * @return string The URI path.
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:458
      public getQuery(array $options = array()): string Retrieve the query string
      $value->uri->getQuery(array $options = array())
      /**
      * Retrieve the query string
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:466
      public getFragment(): string Retrieve a URI fragment
      $value->uri->getFragment()
      /**
      * Retrieve a URI fragment
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:500
      public getSegments(): array Returns the segments of the path as an array.
      $value->uri->getSegments()
      /**
      * Returns the segments of the path as an array.
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:508
      public getSegment(int $number, string $default = ''): string Returns the value of a specific segment of the URI path.
      $value->uri->getSegment(int $number, string $default = '')
      /**
      * Returns the value of a specific segment of the URI path.
      *
      * @param int    $number  Segment number
      * @param string $default Default value
      *
      * @return string The value of the segment. If no segment is found,
      *                throws InvalidArgumentError
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:522
      public setSegment(int $number, $value): $this Set the value of a specific segment of the URI path. Allows to set only exis...
      $value->uri->setSegment(int $number, $value)
      /**
      * Set the value of a specific segment of the URI path.
      * Allows to set only existing segments or add new one.
      *
      * @param mixed $value (string or int)
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:543
      public getTotalSegments(): int Returns the total number of segments.
      $value->uri->getTotalSegments()
      /**
      * Returns the total number of segments.
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:566
      public __toString(): string Formats the URI as a string.
      (string) $value->uri
      /**
      * Formats the URI as a string.
      *
      * Warning: For backwards-compatability this method
      * assumes URIs with the same host as baseURL should
      * be relative to the project's configuration.
      * This aspect of __toString() is deprecated and should be avoided.
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:579
      public setAuthority(string $str): $this Parses the given string and saves the appropriate authority pieces.
      $value->uri->setAuthority(string $str)
      /**
      * Parses the given string and saves the appropriate authority pieces.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:634
      public setScheme(string $str): $this Sets the scheme for this URI.
      $value->uri->setScheme(string $str)
      /**
      * Sets the scheme for this URI.
      *
      * Because of the large number of valid schemes we cannot limit this
      * to only http or https.
      *
      * @see https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:662
      public setUserInfo(string $user, string $pass): $this Sets the userInfo/Authority portion of the URI.
      $value->uri->setUserInfo(string $user, string $pass)
      /**
      * Sets the userInfo/Authority portion of the URI.
      *
      * @param string $user The user's username
      * @param string $pass The user's password
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:680
      public setHost(string $str): $this Sets the host name to use.
      $value->uri->setHost(string $str)
      /**
      * Sets the host name to use.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:693
      public setPort(?int $port = null): $this Sets the port portion of the URI.
      $value->uri->setPort(?int $port = null)
      /**
      * Sets the port portion of the URI.
      *
      * @param int $port
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:707
      public setPath(string $path): $this Sets the path portion of the URI.
      $value->uri->setPath(string $path)
      /**
      * Sets the path portion of the URI.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:731
      public refreshPath(): $this Sets the path portion of the URI based on segments.
      $value->uri->refreshPath()
      /**
      * Sets the path portion of the URI based on segments.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:747
      public setQuery(string $query): $this Sets the query portion of the URI, while attempting to clean the various par...
      $value->uri->setQuery(string $query)
      /**
      * Sets the query portion of the URI, while attempting
      * to clean the various parts of the query keys and values.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:764
      public setQueryArray(array $query): URI A convenience method to pass an array of items in as the Query portion of th...
      $value->uri->setQueryArray(array $query)
      /**
      * A convenience method to pass an array of items in as the Query
      * portion of the URI.
      *
      * @return URI
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:794
      public addQuery(string $key, $value = null): $this Adds a single new element to the query vars.
      $value->uri->addQuery(string $key, $value = null)
      /**
      * Adds a single new element to the query vars.
      *
      * @param mixed $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:808
      public stripQuery($params): $this Removes one or more query vars from the URI.
      $value->uri->stripQuery($params)
      /**
      * Removes one or more query vars from the URI.
      *
      * @param string ...$params
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:822
      public keepQuery($params): $this Filters the query variables so that only the keys passed in are kept. The re...
      $value->uri->keepQuery($params)
      /**
      * Filters the query variables so that only the keys passed in
      * are kept. The rest are removed from the object.
      *
      * @param string ...$params
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:839
      public setFragment(string $string): $this Sets the fragment portion of the URI.
      $value->uri->setFragment(string $string)
      /**
      * Sets the fragment portion of the URI.
      *
      * @see https://tools.ietf.org/html/rfc3986#section-3.5
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:863
      public resolveRelativeURI(string $uri): URI Combines one URI string with this one based on the rules set out in RFC 3986...
      $value->uri->resolveRelativeURI(string $uri)
      /**
      * Combines one URI string with this one based on the rules set out in
      * RFC 3986 Section 2
      *
      * @see http://tools.ietf.org/html/rfc3986#section-5.2
      *
      * @return URI
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:959
      protected filterPath(?string $path = null): string Encodes any dangerous characters, and removes dot segments. While dot segmen...
      /**
      * Encodes any dangerous characters, and removes dot segments.
      * While dot segments have valid uses according to the spec,
      * this URI class does not allow them.
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:875
      protected applyParts(array $parts) Saves our parts from a parse_url call.
      /**
      * Saves our parts from a parse_url call.
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:907
      protected mergePaths(self $base, self $reference): string Given 2 paths, will merge them according to rules set out in RFC 2986, Secti...
      /**
      * Given 2 paths, will merge them according to rules set out in RFC 2986,
      * Section 5.2
      *
      * @see http://tools.ietf.org/html/rfc3986#section-5.2.3
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:1015
      protected parseStr(string $query): array This is equivalent to the native PHP parse_str() function. This version allo...
      /**
      * This is equivalent to the native PHP parse_str() function.
      * This version allows the dot to be used as a key of the query string.
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:1037
      private changeSchemeAndPath(string $scheme, string $path): array Change the path (and scheme) assuming URIs with the same host as baseURL sho...
      /**
      * Change the path (and scheme) assuming URIs with the same host as baseURL
      * should be relative to the project's configuration.
      *
      * @deprecated This method will be deleted.
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:602
      public static createURIString(?string $scheme = null, ?string $authority = null, ?string $path = null, ?string $query = null, ?string $fragment = null): string Builds a representation of the string from the component parts.
      \CodeIgniter\HTTP\URI::createURIString(?string $scheme = null, ?string $authority = null, ?string $path = null, ?string $query = null, ?string $fragment = null)
      /**
      * Builds a representation of the string from the component parts.
      *
      * @param string $scheme
      * @param string $authority
      * @param string $path
      * @param string $query
      * @param string $fragment
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:147
      public static removeDotSegments(string $path): string Used when resolving and merging paths to correctly interpret and remove sing...
      \CodeIgniter\HTTP\URI::removeDotSegments(string $path)
      /**
      * Used when resolving and merging paths to correctly interpret and
      * remove single and double dot segments from the path per
      * RFC 3986 Section 5.2.4
      *
      * @see http://tools.ietf.org/html/rfc3986#section-5.2.4
      *
      * @internal
      */
      
      Defined in <ROOT>/system/HTTP/URI.php:182
    • const CHAR_SUB_DELIMS :: string (16) "!\$&'\(\)\*\+,;="
      \CodeIgniter\HTTP\URI::CHAR_SUB_DELIMS
      const CHAR_UNRESERVED :: string (15) "a-zA-Z0-9_\-\.~"
      \CodeIgniter\HTTP\URI::CHAR_UNRESERVED
    protected body -> null
    protected defaultLocale -> string (2) "en"
    protected enableCSRF -> boolean false
    protected files -> null
    protected globals -> array (2)
    server => array (60)
    USER => string (8) "www-data"
    HOME => string (8) "/var/www"
    • Directory (4KB)
    • drwxr-xr-x 0 0 4KB Apr 16 02:52 /var/www
      
    PATH_TRANSLATED => string (112) "redirect:/index.php/Blog/view/12975/Aidspan survey deadline extended/view/12...
    redirect:/index.php/Blog/view/12975/Aidspan survey deadline extended/view/12975/Aidspan survey deadline extended
    
    PATH_INFO => string (49) "/Blog/view/12975/Aidspan survey deadline extended"
    SCRIPT_NAME => string (10) "/index.php"
    REQUEST_URI => string (55) "/Blog/view/12975/Aidspan%20survey%20deadline%20extended"
    QUERY_STRING => string (0) ""
    REQUEST_METHOD => string (3) "GET"
    SERVER_PROTOCOL => string (8) "HTTP/1.1"
    GATEWAY_INTERFACE => string (7) "CGI/1.1"
    REDIRECT_URL => string (49) "/Blog/view/12975/Aidspan survey deadline extended"
    REMOTE_PORT => string (5) "44000"
    SCRIPT_FILENAME => string (35) "/var/www/html/aidspan_new/index.php"
    • File (1.9KB)
    • -rwxr-xr-x 33 33 1.9KB Jan 23 15:09 /var/www/html/aidspan_new/index.php
      
    SERVER_ADMIN => string (18) "[no address given]"
    CONTEXT_DOCUMENT_ROOT => string (25) "/var/www/html/aidspan_new"
    • Directory (4KB)
    • drwxr-xr-x 33 33 4KB Apr 16 02:53 /var/www/html/aidspan_new
      
    CONTEXT_PREFIX => string (0) ""
    REQUEST_SCHEME => string (5) "https"
    DOCUMENT_ROOT => string (25) "/var/www/html/aidspan_new"
    • Directory (4KB)
    • drwxr-xr-x 33 33 4KB Apr 16 02:53 /var/www/html/aidspan_new
      
    REMOTE_ADDR => string (12) "3.142.50.218"
    SERVER_PORT => string (3) "443"
    SERVER_ADDR => string (13) "172.232.33.74"
    SERVER_NAME => string (11) "aidspan.org"
    SERVER_SOFTWARE => string (22) "Apache/2.4.62 (Ubuntu)"
    SERVER_SIGNATURE => string (73) "<address>Apache/2.4.62 (Ubuntu) Server at aidspan.org Port 443</address> "
    <address>Apache/2.4.62 (Ubuntu) Server at aidspan.org Port 443</address>
    
    
    PATH => string (59) "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/snap/bin"
    HTTP_ACCEPT_ENCODING => string (23) "gzip, deflate, br, zstd"
    HTTP_SEC_FETCH_DEST => string (8) "document"
    HTTP_SEC_FETCH_USER => string (2) "?1"
    HTTP_SEC_FETCH_MODE => string (8) "navigate"
    HTTP_SEC_FETCH_SITE => string (4) "none"
    HTTP_ACCEPT => string (135) "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,...
    text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
    
    HTTP_USER_AGENT => string (103) "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0...
    Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
    
    HTTP_UPGRADE_INSECURE_REQUESTS => string (1) "1"
    HTTP_SEC_CH_UA_PLATFORM => string (9) ""Windows""
    HTTP_SEC_CH_UA_MOBILE => string (2) "?0"
    HTTP_SEC_CH_UA => string (65) ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129""
    HTTP_CACHE_CONTROL => string (8) "no-cache"
    HTTP_PRAGMA => string (8) "no-cache"
    HTTP_CONNECTION => string (10) "keep-alive"
    HTTP_HOST => string (11) "aidspan.org"
    proxy-nokeepalive => string (1) "1"
    SSL_TLS_SNI => string (11) "aidspan.org"
    HTTPS => string (2) "on"
    REDIRECT_STATUS => string (3) "200"
    REDIRECT_SSL_TLS_SNI => string (11) "aidspan.org"
    REDIRECT_HTTPS => string (2) "on"
    FCGI_ROLE => string (9) "RESPONDER"
    PHP_SELF => string (59) "/index.php/Blog/view/12975/Aidspan survey deadline extended"
    REQUEST_TIME_FLOAT => double 1745199992.6147
    REQUEST_TIME => integer 1745199992
    2025-04-21 01:46:32 UTC
    CI_ENVIRONMENT => string (11) "development"
    system_name => string (11) "Aidspan CMS"
    short_name => string (7) "Aidspan"
    developer_name => string (45) "Hoseah Koskei, Andrew Kirwa, Babyline Chelang"
    database.default.hostname => string (9) "localhost"
    database.default.database => string (11) "aidspan_new"
    database.default.username => string (5) "admin"
    database.default.password => string (10) "briskadmin"
    database.default.DBDriver => string (6) "MySQLi"
    database.default.DBPrefix => string (0) ""
    get => array (0)
    protected headerMap -> array (15)
    accept-encoding => string (15) "Accept-Encoding"
    sec-fetch-dest => string (14) "Sec-Fetch-Dest"
    sec-fetch-user => string (14) "Sec-Fetch-User"
    sec-fetch-mode => string (14) "Sec-Fetch-Mode"
    sec-fetch-site => string (14) "Sec-Fetch-Site"
    accept => string (6) "Accept"
    user-agent => string (10) "User-Agent"
    upgrade-insecure-requests => string (25) "Upgrade-Insecure-Requests"
    sec-ch-ua-platform => string (18) "Sec-Ch-Ua-Platform"
    sec-ch-ua-mobile => string (16) "Sec-Ch-Ua-Mobile"
    sec-ch-ua => string (9) "Sec-Ch-Ua"
    cache-control => string (13) "Cache-Control"
    pragma => string (6) "Pragma"
    connection => string (10) "Connection"
    host => string (4) "Host"
    protected headers -> array (15)
    Accept-Encoding => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (15) "Accept-Encoding"
      protected value -> string (23) "gzip, deflate, br, zstd"
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    Sec-Fetch-Dest => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (14) "Sec-Fetch-Dest"
      protected value -> string (8) "document"
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    Sec-Fetch-User => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (14) "Sec-Fetch-User"
      protected value -> string (2) "?1"
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    Sec-Fetch-Mode => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (14) "Sec-Fetch-Mode"
      protected value -> string (8) "navigate"
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    Sec-Fetch-Site => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (14) "Sec-Fetch-Site"
      protected value -> string (4) "none"
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    Accept => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (6) "Accept"
      protected value -> string (135) "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,...
      text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
      
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    User-Agent => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (10) "User-Agent"
      protected value -> string (103) "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0...
      Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
      
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    Upgrade-Insecure-Requests => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (25) "Upgrade-Insecure-Requests"
      protected value -> string (1) "1"
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    Sec-Ch-Ua-Platform => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (18) "Sec-Ch-Ua-Platform"
      protected value -> string (9) ""Windows""
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    Sec-Ch-Ua-Mobile => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (16) "Sec-Ch-Ua-Mobile"
      protected value -> string (2) "?0"
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    Sec-Ch-Ua => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (9) "Sec-Ch-Ua"
      protected value -> string (65) ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129""
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    Cache-Control => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (13) "Cache-Control"
      protected value -> string (8) "no-cache"
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    Pragma => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (6) "Pragma"
      protected value -> string (8) "no-cache"
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    Connection => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (10) "Connection"
      protected value -> string (10) "keep-alive"
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    Host => CodeIgniter\HTTP\Header (2)
    • Properties (2)
    • Available methods (9)
    • protected name -> string (4) "Host"
      protected value -> string (11) "aidspan.org"
    • public __construct(string $name, $value = null) Header constructor. name is mandatory, if a value is provided, it will be set.
      /**
      * Header constructor. name is mandatory, if a value is provided, it will be set.
      *
      * @param array|string|null $value
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:41
      public getName(): string Returns the name of the header, in the same case it was set.
      /**
      * Returns the name of the header, in the same case it was set.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:50
      public getValue(): array|string Gets the raw value of the header. This may return either a string of an arra...
      /**
      * Gets the raw value of the header. This may return either a string
      * of an array, depending on whether the header has multiple values or not.
      *
      * @return array|string
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:61
      public setName(string $name): $this Sets the name of the header, overwriting any previous value.
      /**
      * Sets the name of the header, overwriting any previous value.
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:71
      public setValue($value = null): $this Sets the value of the header, overwriting any previous value(s).
      /**
      * Sets the value of the header, overwriting any previous value(s).
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:85
      public appendValue($value = null): $this Appends a value to the list of values for this header. If the header is a si...
      /**
      * Appends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:100
      public prependValue($value = null): $this Prepends a value to the list of values for this header. If the header is a s...
      /**
      * Prepends a value to the list of values for this header. If the
      * header is a single value string, it will be converted to an array.
      *
      * @param array|string|null $value
      *
      * @return $this
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:125
      public getValueLine(): string Retrieves a comma-separated string of the values for a single header.
      /**
      * Retrieves a comma-separated string of the values for a single header.
      *
      * NOTE: Not all header values may be appropriately represented using
      * comma concatenation. For such headers, use getHeader() instead
      * and supply your own delimiter when concatenating.
      *
      * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:149
      public __toString(): string Returns a representation of the entire header string, including the header n...
      /**
      * Returns a representation of the entire header string, including
      * the header name and all values converted to the proper format.
      */
      
      Defined in <ROOT>/system/HTTP/Header.php:178
    protected ipAddress -> string (12) "3.142.50.218"
    protected locale -> string (2) "en"
    protected method -> string (3) "GET"
    protected negotiator -> null
    protected oldInput -> array (0)
    protected path -> string (49) "/Blog/view/12975/Aidspan survey deadline extended"
    protected protocolVersion -> string (3) "1.1"
    protected proxyIPs -> string (0) ""
    protected userAgent -> CodeIgniter\HTTP\UserAgent (11)
    • Properties (11)
    • Available methods (19)
    • protected agent -> string (103) "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0...
      Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
      
      protected browser -> string (7) "Mozilla"
      protected config -> Config\UserAgents (4)
      • Properties (4)
      • Available methods (4)
      • Static class properties (3)
      • public browsers -> array (30)
        OPR => string (5) "Opera"
        Flock => string (5) "Flock"
        Edge => string (7) "Spartan"
        Edg => string (4) "Edge"
        Chrome => string (6) "Chrome"
        Opera.*?Version => string (5) "Opera"
        Opera => string (5) "Opera"
        MSIE => string (17) "Internet Explorer"
        Internet Explorer => string (17) "Internet Explorer"
        Trident.* rv => string (17) "Internet Explorer"
        Shiira => string (6) "Shiira"
        Firefox => string (7) "Firefox"
        Chimera => string (7) "Chimera"
        Phoenix => string (7) "Phoenix"
        Firebird => string (8) "Firebird"
        Camino => string (6) "Camino"
        Netscape => string (8) "Netscape"
        OmniWeb => string (7) "OmniWeb"
        Safari => string (6) "Safari"
        Mozilla => string (7) "Mozilla"
        Konqueror => string (9) "Konqueror"
        icab => string (4) "iCab"
        Lynx => string (4) "Lynx"
        Links => string (5) "Links"
        hotjava => string (7) "HotJava"
        amaya => string (5) "Amaya"
        IBrowse => string (7) "IBrowse"
        Maxthon => string (7) "Maxthon"
        Ubuntu => string (18) "Ubuntu Web Browser"
        Vivaldi => string (7) "Vivaldi"
        public mobiles -> array (75)
        mobileexplorer => string (15) "Mobile Explorer"
        palmsource => string (4) "Palm"
        palmscape => string (9) "Palmscape"
        motorola => string (8) "Motorola"
        nokia => string (5) "Nokia"
        palm => string (4) "Palm"
        iphone => string (12) "Apple iPhone"
        ipad => string (4) "iPad"
        ipod => string (16) "Apple iPod Touch"
        sony => string (13) "Sony Ericsson"
        ericsson => string (13) "Sony Ericsson"
        blackberry => string (10) "BlackBerry"
        cocoon => string (9) "O2 Cocoon"
        blazer => string (4) "Treo"
        lg => string (2) "LG"
        amoi => string (4) "Amoi"
        xda => string (3) "XDA"
        mda => string (3) "MDA"
        vario => string (5) "Vario"
        htc => string (3) "HTC"
        samsung => string (7) "Samsung"
        sharp => string (5) "Sharp"
        sie- => string (7) "Siemens"
        alcatel => string (7) "Alcatel"
        benq => string (4) "BenQ"
        ipaq => string (7) "HP iPaq"
        mot- => string (8) "Motorola"
        playstation portable => string (20) "PlayStation Portable"
        playstation 3 => string (13) "PlayStation 3"
        playstation vita => string (16) "PlayStation Vita"
        hiptop => string (13) "Danger Hiptop"
        nec- => string (3) "NEC"
        panasonic => string (9) "Panasonic"
        philips => string (7) "Philips"
        sagem => string (5) "Sagem"
        sanyo => string (5) "Sanyo"
        spv => string (3) "SPV"
        zte => string (3) "ZTE"
        sendo => string (5) "Sendo"
        nintendo dsi => string (12) "Nintendo DSi"
        nintendo ds => string (11) "Nintendo DS"
        nintendo 3ds => string (12) "Nintendo 3DS"
        wii => string (12) "Nintendo Wii"
        open web => string (8) "Open Web"
        openweb => string (7) "OpenWeb"
        android => string (7) "Android"
        symbian => string (7) "Symbian"
        SymbianOS => string (9) "SymbianOS"
        elaine => string (4) "Palm"
        series60 => string (11) "Symbian S60"
        windows ce => string (10) "Windows CE"
        obigo => string (5) "Obigo"
        netfront => string (16) "Netfront Browser"
        openwave => string (16) "Openwave Browser"
        mobilexplorer => string (15) "Mobile Explorer"
        operamini => string (10) "Opera Mini"
        opera mini => string (10) "Opera Mini"
        opera mobi => string (12) "Opera Mobile"
        fennec => string (14) "Firefox Mobile"
        digital paths => string (13) "Digital Paths"
        avantgo => string (7) "AvantGo"
        xiino => string (5) "Xiino"
        novarra => string (18) "Novarra Transcoder"
        vodafone => string (8) "Vodafone"
        docomo => string (10) "NTT DoCoMo"
        o2 => string (2) "O2"
        mobile => string (14) "Generic Mobile"
        wireless => string (14) "Generic Mobile"
        j2me => string (14) "Generic Mobile"
        midp => string (14) "Generic Mobile"
        cldc => string (14) "Generic Mobile"
        up.link => string (14) "Generic Mobile"
        up.browser => string (14) "Generic Mobile"
        smartphone => string (14) "Generic Mobile"
        cellphone => string (14) "Generic Mobile"
        public platforms -> array (42)
        windows nt 10.0 => string (10) "Windows 10"
        windows nt 6.3 => string (11) "Windows 8.1"
        windows nt 6.2 => string (9) "Windows 8"
        windows nt 6.1 => string (9) "Windows 7"
        windows nt 6.0 => string (13) "Windows Vista"
        windows nt 5.2 => string (12) "Windows 2003"
        windows nt 5.1 => string (10) "Windows XP"
        windows nt 5.0 => string (12) "Windows 2000"
        windows nt 4.0 => string (14) "Windows NT 4.0"
        winnt4.0 => string (14) "Windows NT 4.0"
        winnt 4.0 => string (10) "Windows NT"
        winnt => string (10) "Windows NT"
        windows 98 => string (10) "Windows 98"
        win98 => string (10) "Windows 98"
        windows 95 => string (10) "Windows 95"
        win95 => string (10) "Windows 95"
        windows phone => string (13) "Windows Phone"
        windows => string (18) "Unknown Windows OS"
        android => string (7) "Android"
        blackberry => string (10) "BlackBerry"
        iphone => string (3) "iOS"
        ipad => string (3) "iOS"
        ipod => string (3) "iOS"
        os x => string (8) "Mac OS X"
        ppc mac => string (12) "Power PC Mac"
        freebsd => string (7) "FreeBSD"
        ppc => string (9) "Macintosh"
        linux => string (5) "Linux"
        debian => string (6) "Debian"
        sunos => string (11) "Sun Solaris"
        beos => string (4) "BeOS"
        apachebench => string (11) "ApacheBench"
        aix => string (3) "AIX"
        irix => string (4) "Irix"
        osf => string (7) "DEC OSF"
        hp-ux => string (5) "HP-UX"
        netbsd => string (6) "NetBSD"
        bsdi => string (4) "BSDi"
        openbsd => string (7) "OpenBSD"
        gnu => string (9) "GNU/Linux"
        unix => string (15) "Unknown Unix OS"
        symbian => string (10) "Symbian OS"
        public robots -> array (19)
        googlebot => string (9) "Googlebot"
        msnbot => string (6) "MSNBot"
        baiduspider => string (11) "Baiduspider"
        bingbot => string (4) "Bing"
        slurp => string (13) "Inktomi Slurp"
        yahoo => string (5) "Yahoo"
        ask jeeves => string (10) "Ask Jeeves"
        fastcrawler => string (11) "FastCrawler"
        infoseek => string (18) "InfoSeek Robot 1.0"
        lycos => string (5) "Lycos"
        yandex => string (9) "YandexBot"
        mediapartners-google => string (20) "MediaPartners Google"
        CRAZYWEBCRAWLER => string (16) "Crazy Webcrawler"
        adsbot-google => string (13) "AdsBot Google"
        feedfetcher-google => string (18) "Feedfetcher Google"
        curious george => string (14) "Curious George"
        ia_archiver => string (13) "Alexa Crawler"
        MJ12bot => string (11) "Majestic-12"
        Uptimebot => string (9) "Uptimebot"
      • public __construct() Will attempt to get environment variables with names that match the properti...
        /**
        * Will attempt to get environment variables with names
        * that match the properties of the child class.
        *
        * The "shortPrefix" is the lowercase-only config class name.
        */
        
        Inherited from CodeIgniter\Config\BaseConfig
        Defined in <ROOT>/system/Config/BaseConfig.php:60
        protected initEnvValue(&$property, string $name, string $prefix, string $shortPrefix): void Initialization an environment-specific configuration setting
        /**
        * Initialization an environment-specific configuration setting
        *
        * @param mixed $property
        *
        * @return void
        */
        
        Inherited from CodeIgniter\Config\BaseConfig
        Defined in <ROOT>/system/Config/BaseConfig.php:93
        protected getEnvValue(string $property, string $prefix, string $shortPrefix): string|null Retrieve an environment-specific configuration setting
        /**
        * Retrieve an environment-specific configuration setting
        *
        * @return string|null
        */
        
        Inherited from CodeIgniter\Config\BaseConfig
        Defined in <ROOT>/system/Config/BaseConfig.php:128
        protected registerProperties() Provides external libraries a simple way to register one or more options int...
        /**
        * Provides external libraries a simple way to register one or more
        * options into a config file.
        *
        * @throws ReflectionException
        */
        
        Inherited from CodeIgniter\Config\BaseConfig
        Defined in <ROOT>/system/Config/BaseConfig.php:174
      • public static $registrars :: array (0)
        \CodeIgniter\Config\BaseConfig::$registrars
        protected static $didDiscovery :: boolean true
        protected static $moduleConfig :: Config\Modules (3)
        • Properties (3)
        • Available methods
        • public aliases -> array (5)
          0 => string (6) "events"
          1 => string (7) "filters"
          2 => string (10) "registrars"
          3 => string (6) "routes"
          4 => string (8) "services"
          public discoverInComposer -> boolean true
          public enabled -> boolean true
        • public shouldDiscover(string $alias): bool Should the application auto-discover the requested resource.
          /**
          * Should the application auto-discover the requested resource.
          */
          
          Inherited from CodeIgniter\Modules\Modules
          Defined in <ROOT>/system/Modules/Modules.php:45
      protected isBrowser -> boolean true
      protected isMobile -> boolean false
      protected isRobot -> boolean false
      protected mobile -> string (0) ""
      protected platform -> string (16) "Unknown Platform"
      protected referrer -> null
      protected robot -> string (0) ""
      protected version -> string (3) "5.0"
    • public __construct(?Config\UserAgents $config = null) Constructor
      /**
      * Constructor
      *
      * Sets the User Agent and runs the compilation routine
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:103
      public isBrowser(?string $key = null): bool Is Browser
      /**
      * Is Browser
      *
      * @param string $key
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:118
      public isRobot(?string $key = null): bool Is Robot
      /**
      * Is Robot
      *
      * @param string $key
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:138
      public isMobile(?string $key = null): bool Is Mobile
      /**
      * Is Mobile
      *
      * @param string $key
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:158
      public isReferral(): bool Is this a referral from another site?
      /**
      * Is this a referral from another site?
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:176
      public getAgentString(): string Agent String
      /**
      * Agent String
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:195
      public getPlatform(): string Get Platform
      /**
      * Get Platform
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:203
      public getBrowser(): string Get Browser Name
      /**
      * Get Browser Name
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:211
      public getVersion(): string Get the Browser Version
      /**
      * Get the Browser Version
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:219
      public getRobot(): string Get The Robot Name
      /**
      * Get The Robot Name
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:227
      public getMobile(): string Get the Mobile Device
      /**
      * Get the Mobile Device
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:235
      public getReferrer(): string Get the referrer
      /**
      * Get the referrer
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:243
      public parse(string $string) Parse a custom user-agent string
      /**
      * Parse a custom user-agent string
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:251
      public __toString(): string Outputs the original Agent String when cast as a string.
      /**
      * Outputs the original Agent String when cast as a string.
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:367
      protected compileData() Compile the User Agent Data
      /**
      * Compile the User Agent Data
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:273
      protected setPlatform(): bool Set the Platform
      /**
      * Set the Platform
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:287
      protected setBrowser(): bool Set the Browser
      /**
      * Set the Browser
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:307
      protected setRobot(): bool Set the Robot
      /**
      * Set the Robot
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:328
      protected setMobile(): bool Set the Mobile Device
      /**
      * Set the Mobile Device
      */
      
      Defined in <ROOT>/system/HTTP/UserAgent.php:348
    protected validLocales -> array (1)
    0 => string (2) "en"
    protected validProtocolVersions -> array (3)
    0 => string (3) "1.0"
    1 => string (3) "1.1"
    2 => string (3) "2.0"
  • public __construct($config, ?CodeIgniter\HTTP\URI $uri = null, $body = 'php://input', ?CodeIgniter\HTTP\UserAgent $userAgent = null) Constructor
    new \CodeIgniter\HTTP\IncomingRequest($config, ?CodeIgniter\HTTP\URI $uri = null, $body = 'php://input', ?CodeIgniter\HTTP\UserAgent $userAgent = null)
    /**
    * Constructor
    *
    * @param App         $config
    * @param URI         $uri
    * @param string|null $body
    * @param UserAgent   $userAgent
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:150
    public detectLocale($config) Handles setting up the locale, perhaps auto-detecting through content negoti...
    $value->detectLocale($config)
    /**
    * Handles setting up the locale, perhaps auto-detecting through
    * content negotiation.
    *
    * @param App $config
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:180
    public detectPath(string $protocol = ''): string Detects the relative path based on the URIProtocol Config setting.
    $value->detectPath(string $protocol = '')
    /**
    * Detects the relative path based on
    * the URIProtocol Config setting.
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:209
    public negotiate(string $type, array $supported, bool $strictMatch = false): string Provides a convenient way to work with the Negotiate class for content negot...
    $value->negotiate(string $type, array $supported, bool $strictMatch = false)
    /**
    * Provides a convenient way to work with the Negotiate class
    * for content negotiation.
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:322
    public isCLI(): bool Determines if this request was made from the command line (CLI).
    $value->isCLI()
    /**
    * Determines if this request was made from the command line (CLI).
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:348
    public isAJAX(): bool Test to see if a request contains the HTTP_X_REQUESTED_WITH header.
    $value->isAJAX()
    /**
    * Test to see if a request contains the HTTP_X_REQUESTED_WITH header.
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:356
    public isSecure(): bool Attempts to detect if the current connection is secure through a few differe...
    $value->isSecure()
    /**
    * Attempts to detect if the current connection is secure through
    * a few different methods.
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:365
    public setPath(string $path, ?Config\App $config = null): $this Sets the relative path and updates the URI object. Note: Since current_url()...
    $value->setPath(string $path, ?Config\App $config = null)
    /**
    * Sets the relative path and updates the URI object.
    * Note: Since current_url() accesses the shared request
    * instance, this can be used to change the "current URL"
    * for testing.
    *
    * @param string $path   URI path relative to SCRIPT_NAME
    * @param App    $config Optional alternate config to use
    *
    * @return $this
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:389
    public getPath(): string Returns the path relative to SCRIPT_NAME, running detection as necessary.
    $value->getPath()
    /**
    * Returns the path relative to SCRIPT_NAME,
    * running detection as necessary.
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:427
    public setLocale(string $locale): IncomingRequest Sets the locale string for this request.
    $value->setLocale(string $locale)
    /**
    * Sets the locale string for this request.
    *
    * @return IncomingRequest
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:441
    public getLocale(): string Gets the current locale, with a fallback to the default locale if none is set.
    $value->getLocale()
    /**
    * Gets the current locale, with a fallback to the default
    * locale if none is set.
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:459
    public getDefaultLocale(): string Returns the default locale as set in Config\App.php
    $value->getDefaultLocale()
    /**
    * Returns the default locale as set in Config\App.php
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:467
    public getVar($index = null, $filter = null, $flags = null): mixed Fetch an item from JSON input stream with fallback to $_REQUEST object. This ...
    $value->getVar($index = null, $filter = null, $flags = null)
    /**
    * Fetch an item from JSON input stream with fallback to $_REQUEST object. This is the simplest way
    * to grab data from the request object and can be used in lieu of the
    * other get* methods in most cases.
    *
    * @param array|string|null $index
    * @param int|null          $filter Filter constant
    * @param mixed             $flags
    *
    * @return mixed
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:483
    public getJSON(bool $assoc = false, int $depth = 512, int $options0): mixed A convenience method that grabs the raw input stream and decodes the JSON in...
    $value->getJSON(bool $assoc = false, int $depth = 512, int $options0)
    /**
    * A convenience method that grabs the raw input stream and decodes
    * the JSON into an array.
    *
    * If $assoc == true, then all objects in the response will be converted
    * to associative arrays.
    *
    * @param bool $assoc   Whether to return objects as associative arrays
    * @param int  $depth   How many levels deep to decode
    * @param int  $options Bitmask of options
    *
    * @see http://php.net/manual/en/function.json-decode.php
    *
    * @return mixed
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:521
    public getJsonVar(string $index, bool $assoc = false, ?int $filter = null, $flags = null): mixed Get a specific variable from a JSON input stream
    $value->getJsonVar(string $index, bool $assoc = false, ?int $filter = null, $flags = null)
    /**
    * Get a specific variable from a JSON input stream
    *
    * @param string         $index  The variable that you want which can use dot syntax for getting specific values.
    * @param bool           $assoc  If true, return the result as an associative array.
    * @param int|null       $filter Filter Constant
    * @param array|int|null $flags  Option
    *
    * @return mixed
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:536
    public getRawInput(): mixed A convenience method that grabs the raw input stream(send method in PUT, PATC...
    $value->getRawInput()
    /**
    * A convenience method that grabs the raw input stream(send method in PUT, PATCH, DELETE) and decodes
    * the String into an array.
    *
    * @return mixed
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:570
    public getGet($index = null, $filter = null, $flags = null): mixed Fetch an item from GET data.
    $value->getGet($index = null, $filter = null, $flags = null)
    /**
    * Fetch an item from GET data.
    *
    * @param array|string|null $index  Index for item to fetch from $_GET.
    * @param int|null          $filter A filter name to apply.
    * @param mixed|null        $flags
    *
    * @return mixed
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:586
    public getPost($index = null, $filter = null, $flags = null): mixed Fetch an item from POST.
    $value->getPost($index = null, $filter = null, $flags = null)
    /**
    * Fetch an item from POST.
    *
    * @param array|string|null $index  Index for item to fetch from $_POST.
    * @param int|null          $filter A filter name to apply
    * @param mixed             $flags
    *
    * @return mixed
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:600
    public getPostGet($index = null, $filter = null, $flags = null): mixed Fetch an item from POST data with fallback to GET.
    $value->getPostGet($index = null, $filter = null, $flags = null)
    /**
    * Fetch an item from POST data with fallback to GET.
    *
    * @param array|string|null $index  Index for item to fetch from $_POST or $_GET
    * @param int|null          $filter A filter name to apply
    * @param mixed             $flags
    *
    * @return mixed
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:614
    public getGetPost($index = null, $filter = null, $flags = null): mixed Fetch an item from GET data with fallback to POST.
    $value->getGetPost($index = null, $filter = null, $flags = null)
    /**
    * Fetch an item from GET data with fallback to POST.
    *
    * @param array|string|null $index  Index for item to be fetched from $_GET or $_POST
    * @param int|null          $filter A filter name to apply
    * @param mixed             $flags
    *
    * @return mixed
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:631
    public getCookie($index = null, $filter = null, $flags = null): mixed Fetch an item from the COOKIE array.
    $value->getCookie($index = null, $filter = null, $flags = null)
    /**
    * Fetch an item from the COOKIE array.
    *
    * @param array|string|null $index  Index for item to be fetched from $_COOKIE
    * @param int|null          $filter A filter name to be applied
    * @param mixed             $flags
    *
    * @return mixed
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:648
    public getUserAgent(): UserAgent Fetch the user agent string
    $value->getUserAgent()
    /**
    * Fetch the user agent string
    *
    * @return UserAgent
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:658
    public getOldInput(string $key): mixed Attempts to get old Input data that has been flashed to the session with red...
    $value->getOldInput(string $key)
    /**
    * Attempts to get old Input data that has been flashed to the session
    * with redirect_with_input(). It first checks for the data in the old
    * POST data, then the old GET data and finally check for dot arrays
    *
    * @return mixed
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:670
    public getFiles(): array Returns an array of all files that have been uploaded with this request. Eac...
    $value->getFiles()
    /**
    * Returns an array of all files that have been uploaded with this
    * request. Each file is represented by an UploadedFile instance.
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:714
    public getFileMultiple(string $fileID): array|null Verify if a file exist, by the name of the input field used to upload it, in ...
    $value->getFileMultiple(string $fileID)
    /**
    * Verify if a file exist, by the name of the input field used to upload it, in the collection
    * of uploaded files and if is have been uploaded with multiple option.
    *
    * @return array|null
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:729
    public getFile(string $fileID): UploadedFile|null Retrieves a single file by the name of the input field used to upload it.
    $value->getFile(string $fileID)
    /**
    * Retrieves a single file by the name of the input field used
    * to upload it.
    *
    * @return UploadedFile|null
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:744
    public getIPAddress(): string Gets the user's IP address.
    $value->getIPAddress()
    /**
    * Gets the user's IP address.
    *
    * @return string IP address
    */
    
    Inherited from CodeIgniter\HTTP\Request
    Defined in <ROOT>/system/HTTP/RequestTrait.php:48
    public isValidIP(?string $ip = null, ?string $which = null): bool Validate an IP address
    $value->isValidIP(?string $ip = null, ?string $which = null)
    /**
    * Validate an IP address
    *
    * @param string $ip    IP Address
    * @param string $which IP protocol: 'ipv4' or 'ipv6'
    *
    * @deprecated Use Validation instead
    *
    * @codeCoverageIgnore
    */
    
    Inherited from CodeIgniter\HTTP\Request
    Defined in <ROOT>/system/HTTP/Request.php:79
    public getMethod(bool $upper = false): string Get the request method.
    $value->getMethod(bool $upper = false)
    /**
    * Get the request method.
    *
    * @param bool $upper Whether to return in upper or lower case.
    *
    * @deprecated The $upper functionality will be removed and this will revert to its PSR-7 equivalent
    *
    * @codeCoverageIgnore
    */
    
    Inherited from CodeIgniter\HTTP\Request
    Defined in <ROOT>/system/HTTP/Request.php:93
    public setMethod(string $method): Request Sets the request method. Used when spoofing the request.
    $value->setMethod(string $method)
    /**
    * Sets the request method. Used when spoofing the request.
    *
    * @return Request
    *
    * @deprecated Use withMethod() instead for immutability
    *
    * @codeCoverageIgnore
    */
    
    Inherited from CodeIgniter\HTTP\Request
    Defined in <ROOT>/system/HTTP/Request.php:107
    public withMethod($method): static Returns an instance with the specified method.
    $value->withMethod($method)
    /**
    * Returns an instance with the specified method.
    *
    * @param string $method
    *
    * @return static
    */
    
    Inherited from CodeIgniter\HTTP\Request
    Defined in <ROOT>/system/HTTP/Request.php:121
    public getUri(): URI Retrieves the URI instance.
    $value->getUri()
    /**
    * Retrieves the URI instance.
    *
    * @return URI
    */
    
    Inherited from CodeIgniter\HTTP\Request
    Defined in <ROOT>/system/HTTP/Request.php:135
    public getServer($index = null, $filter = null, $flags = null): mixed Fetch an item from the $_SERVER array.
    $value->getServer($index = null, $filter = null, $flags = null)
    /**
    * Fetch an item from the $_SERVER array.
    *
    * @param array|string|null $index  Index for item to be fetched from $_SERVER
    * @param int|null          $filter A filter name to be applied
    * @param null              $flags
    *
    * @return mixed
    */
    
    Inherited from CodeIgniter\HTTP\Request
    Defined in <ROOT>/system/HTTP/RequestTrait.php:167
    public getEnv($index = null, $filter = null, $flags = null): mixed Fetch an item from the $_ENV array.
    $value->getEnv($index = null, $filter = null, $flags = null)
    /**
    * Fetch an item from the $_ENV array.
    *
    * @param null $index  Index for item to be fetched from $_ENV
    * @param null $filter A filter name to be applied
    * @param null $flags
    *
    * @return mixed
    */
    
    Inherited from CodeIgniter\HTTP\Request
    Defined in <ROOT>/system/HTTP/RequestTrait.php:181
    public setGlobal(string $method, $value): $this Allows manually setting the value of PHP global, like $_GET, $_POST, etc.
    $value->setGlobal(string $method, $value)
    /**
    * Allows manually setting the value of PHP global, like $_GET, $_POST, etc.
    *
    * @param mixed $value
    *
    * @return $this
    */
    
    Inherited from CodeIgniter\HTTP\Request
    Defined in <ROOT>/system/HTTP/RequestTrait.php:193
    public fetchGlobal(string $method, $index = null, ?int $filter = null, $flags = null): mixed Fetches one or more items from a global, like cookies, get, post, etc. Can o...
    $value->fetchGlobal(string $method, $index = null, ?int $filter = null, $flags = null)
    /**
    * Fetches one or more items from a global, like cookies, get, post, etc.
    * Can optionally filter the input when you retrieve it by passing in
    * a filter.
    *
    * If $type is an array, it must conform to the input allowed by the
    * filter_input_array method.
    *
    * http://php.net/manual/en/filter.filters.sanitize.php
    *
    * @param string            $method Input filter constant
    * @param array|string|null $index
    * @param int|null          $filter Filter constant
    * @param array|int|null    $flags  Options
    *
    * @return mixed
    */
    
    Inherited from CodeIgniter\HTTP\Request
    Defined in <ROOT>/system/HTTP/RequestTrait.php:217
    public getBody(): mixed Returns the Message's body.
    $value->getBody()
    /**
    * Returns the Message's body.
    *
    * @return mixed
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/Message.php:51
    public setBody($data): self Sets the body of the current message.
    $value->setBody($data)
    /**
    * Sets the body of the current message.
    *
    * @param mixed $data
    *
    * @return $this
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/MessageTrait.php:52
    public getHeaders(): array Returns an array containing all headers.
    $value->getHeaders()
    /**
    * Returns an array containing all headers.
    *
    * @return array<string, Header> An array of the request headers
    *
    * @deprecated Use Message::headers() to make room for PSR-7
    *
    * @codeCoverageIgnore
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/Message.php:65
    public appendBody($data): self Appends data to the body of the current message.
    $value->appendBody($data)
    /**
    * Appends data to the body of the current message.
    *
    * @param mixed $data
    *
    * @return $this
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/MessageTrait.php:66
    public getHeader(string $name): array|Header|null Returns a single header object. If multiple headers with the same name exist...
    $value->getHeader(string $name)
    /**
    * Returns a single header object. If multiple headers with the same
    * name exist, then will return an array of header objects.
    *
    * @return array|Header|null
    *
    * @deprecated Use Message::header() to make room for PSR-7
    *
    * @codeCoverageIgnore
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/Message.php:80
    public populateHeaders(): void Populates the $headers array with any headers the getServer knows about.
    $value->populateHeaders()
    /**
    * Populates the $headers array with any headers the getServer knows about.
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/MessageTrait.php:80
    public hasHeader(string $name): bool Determines whether a header exists.
    $value->hasHeader(string $name)
    /**
    * Determines whether a header exists.
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/Message.php:88
    public getHeaderLine(string $name): string Retrieves a comma-separated string of the values for a single header.
    $value->getHeaderLine(string $name)
    /**
    * Retrieves a comma-separated string of the values for a single header.
    *
    * This method returns all of the header values of the given
    * case-insensitive header name as a string concatenated together using
    * a comma.
    *
    * NOTE: Not all header values may be appropriately represented using
    * comma concatenation. For such headers, use getHeader() instead
    * and supply your own delimiter when concatenating.
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/Message.php:106
    public headers(): array Returns an array containing all Headers.
    $value->headers()
    /**
    * Returns an array containing all Headers.
    *
    * @return array<string, Header> An array of the Header objects
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/MessageTrait.php:107
    public getProtocolVersion(): string Returns the HTTP Protocol Version.
    $value->getProtocolVersion()
    /**
    * Returns the HTTP Protocol Version.
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/Message.php:120
    public header($name): array|Header|null Returns a single Header object. If multiple headers with the same name exist...
    $value->header($name)
    /**
    * Returns a single Header object. If multiple headers with the same
    * name exist, then will return an array of header objects.
    *
    * @param string $name
    *
    * @return array|Header|null
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/MessageTrait.php:127
    public setHeader(string $name, $value): self Sets a header and it's value.
    $value->setHeader(string $name, $value)
    /**
    * Sets a header and it's value.
    *
    * @param array|string|null $value
    *
    * @return $this
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/MessageTrait.php:141
    public removeHeader(string $name): self Removes a header from the list of headers we track.
    $value->removeHeader(string $name)
    /**
    * Removes a header from the list of headers we track.
    *
    * @return $this
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/MessageTrait.php:166
    public appendHeader(string $name, ?string $value): self Adds an additional header value to any headers that accept multiple values (...
    $value->appendHeader(string $name, ?string $value)
    /**
    * Adds an additional header value to any headers that accept
    * multiple values (i.e. are an array or implement ArrayAccess)
    *
    * @return $this
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/MessageTrait.php:180
    public prependHeader(string $name, string $value): self Adds an additional header value to any headers that accept multiple values (...
    $value->prependHeader(string $name, string $value)
    /**
    * Adds an additional header value to any headers that accept
    * multiple values (i.e. are an array or implement ArrayAccess)
    *
    * @return $this
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/MessageTrait.php:197
    public setProtocolVersion(string $version): self Sets the HTTP protocol version.
    $value->setProtocolVersion(string $version)
    /**
    * Sets the HTTP protocol version.
    *
    * @throws HTTPException For invalid protocols
    *
    * @return $this
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/MessageTrait.php:222
    protected detectURI(string $protocol, string $baseURL) Sets up our URI object based on the information we have. This is either prov...
    /**
    * Sets up our URI object based on the information we have. This is
    * either provided by the user in the baseURL Config setting, or
    * determined from the environment as needed.
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:196
    protected parseRequestURI(): string Will parse the REQUEST_URI and automatically detect the URI from it, fixing ...
    /**
    * Will parse the REQUEST_URI and automatically detect the URI from it,
    * fixing the query string if necessary.
    *
    * @return string The URI it found.
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:239
    protected parseQueryString(): string Parse QUERY_STRING
    /**
    * Parse QUERY_STRING
    *
    * Will parse QUERY_STRING and automatically detect the URI from it.
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:294
    protected removeRelativeDirectory(string $uri): string Remove relative directory (../) and multi slashes (///)
    /**
    * Remove relative directory (../) and multi slashes (///)
    *
    * Do some final cleaning of the URI and return it, currently only used in static::_parse_request_uri()
    *
    * @deprecated Use URI::removeDotSegments() directly
    */
    
    Defined in <ROOT>/system/HTTP/IncomingRequest.php:760
    protected populateGlobals(string $method) Saves a copy of the current state of one of several PHP globals so we can re...
    /**
    * Saves a copy of the current state of one of several PHP globals
    * so we can retrieve them later.
    */
    
    Inherited from CodeIgniter\HTTP\Request
    Defined in <ROOT>/system/HTTP/RequestTrait.php:305
    protected getHeaderName(string $name): string Takes a header name in any case, and returns the normal-case version of the ...
    /**
    * Takes a header name in any case, and returns the
    * normal-case version of the header.
    */
    
    Inherited from CodeIgniter\HTTP\Message
    Defined in <ROOT>/system/HTTP/MessageTrait.php:210
menu_cat
$value array (3)
  • Table (3)
  • Contents (3)
  • idname
    04Breaking News
    12GFO
    23OFM
  • 0 => array (2)
    $value[0]
    id => string (1) "4"
    $value[0]['id']
    name => string (14) "Breaking News "
    $value[0]['name']
    1 => array (2)
    $value[1]
    id => string (1) "2"
    $value[1]['id']
    name => string (3) "GFO"
    $value[1]['name']
    2 => array (2)
    $value[2]
    id => string (1) "3"
    $value[2]['id']
    name => string (3) "OFM"
    $value[2]['name']
page_title Announcement
article
$value array (27)
article_id => string (5) "12975"
$value['article_id']
author => string (15) "Aidspan staff "
$value['author']
Aidspan staff

tittle => string (32) "Aidspan survey deadline extended"
$value['tittle']
abstract => string (108) "ABSTRACT The deadline for completing the Aidspan Strategy Survey has been ex...
$value['abstract']
ABSTRACT

The deadline for completing the Aidspan Strategy Survey has been extended to 18 February 2018.

body => UTF-8 string (861) "Dear valued GFO reader, We want to thank everyone who has completed the <a h...
$value['body']
Dear valued GFO reader,

We want to thank everyone who has completed the <a href="https://www.surveymonkey.com/r/NPBBGYW">Aidspan Strategy Survey</a>. For those who have not had the opportunity, we encourage you to do so. The deadline has been extended to <strong>Sunday, 18 February</strong>. The survey should take about five minutes and the responses will remain anonymous and confidential.

It is important that we hear from you, the readers of Global Fund Observer, about how you think Aidspan is performing and which issues you would like to see Aidspan focus on (in GFO and elsewhere).

Your valuable responses and comments will help us develop our new strategy for the 2018–2022 period.

Click <a href="https://www.surveymonkey.com/r/NPBBGYW">here</a> to access the Aidspan Strategy Survey.

Thank you.

Ida Hakizinka
Executive Director
banner => string (106) "https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-1...
$value['banner']
https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16-at-10.07.45-AM-1024x576.jpeg
publication_date => string (19) "2018-02-06 17:12:17"
$value['publication_date']
updated_at => string (19) "2025-04-20 15:16:32"
$value['updated_at']
tags => string (45) "Sub Issue, Aidspan, GFO, Global Fund Observer"
$value['tags']
status => string (1) "0"
$value['status']
user_id => string (1) "2"
$value['user_id']
featured_image => string (32) "http://aidspan.org:8080/?p=12975"
$value['featured_image']
subtittle => string (3) "N/A"
$value['subtittle']
comments => null
$value['comments']
translation_link => null
$value['translation_link']
translation_language => string (7) "English"
$value['translation_language']
post_type_id => string (4) "4989"
$value['post_type_id']
issue_no_id => string (3) "759"
$value['issue_no_id']
article_no => string (1) "9"
$value['article_no']
istranslated => string (1) "0"
$value['istranslated']
isReviewed => string (1) "2"
$value['isReviewed']
views => string (2) "27"
$value['views']
post_name => string (32) "aidspan-survey-deadline-extended"
$value['post_name']
isIndexed => string (1) "1"
$value['isIndexed']
issue_no => string (3) "330"
$value['issue_no']
issue_name => string (9) "GFO Issue"
$value['issue_name']
post_type_name => string (12) "Announcement"
$value['post_type_name']
articlesFromSameIssue
$value array (8)
  • Table (8)
  • Contents (8)
  • article_idauthortittleabstractbodybannerpublication_dateupdated_attagsstatususer_idfeatured_imagesubtittlecommentstranslation_linktranslation_languagepost_type_idissue_no_idarticle_noistranslatedisReviewedviewspost_nameisIndexed
    013020David Garmaise Political instability, decreasing resources and a resurgent malaria epidemic:...ABSTRACT Political instability and continuing economic problems have creat...A combination of recent political instability and continuing economic challen...https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16...2018-02-06 17:32:542025-04-20 21:50:52Sub Issue, technical Review Panel, UNDP, Health Systems, vulnerable populatio...02http://aidspan.org:8080/?p=13020 Malaria incidence doubled between 2014 and 2016 nullnullEnglish497775910220political-instability-decreasing-resources-and-a-resurgent-malaria-epidemic-a...1
    113030David Garmaise Ukraine starts transition away from Global Fund support without a detailed tr...ABSTRACT In its audit of Global Fund grants to Ukraine, the Office of the ...Ukraine will start transferring responsibility for key programs from NGOs to ...https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16...2018-02-06 17:40:262025-04-20 13:42:07Sub Issue, OIG, Transition, Men who have sex with men, Key populations, Offic...02http://aidspan.org:8080/?p=13030 Audit gives Ukraine a mixed report card nullnullEnglish497775920230ukraine-starts-transition-away-from-global-fund-support-without-a-detailed-tr...1
    213004Keith Mienies The Global Fund's TRP praises India for ambitious plan to fast track the end ...ABSTRACT The Technical Review Panel found a lot to like when it reviewed I...When it reviewed India’s HIV funding request in 2017, the Technical Review Pa...https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16...2018-02-06 17:28:292025-04-20 22:42:54Sub Issue, technical Review Panel, TREATMENT, human rights, TRP, GAC, PAAR, p...02http://aidspan.org:8080/?p=13004 However, the TRP expressed concern about the absence of human rights- and ge...nullnullEnglish497775930253the-global-funds-trp-praises-india-for-ambitious-plan-to-fast-track-the-end-o...1
    312994Keith Mienies Strong role for private sector in Global Fund's TB grants to IndiaABSTRACT India, the second most populated country in the world, and soon t...Among the grants approved by the Board recently were four TB grants and one T...https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16...2018-02-06 17:23:512025-04-21 01:02:23Sub Issue, technical Review Panel, india, technical assistance, human rights,...02http://aidspan.org:8080/?p=12994 India has ambitious goal to end TB by 2025 nullnullEnglish497775940217strong-role-for-private-sector-in-global-funds-tb-grants-to-india1
    412982David Garmaise Challenges remain in the "inherent structure and paradigm" of the Global Fund...ABSTRACT A study just published in the journal Globalization and Health sa...Despite the reforms that are associated with the new funding model (NFM), cha...https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16...2018-02-06 17:14:282025-04-21 00:58:55Sub Issue, performance based funding, NFM, New funding model, country teams, ...02http://aidspan.org:8080/?p=12982 "Lack of country offices has many negative downstream effects nullnullEnglish497775950221challenges-remain-in-the-inherent-structure-and-paradigm-of-the-global-fund-s...1
    512988Kataisee Richardson Global Fund grant will expand HIV prevention, care and treatment services for...ABSTRACT When it reviewed Guyana’s HIV program continuation funding reques...Among the batch of grants recently approved by the Board was an HIV grant to ...https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16...2018-02-06 17:19:512025-04-20 23:09:54Sub Issue, technical Review Panel, HIV, Key populations, TRP, Guyana, Funding...02http://aidspan.org:8080/?p=12988 Program continuation request outlined human rights and legal challenges nullnullEnglish497775960229global-fund-grant-will-expand-hiv-prevention-care-and-treatment-services-for-...1
    613046David Garmaise The Global Fund's strategic initiatives focus on deliverables and outcomesABSTRACT All but one of the Global Fund’s 14 strategic initiatives are now...In operationalizing its strategic initiatives, the Secretariat has ensured th...https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16...2018-02-06 17:50:152025-04-20 19:18:10Sub Issue, WHO, Technical partners, World Health Organization, catalytic inve...02http://aidspan.org:8080/?p=13046 All but one of the 14 initiatives are in the implementation phase nullnullEnglish497775970213the-global-funds-strategic-initiatives-focus-on-deliverables-and-outcomes1
    712945David Garmaise New partnerships involving the Global Fund announced at DavosABSTRACT The annual meeting of the World Economic Forum in Davos, Switzerl...The annual meeting of the World Economic Forum, held on 23–26 January 2018 in...https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16...2018-02-07 16:48:242025-04-21 00:43:23Sub Issue, Partnership, AGYW, HER initiative, HER voice, (RED), HEINKEN, Unil...02http://aidspan.org:8080/?p=12945 One of the partnerships sparked a reaction from organizations concerned with...nullnullEnglish497775980223new-partnerships-involving-the-global-fund-announced-at-davos1
  • 0 => array (24)
    $value[0]
    article_id => string (5) "13020"
    $value[0]['article_id']
    author => string (16) "David Garmaise "
    $value[0]['author']
    David Garmaise
    
    
    tittle => string (137) "Political instability, decreasing resources and a resurgent malaria epidemic...
    $value[0]['tittle']
    Political instability, decreasing resources and a resurgent malaria epidemic: A challenging environment for Global Fund grants in Burundi
    
    abstract => UTF-8 string (380) "ABSTRACT Political instability and continuing economic problems have created...
    $value[0]['abstract']
    ABSTRACT
    
    Political instability and continuing economic problems have created a complex environment for programming in Burundi. Malaria and TB/HIV grants recently approved by the Global Fund Board are facing numerous challenges. This article summarizes the comments of the Technical Review Panel and the Grant Approvals Committee when it reviewed Burundi’s funding requests.
    
    
    body => UTF-8 string (14431) "A combination of recent political instability and continuing economic challe...
    $value[0]['body']
    A combination of recent political instability and continuing economic challenges have created a complex environment for programming in Burundi. It is one of the five poorest countries in the world and is heavily dependent on external aid to finance its health sector. An attempted coup in May 2015 caused a political crisis. The suspension of aid by major donors that followed the crisis resulted in an 87% decline in external resources, which, in turn, led to 54% decrease in the 2016 health budget. Fortunately, Burundi’s 2017 health budget envisions the restoration of donor support to a significant extent.
    
    According to the Secretariat, limited fiscal space for domestic spending, high dependence on volatile donor financing, weaknesses in public finance management, inefficiencies in health spending, sub-optimal social health protection, lack of adequate infrastructure and human resources to meet urgent community health needs –– all of these factors constitute major constraints for the long-term sustainability of Global Fund–supported programs.
    
    The Global Fund is operating in this challenging operating environment under the Additional Safeguard Policy (ASP). On 13 December, the Global Fund Board approved a malaria grant ($36.7 million) and a TB/HIV grant ($35.6 million) to Burundi. In this article, we report on the comments of the Technical Review Panel (TRP) and the Grant Approvals Committee (GAC) on the funding requests submitted by the Burundi country coordinating mechanism (CCM). We focus primarily on the malaria request.
    
    <strong>MALARIA</strong>
    
    The funding request proposed a program that included a mass long-lasting insecticidal net (LLIN) campaign in 2019; case management activities; integrated community case management (iCCM); the continued scale-up of intermittent preventive treatment during pregnancy; and the use of artesunate injectable to treat severe malaria.
    
    Since November 2015, Burundi has suffered a malaria epidemic, with a doubling of the number of cases. The goal of the Burundi National Strategic Plan (NSP) 2013–2017 is to reduce malaria-related morbidity and mortality by 75%. The TRP said that the national program anticipated a 75% reduction in incidence from 2014 to 2017, but instead incidence doubled between 2014 and 2016. “Burundi must now must focus on reversing the increasing trend,” the TRP said.
    
    When it reviewed Burundi’s request, the TRP said that the country was not on track to achieve the intended results and impact of its current grant. “There is a need for increased urgency and scale-up of interventions in the face of the current epidemic emergency. The program has not been acting with sufficient speed, partly due to complex political and financial issues and [a] delay in grant signing,” the TRP said.
    
    The TRP observed that the last mass distribution of LLINs was in 2014. The funding request states that LLINs are being distributed every three years to vulnerable populations, including educational institutions, police and military camps, and refugee and internally displaced people (IDP) camps, the TRP noted. However, it said, due to a lack of information, it is unclear whether this is actually occurring. The TRP also observed that the funding request did not say anything about routine distribution of LLINs between mass distribution campaigns.
    
    Nevertheless, the TRP said that the funding request was well-developed and was responsive to previous TRP inputs. “Burundi’s malaria strategy is appropriate but given the political unrest and current worsening of malaria epidemiology, the interventions need to be applied with increased speed and urgency.”
    
    <strong>Strengths of the funding request</strong>
    
    The TRP said that funding request was technically sound and strategically focused because it is based on the NSP. It said that the proposed interventions were “relevant and appropriate in the current situation.”
    
    The TRP noted that an analysis of the barriers to access services for key affected populations has been conducted, resulting in the development of specific program approaches and their partial implementation. Given the context of current political unrest, there will need to be to continued efforts made to reach these populations, the TRP said.
    
    <strong>Issues and concerns</strong>
    
    The TRP raised three principle concerns:
    <ul>
     	<li>the slow speed of scale-up activities;</li>
     	<li>insufficient attention being paid to vulnerable populations; and</li>
     	<li>a lack of understanding of the causes of the upsurge in the epidemic.</li>
    </ul>
    &nbsp;
    
    We examine each issue in turn.
    
    <strong><em>Scale-up</em></strong>
    
    The TRP said that the malaria program has been slow to implement previously funded interventions, despite steadily rising malaria incidence, a trend which, the TRP said, was apparent in 2014.
    
    “There needs to be a more urgent, persistent and creative approach to roll out and scale up the funded activities,” the TRP said. “Treatment availability at all health facilities and enhanced distribution of preventive interventions are critical.” The TRP also said that rapid expansion of indoor residual spraying (IRS) and accelerated distribution channels for LLIN routine distribution should be implemented.
    
    The TRP requested that, towards the end of the first year of grant implementation, the CCM conduct a mid-term program review in order to assess whether the epidemic was brought under control, and to plan for mitigation of similar situations in the future.
    
    <em>Outcome</em>: During grant-making, the country team undertook to follow up with the National Malaria Program on the response plan to ensure that activities are implemented effectively and in a timely manner. According to grant documents, the country team is closely tracking activities and working with partners and the government to address bottlenecks limiting timely implementation –– and to track commodities to ensure that there are no stock outs.
    
    <strong><em>Vulnerable populations</em></strong>
    
    The TRP noted that the political unrest is resulting in a high number of refugees, internally displaced persons, and mobile and migrant populations, as well as defined worksite populations. However, it said, it is unclear from the funding request whether their needs are being met.
    
    The TRP recommended that innovative approaches and strategies be devised to reach these populations, including mobile clinics and routine LLIN distribution strategies. The TRP recommended that technical partners engage with neighboring countries, especially Rwanda and Tanzania, which are adjacent to highest incidence districts, to discuss the current malaria situation in Burundi, since these countries are similarly affected by the current epidemiology prevailing in the region. The TRP also recommended that the Secretariat ensure that a contingency plan is in place to protect vulnerable populations should the planned epidemic response be delayed.
    
    <em>Outcome:</em> The grant documents state that this issue was cleared during grant-making, but they don’t say how.
    
    <strong><em>Causes of the upsurge in the epidemic </em></strong>
    
    The TRP said that the factors that have led to the increase in malaria cases are unknown but could include insufficient application of prevention and control strategies; insecticide resistance; lack of access to treatment; ineffective treatment; vulnerability due to food insecurity; population movements; and environmental and climate considerations. The TRP said that the causes of the epidemic need to be investigated but added that this process should not delay a speedy response to the epidemic.
    
    The TRP recommended that the CCM apply for a prioritized above-allocation request (PAAR) at the earliest opportunity (see below). It said that PAAR funds could be used for an enhanced and intensified epidemic response, and that some of the funds could be allocated for a post-epidemic situational analysis. The TRP recommended that a rigorous assessment be conducted during grant-making to understand the determinants of the epidemic.
    
    <em>Outcome:</em> This issue was discussed at length during grant-making. The discussions concluded that the exact causes of the upsurge in malaria cases in Burundi are multiple and not all determined. With support from the World Health Organization (WHO), the potential contributing factors were identified. They included a lack of prevention measures (non-availability and low use of LLINs in households), and environmental factors, such as the extension of rice fields and climate change. A therapeutic efficacy study that started in September 2017 will provide additional information. In addition, a post-epidemic situational analysis will be conducted in 2018 with support from the WHO, which will collect additional data on the causes of the epidemic, evaluate the level of implementation of the response plan and make appropriate recommendations.
    
    <strong>PAAR</strong>
    
    The CCM has applied for a PAAR. The request included: (a) conducting IRS in priority districts; (b) using LLINs to fill gaps before the 2019 mass campaign; (c) strengthening the surveillance system through the establishment of a geographic information system coupled with the weekly monitoring of malaria cases; and (d) strengthening data analysis for rapid decision-making to respond to emergencies and to understand the causes underlying the unusual resurgence of malaria cases.
    
    <strong>Other issues</strong>
    
    The GAC also noted the potential gap for the LLINs to reach national coverage (approximately 466,000 nets out of 7.0 million, which represents 7% of the total mass campaign needs), as well as the 182,000 nets needed for special groups (e.g. boarding schools, hospitals, prisons). The Secretariat said that this gap in LLINs, which amounts to approximately $1.5 million, will be closely monitored and that efficiencies identified during grant implementation will be reinvested to cover the gaps.
    
    The GAC highlighted the need for IRS in 11 eligible districts, including the four districts covered by Global Fund under the previous implementation period. The GAC said that it was concerned about potential gaps in funding for IRS from 2018 on, and it underlined the critical contribution that IRS can make towards bringing malaria below the epidemic threshold.
    
    <strong>Co-financing</strong>
    
    The government has provided a commitment of $16.8 million, enough to meet the co-financing requirements. However, the GAC noted, the economic, fiscal and political situations pose significant risks for the realization of the commitment.
    
    <strong>IMPLEMENTATION ARRANGEMENTS</strong>
    
    In its report, the GAC says that it endorses the change in implementation arrangements from using national principal recipients (PRs) to using the UNDP, “given major governance challenges in the past.” UNDP will manage both the TB/HIV and malaria grants. The proposal to change PRs appears to have come from the Secretariat rather than the CCM. Aidspan understands that the decision caused some distress among stakeholders in Burundi.
    
    The GAC also said that the portfolio will be streamlined from five grants down to two, with the national programs acting as sub-recipients, while also providing effective mechanisms for civil society organizations to implement activities going forward.
    
    Additionally, the new implementation structure will enable significant reductions in salary top-ups –– by 90% for the malaria program and 85% for TB/HIV program.
    
    <strong>TB/HIV</strong>
    
    The GAC noted the critical partnership support and collaboration with multilateral and bilateral partners and civil society in-country. The GAC further noted the need for continued engagement and technical assistance during grant implementation, notably in four key areas:
    <ul>
     	<li>development of a national laboratory strategy, including for the implementation of viral load scale-up;</li>
     	<li>improved access to, and coverage of, virologic testing among infants born to HIV-positive mothers;</li>
     	<li>ensuring the quality of interventions for key populations, including linkages of prevention activities with HIV testing and treatment services; and</li>
     	<li>a comprehensive supply chain management plan for the country, including warehousing and distribution until the last mile.</li>
    </ul>
    &nbsp;
    
    Noting severe fiscal constraints, the GAC expressed concerns regarding the risk of antiretroviral (ARV) shortages, should the country shift to test-and-treat in all provinces and if government contributions for funding ARVs do not materialize. Implementation of test-and-treat in all provinces may potentially result in a funding gap for ARVs of approximatively $3.0 million. The GAC said that the HIV cohort audit, the results of which are expected by the end of 2017, will ascertain the number of people on ARVs and enable a more accurate determination of funding gaps.
    
    The GAC said that the Secretariat and partners are engaging in strategic discussions with the government on concrete actions and steps to secure the government’s contribution to the procurement of ARVs from 2018 onwards. Additionally, the GAC noted that the CCM is planning to submit a PAAR outlining the ARV needs for inclusion of new patients, which could be funded should additional resources become available.
    
    <strong>RSSH</strong>
    
    The TRP noted “with appreciation” that investments in resilient sustainable systems for health (RSSH) are embedded in the three disease components, in a synergic and coherent manner.
    
    The strategy includes investments in the following areas:
    <ul>
     	<li>expansion of primary care services with community health workers and a referral system;</li>
     	<li>implementation of a defined minimum package of activities for health centers; and</li>
     	<li>roll out of district health information software from districts and hospitals to the community level.</li>
    </ul>
    &nbsp;
    
    The CCM allocated 10% of the overall budget to RSSH activities.
    
    &nbsp;
    <table width="316">
    <tbody>
    <tr>
    <td colspan="7" width="308">Do you have any reaction to this article (or any article in GFO)? To send a note to the editor, just click <a href="mailto:editorgfo@aidspan.org">here</a>. <strong>We value your feedback</strong>.</td>
    </tr>
    </tbody>
    </table>
    &nbsp;
    
    banner => string (106) "https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-1...
    $value[0]['banner']
    https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16-at-10.07.45-AM-1024x576.jpeg
    
    publication_date => string (19) "2018-02-06 17:32:54"
    $value[0]['publication_date']
    updated_at => string (19) "2025-04-20 21:50:52"
    $value[0]['updated_at']
    tags => string (193) "Sub Issue, technical Review Panel, UNDP, Health Systems, vulnerable populati...
    $value[0]['tags']
    Sub Issue, technical Review Panel, UNDP, Health Systems, vulnerable populations, TRP, RSSH, Burundi, GAC, ARVs, Grant Approvals Committee, LLINs, Antiretroriviral, long-lasting insecticidal net
    
    status => string (1) "0"
    $value[0]['status']
    user_id => string (1) "2"
    $value[0]['user_id']
    featured_image => string (32) "http://aidspan.org:8080/?p=13020"
    $value[0]['featured_image']
    subtittle => string (49) " Malaria incidence doubled between 2014 and 2016 "
    $value[0]['subtittle']
    comments => null
    $value[0]['comments']
    translation_link => null
    $value[0]['translation_link']
    translation_language => string (7) "English"
    $value[0]['translation_language']
    post_type_id => string (4) "4977"
    $value[0]['post_type_id']
    issue_no_id => string (3) "759"
    $value[0]['issue_no_id']
    article_no => string (1) "1"
    $value[0]['article_no']
    istranslated => string (1) "0"
    $value[0]['istranslated']
    isReviewed => string (1) "2"
    $value[0]['isReviewed']
    views => string (2) "20"
    $value[0]['views']
    post_name => string (135) "political-instability-decreasing-resources-and-a-resurgent-malaria-epidemic-...
    $value[0]['post_name']
    political-instability-decreasing-resources-and-a-resurgent-malaria-epidemic-a-challenging-environment-for-global-fund-grants-in-burundi
    
    isIndexed => string (1) "1"
    $value[0]['isIndexed']
    1 => array (24)
    $value[1]
    article_id => string (5) "13030"
    $value[1]['article_id']
    author => string (16) "David Garmaise "
    $value[1]['author']
    David Garmaise
    
    
    tittle => string (100) "Ukraine starts transition away from Global Fund support without a detailed t...
    $value[1]['tittle']
    Ukraine starts transition away from Global Fund support without a detailed transition plan, OIG says
    
    abstract => UTF-8 string (597) "ABSTRACT In its audit of Global Fund grants to Ukraine, the Office of the In...
    $value[1]['abstract']
    ABSTRACT
    
    In its audit of Global Fund grants to Ukraine, the Office of the Inspector General handed the country a mixed report card. It said that implementation arrangements, as well as procurement and supply chain management, were “partially effective,” the second highest ranking in the OIG’s rating scheme. However, it added, the effectiveness of program processes and controls needs significant improvement. The OIG also observed that Ukraine is scheduled to start transferring responsibility for key programs from NGOs to the government in the absence of a detailed transition plan.
    
    
    body => UTF-8 string (26506) "Ukraine will start transferring responsibility for key programs from NGOs to...
    $value[1]['body']
    Ukraine will start transferring responsibility for key programs from NGOs to the government early in 2018 without having a detailed transition plan, the Office of the Inspector General (OIG) noted in a recent audit of Global Fund grants to the country. A <a href="https://www.theglobalfund.org/media/7122/oig_gf-oig-18-003_report_en.pdf?u=636524031150000000">report</a> on the audit was released on 24 January.
    
    Ukraine is a lower-middle-income country. Although Ukraine does not appear on the Global Fund’s list of components projected to transition by 2025, the country’s funding request in 2017 included plans for the government to assume a greater share of the responsibility for providing services (see <a href="http://www.aidspan.org/gfo_article/ukraine%E2%80%99s-proposal-global-fund-reflects-country-transition">GFO article</a>).
    
    On 1 December 2017, subsequent to the audit, the Board approved three TB/HIV grants for Ukraine from the country’s 2017–2019 allocation. In the new grant cycle, which starts in January 2018, Ukraine aims to gradually transition activities and procurements from the current NGO PRs to the Public Health Center (PHC) –– 20% in 2018, 50% in 2019 and 80% in 2020.
    
    (For more on this issue, see the section on “Planning for transition” below.)
    
    Representatives of civil society organizations and the PHC told Aidspan that they were generally satisfied with the contents of the audit report.
    
    In this article, we provide a detailed summary of the audit findings and we report on the feedback we received. The article contains the following sections:
    
    <a href="http://aidspan.org:8080/en/c/article/4504#OVER">Overview</a>
    
    <a href="http://aidspan.org:8080/en/c/article/4504#ACH">Achievements and good practices</a>
    
    <a href="http://aidspan.org:8080/en/c/article/4504#KEY">Key issues and risks</a>
    
    <a href="http://aidspan.org:8080/en/c/article/4504#PLAN">Planning for transition</a>
    
    <a href="http://aidspan.org:8080/en/c/article/4504#PREV">Previously identified issues</a>
    
    <a href="http://aidspan.org:8080/en/c/article/4504#REACT">Reactions</a>
    
    <strong>OVERVIEW</strong>
    
    Overall, the audit gave Ukraine a mixed report card. The OIG said that implementation arrangements, as well as procurement and supply chain management, were “partially effective,” the second highest ranking in the OIG’s rating scheme. However, it said, the effectiveness of program processes and controls needs significant improvement.
    
    The Global Fund has signed grants worth over $555.0 million and disbursed over $547.0 million to Ukraine since 2003. The OIG audited grants managed by three of Ukraine’s four PRs (see Table 1), excluding the grant managed by UNICEF, which mainly provides commodities and services to conflict areas in Eastern Ukraine. The audit covered the period from January 2015 to June 2017.
    
    <strong>Table 1: Active Global Fund grants to Ukraine at the time of the audit ($ million)</strong>
    <table>
    <tbody>
    <tr>
    <td><strong>Principal recipient</strong></td>
    <td><strong>Comp.</strong></td>
    <td><strong>Grant name</strong></td>
    <td><strong>Signed amount</strong></td>
    </tr>
    <tr>
    <td>Alliance for Public Health</td>
    <td>TB/HIV</td>
    <td>UKR-C-AUA</td>
    <td>66.3 m</td>
    </tr>
    <tr>
    <td>All-Ukrainian Network of People Living with HIV</td>
    <td>TB/HIV</td>
    <td>UKR-C-AUN</td>
    <td>63.3 m</td>
    </tr>
    <tr>
    <td>Public Health Centre</td>
    <td>TB/HIV</td>
    <td>UKR-C-UCDC</td>
    <td>3.4 m</td>
    </tr>
    <tr>
    <td>UNICEF</td>
    <td>HIV</td>
    <td>UKR-H-UNICEF</td>
    <td>8.0 m</td>
    </tr>
    <tr>
    <td colspan="3"><strong>Total</strong></td>
    <td><strong> 140.9 m</strong></td>
    </tr>
    </tbody>
    </table>
    &nbsp;
    
    Note: All grants had an end date of 31 December 2017 except for UKR-H-UNICEF which will end in June 2018. At the time of the audit, the 2018–2020 grants had not yet been approved.
    
    Table 2 lists the three areas assessed in the audit, and the OIG’s ratings and summary comments for each area.
    
    <strong>Table 2: Ukraine audit findings at-a-glance</strong>
    <table>
    <tbody>
    <tr>
    <td width="518"><strong>AREA 1:</strong> Adequacy of the implementation and funding arrangements in supporting the achievement of grant objectives and sustainability of programs</td>
    <td width="179"><strong>Rating:</strong> Partially effective</td>
    </tr>
    <tr>
    <td colspan="2"><strong>OIG comments:</strong> The government has committed to a 25% increase in its budget for HIV and TB in the next grant cycle. Implementation arrangements at sub-recipient level have been simplified but more administrative and efficiency improvements are needed. The new funding cycle accompanies the gradual transition of procurement, supply chain and other functions to PHC, enhancing long-term sustainability. However, although this transition starts in early 2018, the first steps to build capacity for the government procurement agency, and for finalizing future supply chain arrangements, have been initiated after the recent approval of the procurement mechanism reform.</td>
    </tr>
    <tr>
    <td><strong>AREA 2</strong>: Effectiveness of the program processes and controls for delivering quality services to beneficiaries, including the availability of accurate and timely data to aid decision-making</td>
    <td><strong>Rating:</strong> Needs significant improvement</td>
    </tr>
    <tr>
    <td colspan="2"><strong>OIG comments:</strong> The combination of limited drug availability and an overloaded health workforce has hampered treatment for people diagnosed with HIV; these issues could be exacerbated when the government takes over a significant proportion of the Global Fund programs in 2018–2020. For HIV, in the sampled regions, a 25% variance was detected between the reported number of people on treatment and the number of patients in the adherence records. Discrepancies of 5%–15% were also identified between the TB reports, registers and patient cards. The two non-governmental PRs currently operate segregated patient data systems, with patients having two separate unified codes, although work is ongoing to harmonize the systems.</td>
    </tr>
    <tr>
    <td><strong>AREA 3:</strong> Efficiency and effectiveness of procurement and supply chain processes and systems to ensure the timely availability of quality medicines, health and non-health products</td>
    <td><strong>Rating:</strong> Partially effective.</td>
    </tr>
    <tr>
    <td colspan="2"><strong>OIG comments:</strong> Antiretroviral (ARV) drugs costs have been significantly reduced through advocacy and negotiations, although some key drugs are still more expensive compared to the global average. Supply chain arrangements have included private sector warehousing arrangements at central level, avoiding any major supply disruptions. However, post-transition arrangements need to be finalized.</td>
    </tr>
    </tbody>
    </table>
    &nbsp;
    
    <em>The OIG has a four-tiered rating scheme, as follows: Effective; partially effective; needs significant improvement; ineffective</em>
    
    <em>.</em>
    
    <strong>ACHIEVEMENTS AND GOOD PRACTICES</strong>
    
    The OIG identified the following achievements and good practices:
    
    <strong>Treatments have produced good results. </strong>AIDS-related deaths were reduced from 14,000 in 2010 to 7,900 in 2015. In addition, 78% of people on ARV treatment had a suppressed viral load.
    
    <strong>HIV programs have been scaled up. </strong>Ukraine adopted a test-and-treat approach as well as the UNAIDS 90-90-90 targets.
    
    <strong>Major price reductions have been achieved.</strong> Concerted advocacy efforts by civil society organizations have led to price reductions for the majority of ARVs, largely aligning them with international generic reference prices.
    
    <strong>The government has shown increased commitment. </strong>Despite conflicts in Eastern Ukraine and an economic recession since 2014, the government increased the HIV budget in 2017 for the procurement of medicines and other key interventions by 171%; and increased the TB budget by 133% (compared to 2016). The government also approved a four-year HIV strategy which featured a patient-oriented approach, including improved access to prevention programs for key populations.
    
    <strong>KEY ISSUES AND RISKS</strong>
    
    The audit report described several concerns, including the following:
    <ul>
     	<li>there are challenges in achieving current HIV targets and the proposed scale-up;</li>
     	<li>improvements are needed in MDR-TB treatment and in coordination between the TB and HIV programs;</li>
     	<li>there are procurement inefficiencies and gaps in supply chain processes;</li>
     	<li>data quality challenges have affected decision-making; and</li>
     	<li>there is a need for effective planning of the transition in grant implementation arrangements.</li>
    </ul>
    &nbsp;
    
    Below, we summarize the audit findings related to each of these concerns.
    
    <strong>HIV targets and scale-up</strong>
    
    The number of people on HIV treatment has increased from 64,360 in 2015 to 82,860 in 2017. Ukraine plans to continue this acceleration: The goal is to reach 194,400 on treatment by 2020. However, the OIG said, this is happening against a backdrop of significant programmatic and financial bottlenecks. The problems are in two areas: detection and treatment.
    
    The depreciation of the Ukraine currency, the hryvna, has resulted in foreign exchange savings of approximately $2.9 million in grant budgets over the period 2015–2017. The OIG stated that the Global Fund has not approved a request by Alliance Ukraine to use the savings to buy additional MDR-TB drugs. The OIG added that the Secretariat has not yet established a systematic process for evaluating potential reprogramming using foreign exchange savings, especially for life-saving treatment.
    
    The OIG reported that Ukraine and the Secretariat were currently finalizing grant conditions and performance framework targets for the next grant cycle. The goal is to address the bottlenecks and progressively scale up the number of people on ART. A 2017–2021 national TB strategy is also being finalized, which will capture the actions needed to deliver improved results. Given these activities, the OIG said that no further agreed management actions are needed in this area.
    
    <strong>MDR-TB treatment, TB-HIV coordination </strong>
    
    The OIG said that the national TB program conducted the first country-wide survey from November 2013 to May 2014 to identify MDR-TB levels and risk factors. MDR-TB was detected in 24% of new patients and 58% of previously treated patients. This is higher than the international averages of 4% and 21%, respectively, for those groups.
    
    The OIG identified three factors contributing to high disease burden and new infections:
    <ul>
     	<li>cross infection among TB patients;</li>
     	<li>low MDR-TB treatment success; and</li>
     	<li>inadequate TB/HIV cooperation.</li>
    </ul>
    &nbsp;
    
    Given that these issues are being addressed, including through grant conditions and the performance framework for the 2018–2020 grant cycle, no further agreed management actions are needed in this area, the OIG stated.
    
    <strong>Procurement and supply chain</strong>
    
    Thanks to concerted efforts by civil society organizations, some pharmaceutical manufacturers have agreed to include Ukraine under voluntary licensing agreements, or to waive their patent rights in Ukraine, the OIG reported. This has resulted in a broader set of health products being available, as well as price reductions for the majority of ARVs –– including the main HIV regimen that covered 40% of Global Fund–supported patients as recently as 2017.
    
    However, some key drugs remain more expensive than international generic reference prices. The OIG said this is because of Ukraine’s market size and purchasing power; inefficiencies in procurement practices; intellectual property rights; and trade issues. Despite some simplifications, the OIG stated, there are still multiple HIV treatment regimens procured using Global Fund grants, contributing to procurement and administrative inefficiencies. “Government procurement delays have resulted in consistent borrowing from the Global Fund drug stocks, with higher stock-out risks as Global Fund reduces drugs investments in the next grant cycle,” the OIG said. Gaps in coordination led to expiries and large quantities of MDR-TB drugs with a short shelf life, the OIG added.
    <table width="645">
    <tbody>
    <tr>
    <td colspan="2" width="635"><strong>The OIG provided</strong> an example of what happens when government bureaucracy is involved. The government has an annual budgeting and funds allocation process which is generally approved around the start of the year. Procurements cannot go through before the funds are made available. The procurement process then takes another 12–18 months before the drugs can be delivered. As a result, <strong>2016 procurements were only delivered in late 2017. </strong></td>
    </tr>
    </tbody>
    </table>
    &nbsp;
    
    The OIG observed that Ukraine is currently using a regimen consisting of lopinavir and ritonavir as a first-line medicine although this is not recommended by the World Health Organization (WHO). In addition, the OIG said, the regimen costs about 200% more than the WHO-recommended first-line treatment. In the current grants, this drug combination alone constitutes almost half of the $28 million budget for the procurement or ARVs. While government purchases of these second-line drugs used for first-line treatment decreased by 6% between 2015 and 2017, their procurement using Global Fund grants has increased by 34% during the same period, the OIG said.
    
    Ukraine is in the process of creating a national procurement agency. A concept to reform the procurement of health products has recently been approved by Parliament, the OIG said. “This should help develop a capacity-building plan for a national procurement agency and finalize future supply chain arrangements. Both are needed by mid-2018 as part of the envisaged transition to PHC under the next grant cycle.”
    
    Currently, centrally procured health products transit through a central warehouse before being distributed in full to the regions. The audit found that the capacity and conditions of the central warehouse do not meet international standards. Therefore, health products procured with grant funds are managed through private warehouses. The OIG reported that the PHC has concerns about continuing this arrangement with private sector partners after the transition, due in part to regulatory requirements. The gradual transition of procurement to the PHC will start in 2019. “In the absence of a plan to evaluate the actual capabilities of government warehouses and to address the potential gaps, the transition from private sector arrangements to public facilities may introduce significant risks to the delivery of grant services,” the OIG stated.
    <table>
    <tbody>
    <tr>
    <td colspan="7" width="684"><strong>Agreed management action</strong>
    
    The Secretariat will:
    <ul>
     	<li>ensure that the drugs procured with Global Fund grants are only WHO-recommended regimens;</li>
     	<li>establish an optimization plan to increase treatment impact;</li>
     	<li>establish an effective procurement coordination mechanism between government and donors to avoid any future overstock or stock-outs; and</li>
     	<li>discuss and agree with the PHC the supply chain arrangements for grants in the next grant cycle, including plans for any capacity building initiatives needed for national supply chain arrangements.</li>
    </ul>
    <em>Due date: 31 July 2018</em></td>
    </tr>
    </tbody>
    </table>
    &nbsp;
    
    <strong>Data quality</strong>
    
    The audit found that there were challenges with data quality that were affecting decision-making. Specifically:
    <ul>
     	<li>there is no reliable mechanism to confirm the number of people on ARVs;</li>
     	<li>there are discrepancies in data among the reports submitted at the national level, the TB registers and the patient cards at facilities; and</li>
     	<li>the two main PRs operate segregated patient recording and reporting systems with different registration codes.</li>
    </ul>
    &nbsp;
    <table width="659">
    <tbody>
    <tr>
    <td colspan="7" width="933"><strong>Agreed management action</strong>
    
    The Secretariat will ensure that costed M&amp;E plans for TB and HIV are developed, and that they include plans for:
    <ul>
     	<li>strengthening the reporting systems covering but not limited to the harmonization of patients’ identification codes;</li>
     	<li>strengthening the monitoring and supervision systems for TB and HIV programs; and</li>
     	<li>performing evaluations and surveys.</li>
    </ul>
    <em>Due date: 30 September 2018</em></td>
    </tr>
    </tbody>
    </table>
    &nbsp;
    
    <strong>PLANNING FOR TRANSITION</strong>
    
    As mentioned above, Ukraine plans to gradually transition activities and procurements from the current NGO PRs to the PHC. The size of the PHC grant went from $3.3 million in 2015–2017 to $44.3 million in 2018–2020. The PHC will assume major new responsibilities, taking over key program activities such as prevention, outreach and procurement. These changes will require a detailed analysis of the PHC’s new roles and responsibilities, the OIG said.
    
    In the absence of a detailed transition plan, the OIG said, capacity-building gaps may affect the ability of the PHC to successfully take on its new responsibilities. The OIG said that the plan will need to take into account the impact of transition on access to services for key populations as well as the range of services that will be provided.
    
    The OIG said that during interviews with representatives from key populations, including PWID, female sex workers and MSM, they expressed concerns about the possible adverse impact on access to services when the prevention activities move to PHC. These concerns arise from multiple factors including the fact that these populations are criminalized in Ukraine. The OIG said that there are reservations about the government’s commitment and in-depth understanding of these interventions as well as a risk that efficiency considerations will take precedence over the delivery of comprehensive programs. The OIG cited as an example the fact that after the Ministry of Health took over the methadone program, a psychological support component was considered unnecessary and was removed.
    
    The 2018–2020 grants reduce the number of sub-recipients (SRs) from 225 to 108. However, the OIG noted, there has been no detailed review to map the technical capacity and regional presence of the SRs that will remain.
    
    The audit identified challenges with respect to the management of SRs. For example:
    <ul>
     	<li>there have been instances where SRs have been appointed without an open tender;</li>
     	<li>many SRs have very high management costs;</li>
     	<li>there have been instances of duplication of services among SRs; and</li>
     	<li>there have been instances of nepotism in SR staffing.</li>
    </ul>
    &nbsp;
    
    In addition, the OIG noted several instances of expenses with insufficient or no supporting documents. These instances have been referred to the OIG’s Investigations Unit for further review.
    
    The OIG said that Ukraine’s transition plan should address the impact of transition on SR management.
    <table width="659">
    <tbody>
    <tr>
    <td colspan="7" width="933"><strong>Agreed management action</strong>
    
    The Secretariat will ensure that:
    <ul>
     	<li>a detailed action plan to transition from donor funding to government funding with the rate of 20%–50%–80% is developed, which includes measures to ensure satisfactory quality and access of services by key affected population after transition; and</li>
     	<li>the ongoing sub-recipient selection process systematically considers administrative costs, geographical locations and control gaps in the existing cycle, to explore further implementation improvements and efficiencies.</li>
    </ul>
    <em>Due date: 30 September 2018</em></td>
    </tr>
    </tbody>
    </table>
    &nbsp;
    
    <strong>PREVIOUSLY IDENTIFIED ISSUES</strong>
    
    The OIG previously audited grants to Ukraine in November 2010 and released the <a href="https://www.theglobalfund.org/media/2691/oig_gfoig10016auditukraine_report_en.pdf?u=636488964600000000">report</a> in August 2012 (see <a href="http://www.aidspan.org/gfo_article/oig-releases-report-audit-global-fund-grants-ukraine">GFO article</a>). The OIG said that the risks identified in the earlier audit have been “materially mitigated.”
    
    <strong>REACTIONS</strong>
    
    Aidspan contacted several community representatives and staff of the PHC. All those who responded said that they were generally pleased with the content of the audit report and with the audit processes.
    
    Anton Basenko, Country Focal Point for the international advocacy project PITCH, and a member of the Communities Delegation to the Board of the Global Fund, said: “The report reflects the concerns that we raised. We feel that we had meaningful involvement in the process. It helped that the community representatives had CCM member status by the time the audit was conducted.” Basenko also represents PWID on the CCM.
    
    Nataliya Nizova, ex-Director General of the Public Health Center (PHC) said that during the audit, “the PHC had full opportunity to cover and comprehensively discuss the most important, including difficult, aspects related to the implementation of grants in Ukraine.”
    
    Andrey Klepikov, Head of the Alliance for Public Health, said: “As one of the PRs, the Alliance was naturally very involved in the audit. We also participated in the de-briefings with the CCM and the other PRs. The OIG has a clearly defined and openly accessible <a href="https://www.theglobalfund.org/media/3034/oig_stakeholder-engagement-audit_model_en.pdf">stakeholder engagement model</a>, so we knew in advance at what stage and how we should be involved.”
    
    One respondent –– Olena Kucheruk, Public Health Program Initiative Manager for the International Renaissance Foundation –– told Aidspan that she would have liked to have seen more in the audit report on the health care reforms that are underway in the Ukraine. “The transition to a new health care system may continue in ways that are not always predictable. This creates uncertainty which, in turn, may affect the continuity of services,” she said.
    
    “Another risk is that the PHC needs to develop networks in the regions,” Kucheruk said. “After operating with Global Fund budgets for the next three years, the PHC will need to develop state level budgets after 2020. This process is just beginning and remains not well coordinated. There is a need to develop a clear vision at strategy at the national level, with clear understanding of how local PHCs should look like, how they should be subordinated, and how they will operate to ensure continuity of services.”
    
    Finally, Kucheruk said, she would have welcomed more discussion in the audit report on key population involvement and participation. “There are concerns about whether all key populations were engaged in the response to the epidemics, about the legitimacy of some of the representatives of these populations and about communication within those communities.”
    
    <strong>Transition</strong>
    
    One of the agreed management actions in the audit report concerned the preparation of a detailed transition plan. Aidspan asked the representatives to comment on issues related to transition.
    
    “We have to make sure that the commitment to develop a transition plan is more than just a statement of intent. It has to be translated into action,” Basenko said. Regarding the 20%–50%–80% targets, Basenko said that they were somewhat arbitrary, especially the first target (20% by January 2018). “It was based on what was happening in two regions of Ukraine (out of 25),” Basenko said, “but these regions really only represented 5% of the total.”
    
    Basenko also said that in order for the transition to happen, Ukraine needs to develop a new national HIV program. “But there is not enough time to do this properly,” he said, “and the development of regional strategies is not far enough advanced.”
    
    Nizova told Aidspan that when she was Head of the PHC (her contract expired in September 2017), she supervised the involvement of the center’s specialists in the preparation of a transition strategy and an action plan for implementation, which was reflected in Ukraine’s funding request to the Global Fund. “The main concern, in my opinion, is the slow progress of reforms in the public sector, primarily in the area of procurement and finance.”
    
    Klepikov said that a TB/HIV sustainability strategy was approved by the Cabinet of Ministers. “Now, the key next steps are to make sure that the two new national programs on TB and HIV will be approved by the Parliament and properly funded.”
    
    Klepikov noted that the transition is already underway. He said that the Alliance is currently transitioning an opioid substitution therapy (OST) program with over 10,000 patients to the government, and that the transfer is going well. As of beginning of January 2018, about 10% of the OST patients already started to receive methadone procured by the Ministry of Health, he said. “We expect that transitioning the OST program will be completed in mid-2018.”
    
    Klepikov said that work on the detailed transition plan must start right away. “And, of course, it is not about developing a nice paper. It will require approval of some new working mechanisms –– for example, for NGOs to access domestic funding –– as well as the government’s decision on an increase in funding, and on funding new activities, such as prevention among PWID, MSM and sex workers.”
    
    <strong>Final word</strong>
    
    “The audit shows that there has been good progress in fighting the epidemics in Ukraine,” Klepikov told Aidspan. “Following the previous OIG audit done in 2010, Ukraine received 76 recommendations. This latest audit produced only three recommendations.”
    <table width="317">
    <tbody>
    <tr>
    <td colspan="7">Do you have any reaction to this article (or any article in GFO)? To send a note to the editor, just click <a href="mailto:editorgfo@aidspan.org">here</a>. <strong>We value your feedback</strong>.</td>
    </tr>
    </tbody>
    </table>
    &nbsp;
    
    &nbsp;
    
    banner => string (106) "https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-1...
    $value[1]['banner']
    https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16-at-10.07.45-AM-1024x576.jpeg
    
    publication_date => string (19) "2018-02-06 17:40:26"
    $value[1]['publication_date']
    updated_at => string (19) "2025-04-20 13:42:07"
    $value[1]['updated_at']
    tags => string (272) "Sub Issue, OIG, Transition, Men who have sex with men, Key populations, Offi...
    $value[1]['tags']
    Sub Issue, OIG, Transition, Men who have sex with men, Key populations, Office of the Inspector General, people who inject drugs, Ukraine, MDR-TB, MSM, PWID, Sex workers, supply chain, Case detection, program management, ARVs, Antiretriviral, procurements, sustainanbility
    
    status => string (1) "0"
    $value[1]['status']
    user_id => string (1) "2"
    $value[1]['user_id']
    featured_image => string (32) "http://aidspan.org:8080/?p=13030"
    $value[1]['featured_image']
    subtittle => string (41) " Audit gives Ukraine a mixed report card "
    $value[1]['subtittle']
    comments => null
    $value[1]['comments']
    translation_link => null
    $value[1]['translation_link']
    translation_language => string (7) "English"
    $value[1]['translation_language']
    post_type_id => string (4) "4977"
    $value[1]['post_type_id']
    issue_no_id => string (3) "759"
    $value[1]['issue_no_id']
    article_no => string (1) "2"
    $value[1]['article_no']
    istranslated => string (1) "0"
    $value[1]['istranslated']
    isReviewed => string (1) "2"
    $value[1]['isReviewed']
    views => string (2) "30"
    $value[1]['views']
    post_name => string (99) "ukraine-starts-transition-away-from-global-fund-support-without-a-detailed-t...
    $value[1]['post_name']
    ukraine-starts-transition-away-from-global-fund-support-without-a-detailed-transition-plan-oig-says
    
    isIndexed => string (1) "1"
    $value[1]['isIndexed']
    2 => array (24)
    $value[2]
    article_id => string (5) "13004"
    $value[2]['article_id']
    author => string (15) "Keith Mienies "
    $value[2]['author']
    Keith Mienies
    
    
    tittle => string (96) "The Global Fund's TRP praises India for ambitious plan to fast track the end...
    $value[2]['tittle']
    The Global Fund's TRP praises India for ambitious plan to fast track the end of the HIV epidemic
    
    abstract => UTF-8 string (447) "ABSTRACT The Technical Review Panel found a lot to like when it reviewed Ind...
    $value[2]['abstract']
    ABSTRACT
    
    The Technical Review Panel found a lot to like when it reviewed India’s HIV funding request in 2017. The TRP particularly cited the country’s ambitious plan to fast track the end of the HIV epidemic. At the same time, however, the TRP expressed several concerns, including the absence of human rights– and gender-responsive programming. Five HIV grants to India were among the grants recently approved by the Global Fund Board.
    
    
    body => UTF-8 string (12047) "When it reviewed India’s HIV funding request in 2017, the Technical Review P...
    $value[2]['body']
    When it reviewed India’s HIV funding request in 2017, the Technical Review Panel (TRP) commended the Government of India for its ambitious plan to fast track the end of the HIV epidemic. At the same time, however, the TRP raised concerns about what it viewed as the request’s failure to include a focus on human rights and gender.
    
    This article provides a summary of the comments from the TRP and the Grant Approvals Committee (GAC) on the funding request. See <a href="http://www.aidspan.org/gfo_article/strong-role-private-sector-global-funds-tb-grants-india">separate article</a> in this issue on the approval of India’s TB and TB/HIV grants. In addition, we plan to publish in the near future an article on the sustainability of India’s Global Fund grant portfolio.
    
    Five HIV grants to India were recently approved by the Board.
    
    The funding request was of the “tailored –– national strategic plan” variety. (The existing HIV grants are part of a national strategy–based pilot.)
    
    In 2015, according to India’s National Strategic Plan (NSP), HIV prevalence in the adult population was 0.26%; there were about 86,000 new HIV infections (including 10,400 among children); and there were an estimated 2.1 million people living with HIV (PLHIV). India has a concentrated HIV epidemic, with the national HIV prevalence being the highest among people who inject drugs (PWID) (9.9%), followed by men who have sex with men (MSM) (4.3%) and female sex workers (2.2%). Data for transgender persons was not yet available.
    
    Overall, the TRP said that the national HIV strategy on which the funding request was based was “robust and ambitious.” The request included a comprehensive situational analysis with the most recent available data, which the TRP said clearly described the challenges and gaps for HIV programming in India. The TRP said that India’s ambitious plan to fast track the end of the HIV epidemic included the following objectives:
    <ul>
     	<li>reducing new infections by 80%;</li>
     	<li>linking 95% of estimated PLHIV to services;</li>
     	<li>initiating treatment for 95% of PLHIV, and retaining them on treatment;</li>
     	<li>eliminating mother-to-child transmission of HIV and syphilis; and</li>
     	<li>eliminating HIV-related discrimination.</li>
    </ul>
    &nbsp;
    
    In its review of the funding request, the TRP highlighted the approvals of the Transgender Bill, the HIV and AIDS Prevention and Control Act, and revisions to the Narcotic Drugs and Psychotropic Substance Act. This is important for HIV programming, the TRP said, because it creates an enabling policy and regulatory environment for service delivery to transgender, PWID and other key populations living with HIV.
    
    The total value of the HIV grants approved for India was $155.1 million. The HIV program will be implemented by the same four principal recipients (PRs) that are managing the current HIV grants –– the National AIDS Control Organization (NACO), Plan International (India Chapter), Solidarity and Action Against the HIV infection in India, and the India HIV/AIDS Alliance –– plus a new PR, the Christian Medical Association of India.
    
    (Technically, the PR for the NACO grant is the Department of Economic Affairs in the Ministry of Finance. But the <em>de facto</em> PR is NACO.)
    
    All five grants proposed a start date of 1 January 2018 and an end date of 31 March 2020. Adding an “extra” three months to the grants (39 vs. 36 months) will allow India to align its grant implementation periods to the country’s fiscal cycle.
    
    India submitted a prioritized above-allocation request (PAAR) of $96.8 million, of which $85.7 million was deemed “quality demand” by the TRP.  During grant-making, $13.4 million in efficiencies was identified, all of which was used to fund interventions in the PAAR. Interventions totaling $72.3 million were added to the Unfunded Quality Demand (UQD) Register.
    
    The TRP removed two activities from the within-allocation portion of the funding request. The TRP said that funding for 90 District AIDS Prevention and Control Units was inconsistent with India’s goal to move towards sustainability. And it said that a proposed continuum-of-care demonstration project constituted poor value for money in that it would make a limited contribution to better understanding and responding to the HIV epidemic in India. To replace these activities in the within-allocation request, the TRP recommended that the following interventions be moved from the PAAR:
    <ul>
     	<li>key population–specific care and support interventions;</li>
     	<li>development of a procurement strategy; and</li>
     	<li>differentiated HIV testing services.</li>
    </ul>
    &nbsp;
    
    <strong>Strengths of the funding request</strong>
    
    The TRP welcomed India’s ambition to transition from Global Fund support to fully finance its national HIV response with domestic resources by 2024. In addition, the TRP said that the HIV funding request made good use of India’s Integrated Biological and Behavioral Survey (IBBS) on HIV prevalence for female sex workers, MSM and PWID to inform the geographical prioritization of interventions targeting these key populations.
    
    The funding request clearly described the challenges and bottlenecks in the treatment cascade, the TRP said, which India will address using (a) complementary HIV testing approaches, such as community-based testing for key populations and the expansion of HIV self-testing; and (b) different HIV care models, such as multi-month drug dispensing, comprehensive care units and community-led drug distribution.
    
    India’s funding request included plans to integrate data systems and move to an electronic reporting system. Better data will mean that planning and monitoring is based on evidence rather than estimates, the TRP said.
    
    The TRP commended India for its plans to integrate HIV testing and treatment services into the general health system by 2024, which will result in a more efficient use of resources such as healthcare workers, infrastructure, and supply-chain and information systems.
    
    <strong>Issues and concerns</strong>
    
    The TRP raised several issues, some of which were addressed during grant making, while others will be addressed during grant implementation. Some of these issues are described below:
    
    <strong>Human rights– and gender-responsive programming</strong>: As mentioned above, the TRP expressed concern that the funding request was weak in integrating human rights– and gender-related issues into its HIV program interventions. The barriers to accessing HIV services due to punitive laws and sociocultural issues in India were not well described. Furthermore, the TRP said, gender issues with respect to women and girls were not mentioned at all in the funding request, which the TRP found surprising because women and girls in India face even greater issues (compared to boys and men) related to consent and agency, and –– if they test HIV positive –– stigma, discrimination, violence and exclusion. The lack of focused gender- and human rights–related interventions could impede access to, and uptake of, services for these populations, said the TRP.
    
    The issue was cleared by the TRP during grant-making after NACO provided a brief document describing how it will include human rights and gender at all stages of HIV program planning and implementation. However, the TRP requested that NACO submit further information to the Secretariat by June 2018, including a matrix which lists the key intervention areas under the program and specifies for each of them what measures will be taken to ensure that they are gender-responsive and rights-based. The TRP said that the matrix should include specific actions that NACO will take to ensure that the scaling-up of community-based HIV testing adequately considers gender and human rights issues.
    
    <strong>Capacity to outsource key enabling systems for the HIV response: </strong>The TRP noted that a social contracting process for health management information systems (HMIS) in the previous HIV grant could not be completed by NACO. In the funding request, the CCM proposed having NACO outsource key enabling systems for data management, procurement and supply chain management, as well as capacity development for healthcare workers and communities. However, the TRP said, the application didn’t include a description of authorization processes, timelines, contract management or quality assurance. The TRP strongly recommended that NACO develop an organizational plan with timelines for outsourcing these key enabling systems, including alternative approaches to manage contracting delays as they can undermine the HIV program. The issue was reported to have been fully addressed during grant making; however, how it was resolved was not explained in the grant documents.
    
    <strong>Rapid increase in treatment enrolment</strong>: India recently announced its National Test and Treat Policy, which allows PLHIV to receive treatment regardless of CD4 cell count. Of the estimated 2.1 million PLHIV in India, approximately 72% know their HIV status. Treatment enrolment stands at 1.1 million, which leaves about 462,000 people living with HIV who know their status but are not yet enrolled on treatment. The TRP said that the funding request did not include a plan to reach PLHIV who have been initiated on treatment but have defaulted; nor does it include activities targeting people who have tested HIV-positive but are not yet on treatment. The TRP requested that by 30 June 2018, NACO provide an implementation plan for treatment initiation and improved retention on treatment. It said that the implementation plan should include (a) methods to reach PLHIV who are not yet on treatment; (b) a detailed description of the approaches to increase treatment retention; and (c) details on the scaling-up of the adherence initiatives currently being implemented by the India HIV/AIDS Alliance.
    
    <strong>Viral suppression and viral loads.</strong> The TRP raised a concern that the funding request did not include a strategy for the rapid scale-up of viral load testing, or an indication of how many people on treatment receive regular viral load tests. The CCM reported that, currently, about 10,000 viral load tests are conducted each year. The target set by the CCM in the funding request for the end of the next implementation period is to conduct 2.3 million viral load tests. The TRP was concerned that this number is not feasible. It requested that a viral load testing plan be developed within the first six months of grant implementation and that it include sections on (a) demand creation; (b) prioritized geographic locations for roll-out; (c) standard operating procedures; (d) materials that will be required; (e) reporting; and (f) sustainability.
    
    <strong>HIV co-financing </strong>
    
    In order for India to meet its co-financing requirements for the 2018–2020 implementation period of its HIV grants, the government needs to invest $31.0 million more than the $282.0 million it committed in 2015–2017. The government has gone well beyond that, committing to invest $1.33 billion in HIV programming during 2018–2020 (see the table for details).
    
    <strong>Table: Domestic resources for the national HIV program 2018–2020</strong>
    <table width="478">
    <tbody>
    <tr>
    <td width="241"><strong>Program area</strong></td>
    <td width="187"><strong>Investment ($ million)</strong></td>
    </tr>
    <tr>
    <td>Treatment, care and support</td>
    <td>457.0 m</td>
    </tr>
    <tr>
    <td>Targeted key population interventions</td>
    <td>302.0 m</td>
    </tr>
    <tr>
    <td>HIV testing and PMTCT</td>
    <td>223.0 m</td>
    </tr>
    <tr>
    <td>Blood safety</td>
    <td>116.0 m</td>
    </tr>
    <tr>
    <td>STI management</td>
    <td>20.0 m</td>
    </tr>
    <tr>
    <td>RSSH and program management</td>
    <td>210.0 m</td>
    </tr>
    <tr>
    <td><strong>Total</strong></td>
    <td><strong>1,328.0 m</strong></td>
    </tr>
    </tbody>
    </table>
    &nbsp;
    
    &nbsp;
    
    banner => string (106) "https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-1...
    $value[2]['banner']
    https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16-at-10.07.45-AM-1024x576.jpeg
    
    publication_date => string (19) "2018-02-06 17:28:29"
    $value[2]['publication_date']
    updated_at => string (19) "2025-04-20 22:42:54"
    $value[2]['updated_at']
    tags => string (151) "Sub Issue, technical Review Panel, TREATMENT, human rights, TRP, GAC, PAAR, ...
    $value[2]['tags']
    Sub Issue, technical Review Panel, TREATMENT, human rights, TRP, GAC, PAAR, prioritized above allocation request, viral load, Grants approval committee
    
    status => string (1) "0"
    $value[2]['status']
    user_id => string (1) "2"
    $value[2]['user_id']
    featured_image => string (32) "http://aidspan.org:8080/?p=13004"
    $value[2]['featured_image']
    subtittle => string (105) " However, the TRP expressed concern about the absence of human rights- and g...
    $value[2]['subtittle']
     However, the TRP expressed concern about the absence of human rights- and gender-responsive programming 
    
    comments => null
    $value[2]['comments']
    translation_link => null
    $value[2]['translation_link']
    translation_language => string (7) "English"
    $value[2]['translation_language']
    post_type_id => string (4) "4977"
    $value[2]['post_type_id']
    issue_no_id => string (3) "759"
    $value[2]['issue_no_id']
    article_no => string (1) "3"
    $value[2]['article_no']
    istranslated => string (1) "0"
    $value[2]['istranslated']
    isReviewed => string (1) "2"
    $value[2]['isReviewed']
    views => string (2) "53"
    $value[2]['views']
    post_name => string (95) "the-global-funds-trp-praises-india-for-ambitious-plan-to-fast-track-the-end-...
    $value[2]['post_name']
    the-global-funds-trp-praises-india-for-ambitious-plan-to-fast-track-the-end-of-the-hiv-epidemic
    
    isIndexed => string (1) "1"
    $value[2]['isIndexed']
    3 => array (24)
    $value[3]
    article_id => string (5) "12994"
    $value[3]['article_id']
    author => string (15) "Keith Mienies "
    $value[3]['author']
    Keith Mienies
    
    
    tittle => string (66) "Strong role for private sector in Global Fund's TB grants to India"
    $value[3]['tittle']
    abstract => UTF-8 string (386) "ABSTRACT India, the second most populated country in the world, and soon to ...
    $value[3]['abstract']
    ABSTRACT
    
    India, the second most populated country in the world, and soon to become the largest, contributes 27% of the world’s TB burden. It plans to end TB by 2025. This article summarizes the comments from the Technical Review Panel and the Grants Approvals Committee on India’s TB funding request. In January, the Board approved four TB grants and one TB/HIV grant to India.
    
    
    body => UTF-8 string (10429) "Among the grants approved by the Board recently were four TB grants and one ...
    $value[3]['body']
    Among the grants approved by the Board recently were four TB grants and one TB/HIV grant to India. In this article, we report on the comments from the Technical Review Panel (TRP) and the Grants Approvals Committee (GAC) on the funding request from which these grants emanated.
    
    See <a href="http://www.aidspan.org/gfo_article/global-funds-trp-praises-india-ambitious-plan-fast-track-end-hiv-epidemic">separate article</a> in this issue on the approval of India’s HIV grants. In addition, we plan to publish in the near future an article on the sustainability of India’s Global Fund grant portfolio.
    
    The TRP commended India for its strategically focused and technically sound funding request. It said that the request addressed the priority areas identified in India’s National Strategic Plan (NSP) for TB, which was developed through a consultative in-country process and includes the ambitious goal to end TB in India by 2025.
    
    India is the second most populated country in the world with a population of 1.32 billion. It is projected to be the world’s most populous country by 2022. TB remains a major public health issue in India, with an estimated 2.8 million new TB cases and 130,000 new multi-drug resistant TB (MDR-TB) and MDR/RR-TB cases in 2015. MDR/RR-TB includes patients with MDR-TB as well as patients who have TB resistant to rifampicin. The estimated mortality in 2016 due to TB in India was 423,000. India contributes 27% of the world’s TB burden.
    
    India’s TB funding request contained a strong focus on interventions that promote meaningful engagement and collaboration with the private sector, the TRP said. The interventions included TB diagnosis; case notification and treatment; scaling up laboratory services; improving active case finding among key affected populations; and expanding MDR-TB management and treatment outcomes. According to the funding request, the private sector for TB is “massive, heterogeneous and growing,” and accounts for roughly 80% of the first contact between patients and healthcare providers. It is estimated that more than half of the TB cases are diagnosed and treated in the private sector in India.
    
    The Board approved $283.8 million for India’s TB and TB/HIV grants (see Table 1 for details).
    
    <strong>Table 1: Approved TB and TB/HIV grants to India ($US million)</strong>
    <table width="675">
    <tbody>
    <tr>
    <td width="94"><strong>Comp.</strong></td>
    <td width="120"><strong>Grant name</strong></td>
    <td width="316"><strong>Principal recipient</strong></td>
    <td width="135"><strong>Total program budget</strong></td>
    </tr>
    <tr>
    <td>TB</td>
    <td>IND-T-CTD</td>
    <td>Central TB Division, Ministry of Health</td>
    <td>201.3 m</td>
    </tr>
    <tr>
    <td>TB</td>
    <td>IND-T-IUATLD</td>
    <td>International Union Against TB and Lung Disease</td>
    <td>15.5 m</td>
    </tr>
    <tr>
    <td>TB</td>
    <td>IND-T-CHRI</td>
    <td>Centre for Health Research and Innovation</td>
    <td>15.6 m</td>
    </tr>
    <tr>
    <td>TB</td>
    <td>IND-T-FIND</td>
    <td>Foundation for Innovative New Diagnostics India</td>
    <td>33.1 m</td>
    </tr>
    <tr>
    <td>TB/HIV</td>
    <td>IND-T-WJCF</td>
    <td>William J. Clinton Foundation</td>
    <td>18.2 m</td>
    </tr>
    <tr>
    <td colspan="3"><strong>Total</strong></td>
    <td><strong>283.8 m</strong></td>
    </tr>
    </tbody>
    </table>
    &nbsp;
    
    All five grants proposed a start date of 1 January 2018 and an end date of 31 March 2020. Adding an “extra” three months to the grants (39 vs. 36 months) will allow India to align its grant implementation periods to the country’s fiscal cycle.
    
    India submitted a prioritized above allocation request (PAAR) of $180.5 million, all of which was deemed to be quality demand by the TRP, including a $40.0 million loan buy-down to the World Bank (more on this below). During grant-making, the GAC found efficiencies worth $42.4 million, which were invested in two PAAR interventions. In the end, interventions valued at $141.5 million were added to the Unfunded Quality Demand (UQD) Register.
    
    <strong>Strengths of the funding request</strong>
    
    The TRP said that India’s funding request addressed some of the challenges experienced during the previous Global Fund TB and TB/HIV grants to India, such as inadequate oversight of principal recipients (PRs) and sub-recipients, a lack of streamlined financial reporting, and weaknesses of supply chain management.
    
    The TRP praised India for its cognizance of the different levels of vulnerability within TB-affected populations, which the TRP said is reflected in the program design and prioritization of interventions, including active case finding activities to reach these populations.
    
    Finally, the TRP commended India for its increase in domestic resources for TB-related activities and its ability to describe how these domestic resources will complement the activities in the proposed 2018–2020 implementation period of the grants.
    
    <strong>Issues and concerns</strong>
    
    The TRP raised several issues when it reviewed India’s TB funding request. Some were addressed during grant making, while others will be taken up during grant implementation. Some of these issues are described below.
    
    <strong>Human rights and gender barriers.</strong> In its funding request, the country coordinating mechanism (CCM) highlighted that gender, social and cultural barriers hinder access to services by TB patients. However, the TRP said, the request did not include interventions to address these barriers. The CCM responded that the government has developed a Patient Charter that outlines the rights and responsibilities of people with TB. The Charter is a tool to empower TB patients and their families to make the relationship with health care providers mutually beneficial, the CCM said. In addition, special sensitization sessions will be conducted to brief patients about their rights. To address social and cultural barriers to accessing TB services, the CCM said, the program plans to conduct active case finding in high-risk and vulnerable populations, which include migrants, slum dwellers and tribal populations.
    
    <strong>Sustainability of technical assistance and use of consultants. </strong>A concern raised by the TRP was that the funding request did not include a plan to integrate into the work of the national program the technical assistance which India has been receiving through a network of technical assistance consultants funded by the Global Fund. The assistance received to date includes planning, monitoring and implementation management. The GAC said that funding from external donors to cover the costs of these consultants is not sustainable and recommended that these costs be covered fully by the government by the end of this grant period. The CCM agreed to gradually reduce the number of technical consultants over the next three years.
    
    <strong>Program management costs. </strong>The TRP considered the staff costs under the program management module to be very high, which, it noted, has implications regarding long-term sustainability. The TRP recommended that the CCM and the Global Fund Secretariat carefully review grant management costs for each PR to avoid duplication and disproportionate amounts. The grant documents don’t say precisely how this issue was resolved, except that the GAC expressed satisfaction with the detailed budget reviews and said that the program management costs are now optimized.
    
    <strong>Patient support to improve TB outcomes</strong>. The TRP noted that initiatives relating to support for MDR-TB patients were mainly included in the PAAR. It said that results from a few pilot projects in India provided enough evidence to demonstrate the effectiveness of patient support in ensuring treatment adherence. The TRP recommended that this intervention be moved from the PAAR to the within-allocation budget. Changes made to the within-allocation budget during grant-making as a result of efficiencies and other decisions resulted in 40% of the costs of the patient support initiatives being covered. Additional funding could come from savings realized during grant-making.
    
    <strong>Loan buy-down to the World Bank</strong>
    
    As mentioned above, the PAAR included a request for $40.0 million to be provided as a buy-down for a large World Bank loan as part of a blended finance project (see <a href="http://www.aidspan.org/gfo_article/blended-finance-fresh-breath-innovation-global-fund">GFO article</a> for a description of blended finance). The plan is to use the loan financing to cover funding gaps for priority activities related to the missing one million TB cases; patient support incentives; and diagnostics and treatment for drug-resistant TB (DR-TB) cases. The CCM believes this investment will yield a 60% reduction in the annual number of missing TB cases by the end of 2020, and at least a 60% improvement in treatment outcomes among DR-TB patients. The TRP considered this request to be quality demand because it leverages substantial financial resources for TB programming in India. Following discussions with the Global Fund’s Audit and Finance Committee, the GAC agreed to register the loan buy-down as a high-priority need on the UQD Register.
    
    <strong>Co-financing</strong>
    
    In order for India to meet its co-financing requirements for its TB grant for the 2018–2020 implementation period, the government needs to invest $55.9 million more than the $149.0 million it committed in 2015–2017. The government said it will invest $740.0 million in the Revised National Tuberculosis Control Program. See Table 2 for a list of the program areas covered by this investment.
    
    <strong>Table 2: Breakdown of the Government of India’s investment
    in TB control ($ million)</strong>
    <table width="500">
    <tbody>
    <tr>
    <td width="268"><strong>Item</strong></td>
    <td width="95"><strong>Amount </strong></td>
    </tr>
    <tr>
    <td>TB drugs</td>
    <td>310.0 m</td>
    </tr>
    <tr>
    <td>Diagnostics</td>
    <td>156.0 m</td>
    </tr>
    <tr>
    <td>Human resources</td>
    <td>146.0 m</td>
    </tr>
    <tr>
    <td>Patient support</td>
    <td>44.0 m</td>
    </tr>
    <tr>
    <td>Pooled Procurement Mechanism (PPM)</td>
    <td>31.0 m</td>
    </tr>
    <tr>
    <td>Supervision and monitoring</td>
    <td>36.0 m</td>
    </tr>
    <tr>
    <td>Program management</td>
    <td>17.0 m</td>
    </tr>
    <tr>
    <td><strong>Total</strong></td>
    <td><strong>740.0 m</strong></td>
    </tr>
    </tbody>
    </table>
    &nbsp;
    
    banner => string (106) "https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-1...
    $value[3]['banner']
    https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16-at-10.07.45-AM-1024x576.jpeg
    
    publication_date => string (19) "2018-02-06 17:23:51"
    $value[3]['publication_date']
    updated_at => string (19) "2025-04-21 01:02:23"
    $value[3]['updated_at']
    tags => string (199) "Sub Issue, technical Review Panel, india, technical assistance, human rights...
    $value[3]['tags']
    Sub Issue, technical Review Panel, india, technical assistance, human rights, gender, private sector, TRP, GAC, Blended finance, PAAR, prioritized above allocation request, Grants approvals committee
    
    status => string (1) "0"
    $value[3]['status']
    user_id => string (1) "2"
    $value[3]['user_id']
    featured_image => string (32) "http://aidspan.org:8080/?p=12994"
    $value[3]['featured_image']
    subtittle => string (44) " India has ambitious goal to end TB by 2025 "
    $value[3]['subtittle']
    comments => null
    $value[3]['comments']
    translation_link => null
    $value[3]['translation_link']
    translation_language => string (7) "English"
    $value[3]['translation_language']
    post_type_id => string (4) "4977"
    $value[3]['post_type_id']
    issue_no_id => string (3) "759"
    $value[3]['issue_no_id']
    article_no => string (1) "4"
    $value[3]['article_no']
    istranslated => string (1) "0"
    $value[3]['istranslated']
    isReviewed => string (1) "2"
    $value[3]['isReviewed']
    views => string (2) "17"
    $value[3]['views']
    post_name => string (65) "strong-role-for-private-sector-in-global-funds-tb-grants-to-india"
    $value[3]['post_name']
    isIndexed => string (1) "1"
    $value[3]['isIndexed']
    4 => array (24)
    $value[4]
    article_id => string (5) "12982"
    $value[4]['article_id']
    author => string (16) "David Garmaise "
    $value[4]['author']
    David Garmaise
    
    
    tittle => string (89) "Challenges remain in the "inherent structure and paradigm" of the Global Fun...
    $value[4]['tittle']
    Challenges remain in the "inherent structure and paradigm" of the Global Fund, study says
    
    abstract => UTF-8 string (491) "ABSTRACT A study just published in the journal Globalization and Health says...
    $value[4]['abstract']
    ABSTRACT
    
    A study just published in the journal Globalization and Health says that despite the reforms associated with the new funding model, challenges remain in the “inherent structure and paradigm” of the Global Fund. The lack of country offices has many negative downstream effects, the researchers said, including having to rely on in-country partners, and ineffective coordination of in-country activities. Most of the interviews conducted for the study were done in late 2013.
    
    
    body => UTF-8 string (8736) "Despite the reforms that are associated with the new funding model (NFM), ch...
    $value[4]['body']
    Despite the reforms that are associated with the new funding model (NFM), challenges remain “in the inherent structure and paradigm of the Global Fund.” The lack of country offices has many negative downstream effects, including having to rely on in-country partners, and ineffective coordination of in-country activities.
    
    These are some of the main conclusions of a study conducted by a team of researchers, led by Ashley Warren, from the Swiss Tropical and Public Health Institute and other institutions in Switzerland and <a href="https://globalizationandhealth.biomedcentral.com/articles/10.1186/s12992-017-0308-7">published</a> in the journal <em>Globalization and Health</em> in December 2017.
    
    The objective of the research was to understand how the Global Fund was experienced by key stakeholders in Maputo, Mozambique; and how recent reforms were experienced by stakeholders in Mozambique as well as by Global Fund stakeholders in Geneva, Switzerland. The data was collected as part of a larger study on the influence of emerging donors in health development.
    
    Thirty-eight interviews –– all but one done face-to-face –– were conducted with persons based in Maputo and Geneva. The Maputo respondents included local fund agents, country coordinating mechanisms, principal recipients (PRs) and sub-recipients. The Geneva respondents included staff of the Secretariat and members of the Board. Multilateral and bilateral partners, some based in Maputo and some based in Geneva, also participated.
    
    <strong><em>Editor’s note: </em></strong><em>In interpreting the results of the study, there is a serious limitation: Even though the study results were only recently published, most of the interviews were conducted over four years ago, in late 2013 (five Geneva interviews were conducted in mid-2015). Nevertheless, we feel that the study raises some interesting issues.</em>
    
    <strong>Country teams</strong>
    
    The study found that because of weak managerial and absorptive capacity in Mozambique, more oversight is required than is afforded by country team visits. Respondents said that country teams were over-worked and, therefore, sometimes unsuccessful as the channel for communication; that too much depends on one individual, the fund portfolio manager (FPM); and that the country teams are out of touch with the realities on the ground.
    <table width="265">
    <tbody>
    <tr>
    <td colspan="7" width="257"><strong>“</strong>The Global Fund does not put things on their website to communicate widely with stakeholders, including at the country level. They rely on fund portfolio managers and people on the country team.”
    
    &nbsp;
    
    –– Civil society respondent</td>
    </tr>
    </tbody>
    </table>
    One in-country respondent said that “the availability of expertise within the team is country-dependent. … Personnel are over-worked and over-extended and, as a result, it is not uncommon for them to take extended leave. This has caused detrimental gaps in communication.”
    
    Although most respondents said that increased country visits under the NFM were a good thing, one Secretariat staffer took a contrarian view: “Countries also complain that country teams come too often. There is not enough time to make progress between visits, they are constantly working for the next visit, and this increases the time stress.”
    
    <strong>In-country coordination</strong>
    
    The study found that although decision-makers in Geneva recognize in-country coordination as vital to successful implementation, and other actors in-country would welcome Global Fund engagement, to date there are no institutional requirements for formalized coordination. At the time of the interviews, the researchers said, the Fund had no consistent representation in any in-country coordination groups despite a focus on performance-based financing (PBF).
    
    Mozambique has a Health Partners Group that meets monthly and brings together all health sector supporters, including representatives of civil society. In addition, the researchers said, many coordinating bodies have been created as a result of the country’s absorption challenges. These include the G19, a group of bilateral donors who provide sector-wide support and coordinate among themselves, the National AIDS Council, and NAIMA+, a network of NGOs working on HIV and health.
    
    “However, as there is no country presence, the Global Fund itself doesn’t participate in coordination bodies,” the researchers said. “Engagement with the Health Partners Group would greatly enhance the Global Fund’s understanding of country-level activities as this coordination body is a clearing house of what each partner is doing.”
    
    <strong>Partnerships</strong>
    
    In-country partners provide much needed support for Global Fund recipients, the researchers said, “but roles, responsibilities, and accountability must be clearly defined for a successful long-term partnership.”
    
    One Secretariat staffer put it this way: “The big problem has been basically from the creation of the Fund that technical partners are very important; they are the ones who are present on the ground … And many of the countries depend on the technical assistance and the guidance from these technical partners. … It works already quite well in some countries and less well in others. And the challenge is to get more consistent … quality of technical assistance….”
    
    The researchers stated that the degree of external support required for the Global Fund’s success has raised a debate on accountability. “To whom are the providers of TA … accountable?” they asked. One Board member said that “the most difficult part of the Global Fund model is the partnership model. [The Fund] depends on the support of partners and yet it doesn’t have any say over the partners. … I think we need to figure out what that relationship should be.”
    
    <strong>Performance-based financing</strong>
    
    Respondents in both Mozambique and Switzerland voiced concerns about the combination of (a) weak country presence, oversight and guidance on the part of the Global Fund Secretariat; and (b) stringent and cumbersome requirements for monitoring and evaluation (M&amp;E) linked to PBF. The researchers said that the principles of PBF are better understood in Geneva than in Maputo where they appear to be overshadowed by the administrative burden placed on PRs. “Until countries take full ownership of this process and are empowered by the intended purpose of performance-based financing,” the researchers said, “PBF will likely continue to be perceived as an administrative burden and identified as a siloed donor demand.”
    
    <strong>Ability to reform</strong>
    
    Multiple respondents referred to the Global Fund’s ability to reform as one of the defining characteristics of the organization. “[The] Global Fund has proved in 10 years to have the ability to renew itself,” said one respondent from a multilateral organization.
    
    “Overall, the Global Fund is learning from its mistakes,” said a Board member. “[It] completed its reformation in one year. It is a ‘learning organization’; it is navigating through a field of opposing forces and is highly committed to its mission.”
    
    Although many of the reforms have not yet addressed concerns about the Global Fund’s overall model, the researchers said, respondents seemed to be looking beyond this initial transformation. They clarified that although their comments were critical of the Global Fund, they admire the Fund’s work.
    
    <strong><em>Aidspan Comment:</em></strong>
    
    <em>Not having a country presence has obvious drawbacks, as the researchers indicated. What the researchers did not mention in their article is that there would be serious costs associated with having a country presence. </em>
    
    <em>When asked to comment on a draft of this article, Seth Faison, Director of Communications, pointed out that, from its founding, the Global Fund has avoided country presence for two overarching reasons: First, the Fund believed in the principle of country ownership where local experts are the ones who can best lead implementation work. Second, the Fund believed that limiting all staff to one office in Geneva would maximize the amount of funding available for grants and would minimize operating expenses. </em>
    
    <em>“If the Global Fund established an in-country presence in countries with significant grants,” Faison said, “it would likely require increasing operating expenses by a significant margin. How much exactly would obviously depend on how much country presence. But allowing some country presence would likely lead to requests for more.”</em>
    
    banner => string (106) "https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-1...
    $value[4]['banner']
    https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16-at-10.07.45-AM-1024x576.jpeg
    
    publication_date => string (19) "2018-02-06 17:14:28"
    $value[4]['publication_date']
    updated_at => string (19) "2025-04-21 00:58:55"
    $value[4]['updated_at']
    tags => string (106) "Sub Issue, performance based funding, NFM, New funding model, country teams,...
    $value[4]['tags']
    Sub Issue, performance based funding, NFM, New funding model, country teams, partnerships, Country offices
    
    status => string (1) "0"
    $value[4]['status']
    user_id => string (1) "2"
    $value[4]['user_id']
    featured_image => string (32) "http://aidspan.org:8080/?p=12982"
    $value[4]['featured_image']
    subtittle => string (63) " "Lack of country offices has many negative downstream effects "
    $value[4]['subtittle']
    comments => null
    $value[4]['comments']
    translation_link => null
    $value[4]['translation_link']
    translation_language => string (7) "English"
    $value[4]['translation_language']
    post_type_id => string (4) "4977"
    $value[4]['post_type_id']
    issue_no_id => string (3) "759"
    $value[4]['issue_no_id']
    article_no => string (1) "5"
    $value[4]['article_no']
    istranslated => string (1) "0"
    $value[4]['istranslated']
    isReviewed => string (1) "2"
    $value[4]['isReviewed']
    views => string (2) "21"
    $value[4]['views']
    post_name => string (86) "challenges-remain-in-the-inherent-structure-and-paradigm-of-the-global-fund-...
    $value[4]['post_name']
    challenges-remain-in-the-inherent-structure-and-paradigm-of-the-global-fund-study-says
    
    isIndexed => string (1) "1"
    $value[4]['isIndexed']
    5 => array (24)
    $value[5]
    article_id => string (5) "12988"
    $value[5]['article_id']
    author => string (21) "Kataisee Richardson "
    $value[5]['author']
    Kataisee Richardson
    
    
    tittle => string (103) "Global Fund grant will expand HIV prevention, care and treatment services fo...
    $value[5]['tittle']
    Global Fund grant will expand HIV prevention, care and treatment services for key populations in Guyana
    
    abstract => UTF-8 string (383) "ABSTRACT When it reviewed Guyana’s HIV program continuation funding request,...
    $value[5]['abstract']
    ABSTRACT
    
    When it reviewed Guyana’s HIV program continuation funding request, the Technical Review Panel said that the request built on lessons learned from Guyana’s most recent programming for key populations. Issues raised by the panel were either fully or at least partially addressed during grant-making. The Global Fund Board recently approved funding for the HIV grant.
    
    
    body => UTF-8 string (11405) "Among the batch of grants recently approved by the Board was an HIV grant to...
    $value[5]['body']
    Among the batch of grants recently approved by the Board was an HIV grant to Guyana. The proposed timeframe for the grant was 1 January 2018 to 31 December 2020. The principal recipient (PR) is the Ministry of Health, which also managed Guyana’s previous HIV grant.
    
    In 2017, Guyana submitted a program continuation request for its HIV component. Program continuation requests are meant to simplify the funding request process for well-performing grants that have been recently reviewed by the Technical Review Panel (TRP) and do not require significant programmatic overhaul.
    
    The epidemiological context and geographic focus of interventions remain the same when compared to the previous request. The country continues to experience a mixed epidemic that disproportionately affects key and vulnerable populations –– men who have sex with men (MSM), female sex workers, transgender people, miners and loggers. The strategic focus was on increasing impact by implementing mixed strategies to intensify the linkages to treatment and instituting a “treat all” policy.
    
    According to the TRP, the proposed program built upon the successes and lessons learned from Guyana’s most recent programming for key populations, and aligned with the mid-term evaluation and revision of the National Strategic Plan (NSP) (HIVISION 2020); 2020 HIV cascade projections; the Center for Disease Control’s (CDC’s) Allocative Efficiency and Program Effectiveness Study; and a 2016–2017 comprehensive reprogramming request to ensure alignment with Guyana’s goal of eliminating AIDS and its negative social and economic impacts on the population.
    
    The amount approved for the grant was $4,539,985, which is slightly lower than the program split amount. The difference will be reallocated to the TB component. There was no prioritized above allocation request (PAAR). The table below provides an overview of the country’s funding landscape for HIV for the 2018–2020 period.
    <div align="center">
    <p align="center"><strong>Table: Overview of Guyana’s funding landscape in 2018–2020 ($ million)</strong></p>
    
    <table border="1" width="604" cellspacing="0" cellpadding="0">
    <tbody>
    <tr>
    <td colspan="4" valign="top">
    <div><strong>Component: HIV</strong></div></td>
    </tr>
    <tr>
    <td valign="top" width="230">
    <div>
    <div align="right"><strong>Estimated funding need for program:</strong></div>
    </div></td>
    <td valign="top" width="87">
    <div class="rteright">21 m *</div></td>
    <td valign="top" width="100">
    <div>
    <p align="center"><strong>As % of
    funding need</strong></p>
    
    </div></td>
    <td valign="top" width="177">
    <div>
    <div align="center"><strong>Change vs. previous period</strong></div>
    </div></td>
    </tr>
    <tr>
    <td valign="top">
    <div align="left">Total domestic resources</div></td>
    <td valign="top">
    <div align="center">6.9 m **</div></td>
    <td valign="top">
    <div align="center">33%</div></td>
    <td valign="top">
    <div align="center">Increase</div></td>
    </tr>
    <tr>
    <td valign="top">
    <div align="left">Total external resources (non-GF)</div></td>
    <td valign="top">
    <div align="center">7.2 m</div></td>
    <td valign="top">
    <div align="center">34%</div></td>
    <td valign="top">
    <div align="center">Increase</div></td>
    </tr>
    <tr>
    <td valign="top">
    <div align="left">Total Global Fund resources</div></td>
    <td valign="top">
    <div align="center">4.5 m</div></td>
    <td valign="top">
    <div align="center">22%</div></td>
    <td valign="top">
    <div align="center">Slight Increase</div></td>
    </tr>
    <tr>
    <td valign="top">
    <div align="left">Total resources available</div></td>
    <td valign="top">
    <div align="center">18.6 m</div></td>
    <td valign="top">
    <div align="center">88%</div></td>
    <td valign="top">
    <div align="center">Increase</div></td>
    </tr>
    <tr>
    <td valign="top">
    <div>
    <div align="left">Unmet need gap</div>
    </div></td>
    <td valign="top">
    <div align="center">2.4 m</div></td>
    <td valign="top">
    <div align="center">12%</div></td>
    <td valign="top">
    <div align="center">Decrease</div></td>
    </tr>
    </tbody>
    </table>
    &nbsp;
    
    </div>
    Notes:
    <p class="style1">*The new NSP is currently being costed and there is a sustainability committee that is looking into defining the areas that will be covered by domestic funding.</p>
    <span class="style1">** Data in the funding landscape table may be modified in the coming months to ensure consistency across years and in data reported by the Ministry of Finance and the Ministry of Health to the Global Fund.</span>
    
    <strong>Notable strengths</strong>
    
    The TRP considered the request to be technically sound and appropriate. It is aligned with the NSP and the 90-90-90 targets, the TRP said, and aims to implement the “treat all” approach and follow the World Health Organization (WHO) guidelines. The TRP found the program to be clear and well targeted, and deemed that it adequately addressed concerns raised by the TRP regarding the 2014–2016 grant.
    
    The request takes into account the need to improve linkage to care for new persons newly diagnosed, antiretroviral therapy (ART) coverage, and retention of people living with HIV, the TRP observed. The request also notes the need to improve the supervision and program quality assessment of prevention strategies for key populations, and the proportion of miners and loggers tested for HIV. Finally, the TRP said, the funding request highlights the HIV program’s significant successes to date, such as increasing the proportion of pregnant women living with HIV receiving ART from 79% to 100%; ensuring that that all people diagnosed with HIV are screened for TB; and ensuring that 86% of co-infected TB/HIV patients receive ART during TB treatment.
    
    In addition, the program continuation request outlined several key human rights and legal challenges that decrease equal access to health services for key populations; and suggested that the recommendations of a recent National Dialogue on HIV and the law will serve as strategic guidelines to develop the activities required to address those challenges.
    
    <strong>Weaknesses, gaps and action steps</strong>
    
    The TRP identified four issues pertaining to the funding request. The issues were discussed by the Secretariat and the PR during grant-making. Two were cleared and the remaining two were partially addressed. Below we summarize each issue as well as the outcome.
    
    <strong>Not enough focus on transgender people.</strong> While transgender people have the highest HIV prevalence rate among identified key populations (8.4%), they were not addressed as a distinct population (rather, they were included with MSM).
    
    <em>Outcome:</em> The issue was cleared by the TRP. The MOH submitted a revised strategy that contained new activities specifically for transgender people, including gathering baseline data for evidence-based decision-making and increasing the coverage area. This change resulted in increased targets in the performance framework and created a need to revise the budget to align with the additional interventions.
    
    <strong>Weaknesses in procurement and supply chain management. </strong>There were weaknesses in the procurement and supply chain management systems that resulted in delays in the delivery of program commodities.
    
    <em>Outcome:</em> The issue was partially addressed. The Grant Approvals Committee (GAC) said that the MOH understands the systemic supply issues and is currently creating a procurement master plan to address key issues in the system. The GAC added that there was a proposal to include a condition precedent in the grant confirmation form requiring that stock levels and consumption data be reviewed before procurement orders are made.
    
    <strong>Lack of sustainability planning</strong>. Although Guyana has seen a 33% increase in domestic investment for HIV over the last period, it will soon face a substantial reduction in the availability of external funds to support the HIV response. The TRP said that Guyana needed to have a comprehensive discussion of sustainability issues.
    
    <em>Outcome:</em> This issue is partially addressed by the launch of a committee tasked with drafting Guyana’s sustainability strategy by June 2018.
    
    <strong>Treatment target plans not ambitious enough. </strong>The TRP highlighted that treatment scale-up targets are very low. It said that Guyana must intensify approaches to prevention in key populations –– especially MSM, transgender people and sex workers, all of whom are disproportionately affected by the HIV epidemic. Otherwise, the TRP said, the cost-effectiveness and impact of the program may be compromised.
    
    <em>Outcome:</em> The issue was cleared during grant-making. The treatment targets were reviewed and more ambitious targets were submitted.
    
    <strong>Sustainability</strong>
    
    In the opinion of the TRP, Guyana has demonstrated a commitment to its HIV response by progressively increasing its investments in operating costs, human resources and medicines in order to maintain or scale up programming. This increase in domestic spending is intended to offset funding reductions from PEPFAR and the Global Fund, which the TRP said were in the order of 30% and 50% respectively.
    
    As mentioned above, Guyana has launched a sustainability committee, comprised of government representatives from the MOH and the Ministry of Finance, civil society and other partners, to spearhead the discussion on sustainability and transition and deliver a sustainability and transition plan. The committee is supported by a consultant from Health Financing and Governance (HFG) Project, a USAID initiative. Guyana has also implemented a feasibility study on social contracting and will be conducting a transition readiness assessment this year.
    
    <strong>Reactions from civil society</strong>
    
    The TRP determined that the development of the program continuation request had been inclusive and had consolidated input from key population representatives. This sentiment was echoed by Devanand Milton, a transgender representative who is vice-chair of the CCM. She said that key populations and civil society were fully engaged in the process.
    
    “Civil society organizations were given a small pot of money ($2,000 each) to conduct consultation sessions with their constituencies and report feedback to the CCM on challenges and recommendations,” Milton said. “I was invited by the National AIDS Program secretariat manager to submit recommendations that the transgender constituency be included in the proposal.”
    
    However, Joel Simpson, managing director of Society Against Sexual Orientation Discrimination (SASOD) was critical of the funding request.
    
    “It’s great that Guyana received more money from the Global Fund to fund the HIV response,” Simpson said, “but if the same ways of working persist, the Global Fund will continue to fail at reducing the HIV burden among key populations. Global Fund processes are caught up in government bureaucracies that are generally unresponsive to the human rights and health needs of key populations.”
    
    Simpson added: “Civil society, much less key populations, do not play any meaningful role in decision-making processes. The country coordinating mechanism is dominated by the government with the support of the international agencies. The politics is beyond most of us in civil society.”
    
    banner => string (106) "https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-1...
    $value[5]['banner']
    https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16-at-10.07.45-AM-1024x576.jpeg
    
    publication_date => string (19) "2018-02-06 17:19:51"
    $value[5]['publication_date']
    updated_at => string (19) "2025-04-20 23:09:54"
    $value[5]['updated_at']
    tags => string (138) "Sub Issue, technical Review Panel, HIV, Key populations, TRP, Guyana, Fundin...
    $value[5]['tags']
    Sub Issue, technical Review Panel, HIV, Key populations, TRP, Guyana, Funding request, program continuation, GAC Grant Approvals Committee
    
    status => string (1) "0"
    $value[5]['status']
    user_id => string (1) "2"
    $value[5]['user_id']
    featured_image => string (32) "http://aidspan.org:8080/?p=12988"
    $value[5]['featured_image']
    subtittle => string (73) " Program continuation request outlined human rights and legal challenges "
    $value[5]['subtittle']
    comments => null
    $value[5]['comments']
    translation_link => null
    $value[5]['translation_link']
    translation_language => string (7) "English"
    $value[5]['translation_language']
    post_type_id => string (4) "4977"
    $value[5]['post_type_id']
    issue_no_id => string (3) "759"
    $value[5]['issue_no_id']
    article_no => string (1) "6"
    $value[5]['article_no']
    istranslated => string (1) "0"
    $value[5]['istranslated']
    isReviewed => string (1) "2"
    $value[5]['isReviewed']
    views => string (2) "29"
    $value[5]['views']
    post_name => string (102) "global-fund-grant-will-expand-hiv-prevention-care-and-treatment-services-for...
    $value[5]['post_name']
    global-fund-grant-will-expand-hiv-prevention-care-and-treatment-services-for-key-populations-in-guyana
    
    isIndexed => string (1) "1"
    $value[5]['isIndexed']
    6 => array (24)
    $value[6]
    article_id => string (5) "13046"
    $value[6]['article_id']
    author => string (16) "David Garmaise "
    $value[6]['author']
    David Garmaise
    
    
    tittle => string (74) "The Global Fund's strategic initiatives focus on deliverables and outcomes"
    $value[6]['tittle']
    abstract => UTF-8 string (318) "ABSTRACT All but one of the Global Fund’s 14 strategic initiatives are now i...
    $value[6]['abstract']
    ABSTRACT
    
    All but one of the Global Fund’s 14 strategic initiatives are now in the implementation phase. The Secretariat says that each initiative has a “sharp focus” on deliverables and outcomes. The strategic initiatives, which have a budget of $194 million, are part of the Fund’s catalytic investments.
    
    
    body => UTF-8 string (7781) "In operationalizing its strategic initiatives, the Secretariat has ensured t...
    $value[6]['body']
    In operationalizing its strategic initiatives, the Secretariat has ensured that each initiative has a “sharp focus” on deliverables and outcomes, with strong accountability for delivery, a spokesperson for the Secretariat says.
    
    “In all Strategic Initiatives, release of the funds is contingent on the implementing entities fulfilling deliverables that are objectively verifiable and are on the critical path for delivery on the outcomes,” Peter Hansen, Head of the Technical Advice and Partnerships Unit, told Aidspan.
    
    The strategic initiatives are one of three streams of funding in the $800 million catalytic investments pool. Strategic investments have a budget of $194 million. The other two streams –– multi-country approaches and matching funds –– have budgets of $250 million and $356 million, respectively. (The breakdown of the $800 million has changed a few times since the catalytic investments were first announced.)
    
    There are 14 separate strategic initiatives (see the table for details).
    
    <strong>Table: List of Global Fund’s strategic initiatives</strong>
    <table width="700">
    <tbody>
    <tr>
    <td width="611"><strong>Name and Objective</strong></td>
    <td width="92"><strong>Total budget
    ($ million)</strong></td>
    <td width="87"><strong>Approved
    by GAC
    ($ million)</strong></td>
    </tr>
    <tr>
    <td><strong>TB: Finding Missing TB Cases</strong>
    Address specific barriers to finding missing tuberculosis cases; develop innovative approaches to accelerate case finding; scale up tools and approaches</td>
    <td>10</td>
    <td>10</td>
    </tr>
    <tr>
    <td><strong>MALARIA 1: Malaria Elimination</strong>
    Accelerate efforts in 21 countries to achieve the Global Technical Strategy for Malaria to eliminate malaria in at least 35 countries by 2030</td>
    <td>7</td>
    <td>7</td>
    </tr>
    <tr>
    <td><strong>MALARIA 2: Catalyzing Market Entry of New LLINs</strong>
    Introduce new technologies in Africa to counter the threat of insecticide resistance (in conjunction with $33 million matching funds for catalyzing market entry of new LLINs)</td>
    <td>2</td>
    <td>1</td>
    </tr>
    <tr>
    <td><strong>MALARIA 3: Piloting Introduction of RTS S,S Malaria Vaccine</strong>
    Contribute to the development of an updated WHO policy recommendation on the use of the RTS,S/AS01 malaria vaccine in young children in sub-Saharan Africa</td>
    <td>15</td>
    <td>15</td>
    </tr>
    <tr>
    <td><strong>RSSH 1: Community, Rights and Gender</strong>
    Build upon progress made in strengthening engagement of civil society and communities most affected by the three diseases in Global Fund processes</td>
    <td>15</td>
    <td>15</td>
    </tr>
    <tr>
    <td><strong>RSSH 2: Sustainability, Transition and Efficiency</strong>
    Accelerate the implementation of Global Fund’s Sustainability, Transition and Co-Financing Policy</td>
    <td>15</td>
    <td>15</td>
    </tr>
    <tr>
    <td><strong>RSSH 3: Technical Support, South to South, Peer Review and Learning</strong>
    Support health systems and effective HIV, TB and malaria programming</td>
    <td>14</td>
    <td>14</td>
    </tr>
    <tr>
    <td><strong>RSSH 4: Data Systems, Generation and Use</strong>
    Strengthen health information systems and surveillance; enable country systems to collect, report on and use data; support program impact and thematic evaluations and epidemiological reviews</td>
    <td>20</td>
    <td>20</td>
    </tr>
    <tr>
    <td><strong>PSM 1: Diagnosis and Planning</strong>
    Strengthen countries’ diagnosis and planning; support countries to use methodologies and tools to assess procurement and SC systems; support countries in data analysis and systems planning</td>
    <td>20</td>
    <td>20</td>
    </tr>
    <tr>
    <td><strong>PSM 2: Innovation Challenge Fund</strong>
    Support research, development and testing of SC system models; support development of new tools and guidance for evaluating SC systems; promote adoption of modern SC technologies</td>
    <td>10</td>
    <td>0</td>
    </tr>
    <tr>
    <td><strong>PSM 3: Developing local resources</strong>
    Support capacity building in countries for development and implementation of national guidance and best practices PSM; support inter-country collaboration and sharing</td>
    <td>12</td>
    <td>12</td>
    </tr>
    <tr>
    <td><strong>PSM 4: Pre-Qualification of Medicines and <em>In Vitro</em> Diagnostics</strong>
    Ensure products international quality, safety and performance standards</td>
    <td>12</td>
    <td>2</td>
    </tr>
    <tr>
    <td><strong>TERG: Prospective Country Evaluations</strong>
    Document the results of Global Fund-funded programs and share lessons learned</td>
    <td>22</td>
    <td>22</td>
    </tr>
    <tr>
    <td><strong>Emergency Fund</strong>
    Support the provision and continuity of essential prevention and treatment services for HIV, TB and malaria during emergency situations that cannot be funded simply through the reprogramming of existing grants</td>
    <td>20</td>
    <td>N/A</td>
    </tr>
    <tr>
    <td><strong>Total</strong></td>
    <td><strong>194</strong></td>
    <td><strong>153</strong></td>
    </tr>
    </tbody>
    </table>
    &nbsp;
    
    Of the total budget of $194 million, initiatives totaling $153 million have been approved by the Grant Approvals Committee (GAC) and are in the implementation phase. One initiative –– the <strong>Innovation Challenge Fund</strong> –– is still under development. The $20 million Emergency Fund does not require GAC approval; these funds go through the Executive Grant Management Committee and are administered by the Grant Management Division.
    
    Of the $194 million total, just under $50 million is being administered by the World Health Organization (WHO) through a Cooperative and Financial Agreement, which was <a href="https://www.theglobalfund.org/en/news/2017-12-01-who-and-global-fund-sign-cooperation-agreements/">announced</a> by the Global Fund. When it approved the funding for strategic initiatives, the Board mandated that for three of the initiatives –– <strong>Finding Missing TB Cases</strong>, <strong>Piloting Introduction of RTS S,S Malaria Vaccine</strong>, and <strong>Pre-Qualification of Medicines and <em>In Vitro</em> Diagnostics</strong> –– the funding be given to the WHO. The Secretariat has asked the WHO to also provide technical support for the <strong>Malaria Elimination</strong> strategic initiative as well as parts of three RSSH strategic initiatives.
    
    The Global Fund has signed agreements with the WHO, Stop TB and Roll Back Malaria. In the case of two strategic initiatives –– <strong>Malaria Elimination</strong> and <strong>Finding Missing TB Cases</strong> –– the agreements link financing directly to measurable improvements in health outcomes at country level.  For <strong>Malaria Elimination</strong>, the WHO will receive the funding in full only if the countries identified as priority achieve measurable milestones on the path to eliminating malaria, based on reductions in the number of malaria cases. For <strong>Finding Missing TB Cases</strong>, the WHO and Stop TB will receive the funding in full only if an additional 1.5 million missing TB cases are found in the 13 countries that are part of the initiative (Bangladesh, DRC, India, Indonesia, Kenya, Mozambique, Myanmar, Nigeria, Pakistan, Philippines, South Africa, Tanzania and Ukraine).
    
    The first progress updates from the technical partners are expected at the end of this month.
    
    <em>Aidspan has reported separately on the Community, Rights and Gender Strategic Initiative </em><a href="http://www.aidspan.org/gfo_article/steady-progress-human-rights-and-gender-activities-global-fund%E2%80%99s-strategy-there-have"><em>here</em></a><em> and </em><a href="http://www.aidspan.org/gfo_article/six-regional-platforms-communication-and-coordination-begin-work-part-global-fund%E2%80%99s-crg"><em>here</em></a><em>.</em>
    
    banner => string (106) "https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-1...
    $value[6]['banner']
    https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16-at-10.07.45-AM-1024x576.jpeg
    
    publication_date => string (19) "2018-02-06 17:50:15"
    $value[6]['publication_date']
    updated_at => string (19) "2025-04-20 19:18:10"
    $value[6]['updated_at']
    tags => string (106) "Sub Issue, WHO, Technical partners, World Health Organization, catalytic inv...
    $value[6]['tags']
    Sub Issue, WHO, Technical partners, World Health Organization, catalytic investments, Strategic initiative
    
    status => string (1) "0"
    $value[6]['status']
    user_id => string (1) "2"
    $value[6]['user_id']
    featured_image => string (32) "http://aidspan.org:8080/?p=13046"
    $value[6]['featured_image']
    subtittle => string (67) " All but one of the 14 initiatives are in the implementation phase "
    $value[6]['subtittle']
    comments => null
    $value[6]['comments']
    translation_link => null
    $value[6]['translation_link']
    translation_language => string (7) "English"
    $value[6]['translation_language']
    post_type_id => string (4) "4977"
    $value[6]['post_type_id']
    issue_no_id => string (3) "759"
    $value[6]['issue_no_id']
    article_no => string (1) "7"
    $value[6]['article_no']
    istranslated => string (1) "0"
    $value[6]['istranslated']
    isReviewed => string (1) "2"
    $value[6]['isReviewed']
    views => string (2) "13"
    $value[6]['views']
    post_name => string (73) "the-global-funds-strategic-initiatives-focus-on-deliverables-and-outcomes"
    $value[6]['post_name']
    isIndexed => string (1) "1"
    $value[6]['isIndexed']
    7 => array (24)
    $value[7]
    article_id => string (5) "12945"
    $value[7]['article_id']
    author => string (16) "David Garmaise "
    $value[7]['author']
    David Garmaise
    
    
    tittle => string (61) "New partnerships involving the Global Fund announced at Davos"
    $value[7]['tittle']
    abstract => string (525) "ABSTRACT The annual meeting of the World Economic Forum in Davos, Switzerlan...
    $value[7]['abstract']
    ABSTRACT
    
    The annual meeting of the World Economic Forum in Davos, Switzerland was the occasion for the announcement of several partnerships involving the Global Fund. The announcements included the launch of the HER (HIV Epidemic Response) initiative; a partnership between (RED) and Africans for Africa; and partnerships between the Global Fund and three global private companies. The partnership with one of these companies provoked a reaction from organizations concerned with the effects of alcohol on public health.
    
    
    body => UTF-8 string (15168) "The annual meeting of the World Economic Forum, held on 23–26 January 2018 i...
    $value[7]['body']
    The annual meeting of the World Economic Forum, held on 23–26 January 2018 in Davos, Switzerland, was the occasion for announcements of several new partnerships involving the Global Fund.
    
    The announcements included the launch of the HER initiative; a partnership between (RED) and A4A; and partnerships between the Global Fund and three global private companies. The partnership with one of these companies provoked a reaction from organizations concerned with the effects of alcohol on public health (see below).
    
    <strong>The HER initiative</strong>
    
    The Global Fund and several partners launched a new initiative to build private sector support for programs that address HIV in 13 African countries where adolescent girls and young women (AGYW) face disproportionate risk.
    
    Nearly 7,000 young women and girls are infected with HIV every week, many of them in East and Southern Africa. The 15–24-year-old population of Africa has doubled since 1990. In the hardest-hit countries, girls account for more than 80% of all new HIV infections among adolescents.
    
    According to a <a href="https://www.theglobalfund.org/en/news/2018-01-24-global-fund-and-partners-launch-her/">news release</a> from the Global Fund, incoming Executive Director Peter Sands announced the HER – HIV Epidemic Response – initiative at the Global Goals Gathering, which was part of the World Economic Forum.
    <table border="0" cellspacing="1" cellpadding="0" align="left">
    <tbody>
    <tr>
    <td><a href="http://aidspan.org/sites/default/files/HER.png" target="_blank" rel="noopener"><img src="http://aidspan.org/sites/default/files/HER.png" alt="" width="188" height="194" /></a></td>
    <td class="rtecenter" width="20"></td>
    </tr>
    </tbody>
    </table>
    “We have made incredible gains against AIDS over the past generation,” Sands said. “But we see a serious threat to that progress if we do not directly address the challenges faced by adolescent girls and young women.”
    
    Sands announced partner commitments from The Coca-Cola Company, Standard Bank, Unilever and ViiV Healthcare, as well as (RED)®, which will expand its operations in Africa. (For more on the partnerships with (RED) and Unilever, see below.)
    
    According to the news release, the HER initiative provides a platform for partners to contribute in a variety of ways, including the following:
    <ul>
     	<li>financial resources to accelerate the most impactful HIV prevention programs;</li>
     	<li>in-kind expertise to support countries to pilot new approaches and implement innovative programs tailored to meet the needs of AGYW;</li>
     	<li>support for HER Voice, a fund which helps ensure young women’s and girls’ voices are heard at key decision-making forums (see <a href="http://www.aidspan.org/gfo_article/new-fund-be-launched-support-meaningful-engagement-adolescent-girls-and-young-women">GFO article</a>); and</li>
     	<li>awareness raising with employees and customers.</li>
    </ul>
    <div></div>
    The Global Fund’s <a href="https://www.theglobalfund.org/en/her/">website</a> says that the HER initiative has set a target to reduce the number of new HIV infections among AGYW by 58% over the next five years in the 13 countries covered by the initiative. The countries are: Botswana, Cameroon, Lesotho, Kenya, Malawi, Mozambique, Namibia, Swaziland, South Africa, Tanzania, Uganda, Zimbabwe and Zambia.
    
    The initiative was inspired by the U.S. President’s Emergency Plan for AIDS Relief (PEPFAR) and the DREAMS Partnership, “which has led to greater global recognition of the scope of the challenge of reaching adolescent girls and young women to reduce their risk for HIV,” the website states.
    
    Over the next five years, the Global Fund is planning to raise additional resources to expand HIV prevention programs for AGYW. The HER Initiative aims to support the kinds of programs that can create lasting change for AGYW –– programs such as the following:
    <ul>
     	<li>comprehensive, adolescent-friendly programs that provide sexuality education, condoms and pre-exposure prophylaxis and HIV testing –­ all free from stigma and discrimination;</li>
     	<li>life skills, financial literacy and “know your rights” education which can empower girls and young women to be advocates for their own health and well-being; and</li>
     	<li>cash incentives, peer networks, mentors and other social protection programs –– including prevention of gender-based violence –– to support girls as they complete their education.</li>
    </ul>
    <div></div>
    +++++++++++++++
    
    <strong>Partnership between (RED) and A4A</strong>
    <table border="0" cellspacing="1" cellpadding="0" align="right">
    <tbody>
    <tr>
    <td class="rtecenter"></td>
    <td><a href="http://aidspan.org/sites/default/files/REDA4A.png" target="_blank" rel="noopener"><img src="http://aidspan.org/sites/default/files/REDA4A.png" alt="" width="137" height="137" /></a></td>
    </tr>
    </tbody>
    </table>
    (RED)® –– also known as (PRODUCT) RED –– announced a new operational partnership with Africans for Africa (A4A) to bring a number of new Africa-based companies into the fight against AIDS. The partnership will focus on engaging companies to generate money to fight HIV through the Global Fund.
    
    The announcement was made at the World Economic Forum by Deb Dugan, CEO of RED. Dugan said that (RED)’s expansion in Africa will be supported by its existing partners, The Coca-Cola Company and SAP.
    
    A (RED) <a href="https://www.prnewswire.com/news-releases/red-expands-its-innovative-business-model-to-accelerate-the-fight-to-end-aids-in-africa-300587737.html">news release</a> quotes Dugan as saying, “It’s been 12 years since (RED) was first announced here in Davos. With over $500 million contributed to the Global Fund and more than 110 million people impacted, (RED) is now embarking on its next major chapter –– using the power and ingenuity of African companies, organizations and consumers to help end AIDS.”
    
    Peter Sands said, “There is no more important time [than] now to engage the African economy in helping to end this epidemic for good. We’re so grateful to (RED) for continuously pushing in new directions, underscoring our public-private partnership to save millions of lives.”
    <table border="0" cellspacing="1" cellpadding="0" align="left">
    <tbody>
    <tr>
    <td><a href="http://aidspan.org/sites/default/files/AFA.png" target="_blank" rel="noopener"><img src="http://aidspan.org/sites/default/files/AFA.png" alt="" width="150" height="92" /></a></td>
    <td class="rtecenter"></td>
    </tr>
    </tbody>
    </table>
    <a href="http://africans4africa.com/home.php">Africans for Africa</a> is an African-driven social investment fund designed to generate investments that will accelerate the pace of sustainable development. Julie Essiam, A4A’s Founding Partner, said: “We’re very excited about our new partnership with (RED). It’s exactly the kind of smart, entrepreneurial model that suits African innovation. It is now more urgent than ever for us to use the power of the private sector to help us finish the AIDS fight on the continent, and around the world.”
    
    ++++++++++++++
    
    <strong>Partnerships with three global private companies</strong>
    
    Partnerships between the Global Fund and three of the world’s leading private companies in their fields –– Lombard Odier, HEINEKEN and Unilever –– were announced in Davos. Details were provided by Christoph Benn, the Global Fund’s Director of External Relations, in a “Voices” <a href="https://www.theglobalfund.org/en/blog/2018-01-26-from-davos-the-power-of-public-private-partnerships/">posting</a> on the Fund’s website –– and by the companies themselves in news releases posted on their websites.
    
    &nbsp;
    <table border="0" cellspacing="1" cellpadding="0" align="right">
    <tbody>
    <tr>
    <td class="rtecenter"></td>
    <td><a href="http://aidspan.org/sites/default/files/Lombard.png" target="_blank" rel="noopener"><img src="http://aidspan.org/sites/default/files/Lombard.png" alt="" width="191" height="89" /></a></td>
    </tr>
    </tbody>
    </table>
    Lombard Odier, a private banking and asset management company that originated in Switzerland, and the Global Fund announced a strategic partnership to create ways to help the private sector contribute to the work of the Fund, while addressing investors’ need to meet their financial goals. Among other things, the partnership will examine structures that allow investors to share a proportion of the gains they receive from putting their capital to work. Patrick Odier, Senior Managing Partner of the Lombard Odier Group <a href="https://www.lombardodier.com/contents/corporate-news/media-releases/2018/january/lombard-odier-and-the-global-fun.html">said,</a> “Investors no longer need to choose between doing well and doing good. It is becoming easier to meet both goals at the same time.”
    <table border="0" cellspacing="1" cellpadding="0" align="left">
    <tbody>
    <tr>
    <td><a href="http://aidspan.org/sites/default/files/Heineken.png" target="_blank" rel="noopener"><img src="http://aidspan.org/sites/default/files/Heineken.png" alt="" width="195" height="78" /></a></td>
    <td class="rtecenter"></td>
    </tr>
    </tbody>
    </table>
    The Global Fund and HEINEKEN, a global brewing company, entered into a partnership to fight infectious diseases in Africa. Benn said that HEINEKEN will lend its expertise in logistics and communications to support the Fund to better reach specific demographic groups that are most at risk of the three diseases. For example, HEINEKEN will pair supply chain experts with logistics planners at the Global Fund to share expertise in demand-forecasting and quality control during shipment. And locally, in countries in Africa, HEINEKEN will support efforts to improve the effectiveness of last-mile distribution, focusing on ensuring the right goods can reach health care facilities and patients in remote areas. This is already taking place in the Democratic Republic of Congo, South Africa and Nigeria, Benn said. HEINEKIN’s announcement can be found <a href="http://www.theheinekencompany.com/media/media-releases/press-releases/2018/01/2164014">here</a>.
    <table border="0" cellspacing="1" cellpadding="0" align="right">
    <tbody>
    <tr>
    <td class="rtecenter"></td>
    <td><a href="http://aidspan.org/sites/default/files/Unilever.png" target="_blank" rel="noopener"><img src="http://aidspan.org/sites/default/files/Unilever.png" alt="" width="173" height="132" /></a></td>
    </tr>
    </tbody>
    </table>
    Unilever, a multinational manufacturer of food products and other consumer goods, headquartered in London and Rotterdam, will work with the Global Fund to improve health program effectiveness, reduce infections and save lives fighting HIV and malaria in certain countries in Africa (e.g. South Africa and Nigeria) and Asia (e.g. India and Bangladesh). Benn said that the partnership will support work in the following areas: HIV prevention programs that focus on adolescent girls and young women; water, sanitation and hygiene programs in malaria case management, particularly for children under five; supply chain-strengthening initiatives to build in-country capacity and more effective distribution networks; and designing more patient-centric programs. Unilever and the Global Fund have agreed to invest $5 million each to support these activities over the next three years. Unilever’s announcement can be found <a href="https://www.unilever.com/news/news-and-features/Feature-article/2018/five-big-announcements-we-made-at-davos-this-week.html">here</a>.
    
    “Private companies have a broad range of expertise and capabilities that can increase the public-sector response to disease control, from data management and supply chain logistics to awareness campaigns to the deployment of innovative technology and financial services,” Benn said. “Public-private partnership has always been part of the Global Fund’s DNA. Experience tells us that our best work is done when corporations collaborate with governments, international organizations, donors and non-profits to expand the reach and impact of programs.”
    
    <strong>Reaction to the partnership with HEINEKEN</strong>
    
    According to an <a href="https://www.reuters.com/article/us-health-globalfund-heineken/health-campaigners-decry-global-hiv-funds-deal-with-heineken-idUSKBN1FL5ZW">article</a> by the news agency <em>Reuters</em>, the announcement of the partnership with HEINEKEN sparked a reaction from three organizations concerned with the effects of alcohol on public health –– IOGT International, the Global Alcohol Policy Alliance and the NCD Alliance.
    
    In a letter to incoming Executive Director Peter Sands, Interim Executive Director Marijke Wijnroks, and Board Chair Aida Kurtovic, the three organizations said that they are “deeply concerned about this partnership and its implications for global health.” The organizations referred to “the dangers inherent in partnerships with the producers and marketers of hazardous products such as alcohol.” They cited alcohol as “a major risk factor for both TB and HIV/AIDS.”
    
    The three organizations said that “partnerships with the alcohol industry are laden with inherent conflicts of interest. Transnational corporations producing and aggressively marketing alcohol rely on the harmful use of alcohol for their sales and profits.”
    
    Seth Faison, the Global Fund’s Director of Communications, provided Aidspan with the following response to the open letter:
    
    “The Global Fund’s partnership model embraces forward-thinking and innovative approaches, necessary to achieve ambitious goals of ending epidemics. Private sector engagement and expertise is part of the solution. Ending epidemics requires overcoming the “last mile” challenges that can prevent life-saving health products from getting to remote clinics. A new partnership between Heineken and the Global Fund enables Heineken’s supply chain experts to provide expertise to Global Fund logistics planners on how to improve the supply chain. In mid-2017, the Global Fund’s senior management reviewed the risks and benefits of the Heineken partnership before approving it. The Global Fund is aware of concerns about the role of alcohol in public health, and concluded that Heineken’s positive track record on AIDS, and on responsible consumption, supports partnership work on supply chain.”
    
    <a class="style2" href="http://iogt.org/">IOGT International</a><em> is an organization that promotes a lifestyle free of alcohol and other drugs. The </em><a class="style2" href="http://globalgapa.org/">Global Alcohol Policy Alliance</a><em> is a network of non-governmental organizations and people working in public health agencies who share information on alcohol issues and advocate evidence-based alcohol policies “free from commercial interests.” The </em><a class="style2" href="https://ncdalliance.org/">NCD Alliance</a><em> is a global network of 2,000 civil society organizations dedicated to the prevention and control of non-communicable diseases.</em>
    
    banner => string (106) "https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-1...
    $value[7]['banner']
    https://aidspan.org:9090/wp-content/uploads/2023/01/WhatsApp-Image-2023-01-16-at-10.07.45-AM-1024x576.jpeg
    
    publication_date => string (19) "2018-02-07 16:48:24"
    $value[7]['publication_date']
    updated_at => string (19) "2025-04-21 00:43:23"
    $value[7]['updated_at']
    tags => string (155) "Sub Issue, Partnership, AGYW, HER initiative, HER voice, (RED), HEINKEN, Uni...
    $value[7]['tags']
    Sub Issue, Partnership, AGYW, HER initiative, HER voice, (RED), HEINKEN, Uniliver, Lombard Odier, Adoloscent girls and young women, African for Africa, A4A
    
    status => string (1) "0"
    $value[7]['status']
    user_id => string (1) "2"
    $value[7]['user_id']
    featured_image => string (32) "http://aidspan.org:8080/?p=12945"
    $value[7]['featured_image']
    subtittle => string (118) " One of the partnerships sparked a reaction from organizations concerned wit...
    $value[7]['subtittle']
     One of the partnerships sparked a reaction from organizations concerned with the effects of alcohol on public health 
    
    comments => null
    $value[7]['comments']
    translation_link => null
    $value[7]['translation_link']
    translation_language => string (7) "English"
    $value[7]['translation_language']
    post_type_id => string (4) "4977"
    $value[7]['post_type_id']
    issue_no_id => string (3) "759"
    $value[7]['issue_no_id']
    article_no => string (1) "8"
    $value[7]['article_no']
    istranslated => string (1) "0"
    $value[7]['istranslated']
    isReviewed => string (1) "2"
    $value[7]['isReviewed']
    views => string (2) "23"
    $value[7]['views']
    post_name => string (61) "new-partnerships-involving-the-global-fund-announced-at-davos"
    $value[7]['post_name']
    isIndexed => string (1) "1"
    $value[7]['isIndexed']

Session User Data

__ci_last_regenerate
1745199992

Request ( HTTPS/1.1 )

Headers

Accept-Encoding gzip, deflate, br, zstd
Sec-Fetch-Dest document
Sec-Fetch-User ?1
Sec-Fetch-Mode navigate
Sec-Fetch-Site none
Accept text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
User-Agent Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Upgrade-Insecure-Requests 1
Sec-Ch-Ua-Platform "Windows"
Sec-Ch-Ua-Mobile ?0
Sec-Ch-Ua "HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"
Cache-Control no-cache
Pragma no-cache
Connection keep-alive
Host aidspan.org

Response ( 200 - OK )

Headers

Cache-control no-store, max-age=0, no-cache
Content-Type text/html; charset=UTF-8

System Configuration

Read the CodeIgniter docs...

CodeIgniter Version: 4.2.1
PHP Version: 8.1.31
PHP SAPI: fpm-fcgi
Environment: development
Base URL: https://aidspan.org/
Timezone: Africa/Nairobi
Locale: en
Content Security Policy Enabled: No