예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 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;
     }
 }
예제 #6
0
 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;
 }
예제 #8
0
 /**
  * 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);
 }
예제 #10
0
 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();
 }
예제 #14
0
 /**
  * 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);
 }
예제 #15
0
 /**
  * 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();
 }
예제 #16
0
 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;
 }
예제 #17
0
 /**
  * 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();
 }
예제 #19
0
 /**
  * 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;
 }
예제 #20
0
 /**
  * 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;
 }
예제 #21
0
 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;
 }
예제 #22
0
 /**
  * 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;
 }
예제 #23
0
 /**
  * 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;
 }
예제 #24
0
 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;
 }
예제 #25
0
 /**
  * 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;
 }
예제 #27
0
 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.');
     }
 }
예제 #29
0
 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);
 }
예제 #30
0
 /**
  * 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;
 }