', $table_prefix='', $goOffline=true ) { // perform a number of fatality checks, then die gracefully if (!function_exists( 'mysql_connect' )) { $mosSystemError = 1; if ($goOffline) { $basePath = dirname( __FILE__ ); include $basePath . '/../configuration.php'; include $basePath . '/../offline.php'; exit(); } } if (phpversion() < '4.2.0') { if (!($this->_resource = @mysql_connect( $host, $user, $pass ))) { $mosSystemError = 2; if ($goOffline) { $basePath = dirname( __FILE__ ); include $basePath . '/../configuration.php'; include $basePath . '/../offline.php'; exit(); } } } else { if (!($this->_resource = @mysql_connect( $host, $user, $pass, true ))) { $mosSystemError = 2; if ($goOffline) { $basePath = dirname( __FILE__ ); include $basePath . '/../configuration.php'; include $basePath . '/../offline.php'; exit(); } } } if ($db != '' && !mysql_select_db( $db, $this->_resource )) { $mosSystemError = 3; if ($goOffline) { $basePath = dirname( __FILE__ ); include $basePath . '/../configuration.php'; include $basePath . '/../offline.php'; exit(); } } $this->_table_prefix = $table_prefix; //@mysql_query("SET NAMES 'utf8'", $this->_resource); $this->_ticker = 0; $this->_log = array(); } /** * @param int */ function debug( $level ) { $this->_debug = intval( $level ); } /** * @return int The error number for the most recent query */ function getErrorNum() { return $this->_errorNum; } /** * @return string The error message for the most recent query */ function getErrorMsg() { return str_replace( array( "\n", "'" ), array( '\n', "\'" ), $this->_errorMsg ); } /** * Get a database escaped string * * @param string The string to be escaped * @param boolean Optional parameter to provide extra escaping * @return string * @access public * @abstract */ function getEscaped( $text, $extra = false ) { // Use the appropriate escape string depending upon which version of php // you are running if (version_compare(phpversion(), '4.3.0', '<')) { $string = mysql_escape_string($text); } else { $string = mysql_real_escape_string($text, $this->_resource); } if ($extra) { $string = addcslashes( $string, '%_' ); } return $string; } /** * Get a quoted database escaped string * * @param string A string * @param boolean Default true to escape string, false to leave the string unchanged * @return string * @access public */ function Quote( $text, $escaped = true ) { return '\''.($escaped ? $this->getEscaped( $text ) : $text).'\''; } /** * Quote an identifier name (field, table, etc) * @param string The name * @return string The quoted name */ function NameQuote( $s ) { $q = $this->_nameQuote; if (strlen( $q ) == 1) { return $q . $s . $q; } else { return $q{0} . $s . $q{1}; } } /** * @return string The database prefix */ function getPrefix() { return $this->_table_prefix; } /** * @return string Quoted null/zero date string */ function getNullDate() { return $this->_nullDate; } /** * Sets the SQL query string for later execution. * * This function replaces a string identifier $prefix with the * string held is the _table_prefix class variable. * * @param string The SQL query * @param string The offset to start selection * @param string The number of results to return * @param string The common table prefix */ function setQuery( $sql, $offset = 0, $limit = 0, $prefix='#__' ) { $this->_sql = $this->replacePrefix( $sql, $prefix ); $this->_limit = intval( $limit ); $this->_offset = intval( $offset ); } /** * This function replaces a string identifier $prefix with the * string held is the _table_prefix class variable. * * @param string The SQL query * @param string The common table prefix * @author thede, David McKinnis */ function replacePrefix( $sql, $prefix='#__' ) { $sql = trim( $sql ); $escaped = false; $quoteChar = ''; $n = strlen( $sql ); $startPos = 0; $literal = ''; while ($startPos < $n) { $ip = strpos($sql, $prefix, $startPos); if ($ip === false) { break; } $j = strpos( $sql, "'", $startPos ); $k = strpos( $sql, '"', $startPos ); if (($k !== FALSE) && (($k < $j) || ($j === FALSE))) { $quoteChar = '"'; $j = $k; } else { $quoteChar = "'"; } if ($j === false) { $j = $n; } $literal .= str_replace( $prefix, $this->_table_prefix, substr( $sql, $startPos, $j - $startPos ) ); $startPos = $j; $j = $startPos + 1; if ($j >= $n) { break; } // quote comes first, find end of quote while (TRUE) { $k = strpos( $sql, $quoteChar, $j ); $escaped = false; if ($k === false) { break; } $l = $k - 1; while ($l >= 0 && $sql{$l} == '\\') { $l--; $escaped = !$escaped; } if ($escaped) { $j = $k+1; continue; } break; } if ($k === FALSE) { // error in the query - no end quote; ignore it break; } $literal .= substr( $sql, $startPos, $k - $startPos + 1 ); $startPos = $k+1; } if ($startPos < $n) { $literal .= substr( $sql, $startPos, $n - $startPos ); } return $literal; } /** * @return string The current value of the internal SQL vairable */ function getQuery() { return "
" . htmlspecialchars( $this->_sql ) . "
"; } /** * Execute the query * @return mixed A database resource if successful, FALSE if not. */ function query() { global $mosConfig_debug; if ($this->_limit > 0 && $this->_offset == 0) { $this->_sql .= "\nLIMIT $this->_limit"; } else if ($this->_limit > 0 || $this->_offset > 0) { $this->_sql .= "\nLIMIT $this->_offset, $this->_limit"; } if ($this->_debug) { $this->_ticker++; $this->_log[] = $this->_sql; } $this->_errorNum = 0; $this->_errorMsg = ''; $this->_cursor = mysql_query( $this->_sql, $this->_resource ); if (!$this->_cursor) { $this->_errorNum = mysql_errno( $this->_resource ); $this->_errorMsg = mysql_error( $this->_resource )." SQL=$this->_sql"; if ($this->_debug) { trigger_error( mysql_error( $this->_resource ), E_USER_NOTICE ); //echo "
" . $this->_sql . "
\n"; if (function_exists( 'debug_backtrace' )) { foreach( debug_backtrace() as $back) { if (@$back['file']) { echo '
'.$back['file'].':'.$back['line']; } } } } return false; } return $this->_cursor; } /** * @return int The number of affected rows in the previous operation */ function getAffectedRows() { return mysql_affected_rows( $this->_resource ); } function query_batch( $abort_on_error=true, $p_transaction_safe = false) { $this->_errorNum = 0; $this->_errorMsg = ''; if ($p_transaction_safe) { $si = mysql_get_server_info( $this->_resource ); preg_match_all( "/(\d+)\.(\d+)\.(\d+)/i", $si, $m ); if ($m[1] >= 4) { $this->_sql = 'START TRANSACTION;' . $this->_sql . '; COMMIT;'; } else if ($m[2] >= 23 && $m[3] >= 19) { $this->_sql = 'BEGIN WORK;' . $this->_sql . '; COMMIT;'; } else if ($m[2] >= 23 && $m[3] >= 17) { $this->_sql = 'BEGIN;' . $this->_sql . '; COMMIT;'; } } $query_split = preg_split ("/[;]+/", $this->_sql); $error = 0; foreach ($query_split as $command_line) { $command_line = trim( $command_line ); if ($command_line != '') { $this->_cursor = mysql_query( $command_line, $this->_resource ); if (!$this->_cursor) { $error = 1; $this->_errorNum .= mysql_errno( $this->_resource ) . ' '; $this->_errorMsg .= mysql_error( $this->_resource )." SQL=$command_line
"; if ($abort_on_error) { return $this->_cursor; } } } } return $error ? false : true; } /** * Diagnostic function */ function explain() { $temp = $this->_sql; $this->_sql = "EXPLAIN $this->_sql"; $this->query(); if (!($cur = $this->query())) { return null; } $first = true; $buf = ""; $buf .= $this->getQuery(); while ($row = mysql_fetch_assoc( $cur )) { if ($first) { $buf .= ""; foreach ($row as $k=>$v) { $buf .= ""; } $buf .= ""; $first = false; } $buf .= ""; foreach ($row as $k=>$v) { $buf .= ""; } $buf .= ""; } $buf .= "
$k
$v

 "; mysql_free_result( $cur ); $this->_sql = $temp; return "
$buf
"; } /** * @return int The number of rows returned from the most recent query. */ function getNumRows( $cur=null ) { return mysql_num_rows( $cur ? $cur : $this->_cursor ); } /** * This method loads the first field of the first row returned by the query. * * @return The value returned in the query or null if the query failed. */ function loadResult() { if (!($cur = $this->query())) { return null; } $ret = null; if ($row = mysql_fetch_row( $cur )) { $ret = $row[0]; } mysql_free_result( $cur ); return $ret; } /** * Load an array of single field results into an array */ function loadResultArray($numinarray = 0) { if (!($cur = $this->query())) { return null; } $array = array(); while ($row = mysql_fetch_row( $cur )) { $array[] = $row[$numinarray]; } mysql_free_result( $cur ); return $array; } /** * Load a assoc list of database rows * @param string The field name of a primary key * @return array If key is empty as sequential list of returned records. */ function loadAssocList( $key='' ) { if (!($cur = $this->query())) { return null; } $array = array(); while ($row = mysql_fetch_assoc( $cur )) { if ($key) { $array[$row[$key]] = $row; } else { $array[] = $row; } } mysql_free_result( $cur ); return $array; } /** * This global function loads the first row of a query into an object * * If an object is passed to this function, the returned row is bound to the existing elements of object. * If object has a value of null, then all of the returned query fields returned in the object. * @param string The SQL query * @param object The address of variable */ function loadObject( &$object ) { if ($object != null) { if (!($cur = $this->query())) { return false; } if ($array = mysql_fetch_assoc( $cur )) { mysql_free_result( $cur ); mosBindArrayToObject( $array, $object, null, null, false ); return true; } else { return false; } } else { if ($cur = $this->query()) { if ($object = mysql_fetch_object( $cur )) { mysql_free_result( $cur ); return true; } else { $object = null; return false; } } else { return false; } } } /** * Load a list of database objects * @param string The field name of a primary key * @return array If key is empty as sequential list of returned records. * If key is not empty then the returned array is indexed by the value * the database key. Returns null if the query fails. */ function loadObjectList( $key='' ) { if (!($cur = $this->query())) { return null; } $array = array(); while ($row = mysql_fetch_object( $cur )) { if ($key) { $array[$row->$key] = $row; } else { $array[] = $row; } } mysql_free_result( $cur ); return $array; } /** * @return The first row of the query. */ function loadRow() { if (!($cur = $this->query())) { return null; } $ret = null; if ($row = mysql_fetch_row( $cur )) { $ret = $row; } mysql_free_result( $cur ); return $ret; } /** * Load a list of database rows (numeric column indexing) * @param int Value of the primary key * @return array If key is empty as sequential list of returned records. * If key is not empty then the returned array is indexed by the value * the database key. Returns null if the query fails. */ function loadRowList( $key=null ) { if (!($cur = $this->query())) { return null; } $array = array(); while ($row = mysql_fetch_row( $cur )) { if ( !is_null( $key ) ) { $array[$row[$key]] = $row; } else { $array[] = $row; } } mysql_free_result( $cur ); return $array; } /** * Document::db_insertObject() * * { Description } * * @param string $table This is expected to be a valid (and safe!) table name * @param [type] $keyName * @param [type] $verbose */ function insertObject( $table, &$object, $keyName = NULL, $verbose=false ) { $fmtsql = "INSERT INTO $table ( %s ) VALUES ( %s ) "; $fields = array(); foreach (get_object_vars( $object ) as $k => $v) { if (is_array($v) or is_object($v) or $v === NULL) { continue; } if ($k[0] == '_') { // internal field continue; } $fields[] = $this->NameQuote( $k ); $values[] = $this->Quote( $v ); } $this->setQuery( sprintf( $fmtsql, implode( ",", $fields ) , implode( ",", $values ) ) ); ($verbose) && print "$sql
\n"; if (!$this->query()) { return false; } $id = mysql_insert_id( $this->_resource ); ($verbose) && print "id=[$id]
\n"; if ($keyName && $id) { $object->$keyName = $id; } return true; } /** * Document::db_updateObject() * * { Description } * * @param string $table This is expected to be a valid (and safe!) table name * @param [type] $updateNulls */ function updateObject( $table, &$object, $keyName, $updateNulls=true ) { $fmtsql = "UPDATE $table SET %s WHERE %s"; $tmp = array(); foreach (get_object_vars( $object ) as $k => $v) { if( is_array($v) or is_object($v) or $k[0] == '_' ) { // internal or NA field continue; } if( $k == $keyName ) { // PK not to be updated $where = $keyName . '=' . $this->Quote( $v ); continue; } if ($v === NULL && !$updateNulls) { continue; } if( $v == '' ) { $val = "''"; } else { $val = $this->Quote( $v ); } $tmp[] = $this->NameQuote( $k ) . '=' . $val; } $this->setQuery( sprintf( $fmtsql, implode( ",", $tmp ) , $where ) ); return $this->query(); } /** * @param boolean If TRUE, displays the last SQL statement sent to the database * @return string A standised error message */ function stderr( $showSQL = false ) { return "DB function failed with error number $this->_errorNum" ."
$this->_errorMsg" .($showSQL ? "
SQL =
$this->_sql
" : ''); } function insertid() { return mysql_insert_id( $this->_resource ); } function getVersion() { return mysql_get_server_info( $this->_resource ); } /** * @return array A list of all the tables in the database */ function getTableList() { $this->setQuery( 'SHOW TABLES' ); return $this->loadResultArray(); } /** * @param array A list of valid (and safe!) table names * @return array A list the create SQL for the tables */ function getTableCreate( $tables ) { $result = array(); foreach ($tables as $tblval) { $this->setQuery( 'SHOW CREATE table ' . $this->getEscaped( $tblval ) ); $rows = $this->loadRowList(); foreach ($rows as $row) { $result[$tblval] = $row[1]; } } return $result; } /** * @param array A list of valid (and safe!) table names * @return array An array of fields by table */ function getTableFields( $tables ) { $result = array(); foreach ($tables as $tblval) { $this->setQuery( 'SHOW FIELDS FROM ' . $tblval ); $fields = $this->loadObjectList(); foreach ($fields as $field) { $result[$tblval][$field->Field] = preg_replace("/[(0-9)]/",'', $field->Type ); } } return $result; } /** * Fudge method for ADOdb compatibility */ function GenID( $foo1=null, $foo2=null ) { return '0'; } } /** * mosDBTable Abstract Class. * @abstract * @package Joomla * @subpackage Database * * Parent classes to all database derived objects. Customisation will generally * not involve tampering with this object. * @author Andrew Eddie _tbl = $table; $this->_tbl_key = $key; $this->_db =& $db; } /** * Returns an array of public properties * @return array */ function getPublicProperties() { static $cache = null; if (is_null( $cache )) { $cache = array(); foreach (get_class_vars( get_class( $this ) ) as $key=>$val) { if (substr( $key, 0, 1 ) != '_') { $cache[] = $key; } } } return $cache; } /** * Filters public properties * @access protected * @param array List of fields to ignore */ function filter( $ignoreList=null ) { $ignore = is_array( $ignoreList ); $iFilter = new InputFilter(); foreach ($this->getPublicProperties() as $k) { if ($ignore && in_array( $k, $ignoreList ) ) { continue; } $this->$k = $iFilter->process( $this->$k ); } } /** * @return string Returns the error message */ function getError() { return $this->_error; } /** * Gets the value of the class variable * @param string The name of the class variable * @return mixed The value of the class var (or null if no var of that name exists) */ function get( $_property ) { if(isset( $this->$_property )) { return $this->$_property; } else { return null; } } /** * Set the value of the class variable * @param string The name of the class variable * @param mixed The value to assign to the variable */ function set( $_property, $_value ) { $this->$_property = $_value; } /** * Resets public properties * @param mixed The value to set all properties to, default is null */ function reset( $value=null ) { $keys = $this->getPublicProperties(); foreach ($keys as $k) { $this->$k = $value; } } /** * binds a named array/hash to this object * * can be overloaded/supplemented by the child class * @param array $hash named array * @return null|string null is operation was satisfactory, otherwise returns an error */ function bind( $array, $ignore='' ) { if (!is_array( $array )) { $this->_error = strtolower(get_class( $this ))."::bind failed."; return false; } else { return mosBindArrayToObject( $array, $this, $ignore ); } } /** * binds an array/hash to this object * @param int $oid optional argument, if not specifed then the value of current key is used * @return any result from the database operation */ function load( $oid=null ) { $k = $this->_tbl_key; if ($oid !== null) { $this->$k = $oid; } $oid = $this->$k; if ($oid === null) { return false; } //Note: Prior to PHP 4.2.0, Uninitialized class variables will not be reported by get_class_vars(). /* $class_vars = $this->getPublicProperties(); foreach ($class_vars as $name => $value) { if ($name != $k) { $this->$name = $value; } } */ $class_vars = get_class_vars(get_class($this)); foreach ($class_vars as $name => $value) { if (($name != $k) and ($name != "_db") and ($name != "_tbl") and ($name != "_tbl_key")) { $this->$name = $value; } } $this->reset(); $query = "SELECT *" . "\n FROM $this->_tbl" . "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $oid ) ; $this->_db->setQuery( $query ); return $this->_db->loadObject( $this ); } /** * generic check method * * can be overloaded/supplemented by the child class * @return boolean True if the object is ok */ function check() { return true; } /** * Inserts a new row if id is zero or updates an existing row in the database table * * Can be overloaded/supplemented by the child class * @param boolean If false, null object variables are not updated * @return null|string null if successful otherwise returns and error message */ function store( $updateNulls=false ) { $k = $this->_tbl_key; if ($this->$k != 0) { $ret = $this->_db->updateObject($this->_tbl, $this, $this->_tbl_key, $updateNulls); } else { $ret = $this->_db->insertObject($this->_tbl, $this, $this->_tbl_key); } if (!$ret) { $this->_error = strtolower(get_class($this))."::store failed
" . $this->_db->getErrorMsg(); return false; } else { return true; } } /** * @param string $where This is expected to be a valid (and safe!) SQL expression */ function move( $dirn, $where='' ) { $k = $this->_tbl_key; $sql = "SELECT $this->_tbl_key, ordering FROM $this->_tbl"; if ($dirn < 0) { $sql .= "\n WHERE ordering < " . (int) $this->ordering; $sql .= ($where ? "\n AND $where" : ''); $sql .= "\n ORDER BY ordering DESC"; $sql .= "\n LIMIT 1"; } else if ($dirn > 0) { $sql .= "\n WHERE ordering > " . (int) $this->ordering; $sql .= ($where ? "\n AND $where" : ''); $sql .= "\n ORDER BY ordering"; $sql .= "\n LIMIT 1"; } else { $sql .= "\nWHERE ordering = " . (int) $this->ordering; $sql .= ($where ? "\n AND $where" : ''); $sql .= "\n ORDER BY ordering"; $sql .= "\n LIMIT 1"; } $this->_db->setQuery( $sql ); //echo 'A: ' . $this->_db->getQuery(); $row = null; if ($this->_db->loadObject( $row )) { $query = "UPDATE $this->_tbl" . "\n SET ordering = " . (int) $row->ordering . "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $this->$k ) ; $this->_db->setQuery( $query ); if (!$this->_db->query()) { $err = $this->_db->getErrorMsg(); die( $err ); } //echo 'B: ' . $this->_db->getQuery(); $query = "UPDATE $this->_tbl" . "\n SET ordering = " . (int) $this->ordering . "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $row->$k ) ; $this->_db->setQuery( $query ); //echo 'C: ' . $this->_db->getQuery(); if (!$this->_db->query()) { $err = $this->_db->getErrorMsg(); die( $err ); } $this->ordering = $row->ordering; } else { $query = "UPDATE $this->_tbl" . "\n SET ordering = " . (int) $this->ordering . "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $this->$k ) ; $this->_db->setQuery( $query ); //echo 'D: ' . $this->_db->getQuery(); if (!$this->_db->query()) { $err = $this->_db->getErrorMsg(); die( $err ); } } } /** * Compacts the ordering sequence of the selected records * @param string Additional where query to limit ordering to a particular subset of records. This is expected to be a valid (and safe!) SQL expression */ function updateOrder( $where='' ) { $k = $this->_tbl_key; if (!array_key_exists( 'ordering', get_class_vars( strtolower(get_class( $this )) ) )) { $this->_error = "WARNING: ".strtolower(get_class( $this ))." does not support ordering."; return false; } if ($this->_tbl == "#__content_frontpage") { $order2 = ", content_id DESC"; } else { $order2 = ''; } $query = "SELECT $this->_tbl_key, ordering" . "\n FROM $this->_tbl" . ( $where ? "\n WHERE $where" : '' ) . "\n ORDER BY ordering$order2 " ; $this->_db->setQuery( $query ); if (!($orders = $this->_db->loadObjectList())) { $this->_error = $this->_db->getErrorMsg(); return false; } // first pass, compact the ordering numbers for ($i=0, $n=count( $orders ); $i < $n; $i++) { if ($orders[$i]->ordering >= 0) { $orders[$i]->ordering = $i+1; } } $shift = 0; $n=count( $orders ); for ($i=0; $i < $n; $i++) { //echo "i=$i id=".$orders[$i]->$k." order=".$orders[$i]->ordering; if ($orders[$i]->$k == $this->$k) { // place 'this' record in the desired location $orders[$i]->ordering = min( $this->ordering, $n ); $shift = 1; } else if ($orders[$i]->ordering >= $this->ordering && $this->ordering > 0) { $orders[$i]->ordering++; } } //echo '
';print_r($orders);echo '
'; // compact once more until I can find a better algorithm for ($i=0, $n=count( $orders ); $i < $n; $i++) { if ($orders[$i]->ordering >= 0) { $orders[$i]->ordering = $i+1; $query = "UPDATE $this->_tbl" . "\n SET ordering = " . (int) $orders[$i]->ordering . "\n WHERE $k = " . $this->_db->Quote( $orders[$i]->$k ) ; $this->_db->setQuery( $query); $this->_db->query(); //echo '
'.$this->_db->getQuery(); } } // if we didn't reorder the current record, make it last if ($shift == 0) { $order = $n+1; $query = "UPDATE $this->_tbl" . "\n SET ordering = " . (int) $order . "\n WHERE $k = " . $this->_db->Quote( $this->$k ) ; $this->_db->setQuery( $query ); $this->_db->query(); //echo '
'.$this->_db->getQuery(); } return true; } /** * Generic check for whether dependancies exist for this object in the db schema * * can be overloaded/supplemented by the child class * @param string $msg Error message returned * @param int Optional key index * @param array Optional array to compiles standard joins: format [label=>'Label',name=>'table name',idfield=>'field',joinfield=>'field']. This is expected to hold only valid (and safe!) SQL expressions * @return true|false */ function canDelete( $oid=null, $joins=null ) { $k = $this->_tbl_key; if ($oid) { $this->$k = $oid; } if (is_array( $joins )) { $select = $k; $join = ''; foreach( $joins as $table ) { $tblName = $this->getEscaped( $table['name'] ); $idField = $this->getEscaped( $table['idfield'] ); $jnField = $this->getEscaped( $table['joinfield'] ); $select .= ",\n COUNT(DISTINCT `$tblName`.`$idField`) AS `count_".substr($tblName, 3)."_$idField`"; $join .= "\n LEFT JOIN `$tblName` ON `$tblName`.`$jnField` = `$this->_tbl`.`$k`"; } $query = "SELECT $select" . "\n FROM `$this->_tbl`" . $join . "\n WHERE `$this->_tbl`.`$k` = ". (int) $this->$k . "\n GROUP BY `$this->_tbl`.`$k`" ; $this->_db->setQuery( $query ); $obj = null; if (!$this->_db->loadObject($obj)) { $this->_error = $this->_db->getErrorMsg(); return false; } $msg = array(); foreach( $joins as $table ) { $tblName = $this->getEscaped( $table['name'] ); $idField = $this->getEscaped( $table['idfield'] ); $k = 'count_'.substr($tblName, 3).'_'.$idField; if ($obj->$k) { $msg[] = $table['label']; } } if (count( $msg )) { $this->_error = "noDeleteRecord" . ": " . implode( ', ', $msg ); return false; } else { return true; } } return true; } /** * Default delete method * * can be overloaded/supplemented by the child class * @return true if successful otherwise returns and error message */ function delete( $oid=null ) { //if (!$this->canDelete( $msg )) { // return $msg; //} $k = $this->_tbl_key; if ($oid) { $this->$k = intval( $oid ); } $query = "DELETE FROM $this->_tbl" . "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $this->$k ) ; $this->_db->setQuery( $query ); if ($this->_db->query()) { return true; } else { $this->_error = $this->_db->getErrorMsg(); return false; } } /** * Checks out an object * @param int User id * @param int Object id */ function checkout( $user_id, $oid=null ) { if (!array_key_exists( 'checked_out', get_class_vars( strtolower(get_class( $this )) ) )) { $this->_error = "WARNING: ".strtolower(get_class( $this ))." does not support checkouts."; return false; } $k = $this->_tbl_key; if ($oid !== null) { $this->$k = $oid; } $time = date( 'Y-m-d H:i:s' ); if (intval( $user_id )) { $user_id = intval( $user_id ); // new way of storing editor, by id $query = "UPDATE $this->_tbl" . "\n SET checked_out = $user_id, checked_out_time = " . $this->_db->Quote( $time ) . "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $this->$k ) ; $this->_db->setQuery( $query ); $this->checked_out = $user_id; $this->checked_out_time = $time; } else { $user_id = $this->_db->Quote( $user_id ); // old way of storing editor, by name $query = "UPDATE $this->_tbl" . "\n SET checked_out = 1, checked_out_time = " . $this->_db->Quote( $time ) . ", editor = $user_id" . "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $this->$k ) ; $this->_db->setQuery( $query ); $this->checked_out = 1; $this->checked_out_time = $time; $this->checked_out_editor = $user_id; } return $this->_db->query(); } /** * Checks in an object * @param int Object id */ function checkin( $oid=null ) { if (!array_key_exists( 'checked_out', get_class_vars( strtolower(get_class( $this )) ) )) { $this->_error = "WARNING: ".strtolower(get_class( $this ))." does not support checkin."; return false; } $k = $this->_tbl_key; $nullDate = $this->_db->getNullDate(); if ($oid !== null) { $this->$k = intval( $oid ); } if ($this->$k == NULL) { return false; } $query = "UPDATE $this->_tbl" . "\n SET checked_out = 0, checked_out_time = " . $this->_db->Quote( $nullDate ) . "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $this->$k ) ; $this->_db->setQuery( $query ); $this->checked_out = 0; $this->checked_out_time = ''; return $this->_db->query(); } /** * Increments the hit counter for an object * @param int Object id */ function hit( $oid=null ) { global $mosConfig_enable_log_items; $k = $this->_tbl_key; if ($oid !== null) { $this->$k = intval( $oid ); } $query = "UPDATE $this->_tbl" . "\n SET hits = ( hits + 1 )" . "\n WHERE $this->_tbl_key = " . $this->_db->Quote( $this->id ) ; $this->_db->setQuery( $query ); $this->_db->query(); if (@$mosConfig_enable_log_items) { $now = date( 'Y-m-d' ); $query = "SELECT hits" . "\n FROM #__core_log_items" . "\n WHERE time_stamp = " . $this->_db->Quote( $now ) . "\n AND item_table = " . $this->_db->Quote( $this->_tbl ) . "\n AND item_id = " . $this->_db->Quote( $this->$k ) ; $this->_db->setQuery( $query ); $hits = intval( $this->_db->loadResult() ); if ($hits) { $query = "UPDATE #__core_log_items" . "\n SET hits = ( hits + 1 )" . "\n WHERE time_stamp = " . $this->_db->Quote( $now ) . "\n AND item_table = " . $this->_db->Quote( $this->_tbl ) . "\n AND item_id = " . $this->_db->Quote( $this->$k ) ; $this->_db->setQuery( $query ); $this->_db->query(); } else { $query = "INSERT INTO #__core_log_items" . "\n VALUES ( " . $this->_db->Quote( $now ) . ", " . $this->_db->Quote( $this->_tbl ) . ", " . $this->_db->Quote( $this->$k ) . ", 1 )" ; $this->_db->setQuery( $query ); $this->_db->query(); } } } /** * Tests if item is checked out * @param int A user id * @return boolean */ function isCheckedOut( $user_id=0 ) { if ($user_id) { return ($this->checked_out && $this->checked_out != $user_id); } else { return $this->checked_out; } } /** * Generic save function * @param array Source array for binding to class vars * @param string Filter for the order updating. This is expected to be a valid (and safe!) SQL expression * @returns TRUE if completely successful, FALSE if partially or not succesful * NOTE: Filter will be deprecated in verion 1.1 */ function save( $source, $order_filter='' ) { if (!$this->bind( $source )) { return false; } if (!$this->check()) { return false; } if (!$this->store()) { return false; } if (!$this->checkin()) { return false; } if ($order_filter) { $filter_value = $this->$order_filter; $this->updateOrder( $order_filter ? "`$order_filter` = " . $this->_db->Quote( $filter_value ) : '' ); } $this->_error = ''; return true; } /** * @deprecated As of 1.0.3, replaced by publish */ function publish_array( $cid=null, $publish=1, $user_id=0 ) { $this->publish( $cid, $publish, $user_id ); } /** * Generic Publish/Unpublish function * @param array An array of id numbers * @param integer 0 if unpublishing, 1 if publishing * @param integer The id of the user performnig the operation * @since 1.0.4 */ function publish( $cid=null, $publish=1, $user_id=0 ) { mosArrayToInts( $cid, array() ); $user_id = (int) $user_id; $publish = (int) $publish; $k = $this->_tbl_key; if (count( $cid ) < 1) { $this->_error = "No items selected."; return false; } $cids = $this->_tbl_key . '=' . implode( ' OR ' . $this->_tbl_key . '=', $cid ); $query = "UPDATE $this->_tbl" . "\n SET published = " . (int) $publish . "\n WHERE ($cids)" . "\n AND (checked_out = 0 OR checked_out = " . (int) $user_id . ")" ; $this->_db->setQuery( $query ); if (!$this->_db->query()) { $this->_error = $this->_db->getErrorMsg(); return false; } if (count( $cid ) == 1) { $this->checkin( $cid[0] ); } $this->_error = ''; return true; } /** * Export item list to xml * @param boolean Map foreign keys to text values */ function toXML( $mapKeysToText=false ) { $xml = ' $v) { if (is_array($v) or is_object($v) or $v === NULL) { continue; } if ($k[0] == '_') { // internal field continue; } $xml .= '<' . $k . '>'; } $xml .= ''; return $xml; } } ?> Centre Islamique de la Réunion - Une journée de Eid...différente
Menu Content/Inhalt
Accueil arrow Liste de tous les articles arrow Une journée de Eid...différente

La finance islamique

ACERFI ACERFI
CFCI
Les dernières news

Une parole !

Ô Allah, Tu es mon Rabb (Seigneur). Point de divinité à part Toi. Tu m’as créé et je suis Ton serviteur. Et je suis fidèle, dans la mesure de mes capacités, à (mon) engagement envers Toi (en l’occurrence celui que Tu as pris de moi de Te reconnaître comme Seigneur) et (je crois à) Ta promesse (de pardonner celui qui meurt sans rien T’associer ). Je Te demande protection contre le mal que j’ai fait. Je reconnais Ton bienfait à mon égard et je reconnais devant Toi mon péché. Pardonne-moi car personne ne pardonne les péchés à part Toi.

Prophète Mouhammad (saw)
Sahîh Boukhâri
oct
12
2007
Une journée de Eid...différente Convertir en PDF Version imprimable Suggérer par mail
Appréciation des utilisateurs: / 1
FaibleMeilleur 
Alors que la venue de Eid se rapproche, la vue d'une foule de musulmans parsemés dans la nature en un tourbillon de feux et de toilettes élégantes se dirigeant dans tous les sens devrait nous inciter à prendre le temps de réfléchir sur l'importance du jour de "Eid".

Cette date prestigieuse dans le calendrier islamique n'est devenue pour nous qu'une formalité, une série de rites dénuées de sens ou sans but précis, une occasion de rencontrer des amis ou des parents, une excuse pour nos jeunes de louer des voitures et de planifier des sorties avec leurs amis… On devrait pourtant se demander si ce jour a t-il conservé un peu de son ancienne magie et de cette excitation qui prenait place dans nos années d'enfance…


L'émotion vive qui précédait le jour de Eid, le réveil de bonne heure en ce jour, l'énergique douche et la méticuleuse situation au moment de s'habiller, la poursuite des frères et sœurs tout au long de l'escalier, la sensation d'urgence et de confusion, la maman, aidant son enfant démuni dans une chambre et ensuite répondant à l'appel du second dans une autre chambre, caracolait de tous les côtés et finalement ramenait toute la famille autour de la table du petit déjeuner. Incapable de trouver le temps nécessaire pour elle-même, son tablier restait attaché à sa robe de travail.

Ces images de l'enfance béate restent profondément marquées dans nos mémoires jusqu'à ce jour et on est convaincu que beaucoup d'entre nous auront reconnu ces impressions à travers les yeux innocents de l’enfance.


L'excitation et l'anticipation qui précédaient l'arrivée de cette occasion dans nos jeunes années démontrent que ce jour était d'une grande importance pour nous. Il était différent de tous les autres jours. C'était le clou de l'année, une occasion que l'on attendait.


Évidemment, cette ardeur ne fut aucunement le fruit d'une ferveur religieuse ou d'un enthousiasme quelconque, mais plutôt un aboutissement de fêtes et de coutumes, qui heureusement, ou malheureusement, furent étroitement liés avec ce jour même et devinrent tous deux touchants et excitants pour les enfants. Par exemple : l'échange de cadeaux, les sorties en famille, le repas délicieux, tout cela évidemment très plaisant à la joyeuse nature des enfants.


Néanmoins, ce qui était attendu et espéré de cette attitude première et de cette perception du jour de Eid, c'est que se développent des impressions plus mûres et posées et qu'en ce grand jour, on perçoive dans l'ensemble une expérience plus combative et enrichissante. Ces émotions auraient dû s'épanouir dans le domaine spirituel, dans la renaissance de l'esprit islamique en nous et de ranimer le musulman endormi dans une explosion des bourgeons de la foi.


La prière matinale de Eid aurait dû refléter l'immensité de notre communauté, l'expansion de notre nation, la variété des individus qui forme notre famille et le sentiment qu'aujourd'hui, des milliers de gens, à travers le monde, sont en train de partager notre joie. Leurs passés sont multiples, leurs langues sont variées, leurs environnement aussi, depuis les cabanes de boue abandonnées au Ghana jusqu'aux gratte-ciel de Manhattan, de même que leurs professions, allant du cireur de chaussures en guenilles dans les rues de Bombay aux opulents et ambitieux hommes d'affaires qui influencent l'économie des marchés mondiaux.


Néanmoins, malgré le fait que leur raisonnement, leur compréhension, leur perspective du monde et leurs mentalités ont été façonnés par des circonstances tant incroyables que diverses, et que leurs caractéristiques et leur nature ont été modelés par les seules formes de leur environnement, ils proclament cependant une foi unique. Quel qu'ils soient, quelques soient leurs professions et le coin du monde d'où ils viennent, leurs désirs, leur but dans la vie, leurs croyances, leur foi, leur culte, leur jour de fêtes et de réjouissances ne font qu'un.


Et aujourd'hui, en ce jour béni de Eid, ce jour de cérémonie et de célébration, ce jour de joie, ce moment d'une sereine contemplation, cette occasion remplie de gloire et de festivité, ils ne se dirigent que vers une direction, réagissant comme un seul corps, unifié comme une seule famille et, s'humiliant, ils se prosternent devant le seul Seigneur, invoquent le seul Maître, glorifient et exaltent le seul Créateur, Allah.


La congrégation de la prière de Eid aurait dû susciter en nous un sentiment d'appartenance. Elle aurait du enflammer en nous, le respect de soi même, la dignité et la fierté. Fier d'appartenir à cette religion universelle, à ce mouvement vivant, à cette fraternité internationale, à ces liens d'amitiés basés sur la sincérité, à cette foi qui brisa tous les préjudices raciaux et tribales, à cette organisation enfin, qui broya les barrières de la nationalité et de la classe sociale.


Tandis que les espaces vides parmi les rangées de fidèles divisant les frères entre eux étaient comblés, on comblait également les fossés creusés à l'intérieur même de nos relations.

Tandis que la sinuosité des rangs était redressée, c'était en fait la sinuosité de nos cœurs et de toutes les disputes possibles qui étaient uniformément aplanis. Alors que les épaules frôlaient et soutenaient l'épaule rassurante d'un frère musulman, c'était notre foi, notre position en tant que musulman qui se trouvait alors soutenue et renforcée.

A la fin de la prière, lorsque nous regardions de part et d'autres, afin de se souhaiter mutuellement la paix et la miséricorde d'Allah, nous chassions en réalité le visage de l'envie et de la jalousie de nos rangs respectifs.

Voilà les quelques vagues qui auraient dû secouer l'océan calme et léthargique de notre foi, alors que nous nous apprêtions à nous tenir bien droit à notre place, dans les rangs alignés.


Malheureusement, la paix intérieure et l'éblouissement, le symbole et le spirituel sont peines perdues à nos yeux. Les plaisirs dans l'adoration, le confort dans la simplicité, la liberté dans la discipline, tout cela est non seulement dépassé, mais sont devenus des notions bien intrigantes. Les cordages du matérialisme se sont rapidement noués autour de nous avec force et la rouille des péchés se sont incrustés fermement dans nos cœurs.

De ce fait, nous contemplons la religion à travers un prisme déformant et un mur d'ignorance nous accule à envisager des perspectives beaucoup plus fructueuse et bien plus rentable. Il y a tellement de leçons à tirer de la parole d'Allah qui déclare en ce sens : "Attention, ce n'est qu'à travers la pensée d'Allah que les cœurs trouvent la véritable paix."

Il est alors désolant de constater que même les occasions manquantes et les jours sacrés du calendrier islamique sont nullement considérés à leur juste valeur.

Bien pis encore, non seulement la révérence donnée à ces phénomènes ne s'est-elle pas contentée de filtrer à travers les murs percés de nos croyances vacillantes, mais c'est la compréhension de l'esprit, l'apparence et la méthode de célébrer ces événements religieux qui sont tombés sous le couperet d'idéologies occidentales et de cultures totalement étrangères à l'Islam.

Il aurait été dans l'ordre des choses que, durant ces jours particulier,s qui sont déjà rares et espacés, nous les musulmans aurions consenti à redoubler d'efforts, afin de se conformer aux convenances de la religion.

Que nos habits, nos préparations, nos attitudes, nos façons de manger et de boire de se lever et de coucher, de s’asseoir et de se tenir debout, nos comportements, tout cela auraient dû refléter l’effort admirable afin de répondre au désir de Son Seigneur, compatissant pour cela un combat louable afin de satisfaire les exigences de sa foi et une détermination à maintenir l'Islam en tant que force puissante, capable de régir la direction de sa vie.

On aurait pu espérer que la congrégation du Ide soit un échantillon des enseignements exemplaires de l'Islam ; que l'assemblée des fidèles soit solennellement réunie dans leurs vêtements islamiques, lavés, propres, purs, tant intérieurement qu'extérieurement, une senteur parfumée émanant d'eux, des turbans blancs et noirs drapés autour de leurs têtes, barbes flottantes sous leurs mentons, “djoubba” pendant amplement autour de leurs jambes, exemples d'intégrité et d'obéissance dans toutes leurs actions, l’harmonie, la pureté et la piété, émanant enfin de leurs visages où se dévie la crainte d’Allah.


Hélas, la réalité des choses est bien loin des faits énoncés, elle est plutôt démoralisante et peu flatteuse. Cela découle d'une négligence sur le plan de la religion, dont les effets secondaires ont affecté à un tel point notre raisonnement et notre manière de vivre que cela a permis l'extinction de toutes les torches de l’espérance.

Désorienté et perplexe, on ne peut qu'observer la tragédie de la situation et verser des larmes intarissables de regret et d'affliction.


Ceci n'est pas un procès où on fouillerait dans les moindres détails les différents malheurs et les différents calamités dont la "Oummah" (Communauté) a à faire face. Ce n'est pas non plus le moment de discuter du déclin de notre ardeur spirituelle, mais bien une étude profonde de nous même, de la congrégation de fidèles réunie au Eid-gah (Moussallâ) en ce jour de Eid et de notre comportement pour le reste de la journée en comparaison avec les perceptions et les idéaux annoncées et décrites précédemment qui évalueront fort justement de combien nous avons compris la véritable essence et les véritables dessins de ce jour.


L’objectif de ces quelques paragraphes n'est pas d'encourager les lecteurs à focaliser leur spiritualité durant un nombre déterminé de jour. Chaque jour est une nouvelle expérience spirituelle pour le musulman et chaque prière est un tremplin rapprochant le fidèle à son Pourvoyeur et Bienfaiteur.

En fait, les ordres concernant les cinq prières quotidiennes sont bien plus rigoureux que ceux de la prière de Eid. La seule tentative est de guider les masses qui assistent aux prières durant ces jours précis à bénéficier des opportunités et d'observer leurs rituels avec une approche profondément islamique et religieusement prescrite.

Si les convenances et les instructions correspondent aux normes désirées, alors il se pourrait que la sympathie d'Allah se déverse sur nous et qu'Il illumine nos cœurs, dans leur enveloppe ténébreuse. Il plongerait alors les murs noircis de nos croyances, réveillerait nos consciences endormies et rallumerait en nous la flamme de la piété. Nous pourrions commencer à goûter les plaisirs des pratiques religieuses, la tranquillité dans la nourriture d'Allah, la sagesse de ne craindre que lui.

Remords et regrets prendraient place dans nos cœurs à léser les droits d'Allah et des créatures. L'accablement devant les années perdues dans l'ignorance, l'inactivité et l'anarchie religieuse, irriteraient l'état intriguant de nos consciences. Certes, l'appel d’Allah : "O Vous qui croyez, revenez vers Allah, en vous repentant sincèrement" devrait écraser les murs de nos défis et de nos résistances à la volonté d'Allah et nous devrions accourir en masse, répondant à son appel : "Et concurrencez vous afin d'obtenir le pardon de votre Seigneur et pour un paradis aussi large que les cieux et la terre, préparé pour ceux qui craignent Allah."


Il se peut que nous ne sommes pas tous ponctuels et méticuleux à remplir les obligations de la religion dont nous sommes redevables et que nous pouvons nous inclure parmi ceux dont la visite de la Mosquée se limiterait aux prières du vendredi et aux occasions spéciales de l'année, telles la "Laylatoul-Baraa'ah", "Laylatoul-Qadr", "Eidoul-Fitr", "Eidoul-Ad-ha".

Toutefois, si nous les pratiquons de manière correcte, des transformations immédiates et agréables pourraient intervenir dans nos vies.

Ainsi donc, ne perdons pas notre temps et ne gaspillons pas toutes ces occasions offertes par Allah.

Apprécions-les et soyons reconnaissants envers elles, car ceci est la loi irrévocable d'Allah qui déclare :

"Et lorsque votre Seigneur proclama: “Si vous êtes reconnaissants, très certainement j’augmenterai (Mes bienfaits) pour vous. Mais si vous êtes ingrats, Mon châtiment sera terrible. "(Sourate 14 / Verset 7)

Tout comme nous traitons nos affaires mondaines comme des événements concrets et qu'elles sont ainsi dûment considérées, nous devrions également regarder le jour de Ide comme un tel événement à qui nous réserverions notre plus haute révérence. Il pourrait être le prologue d'un nouveau chapitre de la vie, il pourrait ouvrir nos yeux aux réalités de ce monde.

Bien plus encore, il nous aiderait à nous repentir et amenderait nos manières incorrectes et parfois déplorables, afin que l'Islam puisse régir nos vies sous toutes ses formes.


Avant de conclure sur ces quelques mots qui sûrement, seront sources de plus amples inspirations et d'encouragements, je voudrai revenir sur un récit :

Le jour où le Prophète sallallâhou 'alayhi wa sallam quitta ce monde, à l'aube, Ses Compagnons s'étaient rassemblés dans la Masdjid afin d'accomplir la Salatoul-Fadjr. Avec humilité, ils dressèrent les rangs, et avec la synchronisation d'une armée entraînée, l'harmonie d'une famille unie, ils firent l'acte de dévotion au Seigneur. Le Prophète sallallâhou 'alayhi wa sallam, trop affaibli pour les joindre, se reposait dans sa chambre accostée à la Masdjid Nabawi à Médine. Au même moment, Abou Bakr Siddîq y menait les fidèles dans la prière du matin. Trouvant l'énergie nécessaire, le Prophète e souleva les rideaux de sa chambre et regarda à l'intérieur de la Masdjid. Alors, voyant ses dévots Compagnons s'engager dans le souvenir de leur Créateur comme un bloc indivisible, un sourire lumineux apparut sur son visage resplendissant.


A l'occasion de la prière de Eid, alors que nous nous joignons à la prière rituelle, habillons-nous, pratiquons et agissons d'une manière telle que si le Prophète Mouhammad sallallâhou 'alayhi wa sallam devrait nous apercevoir de sa chambre céleste où son visage radieux devrait apparaître de derrière les rideaux de l'invisible, alors un sourire rayonnant de satisfaction et de pur enchantement s'étofferait à travers ses lèvres… exprimant cette réflexion belle et propice :

Après 1427 ans, ils sont toujours ceux qui, faisant face à tous les démons et à toutes les atrocités, portent bien haut la torche de l'Islam dans une fierté absolue.

 

Traduction adaptée par Mw. Ataoullah Ingar

Dernière mise à jour : ( 12-10-2007 )
 
< Précédent

Archive

Générée en 0.75911 Secondes - Liens : Surf & Paintball