/** * Browse Subscribers. * * @param mixed (integer for profile ID or string for a keyword) $mLooking * @param boolean $bCount Put 'true' for count the subscribers or 'false' for the result of subscribers. * @param string $sOrderBy * @param string $sSort * @param integer $iOffset * @param integer $iLimit * @return mixed (integer for the number subscribers returned or string for the subscribers list returned) */ public function browse($mLooking, $bCount, $sOrderBy, $sSort, $iOffset, $iLimit) { $bCount = (bool) $bCount; $iOffset = (int) $iOffset; $iLimit = (int) $iLimit; $sSqlLimit = !$bCount ? ' LIMIT :offset, :limit' : ''; $sSqlSelect = !$bCount ? '*' : 'COUNT(profileId) AS totalUsers'; $sSqlWhere = ctype_digit($mLooking) ? ' WHERE profileId = :looking' : ' WHERE name LIKE :looking OR email LIKE :looking OR ip LIKE :looking'; $sSqlOrder = SearchCoreModel::order($sOrderBy, $sSort); $rStmt = Db::getInstance()->prepare('SELECT ' . $sSqlSelect . ' FROM' . Db::prefix('Subscribers') . $sSqlWhere . $sSqlOrder . $sSqlLimit); ctype_digit($mLooking) ? $rStmt->bindValue(':looking', $mLooking, \PDO::PARAM_INT) : $rStmt->bindValue(':looking', '%' . $mLooking . '%', \PDO::PARAM_STR); if (!$bCount) { $rStmt->bindParam(':offset', $iOffset, \PDO::PARAM_INT); $rStmt->bindParam(':limit', $iLimit, \PDO::PARAM_INT); } $rStmt->execute(); if (!$bCount) { $mData = $rStmt->fetchAll(\PDO::FETCH_OBJ); } else { $oRow = $rStmt->fetch(\PDO::FETCH_OBJ); $mData = (int) $oRow->totalUsers; unset($oRow); } Db::free($rStmt); return $mData; }
public function insert($sKey, $fLastIp) { $rStmt = Db::getInstance()->prepare('INSERT INTO' . Db::prefix('Likes') . 'SET keyId =:key ,votes=1 , lastVote = NOW(), lastIp =:lastIp'); $rStmt->bindValue(':key', $sKey, \PDO::PARAM_STR); $rStmt->bindValue(':lastIp', $fLastIp, \PDO::PARAM_INT); return $rStmt->execute(); }
/** * Adding an Advertisement Click. * * @param integer $iAdsId * @return void */ public static function setClick($iAdsId) { $rStmt = Db::getInstance()->prepare('UPDATE' . Db::prefix('Ads') . 'SET clicks = clicks+1 WHERE adsId = :id LIMIT 1'); $rStmt->bindValue(':id', $iAdsId, \PDO::PARAM_INT); $rStmt->execute(); Db::free($rStmt); }
public static function getMetaMain($sLangId) { $oCache = (new Cache())->start(self::CACHE_GROUP, 'metaMain' . $sLangId, self::CACHE_TIME); // @return value of meta tags the database if (!($oData = $oCache->get())) { $sSql = 'SELECT * FROM' . Engine\Db::prefix('MetaMain') . 'WHERE langId = :langId'; // Get meta data with the current language if it exists in the "MetaMain" table ... $rStmt = Engine\Db::getInstance()->prepare($sSql); $rStmt->bindParam(':langId', $sLangId, \PDO::PARAM_STR); $rStmt->execute(); $oData = $rStmt->fetch(\PDO::FETCH_OBJ); // If the current language doesn't exist in the "MetaMain" table, we create a new table for the new language with default value if (empty($oData)) { $aData = ['langId' => $sLangId, 'pageTitle' => 'Home', 'metaDescription' => 'The Dating Software for creating online dating service or online social community.', 'metaKeywords' => 'script,CMS,PHP,dating script,dating software,social networking software,social networking script,social network script,free,open source,match clone,friend finder clone,adult friend finder clone', 'slogan' => 'Free Online Dating Community Site with Chat Rooms', 'promoText' => 'You\'re on the best place for meeting new people nearby! Chat, Flirt, Socialize and have Fun!<br />Create any Dating Sites like that with the <a href="http://software.hizup.com">PHP Dating Script</a>. It is Professional, Free, Open Source, ...', 'metaRobots' => 'index, follow, all', 'metaAuthor' => 'Pierre-Henry Soria', 'metaCopyright' => 'Copyright Pierre-Henry Soria. All Rights Reserved.', 'metaRating' => 'general', 'metaDistribution' => 'global', 'metaCategory' => 'dating']; Engine\Record::getInstance()->insert('MetaMain', $aData); // Create the new meta data language $oData = (object) $aData; unset($aData); } Engine\Db::free($rStmt); $oCache->put($oData); } unset($oCache); return $oData; }
/** * Gets Viewed Profile. * * @param string $sGender Constant (self::ALL, self::COUPLE, self::MALE, self::FEMALE). Default: self::ALL * @param boolean $bCount Put TRUE for count birthdays or FALSE for the result of birthdays. Default: TRUE * @param string $sOrderBy Default: SearchCoreModel::LAST_ACTIVITY * @param string $sSort Default: SearchCoreModel::DESC * @param integer $iOffset Default: NULL * @param integer $iLimit Default: NULL * @return mixed (object | integer) object for the birthdays list returned or integer for the total number birthdays returned. */ public function get($sGender = self::ALL, $bCount = false, $sOrderBy = SearchCoreModel::LAST_ACTIVITY, $sSort = SearchCoreModel::DESC, $iOffset = null, $iLimit = null) { $bIsLimit = null !== $iOffset && null !== $iLimit; $bIsSex = $sGender !== self::ALL; $bCount = (bool) $bCount; $iOffset = (int) $iOffset; $iLimit = (int) $iLimit; $sSqlLimit = !$bCount && $bIsLimit ? 'LIMIT :offset, :limit' : ''; $sSqlSelect = !$bCount ? '*' : 'COUNT(profileId) AS totalBirths'; $sSqlWhere = $bIsSex ? ' AND (sex = :sex) ' : ''; $sSqlOrder = SearchCoreModel::order($sOrderBy, $sSort); $rStmt = Db::getInstance()->prepare('SELECT ' . $sSqlSelect . ' FROM' . Db::prefix('Members') . 'WHERE (username <> \'' . PH7_GHOST_USERNAME . '\') AND (groupId=\'2\') AND (birthDate LIKE :date)' . $sSqlWhere . $sSqlOrder . $sSqlLimit); $rStmt->bindValue(':date', '%' . (new CDateTime())->get()->date('-m-d'), \PDO::PARAM_STR); if ($bIsSex) { $rStmt->bindValue(':sex', $sGender, \PDO::PARAM_STR); } if (!$bCount && $bIsLimit) { $rStmt->bindParam(':offset', $iOffset, \PDO::PARAM_INT); $rStmt->bindParam(':limit', $iLimit, \PDO::PARAM_INT); } $rStmt->execute(); if (!$bCount) { $oRow = $rStmt->fetchAll(\PDO::FETCH_OBJ); Db::free($rStmt); return $oRow; } else { $oRow = $rStmt->fetch(\PDO::FETCH_OBJ); Db::free($rStmt); return (int) $oRow->totalBirths; } }
public static function getMetaMain($sLangId) { $oCache = (new Cache())->start(self::CACHE_GROUP, 'metaMain' . $sLangId, self::CACHE_TIME); // @return value of meta tags the database if (!($oData = $oCache->get())) { $sSql = 'SELECT * FROM' . Engine\Db::prefix('MetaMain') . 'WHERE langId = :langId'; // Get meta data with the current language if it exists in the "MetaMain" table ... $rStmt = Engine\Db::getInstance()->prepare($sSql); $rStmt->bindParam(':langId', $sLangId, \PDO::PARAM_STR); $rStmt->execute(); $oData = $rStmt->fetch(\PDO::FETCH_OBJ); // If the current language doesn't exist in the "MetaMain" table, we create a new table for the new language with default value if (empty($oData)) { $aData = ['langId' => $sLangId, 'pageTitle' => 'Home', 'metaDescription' => 'The Dating Software for creating online dating service or online social community.', 'metaKeywords' => 'script,CMS,PHP,dating script,dating software,social networking software,social networking script,social network script,free,open source,match clone,friend finder clone,adult friend finder clone', 'slogan' => 'pH7CMS is the leading Dating CMS specializes in online open source dating software!', 'metaRobots' => 'index, follow, all', 'metaAuthor' => 'Pierre-Henry Soria', 'metaCopyright' => 'Copyright Pierre-Henry Soria. All Rights Reserved.', 'metaRating' => 'general', 'metaDistribution' => 'global', 'metaCategory' => 'dating']; Engine\Record::getInstance()->insert('MetaMain', $aData); // Create the new meta data language $oData = (object) $aData; unset($aData); } Engine\Db::free($rStmt); $oCache->put($oData); } unset($oCache); return $oData; }
public function totalReports() { $rStmt = Db::getInstance()->prepare('SELECT COUNT(reportId) AS totalRpts FROM' . Db::prefix('Report')); $rStmt->execute(); $oRow = $rStmt->fetch(\PDO::FETCH_OBJ); Db::free($rStmt); return (int) $oRow->totalRpts; }
/** * Delete a comment. * * @param integer $iRecipientId The Comment Recipient ID. * @param string $sTable The Comment Table. * @return boolean Returns TRUE on success, FALSE on failure. */ public static function deleteRecipient($iRecipientId, $sTable) { $sTable = CommentCore::checkTable($sTable); $iRecipientId = (int) $iRecipientId; $rStmt = Db::getInstance()->prepare('DELETE FROM' . Db::prefix('Comments' . $sTable) . 'WHERE recipient = :recipient'); $rStmt->bindValue(':recipient', $iRecipientId, \PDO::PARAM_INT); return $rStmt->execute(); }
/** * Delete Affiliate. * * @param integer $iProfileId * @param string $sUsername * @return void */ public function delete($iProfileId, $sUsername) { $iProfileId = (int) $iProfileId; $oDb = Db::getInstance(); $oDb->exec('DELETE FROM' . Db::prefix('AffiliatesInfo') . 'WHERE profileId = ' . $iProfileId . ' LIMIT 1'); $oDb->exec('DELETE FROM' . Db::prefix('Affiliates') . 'WHERE profileId = ' . $iProfileId . ' LIMIT 1'); unset($oDb); }
public function totalNotes() { $rStmt = Db::getInstance()->prepare('SELECT COUNT(noteId) AS totalNotes FROM' . Db::prefix('Notes') . 'WHERE approved = \'0\''); $rStmt->execute(); $oRow = $rStmt->fetch(\PDO::FETCH_OBJ); Db::free($rStmt); return (int) $oRow->totalNotes; }
/** * Generic method to check if the field exists and with the check \PH7\Framework\Mvc\Model\Engine\Util\Various::checkModelTable() method. * * @access protected * @param string $sColumn * @param string $sValue * @param string $sTable * @param string $sType PDO PARAM TYPE (\PDO::PARAM_*). Default is \PDO::PARAM_STR * @param string $sParam Optional WHERE parameter SQL. * @return boolean Returns TRUE if it exists, FALSE otherwise. */ protected function _is($sColumn, $sValue, $sTable, $sType = null, $sParam = null) { Various::checkModelTable($sTable); $sType = empty($sType) ? \PDO::PARAM_STR : $sType; $rExists = Db::getInstance()->prepare('SELECT COUNT(' . $sColumn . ') FROM' . Db::prefix($sTable) . 'WHERE ' . $sColumn . ' = :column ' . $sParam . ' LIMIT 1'); $rExists->bindValue(':column', $sValue, $sType); $rExists->execute(); return $rExists->fetchColumn() == 1; }
public function updateScore($fScore, $iId, $sTable) { $sTable = Various::checkTable($sTable); $sWhere = Various::convertTableToId($sTable); $rStmt = Db::getInstance()->prepare('UPDATE' . Db::prefix($sTable) . 'SET score = :score WHERE ' . $sWhere . ' = :id'); $rStmt->bindValue(':score', $fScore); $rStmt->bindValue(':id', $iId); return $rStmt->execute(); }
public function deletePhoto($iProfileId, $iAlbumId, $iPictureId = null) { $sSqlPictureId = !empty($iPictureId) ? ' AND pictureId=:pictureId ' : ''; $rStmt = Db::getInstance()->prepare('DELETE FROM' . Db::prefix('Pictures') . 'WHERE profileId=:profileId AND albumId=:albumId' . $sSqlPictureId); $rStmt->bindValue(':profileId', $iProfileId, \PDO::PARAM_INT); $rStmt->bindValue(':albumId', $iAlbumId, \PDO::PARAM_INT); !empty($iPictureId) ? $rStmt->bindValue(':pictureId', $iPictureId, \PDO::PARAM_INT) : ''; return $rStmt->execute(); }
/** * Adding an Advertisement Click. * * @param integer $iAdsId * @return void */ public static function setClick($iAdsId) { $rStmt = Db::getInstance()->prepare('INSERT INTO' . Db::prefix('AdsClicks') . 'SET adsId = :adsId, url = :url, ip = :ip, dateTime = :dateTime'); $rStmt->bindValue(':adsId', $iAdsId, \PDO::PARAM_INT); $rStmt->bindValue(':ip', \PH7\Framework\Ip\Ip::get(), \PDO::PARAM_STR); $rStmt->bindValue(':dateTime', (new \PH7\Framework\Date\CDateTime())->get()->dateTime('Y-m-d H:i:s'), \PDO::PARAM_STR); $rStmt->execute(); Db::free($rStmt); }
/** * Add a new message. * * @param string $sFrom Username * @param string $sTo Username 2 * @param string $sMessage Message content * @param string $sDate In date format: 0000-00-00 00:00:00 * @return boolean Returns TRUE on success or FALSE on failure */ public function insert($sFrom, $sTo, $sMessage, $sDate) { $rStmt = Db::getInstance()->prepare('INSERT INTO' . Db::prefix('Messenger') . '(fromUser, toUser, message, sent) VALUES (:from, :to, :message, :date)'); $rStmt->bindValue(':from', $sFrom, \PDO::PARAM_STR); $rStmt->bindValue(':to', $sTo, \PDO::PARAM_STR); $rStmt->bindValue(':message', $sMessage, \PDO::PARAM_STR); $rStmt->bindValue(':date', $sDate, \PDO::PARAM_STR); return $rStmt->execute(); }
public static function countUnreadMsg($iProfileId) { $rStmt = Db::getInstance()->prepare('SELECT COUNT(status) AS unread FROM' . Db::prefix('Messages') . 'WHERE recipient = :recipient AND status = \'1\' AND NOT FIND_IN_SET(\'recipient\', toDelete)'); $rStmt->bindValue(':recipient', $iProfileId, \PDO::PARAM_INT); $rStmt->execute(); $oRow = $rStmt->fetch(\PDO::FETCH_OBJ); Db::free($rStmt); return (int) $oRow->unread; }
/** * Count total friends. * * @param integer $iProfileId * @return integer */ public static function totalFriends($iProfileId) { $rStmt = Db::getInstance()->prepare('SELECT COUNT(friendId) AS totalFriends FROM' . Db::prefix('MembersFriends') . 'WHERE (profileId = :profileId OR friendId= :profileId)'); $rStmt->bindValue(':profileId', $iProfileId, \PDO::PARAM_INT); $rStmt->execute(); $oRow = $rStmt->fetch(\PDO::FETCH_OBJ); Db::free($rStmt); return (int) $oRow->totalFriends; }
public function ban($iProfileId, $iBan, $sTable = 'Members') { Various::checkModelTable($sTable); $iProfileId = (int) $iProfileId; $iBan = (int) $iBan; $rStmt = Db::getInstance()->prepare('UPDATE' . Db::prefix($sTable) . 'SET ban = :ban WHERE profileId = :profileId'); $rStmt->bindValue(':profileId', $iProfileId, \PDO::PARAM_INT); $rStmt->bindValue(':ban', $iBan, \PDO::PARAM_INT); return $rStmt->execute(); }
/** * This method was created to avoid retrieving the column "views" with the general Model of the module, * since it uses the cache and therefore cannot retrieve the number of real-time views. * * @param integer $iId * @param string $sTable * @return integer Number of views. */ public static function getView($iId, $sTable) { $sWhere = Various::convertTableToId($sTable); $rStmt = Db::getInstance()->prepare('SELECT views FROM' . Db::prefix($sTable) . 'WHERE ' . $sWhere . ' = :id LIMIT 1'); $rStmt->bindValue(':id', $iId, \PDO::PARAM_INT); $rStmt->execute(); $oRow = $rStmt->fetch(\PDO::FETCH_OBJ); Db::free($rStmt); return (int) @$oRow->views; }
/** * Executes SQL queries. * * @param string $sSqlFile File SQL. * @return mixed (boolean | array) Returns TRUE if there are no errors, otherwise returns an ARRAY of error information. */ public static function execQueryFile($sSqlFile) { if (!is_file($sSqlFile)) { return false; } $sSqlContent = file_get_contents($sSqlFile); $sSqlContent = str_replace(PH7_TABLE_PREFIX, Db::prefix(), $sSqlContent); $rStmt = Db::getInstance()->exec($sSqlContent); unset($sSqlContent); return $rStmt === false ? $rStmt->errorInfo() : true; }
public function getForumsPosts($sOrder, $iOffset, $iLimit) { $iOffset = (int) $iOffset; $iLimit = (int) $iLimit; $rStmt = Db::getInstance()->prepare('SELECT f.name, t.title, t.message, t.createdDate, t.updatedDate, t.forumId, t.topicId, m.username FROM' . Db::prefix('Forums') . 'AS f INNER JOIN' . Db::prefix('ForumsTopics') . 'AS t ON f.forumId = t.forumId LEFT JOIN' . Db::prefix('Members') . ' AS m ON t.profileId = m.profileId WHERE t.approved=1 ORDER BY ' . $sOrder . ' DESC LIMIT :offset, :limit'); $rStmt->bindParam(':offset', $iOffset, \PDO::PARAM_INT); $rStmt->bindParam(':limit', $iLimit, \PDO::PARAM_INT); $rStmt->execute(); $oData = $rStmt->fetchAll(\PDO::FETCH_OBJ); Db::free($rStmt); return $oData; }
/** * Get Total Advertisements. * * @param string $sTable Default 'Ads' * @return integer */ public function total($sTable = 'Ads') { $this->cache->start(self::CACHE_GROUP, 'total' . $sTable, 604800); if (!($iData = $this->cache->get())) { AdsCore::checkTable($sTable); $rStmt = Db::getInstance()->prepare('SELECT COUNT(adsId) AS totalAds FROM' . Db::prefix($sTable)); $rStmt->execute(); $oRow = $rStmt->fetch(\PDO::FETCH_OBJ); Db::free($rStmt); $iData = (int) $oRow->totalAds; unset($oRow); $this->cache->put($iData); } return $iData; }
/** * Get random picture. * * @param integer $iProfileId Default NULL * If the user is connected, you need the ID of the user in this parameter to not display the avatar of the user since the user can not vote for himself. * * @param integer $iApproved Default 1 * @param integer $iOffset Default 0 * @param integer $iLimit Default 1 * @return object DATA ot the user (profileId, username, firstName, sex, avatar). */ public function getPicture($iProfileId = null, $iApproved = 1, $iOffset = 0, $iLimit = 1) { $sSql = !empty($iProfileId) ? ' AND (profileId <> :profileId) ' : ' '; $rStmt = Db::getInstance()->prepare('SELECT profileId, username, firstName, sex, avatar FROM' . Db::prefix('Members') . 'WHERE (username <> \'' . PH7_GHOST_USERNAME . '\')' . $sSql . 'AND (avatar IS NOT NULL) AND (approvedAvatar = :approved) ORDER BY RAND() LIMIT :offset, :limit'); if (!empty($iProfileId)) { $rStmt->bindValue(':profileId', $iProfileId, \PDO::PARAM_INT); } $rStmt->bindValue(':approved', $iApproved, \PDO::PARAM_INT); $rStmt->bindParam(':offset', $iOffset, \PDO::PARAM_INT); $rStmt->bindParam(':limit', $iLimit, \PDO::PARAM_INT); $rStmt->execute(); $oRow = $rStmt->fetch(\PDO::FETCH_OBJ); Db::free($rStmt); return $oRow; }
public function get($sTitle = null, $iGameId = null, $iOffset, $iLimit, $sOrder = SearchCoreModel::NAME) { $iOffset = (int) $iOffset; $iLimit = (int) $iLimit; $sOrderBy = SearchCoreModel::order($sOrder, SearchCoreModel::DESC); $sSqlGameId = !empty($iGameId) ? ' WHERE title LIKE :title AND gameId =:gameId ' : ''; $rStmt = Db::getInstance()->prepare('SELECT * FROM' . Db::prefix('Games') . $sSqlGameId . $sOrderBy . 'LIMIT :offset, :limit'); isset($sTitle, $iGameId) ? $rStmt->bindValue(':title', $sTitle . '%', \PDO::PARAM_STR) : ''; isset($sTitle, $iGameId) ? $rStmt->bindValue(':gameId', $iGameId, \PDO::PARAM_INT) : ''; $rStmt->bindParam(':offset', $iOffset, \PDO::PARAM_INT); $rStmt->bindParam(':limit', $iLimit, \PDO::PARAM_INT); $rStmt->execute(); $oData = !empty($iGameId) ? $rStmt->fetch(\PDO::FETCH_OBJ) : $rStmt->fetchAll(\PDO::FETCH_OBJ); Db::free($rStmt); return $oData; }
/** * Detect duplicate contents. * * @param string $sCheckContent Message content to check. * @param string $sFindColumn * @param string $sColumnId * @param integer $iFindId * @param string $sTable * @param string $sAdditionalSql Additional SQL code. Default NULL * @return boolean Returns TRUE if similar content was found in the table, FALSE otherwise. */ public static function detectDuplicate($sCheckContent, $sFindColumn, $sColumnId, $iFindId, $sTable, $sAdditionalSql = null) { $bReturn = false; // Default value $sSql = !empty($sAdditionalSql) ? ' ' . $sAdditionalSql : ''; $rStmt = Db::getInstance()->prepare('SELECT ' . $sFindColumn . ' AS content FROM ' . Db::prefix($sTable) . 'WHERE ' . $sColumnId . ' = :id' . $sSql); $rStmt->bindValue(':id', $iFindId, \PDO::PARAM_INT); $rStmt->execute(); while ($oRow = $rStmt->fetch(\PDO::FETCH_OBJ)) { if ($bReturn = SecMsg::detectDuplicate($sCheckContent, $oRow->content)) { break; } } // TRUE = Duplicate content detected, FALSE otherwise. return $bReturn; }
/** * Gets the total posts. * * @param integer $iDay Default 0 * @return integer */ public function totalPosts($iDay = 0) { $this->cache->start(self::CACHE_GROUP, 'totalPosts', static::CACHE_TIME); if (!($iData = $this->cache->get())) { $iDay = (int) $iDay; $sSqlDay = $iDay > 0 ? ' WHERE (createdDate + INTERVAL ' . $iDay . ' DAY) > NOW()' : ''; $rStmt = Db::getInstance()->prepare('SELECT COUNT(postId) AS totalPosts FROM' . Db::prefix('Blogs') . $sSqlDay); $rStmt->execute(); $oRow = $rStmt->fetch(\PDO::FETCH_OBJ); Db::free($rStmt); $iData = (int) $oRow->totalPosts; unset($oRow); $this->cache->put($iData); } return $iData; }
public function get($iProfileId, $iWallId = null, $iOffset, $iLimit) { $iOffset = (int) $iOffset; $iLimit = (int) $iLimit; $sSqlWallId = !empty($iWallId) ? ' AND wallId=:wallId ' : ''; $rStmt = Db::getInstance()->prepare('SELECT * FROM' . Db::prefix('MembersWall') . ' AS w LEFT JOIN' . Db::prefix('Members') . 'AS m ON w.profileId = m.profileId WHERE :profileId=:profileId ' . $sSqlWallId . ' ORDER BY dateTime DESC LIMIT :offset, :limit'); $rStmt->bindValue(':profileId', $iProfileId, \PDO::PARAM_INT); if (!empty($iWallId)) { $rStmt->bindValue(':wallId', $iWallId, \PDO::PARAM_INT); } $rStmt->bindParam(':offset', $iOffset, \PDO::PARAM_INT); $rStmt->bindParam(':limit', $iLimit, \PDO::PARAM_INT); $rStmt->execute(); $oRow = $rStmt->fetchAll(\PDO::FETCH_OBJ); Db::free($rStmt); return $oRow; }
/** * Write to the logfile. * * @param object $oExcept \Exception object. * @return void */ public function except(\Exception $oExcept) { // Time: Set the log date/time. // IP: The IP address of the client. // UserAgent: The User Agent of the Browser Web. // UrlPag: The URL page where the exception is thrown. // Query: The request for such a page. // Message: constains the error message. // Level: contains the log level. // File: constains the file name. // Line: constains the line number. $sAgent = null !== ($mAgent = $this->browser->getUserAgent()) ? $mAgent : 'NO USER AGENT'; $sQuery = null !== ($mQuery = (new Http())->getQueryString()) ? $mQuery : 'NO QUERY STRING'; $aLog = ['Time' => $this->dateTime->get()->dateTime(), 'IP' => Ip::get(), 'UserAgent' => $sAgent, 'UrlPag' => $this->httpRequest->currentUrl(), 'Query' => $sQuery, 'Message' => $oExcept->getMessage(), 'Level' => $oExcept->getCode(), 'File' => $oExcept->getFile(), 'Line' => $oExcept->getLine()]; // Encode the line $sContents = json_encode($aLog) . File::EOL . File::EOL . File::EOL; switch ($this->config->values['logging']['log_handler']) { case 'file': $sFullFile = $this->sDir . static::EXCEPT_DIR . $this->sFileName . '.json'; $sFullGzipFile = $this->sDir . static::EXCEPT_DIR . static::GZIP_DIR . $this->sFileName . '.gz'; // If the log file is larger than 5 Mo then it compresses it into gzip if (file_exists($sFullFile) && filesize($sFullFile) >= 5 * 1024 * 1024) { $rHandler = @gzopen($sFullGzipFile, 'a') or exit('Unable to write to log file gzip.'); gzwrite($rHandler, $sContents); gzclose($rHandler); } else { $rHandler = @fopen($sFullFile, 'a') or exit('Unable to write to log file.'); fwrite($rHandler, $sContents); fclose($rHandler); } break; case 'database': $rStmt = Db::getInstance()->prepare('INSERT INTO' . Db::prefix('LogError') . 'SET logError = :line'); $rStmt->execute(array(':line' => $sContents)); Db::free($rStmt); break; case 'email': $aInfo = ['to' => $this->config->values['logging']['bug_report_email'], 'subject' => t('Errors Reporting of the pH7 Framework')]; (new \PH7\Framework\Mail\Mail())->send($aInfo, $sContents, false); break; default: exit('Invalid Log Option.'); } }
public function getMessage($iTopicId, $iMessageId = null, $iProfileId = null, $iApproved, $iOffset, $iLimit, $sSort = Db::ASC) { $iOffset = (int) $iOffset; $iLimit = (int) $iLimit; $sSqlMessageId = !empty($iMessageId) ? ' AND msg.messageId = :messageId ' : ''; $sSqlProfileId = !empty($iProfileId) ? ' AND msg.profileId = :profileId ' : ''; $rStmt = Db::getInstance()->prepare('SELECT f.name, t.title, t.forumId, msg.*, m.username, m.firstName, m.sex FROM' . Db::prefix('Forums') . 'AS f INNER JOIN' . Db::prefix('ForumsTopics') . 'AS t ON f.forumId = t.forumId INNER JOIN ' . Db::prefix('ForumsMessages') . 'AS msg ON t.topicId = msg.topicId LEFT JOIN' . Db::prefix('Members') . 'AS m ON msg.profileId = m.profileId WHERE msg.topicId = :topicId ' . $sSqlMessageId . $sSqlProfileId . ' AND msg.approved = :approved ORDER BY msg.createdDate ' . $sSort . ' LIMIT :offset, :limit'); $rStmt->bindValue(':topicId', $iTopicId, \PDO::PARAM_INT); if (!empty($iMessageId)) { $rStmt->bindValue(':messageId', $iMessageId, \PDO::PARAM_INT); } if (!empty($iProfileId)) { $rStmt->bindValue(':profileId', $iProfileId, \PDO::PARAM_INT); } $rStmt->bindValue(':approved', $iApproved, \PDO::PARAM_INT); $rStmt->bindParam(':offset', $iOffset, \PDO::PARAM_INT); $rStmt->bindParam(':limit', $iLimit, \PDO::PARAM_INT); $rStmt->execute(); return !empty($iProfileId) ? $rStmt->fetch(\PDO::FETCH_OBJ) : $rStmt->fetchAll(\PDO::FETCH_OBJ); }
/** * Gets total note posts. * * @param integer $iApproved (0 = Unmoderated | 1 = Approved | NULL = unmoderated and approved) Default 1 * @param integer $iDay Default 0 * @return integer */ public function totalPosts($iApproved = 1, $iDay = 0) { $this->cache->start(self::CACHE_GROUP, 'totalPosts', static::CACHE_TIME); if (!($iData = $this->cache->get())) { $iDay = (int) $iDay; $sSqlWhere = isset($iApproved) ? 'WHERE' : ''; $sSqlAnd = isset($iApproved) && $iDay > 0 ? ' AND' : ($iDay > 0 ? 'WHERE' : ''); $sSqlApproved = isset($iApproved) ? ' approved = :approved' : ''; $sSqlDay = $iDay > 0 ? ' (createdDate + INTERVAL ' . $iDay . ' DAY) > NOW()' : ''; $rStmt = Db::getInstance()->prepare('SELECT COUNT(postId) AS totalPosts FROM' . Db::prefix('Notes') . $sSqlWhere . $sSqlApproved . $sSqlAnd . $sSqlDay); if (isset($iApproved)) { $rStmt->bindValue(':approved', $iApproved, \PDO::PARAM_INT); } $rStmt->execute(); $oRow = $rStmt->fetch(\PDO::FETCH_OBJ); Db::free($rStmt); $iData = (int) $oRow->totalPosts; unset($oRow); $this->cache->put($iData); } return $iData; }