message of action * @param user_id -> the user id of action * @return boolean * * Add an action record in the history list for a given user. */ public function add($message_key, $user_id) { $message_key = $_SESSION['database']->clearString($message_key); $user_id = $_SESSION['database']->clearString($user_id); // hosting_id ŕ récuperer $hosting_id = 1; $ip = $_SERVER['REMOTE_ADDR']; $req = "INSERT INTO history SET date = NOW(), user_id = '$user_id', hosting_id = '$hosting_id', ip = '$ip', message_key = '$message_key'"; $_SESSION['database']->execRequest($req); // Update cache if needed if ( !is_null($this->history_records) ) { $this->history_records++; } return true; } // End of actiontoHistory /** * @brief List all history actions with a given clause * @param start -> Record of starting listing * @param extract -> Number of records to extract * @param clause -> SQL clause for listing * @return array with information (nul if empty) */ private function listHistoryByClause($start = NULL, $extract = NULL, $clause = NULL) { $lang = new lang(); if ( !is_null($start) and !is_null($extract) ) { $limit = "LIMIT $start, $extract"; } else $limit = NULL; if ( !is_null($clause) ) { $clause = "WHERE $clause"; } $req = "SELECT h.message_key AS action, i.base_name AS hosting, h.ip AS ip, UNIX_TIMESTAMP(h.date) AS date FROM history AS h LEFT JOIN hostings AS i ON i.id = h.hosting_id $clause $limit"; $result = $_SESSION['database']->fetchObject($req); foreach ( $result as $key => $value ) { $result[$key]->action = $lang->getWordFromLangFile($result[$key]->action); } return $result; } // End of listHistoryByClause /** * @brief List all history actions for the current user * @param start -> Record of starting listing * @param extract -> Number of records to extract * @return array with information (nul if empty) */ public function userListHistory($start = NULL, $extract = NULL) { $lang = new lang(); if ( !is_null($start) and !is_null($extract) ) { $limit = " LIMIT $start, $extract"; } else $limit = NULL; $user_id = $_SESSION['user']->information_user->userid; $result = $this->listHistoryByClause($start,$extract, "h.user_id='$user_id'"); $time = $lang->userGetTimeFormat(); $date = $lang->userGetDateFormat(); foreach ( $result as $key => $value ) { $result[$key]->date = date("$date $time" , $result[$key]->date); } return $result; } // End of userListHistory /** * @brief Get number of all history records for the current user * @param None * @return number of history records registered for the user * * Get the total of all actions recorded in the history list for the current user.
* This value is got the first time from the database (generating a SQL request) and is then stocked in a cache variable, so, other calls to this method won't generate another SQL request. */ public function userCountHistoryRecords() { // Try to get the value from the cache if( !is_null($this->history_records) ) { return $this->history_records; } $user_id = $_SESSION['user']->information_user->userid; $req = "SELECT COUNT(id) AS total FROM history WHERE user_id='$user_id'"; $result = $_SESSION['database']->fetchObject($req); $this->history_records = $result[0]->total; return $this->history_records; } /** * @brief Get number of history records pages, regarding the total count of records and the count of items to be shown per page * @param None * @return number of pages availables * * Calculate the total pages needed to show all the history actions records for the current user. */ public function userCountTotalPages() { $items_count = $this->userCountHistoryRecords(); $pages_count = intval($items_count / RECORD_BY_PAGE); if ( ($items_count % RECORD_BY_PAGE) != 0 ) { $pages_count++; } return $pages_count; } } // End of class