How to access Joomla global variables from non-Joomla sub-directory Topic is solved

Discussion and education for beginner / novice programmers interested in embarking on the development process to take advantage of the extensible nature of the Joomla! CMS.

Moderators: tjay, seadap, Rogue4ngel, matthewhayashida

Forum rules
Post Reply
emille3000

How to access Joomla global variables from non-Joomla sub-directory

Post by emille3000 » Mon Oct 29, 2007 3:29 pm

Hi there,

This is probably 100% newbie question with a simple answer...but anyway....

I've created a custom dir located in joomla root dir with a custom PHP file (file.php), but I do not know
how to call/access global Joomla variables $databse and $my directly from my custom file "file.php".

joomla-root-dir/my-custom-dir/file.php

what code do I need to include () into the "file.php" if I want to access
global Joomla variables $database and $my?

Best regards,

Emille
Last edited by emille3000 on Mon Oct 29, 2007 3:58 pm, edited 1 time in total.

RedGerry
Joomla! Apprentice
Joomla! Apprentice
Posts: 5
Joined: Thu Aug 23, 2007 5:58 pm
Location: Alloa, Scotland
Contact:

Re: How to access Joomla global variables from non-Joomla sub-directory

Post by RedGerry » Thu Nov 01, 2007 3:46 pm

I would also appreciate an answer to this.

I'm using a custom file with Ajax pagination (http://www.dynamicdrive.com/dynamicinde ... /index.htm) and am using a query to get the number of pages required then dynamically generating the array for output. Problem is that the query needs access to $database global. As it is called as a standalone page it's not happening. For anyone interested the code is below:

Code: Select all

<?php
global $database;
$page = (intval($_GET['page'])-1);
if ($page < 0){$page = 0;}
$inc_per_page = 6;		//set number of incidents to appear in each page
$start = $page*$inc_per_page;
$end = $start+$inc_per_page;
$query = '
    SELECT cf_id, incident, station, units, description, summary, closure
    FROM #__chronoforms_1
    ORDER BY incident DESC
    LIMIT '.$start.', '.$end.'
';
echo "$query";		// Debug line to display query
$database->setQuery( $query );
		if ($incidents = $database->loadObjectList()){
    		foreach ($incidents as $incident){
// Get ID
			$id = $incident->cf_id;
// Modify MySQL times to Unix
    			$idate = strtotime($incident->incident);
    			$cdate = strtotime($incident->closure);
// Generate station link
    			$istat = $incident->station;
    			$istatlink = "about-us/local-fire-stations/$istat.html";
    			$statlink = "<a href=$istatlink>$istat</a>";
// Tidy date displays
    			$inicedate = date("g:ia D jS M",$idate);
    			$cnicedate = date("jS M g:ia",$cdate);

				echo "<div id=incident_line>
					<div id=incident_lineone>
	    				<div id=incident_station><b>Attending Station</b>: $statlink</div>
	    				<div id=incident_status><b>Call</b>: $inicedate</div>
					</div>
					<div id=incident_linetwo>
	    				<div id=incident_description><b>Report</b>: $incident->description</div>
	    				<div id=incident_units><b>Units Despatched</b>: $incident->units</div>
	    				<div id=incident_summary><b>Details</b>: $incident->summary</div>
					</div>
					<div id=incident_linethree>
	    				<div id=incident_closetime><b>Closed</b>: $cnicedate</div>";
	    			$my_username = $my->username;
	    			if ($my_username == "control"){
	    					echo "<div id=incident_delete>
	    					<form action=\"statements/form-acknowledgements/incident-deleted.html\" method=\"post\">
	    					<input type=\"hidden\" name=\"id\" value=$id>
	    					<input type=\"submit\" value=\"DELETE\">
	    					</form>
	    					</div>";
	    					}

					echo "</div>
				</div>";

			}
		}
?>

RedGerry
Joomla! Apprentice
Joomla! Apprentice
Posts: 5
Joined: Thu Aug 23, 2007 5:58 pm
Location: Alloa, Scotland
Contact:

Re: How to access Joomla global variables from non-Joomla sub-directory

Post by RedGerry » Fri Nov 02, 2007 2:17 pm

anyone?
do'able?
not possible?

???

User avatar
lobos
Joomla! Apprentice
Joomla! Apprentice
Posts: 30
Joined: Wed Jul 19, 2006 3:33 pm
Location: Sao Paulo, Brasil
Contact:

Re: How to access Joomla global variables from non-Joomla sub-directory

Post by lobos » Sat Nov 03, 2007 4:27 pm

Well you can always access global variables like this, but I am not sure if it will work as the database global might be tied to other functionality...

This is how you access a global variable:

$GLOBALS['database'];

or at the top of your function:

function myfunction(){

globals $database;
Respect and honour, sempre isso, the tribal way, the only way.
http://en.wikipedia.org/wiki/Tribes_Vengeance

RedGerry
Joomla! Apprentice
Joomla! Apprentice
Posts: 5
Joined: Thu Aug 23, 2007 5:58 pm
Location: Alloa, Scotland
Contact:

Re: How to access Joomla global variables from non-Joomla sub-directory

Post by RedGerry » Fri Nov 09, 2007 9:25 am

Thanks for the reply lobos.

Using jumi to 'embed' a php page into content this approach works fine. This is how this page is being generated:

http://www.centralscotlandfire.gov.uk/n ... dents.html

The incident list is a seperate php page called with the following line:

{jumi [includes/jumi/incident_list.php]}

and it works a treat.

However when i include a file inside incident_list.php  like this:

Code: Select all

global $database, $my;
$inc_per_page = 6;		//set number of incidents to appear in each page
echo "<div id=incident_container>
<h3>Most Recent Incidents</h3>";


$query = '
    SELECT cf_id, incident, station, units, description, location, summary, closure
    FROM #__chronoforms_1
    ORDER BY incident DESC
';

$database->setQuery( $query );
		if ($incidents = $database->loadObjectList()){
			$tot_incidents = count($incidents);
			$req_pages = ceil($tot_incidents/$inc_per_page);
			if ($req_pages > 10){ $req_pages = 10;}
			$i = 1;
			$idarray=array();
			while ($i <= $req_pages){
				array_push($idarray, "'incident_page.php?page=" . $i . "'");
				$i++;
			}
/*
			echo "<div id=\"paginate-top\"> </div>
			<div id=\"pcontent\"> </div>
			<div id=\"paginate-bottom\"> </div>

			<script type=\"text/javascript\">

			var ilpage={} //arbitrary variable to hold page settings for this book
			ilpage.page=[" . implode(",", $idarray) . "]\n
			ilpage.selectedpage=0 //set page shown by default (0=1st page)

			var mypages=new ajaxpageclass.bindpages(ilpage, \"pcontent\", [\"paginate-top\", \"paginate-bottom\"])

			</script>";
*/
The file incident_page.php which is listed in my previous post is using 'GET' to generate paged display. The problem is it is not picking up the joomla globals. i have even tried ammending the top of the file to:

Code: Select all

define( '_VALID_MOS', 1 );
require_once ( '/srv/www/htdocs/globals.php' );
global $database;
which i picked up from another post as a possible solution but to no avail. The Ajax pagination I'm trying to impliment here is sexy as bits and would be a major improvement to the display of this information but I continue to scratch my head  :'(

RedGerry
Joomla! Apprentice
Joomla! Apprentice
Posts: 5
Joined: Thu Aug 23, 2007 5:58 pm
Location: Alloa, Scotland
Contact:

SOLVED: How to access Joomla global variables from non-Joomla sub-directory

Post by RedGerry » Mon Nov 12, 2007 10:28 am

well now got this working. The second page only includes a funtion call:

Code: Select all

<?php
require_once( $mosConfig_absolute_path . '/includes/func_common.php' );
paged_incidents();
?>
The head section of the function:

Code: Select all

function paged_incidents(){
define( '_VALID_MOS', 1 );
require ( 'globals.php' );
include ('includes/joomla.php' );
global $database, $my;
Works a treat:

http://www.centralscotlandfire.gov.uk/n ... dents.html

User avatar
Babysittah
Joomla! Fledgling
Joomla! Fledgling
Posts: 2
Joined: Sun Nov 25, 2007 6:13 am

Re: How to access Joomla global variables from non-Joomla sub-directory

Post by Babysittah » Sun Nov 25, 2007 6:30 am

Hi, thanx 4 the info anyway:)
http://www.newbabyassistant.com - newborn care monitoring and documenting service. Nurition, bathing, exercises, outdoor activities, physiological parameters.


Post Reply