示例#1
0
文件: status.php 项目: bizanto/Hooked
 /**
  * Update the user status
  * 
  * @param	int		user id
  * @param	string	the message. Should be < 140 char (controller check)	 	 	 
  */
 function update($id, $status)
 {
     $db =& $this->getDBO();
     $my = CFactory::getUser();
     // @todo: posted_on should be constructed to make sure we take into account
     // of Joomla server offset
     // Current user and update id should always be the same
     CError::assert($my->id, $id, 'eq', __FILE__, __LINE__);
     // Trigger onStatusUpdate
     require_once COMMUNITY_COM_PATH . DS . 'libraries' . DS . 'apps.php';
     $appsLib =& CAppPlugins::getInstance();
     $appsLib->loadApplications();
     $args = array();
     $args[] = $my->id;
     // userid
     $args[] = $my->getStatus();
     // old status
     $args[] = $status;
     // new status
     $appsLib->triggerEvent('onProfileStatusUpdate', $args);
     $today =& JFactory::getDate();
     $data = new stdClass();
     $data->userid = $id;
     $data->status = $status;
     $data->posted_on = $today->toMySQL();
     $db->updateObject('#__community_users', $data, 'userid');
     if ($db->getErrorNum()) {
         JError::raiseError(500, $db->stderr());
     }
 }
 /**
  * Конструктор класса, выполняет подмену стандартного конструктора, в зависимости от настроек
  * модуля и системы 1С-Битрикс выполняет вывод ошибки или в лог (задаётся на настройках модуля) или на экран пользователя
  * @param string - Сообщение об ошибке
  * @param int - Код ошибки
  * @param string - Текст запроса к БД
  */
 function __construct($sMessage = '', $nCode = 0, $sQuery = '')
 {
     parent::__construct($sMessage, intval($nCode));
     $this->sQuery = $sQuery;
     if ($this->sQuery) {
         $sQuery = preg_replace("/([0-9a-f]){32}/", "********************************", $sQuery);
         // Hides all hashes
         $sQueryStr = "{$sQuery}";
     }
     $sErrorText = "Ошибка вызова MySQL: " . $this->getMessage() . "\n" . "Код ошибки: " . $this->sError . "\n" . "Текст запроса: " . $sQueryStr . "\n" . "Стэк вызова функций: \n";
     $arTrace = $this->getTrace();
     foreach ($arTrace as $item => $arFunction) {
         $sErrorText .= 'В файле: ' . $arFunction['file'] . "\n";
         if (array_key_exists('class', $arFunction) && $arFunction['class'] != '') {
             $sErrorText .= $arFunction['class'] . $arFunction['type'] . $arFunction['function'] . '() - строка ' . $arFunction['line'];
         } else {
             $sErrorText .= $arFunction['function'] . '() - строка ' . $arFunction['line'];
         }
         $sErrorText .= "\n" . '----------------------------------------------------' . "\n";
     }
     if (COption::GetOptionString('koloslib', 'db_log') == 'Y') {
         error_log(date('d.m.Y H:i') . ' ' . $sErrorText . "\n===========================\n", 3, ROOT_DIR . COption::GetOptionString('koloslib', 'db_log_path'));
     }
     $this->sMessage = "DB_MYSQL_ERROR";
     $this->sErrorText = '';
 }
示例#3
0
文件: CError.php 项目: Rgss/imp
 /**
  * 实例化
  * 
  * @param unknown $controller
  * @return unknown
  */
 public static function getInstance($controller)
 {
     if (null === self::$instance) {
         self::$instance = new self($controller);
     }
     return self::$instance;
 }
示例#4
0
 public function setImage($path, $type = 'thumb')
 {
     CError::assert($path, '', '!empty', __FILE__, __LINE__);
     $db = $this->getDBO();
     // Fix the back quotes
     $path = CString::str_ireplace('\\', '/', $path);
     $type = JString::strtolower($type);
     // Test if the record exists.
     $oldFile = $this->{$type};
     if ($db->getErrorNum()) {
         JError::raiseError(500, $db->stderr());
     }
     if ($oldFile) {
         // File exists, try to remove old files first.
         $oldFile = CString::str_ireplace('/', '/', $oldFile);
         // If old file is default_thumb or default, we should not remove it.
         //
         // Need proper way to test it
         if (!JString::stristr($oldFile, 'group.jpg') && !JString::stristr($oldFile, 'group_thumb.jpg') && !JString::stristr($oldFile, 'default.jpg') && !JString::stristr($oldFile, 'default_thumb.jpg')) {
             jimport('joomla.filesystem.file');
             JFile::delete($oldFile);
         }
     }
     $this->{$type} = $path;
     $this->store();
 }
示例#5
0
 public function onDiscussionDisplay($row)
 {
     CError::assert($row->message, '', '!empty', __FILE__, __LINE__);
     // @rule: Only nl2br text that doesn't contain html tags
     if (!CStringHelper::isHTML($row->message)) {
         $row->message = CStringHelper::nl2br($row->message);
     }
 }
示例#6
0
 public function onWallDisplay($row)
 {
     //CFactory::load( 'helpers' , 'string' );
     CError::assert($row->comment, '', '!empty', __FILE__, __LINE__);
     // @rule: Only nl2br text that doesn't contain html tags
     if (!CStringHelper::isHTML($row->comment)) {
         $row->comment = CStringHelper::nl2br($row->comment);
     }
 }
示例#7
0
文件: input.php 项目: Jougito/DynWeb
 function onDiscussionDisplay(&$row)
 {
     CError::assert($row->message, '', '!empty', __FILE__, __LINE__);
     $config = CFactory::getConfig();
     // If editor is disabled, we only want to replace newlines with BR otherwise it doesn't make any sense to replace so many br
     if ($config->get('editor') == '0') {
         $row->message = $this->_filterText($row->message);
     }
 }
示例#8
0
 public function onMessageDisplay($row)
 {
     CFactory::load('helpers', 'string');
     CError::assert($row->body, '', '!empty', __FILE__, __LINE__);
     // @rule: Only nl2br text that doesn't contain html tags
     if (!CStringHelper::isHTML($row->body)) {
         $row->body = CStringHelper::nl2br($row->body);
     }
 }
示例#9
0
 public function onWallDisplay($row)
 {
     //CFactory::load( 'helpers' , 'string' );
     CError::assert($row->comment, '', '!empty', __FILE__, __LINE__);
     // @rule: Only nl2br text that doesn't contain html tags
     //@since 4.1 new rule added, to ignore newline replace
     if (!CStringHelper::isHTML($row->comment) && !isset($row->newlineReplace)) {
         $row->comment = CStringHelper::nl2br($row->comment);
     }
 }
示例#10
0
文件: Loader.php 项目: Rgss/imp
 /**
  * 加载文件
  * 
  * @param string $name
  */
 public static function load($class_name)
 {
     if (self::checkClass($class_name)) {
         return true;
     }
     // add to class map
     self::addClass(str_replace('/', '_', $class_name));
     $file = dirname(dirname(dirname(dirname(__FILE__)))) . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, $class_name) . '.php';
     if (!is_file($file)) {
         CError::show('COULD NOT FOUND THE FILE ' . $file);
     }
     require $file;
 }
示例#11
0
 /**
  * Add new activity,
  * @access 	static
  * 	 
  */
 function add($activity, $params = '', $points = 1)
 {
     CError::assert($activity, '', '!empty', __FILE__, __LINE__);
     // If params is an object, instead of a string, we convert it to string
     $cmd = !empty($activity->cmd) ? $activity->cmd : '';
     if (!empty($cmd)) {
         $userPointModel = CFactory::getModel('Userpoints');
         // Test command, with userpoint command. If is unpublished do not proceed into adding to activity stream.
         $point = $userPointModel->getPointData($cmd);
         if ($point && !$point->published) {
             return;
         }
     }
     $actor = !empty($activity->actor) ? $activity->actor : '';
     $target = !empty($activity->target) ? $activity->target : 0;
     $title = !empty($activity->title) ? $activity->title : '';
     $content = !empty($activity->content) ? $activity->content : '';
     $appname = !empty($activity->app) ? $activity->app : '';
     $cid = !empty($activity->cid) ? $activity->cid : 0;
     $points = !empty($activity->points) ? $activity->points : $points;
     $access = !empty($activity->access) ? $activity->access : 0;
     // If the params in embedded within the activity object, use it
     // if it is not explicitly overriden
     if (empty($params) && !empty($activity->params)) {
         $params = $activity->params;
     }
     include_once JPATH_ROOT . DS . 'components' . DS . 'com_community' . DS . 'models' . DS . 'activities.php';
     if (class_exists('CFactory')) {
         $activities = CFactory::getModel('activities');
     } else {
         $activities = new CommunityModelActivities();
     }
     // Update access for activity based on the user's profile privacy
     if (!empty($actor) && $actor != 0) {
         $user = CFactory::getUser($actor);
         $userParams = $user->getParams();
         $profileAccess = $userParams->get('privacyProfileView');
         // Only overwrite access if the user global profile privacy is higher
         // BUT, if access is defined as PRIVACY_FORCE_PUBLIC, do not modify it
         if ($access != PRIVACY_FORCE_PUBLIC && $profileAccess > $access) {
             $access = $profileAccess;
         }
     }
     $activities->add($actor, $target, $title, $content, $appname, $cid, $params, $points, $access);
 }
示例#12
0
文件: url.php 项目: bizanto/Hooked
 public static function build($view, $task = '', $keys = null, $route = true)
 {
     // View cannot be empty. Assertion must be included here.
     CError::assert($view, '', '!empty', __FILE__, __LINE__);
     $url = 'index.php?option=com_community&view=' . $view;
     // Task might be optional
     $url .= !empty($task) ? '&task=' . $task : '';
     if (!is_null($keys) && is_array($keys)) {
         foreach ($keys as $key => $value) {
             $url .= '&' . $key . '=' . $value;
         }
     }
     // Test if it needs JRoute
     if ($route) {
         return CRoute::_($url);
     }
     return $url;
 }
示例#13
0
文件: users.php 项目: bizanto/Hooked
 /**
  *	Set the avatar for specific application. Caller must have a database table
  *	that is named after the appType. E.g, users should have jos_community_users	 
  *	
  * @param	appType		Application type. ( users , groups )
  * @param	path		The relative path to the avatars.
  * @param	type		The type of Image, thumb or avatar.
  *
  **/
 function setImage($id, $path, $type = 'thumb')
 {
     CError::assert($id, '', '!empty', __FILE__, __LINE__);
     CError::assert($path, '', '!empty', __FILE__, __LINE__);
     $db =& $this->getDBO();
     // Fix the back quotes
     $path = JString::str_ireplace('\\', '/', $path);
     $type = JString::strtolower($type);
     // Test if the record exists.
     $query = 'SELECT ' . $db->nameQuote($type) . ' FROM ' . $db->nameQuote('#__community_users') . 'WHERE ' . $db->nameQuote('userid') . '=' . $db->Quote($id);
     $db->setQuery($query);
     $oldFile = $db->loadResult();
     if ($db->getErrorNum()) {
         JError::raiseError(500, $db->stderr());
     }
     if (!$oldFile) {
         $query = 'UPDATE ' . $db->nameQuote('#__community_users') . ' ' . 'SET ' . $db->nameQuote($type) . '=' . $db->Quote($path) . ' ' . 'WHERE ' . $db->nameQuote('userid') . '=' . $db->Quote($id);
         $db->setQuery($query);
         $db->query($query);
         if ($db->getErrorNum()) {
             JError::raiseError(500, $db->stderr());
         }
     } else {
         $query = 'UPDATE ' . $db->nameQuote('#__community_users') . ' ' . 'SET ' . $db->nameQuote($type) . '=' . $db->Quote($path) . ' ' . 'WHERE ' . $db->nameQuote('userid') . '=' . $db->Quote($id);
         $db->setQuery($query);
         $db->query($query);
         if ($db->getErrorNum()) {
             JError::raiseError(500, $db->stderr());
         }
         // If old file is default_thumb or default, we should not remove it.
         // Need proper way to test it
         if (!Jstring::stristr($oldFile, 'components/com_community/assets/default.jpg') && !Jstring::stristr($oldFile, 'components/com_community/assets/default_thumb.jpg')) {
             // File exists, try to remove old files first.
             $oldFile = JString::str_ireplace('/', DS, $oldFile);
             JFile::delete($oldFile);
         }
     }
 }
示例#14
0
 /**
  * Returns the category name of the specific category
  *
  * @access public
  * @param    string Category Id
  * @returns string    Category name
  * */
 public function getCategoryName($categoryId)
 {
     CError::assert($categoryId, '', '!empty', __FILE__, __LINE__);
     $db = $this->getDBO();
     $query = 'SELECT ' . $db->quoteName('name') . ' ' . 'FROM ' . $db->quoteName('#__community_events_category') . ' ' . 'WHERE ' . $db->quoteName('id') . '=' . $db->Quote($categoryId);
     $db->setQuery($query);
     $result = $db->loadResult();
     if ($db->getErrorNum()) {
         JError::raiseError(500, $db->stderr());
     }
     CError::assert($result, '', '!empty', __FILE__, __LINE__);
     return $result;
 }
示例#15
0
文件: user.php 项目: bizanto/Hooked
 /**
  *	Set the avatar for specific application. Caller must have a database table
  *	that is named after the appType. E.g, users should have jos_community_users	 
  *	
  * @param	appType		Application type. ( users , groups )
  * @param	path		The relative path to the avatars.
  * @param	type		The type of Image, thumb or avatar.
  *
  **/
 function setImage($id, $path, $type = 'thumb', $removeOldImage = true)
 {
     CError::assert($id, '', '!empty', __FILE__, __LINE__);
     CError::assert($path, '', '!empty', __FILE__, __LINE__);
     $db =& $this->getDBO();
     // Fix the back quotes
     $path = JString::str_ireplace('\\', '/', $path);
     $type = JString::strtolower($type);
     // Test if the record exists.
     $query = 'SELECT ' . $db->nameQuote($type) . ' FROM ' . $db->nameQuote('#__community_users') . 'WHERE ' . $db->nameQuote('userid') . '=' . $db->Quote($id);
     $db->setQuery($query);
     $oldFile = $db->loadResult();
     if ($db->getErrorNum()) {
         JError::raiseError(500, $db->stderr());
     }
     $appsLib =& CAppPlugins::getInstance();
     $appsLib->loadApplications();
     $args = array();
     $args[] =& $id;
     // userid
     $args[] =& $oldFile;
     // old path
     $args[] =& $path;
     // new path
     $appsLib->triggerEvent('onProfileAvatarUpdate', $args);
     if (!$oldFile) {
         $query = 'UPDATE ' . $db->nameQuote('#__community_users') . ' ' . 'SET ' . $db->nameQuote($type) . '=' . $db->Quote($path) . ' ' . 'WHERE ' . $db->nameQuote('userid') . '=' . $db->Quote($id);
         $db->setQuery($query);
         $db->query($query);
         if ($db->getErrorNum()) {
             JError::raiseError(500, $db->stderr());
         }
     } else {
         $query = 'UPDATE ' . $db->nameQuote('#__community_users') . ' ' . 'SET ' . $db->nameQuote($type) . '=' . $db->Quote($path) . ' ' . 'WHERE ' . $db->nameQuote('userid') . '=' . $db->Quote($id);
         $db->setQuery($query);
         $db->Query();
         if ($db->getErrorNum()) {
             JError::raiseError(500, $db->stderr());
         }
         // If old file is default_thumb or default, we should not remove it.
         // Need proper way to test it
         if (!JString::stristr($oldFile, 'components/com_community/assets/default.jpg') && !JString::stristr($oldFile, 'components/com_community/assets/default_thumb.jpg') && $removeOldImage) {
             // File exists, try to remove old files first.
             $oldFile = JString::str_ireplace('/', DS, $oldFile);
             if (JFile::exists($oldFile)) {
                 JFile::delete($oldFile);
             }
         }
     }
 }
示例#16
0
 /**
  * Delete post message
  *
  * @param	response	An ajax Response object
  * @param	id			A unique identifier for the wall row
  *
  * returns	response
  */
 function ajaxRemoveWall($response, $id, $cache_id = "")
 {
     $my = CFactory::getUser();
     $wallModel = CFactory::getModel('wall');
     $wall = $wallModel->get($id);
     CError::assert($id, '', '!empty', __FILE__, __LINE__);
     CFactory::load('helpers', 'owner');
     // Make sure the current user actually has the correct permission
     // Only the original writer and the person the wall is meant for (and admin of course)
     // can delete the wall
     if ($my->id == $wall->post_by || $my->id == $wall->contentid || COwnerHelper::isCommunityAdmin()) {
         if ($wallModel->deletePost($id)) {
             // @rule: Remove the wall activity from the database as well
             CFactory::load('libraries', 'activities');
             CActivityStream::remove('walls', $id);
             //add user points
             if ($wall->post_by != 0) {
                 CFactory::load('libraries', 'userpoints');
                 CUserPoints::assignPoint('wall.remove', $wall->post_by);
             }
         } else {
             $html = JText::_('Error while removing wall. Line:' . __LINE__);
             $response->addAlert($html);
         }
         $cache =& JFactory::getCache('plgCommunityWalls');
         $cache->remove($cache_id);
         $cache =& JFactory::getCache('plgCommunityWalls_fullview');
         $cache->remove($cache_id);
     } else {
         $html = JText::_('COM_COMMUNITY_PERMISSION_DENIED_WARNING');
         $response->addAlert($html);
     }
     return $response;
 }
示例#17
0
 public function ajaxRemoveWall($wallId)
 {
     $filter = JFilterInput::getInstance();
     $wallId = $filter->clean($wallId, 'int');
     CError::assert($wallId, '', '!empty', __FILE__, __LINE__);
     $response = new JAXResponse();
     CFactory::load('helpers', 'owner');
     if (!COwnerHelper::isRegisteredUser()) {
         return $this->ajaxBlockUnregister();
     }
     //@rule: Check if user is really allowed to remove the current wall
     $my = CFactory::getUser();
     $wallModel =& $this->getModel('wall');
     $wall = $wallModel->get($wallId);
     $eventModel =& $this->getModel('events');
     $event =& JTable::getInstance('Event', 'CTable');
     $event->load($wall->contentid);
     if (!COwnerHelper::isCommunityAdmin() && !$event->isAdmin($my->id)) {
         $response->addScriptCall('alert', JText::_('COM_COMMUNITY_NOT_ALLOWED_TO_REMOVE_WALL'));
     } else {
         if (!$wallModel->deletePost($wallId)) {
             $response->addAlert(JText::_('COM_COMMUNITY_GROUPS_REMOVE_WALL_ERROR'));
         } else {
             if ($wall->post_by != 0) {
                 //add user points
                 CFactory::load('libraries', 'userpoints');
                 CUserPoints::assignPoint('wall.remove', $wall->post_by);
             }
         }
         // Substract the count
         $event->substractWallCount();
     }
     $this->cacheClean(array(COMMUNITY_CACHE_TAG_ACTIVITIES));
     return $response->sendResponse();
 }
示例#18
0
 function _groupAlbum()
 {
     CFactory::load('models', 'photos');
     CFactory::load('helpers', 'friends');
     CFactory::load('models', 'groups');
     $mainframe =& JFactory::getApplication();
     $document =& JFactory::getDocument();
     $config = CFactory::getConfig();
     $my = CFactory::getUser();
     $model = CFactory::getModel('photos');
     $groupModel = CFactory::getModel('groups');
     $albumId = JRequest::getInt('albumid', '', 'GET');
     $defaultId = JRequest::getVar('photo', '', 'GET');
     $groupId = JRequest::getInt('groupid', '', 'REQUEST');
     $group =& JTable::getInstance('Group', 'CTable');
     $group->load($groupId);
     if (empty($albumId)) {
         echo JText::_('CC NO PROPER ALBUM ID');
         return;
     }
     CFactory::load('helpers', 'owner');
     //@rule: Do not allow non members to view albums for private group
     if ($group->approvals == COMMUNITY_PRIVATE_GROUP && !$group->isMember($my->id) && !$group->isAdmin($my->id) && !COwnerHelper::isCommunityAdmin()) {
         // Set document title
         $document->setTitle(JText::_('CC RESTRICTED ACCESS'));
         $mainframe->enqueueMessage(JText::_('CC RESTRICTED ACCESS', 'notice'));
         echo JText::_('CC ALBUM NEED GROUP MEMBER PERMISSION');
         return;
     }
     $album =& JTable::getInstance('Album', 'CTable');
     $album->load($albumId);
     // Set document title
     CFactory::load('helpers', 'string');
     $document->setTitle(JText::sprintf('CC USER PHOTOS TITLE', $group->name) . ' - ' . $album->name);
     $this->setTitle($album->name);
     $pathway =& $mainframe->getPathway();
     $pathway->addItem($album->name, '');
     CError::assert($group, 'object', 'istype', __FILE__, __LINE__);
     // Get list of photos and set some limit to be displayed.
     // @todo: make limit configurable?
     $photos = $model->getAllPhotos($albumId, PHOTOS_GROUP_TYPE, null, null, COMMUNITY_ORDER_BY_DESC, COMMUNITY_ORDERING_BY_CREATED);
     // Need to append the absolute path for the captions
     for ($i = 0; $i < count($photos); $i++) {
         $item =& JTable::getInstance('Photo', 'CTable');
         $item->bind($photos[$i]);
         $photos[$i] = $item;
         $photo =& $photos[$i];
         $photo->link = CRoute::_('index.php?option=com_community&view=photos&task=photo&groupid=' . $groupId . '&albumid=' . $photo->albumid) . '#photoid=' . $photo->id;
     }
     CFactory::load('helpers', 'group');
     $allowManagePhotos = CGroupHelper::allowManagePhoto($groupId);
     if (($group->isAdmin($my->id) || $allowManagePhotos) && $my->id != 0) {
         $this->addSubmenuItem('index.php?option=com_community&view=photos&task=uploader&albumid=' . $album->id . '&groupid=' . $group->id, JText::_('CC UPLOAD PHOTOS'), '', true);
         $this->addSubmenuItem('index.php?option=com_community&view=photos&task=newalbum&groupid=' . $group->id, JText::_('CC ADD ALBUM'), '', true);
     }
     $tmpl = new CTemplate();
     CFactory::load('libraries', 'bookmarks');
     $bookmarks = new CBookmarks(CRoute::getExternalURL('index.php?option=com_community&view=photos&task=album&albumid=' . $album->id . '&groupid=' . $group->id));
     $bookmarksHTML = $bookmarks->getHTML();
     $tmpl->set('bookmarksHTML', $bookmarksHTML);
     $tmpl->set('isOwner', $group->isAdmin($my->id));
     $tmpl->set('photos', $photos);
     $tmpl->set('album', $album);
     echo $tmpl->fetch('photos.album');
 }
示例#19
0
文件: wall.php 项目: bizanto/Hooked
 /**
  * Formats the comment in the rows
  * 
  * @param Array	An array of wall objects	 	 
  **/
 function triggerWallComments(&$rows)
 {
     CError::assert($rows, 'array', 'istype', __FILE__, __LINE__);
     require_once COMMUNITY_COM_PATH . DS . 'libraries' . DS . 'apps.php';
     $appsLib =& CAppPlugins::getInstance();
     $appsLib->loadApplications();
     for ($i = 0; $i < count($rows); $i++) {
         $args = array();
         $args[] =& $rows[$i];
         $appsLib->triggerEvent('onWallDisplay', $args);
     }
     return true;
 }
示例#20
0
 public function _getFieldIdFromFieldCode($code)
 {
     CError::assert($code, '', '!empty', __FILE__, __LINE__);
     $db = $this->getDBO();
     $query = 'SELECT' . $db->quoteName('id') . ' ' . 'FROM ' . $db->quoteName('#__community_fields') . ' ' . 'WHERE ' . $db->quoteName('fieldcode') . '=' . $db->Quote($code);
     $db->setQuery($query);
     $id = $db->loadResult();
     CError::assert($id, '', '!empty', __FILE__, __LINE__);
     return $id;
 }
示例#21
0
 /**
  * Displays specific groups
  **/
 public function viewGroup($group)
 {
     $mainframe =& JFactory::getApplication();
     CFactory::load('libraries', 'tooltip');
     CFactory::load('libraries', 'wall');
     CFactory::load('libraries', 'window');
     CFactory::load('libraries', 'videos');
     CFactory::load('libraries', 'activities');
     CFactory::load('helpers', 'group');
     CWindow::load();
     $config = CFactory::getConfig();
     $document = JFactory::getDocument();
     $groupLib = new CGroups();
     // Load appropriate models
     $groupModel = CFactory::getModel('groups');
     $wallModel = CFactory::getModel('wall');
     $userModel = CFactory::getModel('user');
     $discussModel = CFactory::getModel('discussions');
     $bulletinModel = CFactory::getModel('bulletins');
     $photosModel = CFactory::getModel('photos');
     $activityModel = CFactory::getModel('activities');
     //$groupid		= JRequest::getInt( 'groupid' , '' );
     //CError::assert( $groupid , '' , '!empty' , __FILE__ , __LINE__ );
     $editGroup = JRequest::getVar('edit', false, 'GET');
     $editGroup = $editGroup == 1 ? true : false;
     $params = $group->getParams();
     CFactory::load('helpers', 'string');
     $document->setMetaData('title', CStringHelper::escape($group->name));
     $document->setMetaData('description', CStringHelper::escape(strip_tags($group->description)));
     $document->addCustomTag('<link rel="image_src" href="' . JURI::root() . $group->thumb . '" />');
     // @rule: Test if the group is unpublished, don't display it at all.
     if (!$group->published) {
         $this->_redirectUnpublishGroup();
         return;
     }
     // Show submenu
     $this->showSubmenu();
     // Set the group info to contain proper <br>
     $group->description = nl2br($group->description);
     $this->addPathway(JText::_('COM_COMMUNITY_GROUPS'), CRoute::_('index.php?option=com_community&view=groups'));
     $this->addPathway(JText::sprintf('COM_COMMUNITY_GROUPS_NAME_TITLE', $group->name), '');
     // Load the current browsers data
     $my = CFactory::getUser();
     // If user are invited
     $isInvited = $groupModel->isInvited($my->id, $group->id);
     // Get members list for display
     //$members	= $groupModel->getAllMember($group->id);
     //Set limit for member listing on view group page
     $limit = 12;
     $approvedMembers = $groupModel->getMembers($group->id, $limit, true, false, true);
     CError::assert($approvedMembers, 'array', 'istype', __FILE__, __LINE__);
     $membersCount = $groupModel->total;
     // Is there any my friend is the member of this group?
     $join = '';
     $friendsCount = 0;
     if ($isInvited) {
         // Get the invitors
         $invitors = $groupModel->getInvitors($my->id, $group->id);
         if (count($invitors) == 1) {
             $user = CFactory::getUser($invitors[0]->creator);
             $join = '<a href="' . CUrlHelper::userLink($user->id) . '">' . $user->getDisplayName() . '</a>';
         } else {
             for ($i = 0; $i < count($invitors); $i++) {
                 $user = CFactory::getUser($invitors[$i]->creator);
                 if ($i + 1 == count($invitors)) {
                     $join .= ' ' . JText::_('COM_COMMUNITY_AND') . ' ' . '<a href="' . CUrlHelper::userLink($user->id) . '">' . $user->getDisplayName() . '</a>';
                 } else {
                     $join .= ', ' . '<a href="' . CUrlHelper::userLink($user->id) . '">' . $user->getDisplayName() . '</a>';
                 }
             }
         }
         // Get users friends in this group
         $friendsCount = $groupModel->getFriendsCount($my->id, $group->id);
     }
     $admins = $groupModel->getAdmins($group->id, $limit, CC_RANDOMIZE);
     // Get list of unapproved members
     $groupModel->getMembers($group->id, null, false);
     $unapproved = $groupModel->total;
     //Get list of approved members
     // Test if the current user is admin
     $isAdmin = $groupModel->isAdmin($my->id, $group->id);
     // Test if the current browser is a member of the group
     $isMember = $groupModel->isMember($my->id, $group->id);
     $waitingApproval = false;
     // Test if the current user is banned from this group
     $isBanned = $group->isBanned($my->id);
     // Attach avatar of the member
     // Pre-load multiple users at once
     $userids = array();
     $limitloop = $limit;
     foreach ($approvedMembers as $uid) {
         $userids[] = $uid->id;
         if (--$limitloop < 1) {
             break;
         }
     }
     CFactory::loadUsers($userids);
     $limitloop = $limit;
     for ($i = 0; $i < count($approvedMembers); $i++) {
         $row =& $approvedMembers[$i];
         $approvedMembers[$i] = CFactory::getUser($row->id);
         if (--$limitloop < 1) {
             break;
         }
     }
     if ($isBanned) {
         $mainframe->enqueueMessage(JText::_('COM_COMMUNITY_GROUPS_MEMBER_BANNED'), 'error');
     }
     // If I have tried to join this group, but not yet approved, display a notice
     if ($groupModel->isWaitingAuthorization($my->id, $group->id)) {
         $waitingApproval = true;
     }
     // Get the walls
     if (!$isBanned) {
         $wallContent = CWallLibrary::getWallContents('groups', $group->id, $isAdmin, 10, 0, 'wall.content', 'groups,group');
     } else {
         $wallContent = CWallLibrary::getWallContents('groups', $group->id, $isAdmin, 10, 0, 'wall.content', 'groups,group', null, '1');
     }
     $wallCount = CWallLibrary::getWallCount('groups', $group->id);
     $viewAllLink = false;
     if (JRequest::getVar('task', '', 'REQUEST') != 'app') {
         $viewAllLink = CRoute::_('index.php?option=com_community&view=groups&task=app&groupid=' . $group->id . '&app=walls');
     }
     $wallContent .= CWallLibrary::getViewAllLinkHTML($viewAllLink, $wallCount);
     $wallForm = '';
     CFactory::load('helpers', 'owner');
     if (!$config->get('lockgroupwalls') || $config->get('lockgroupwalls') && ($isMember && !$isBanned) && !$waitingApproval || COwnerHelper::isCommunityAdmin()) {
         $wallForm = CWallLibrary::getWallInputForm($group->id, 'groups,ajaxSaveWall', 'groups,ajaxRemoveWall');
     }
     // Get like
     CFactory::load('libraries', 'like');
     $likes = new CLike();
     $likesHTML = $isMember && !$isBanned ? $likes->getHTML('groups', $group->id, $my->id) : $likes->getHtmlPublic('groups', $group->id);
     // Get discussions data
     $discussionData = $this->_cachedCall('_getDiscussionListHTML', array($params, $group->id), $group->id, array(COMMUNITY_CACHE_TAG_GROUPS_DETAIL));
     $discussionsHTML = $discussionData['HTML'];
     $totalDiscussion = $discussionData['total'];
     $discussions = $discussionData['data'];
     // Get bulletins data
     $bulletinData = $this->_cachedCall('_getBulletinListHTML', array($group->id), $group->id, array(COMMUNITY_CACHE_TAG_GROUPS_DETAIL));
     $totalBulletin = $bulletinData['total'];
     $bulletinsHTML = $bulletinData['HTML'];
     $bulletins = $bulletinData['data'];
     // Get album data
     $albumData = $this->_cachedCall('_getAlbums', array($params, $group->id), $group->id, array(COMMUNITY_CACHE_TAG_GROUPS_DETAIL));
     $albums = $albumData['data'];
     $totalAlbums = $albumData['total'];
     // Get video data
     $videoData = $this->_getVideos($params, $group->id);
     $videos = $videoData['data'];
     $totalVideos = $videoData['total'];
     $tmpl = new CTemplate();
     // Get categories list
     // We should really load this in saperate file
     // @todo: editing group should really open a new page
     if ($my->id == $group->ownerid || COwnerHelper::isCommunityAdmin()) {
         $categories = $groupModel->getCategories();
         CError::assert($categories, 'array', 'istype', __FILE__, __LINE__);
         $tmpl->set('categories', $categories);
     }
     $isMine = $my->id == $group->ownerid;
     // Get reporting html
     CFactory::load('libraries', 'reporting');
     $report = new CReportingLibrary();
     $reportHTML = $report->getReportingHTML(JText::_('COM_COMMUNITY_REPORT_GROUP'), 'groups,reportGroup', array($group->id));
     $isSuperAdmin = COwnerHelper::isCommunityAdmin();
     if ($group->approvals == '1' && !$isMine && !$isMember && !$isSuperAdmin) {
         $this->addWarning(JText::_('COM_COMMUNITY_GROUPS_PRIVATE_NOTICE'));
     }
     $videoThumbWidth = CVideoLibrary::thumbSize('width');
     $videoThumbHeight = CVideoLibrary::thumbSize('height');
     $eventsModel = CFactory::getModel('Events');
     $tmpEvents =& $eventsModel->getGroupEvents($group->id, $params->get('grouprecentevents', GROUP_EVENT_RECENT_LIMIT));
     $totalEvents = $eventsModel->getTotalGroupEvents($group->id);
     $events = array();
     foreach ($tmpEvents as $event) {
         $table =& JTable::getInstance('Event', 'CTable');
         $table->bind($event);
         $events[] = $table;
     }
     $allowManagePhotos = CGroupHelper::allowManagePhoto($group->id);
     $allowManageVideos = CGroupHelper::allowManageVideo($group->id);
     $allowCreateEvent = CGroupHelper::allowCreateEvent($my->id, $group->id);
     CFactory::load('libraries', 'bookmarks');
     $bookmarks = new CBookmarks(CRoute::getExternalURL('index.php?option=com_community&view=groups&task=viewgroup&groupid=' . $group->id));
     $bookmarksHTML = $bookmarks->getHTML();
     $isCommunityAdmin = COwnerHelper::isCommunityAdmin();
     if ($group->approvals == '0' || $isMine || $isMember && !$isBanned || $isCommunityAdmin) {
         // Set feed url
         $feedLink = CRoute::_('index.php?option=com_community&view=groups&task=viewbulletins&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('COM_COMMUNITY_SUBSCRIBE_TO_BULLETIN_FEEDS') . '" href="' . $feedLink . '"/>';
         $document->addCustomTag($feed);
         $feedLink = CRoute::_('index.php?option=com_community&view=groups&task=viewdiscussions&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('COM_COMMUNITY_SUBSCRIBE_TO_DISCUSSION_FEEDS') . '" href="' . $feedLink . '"/>';
         $document->addCustomTag($feed);
         $feedLink = CRoute::_('index.php?option=com_community&view=photos&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('COM_COMMUNITY_SUBSCRIBE_TO_GROUP_PHOTOS_FEEDS') . '" href="' . $feedLink . '"/>';
         $document->addCustomTag($feed);
         $feedLink = CRoute::_('index.php?option=com_community&view=videos&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('COM_COMMUNITY_SUBSCRIBE_TO_GROUP_VIDEOS_FEEDS') . '"  href="' . $feedLink . '"/>';
         $document->addCustomTag($feed);
         $feedLink = CRoute::_('index.php?option=com_community&view=events&groupid=' . $group->id . '&format=feed');
         $feed = '<link rel="alternate" type="application/rss+xml" title="' . JText::_('COM_COMMUNITY_SUBSCRIBE_TO_GROUP_EVENTS_FEEDS') . '"  href="' . $feedLink . '"/>';
         $document->addCustomTag($feed);
     }
     $friendsModel = CFactory::getModel('Friends');
     $groupsModel = CFactory::getModel('Groups');
     CFactory::load('libraries', 'invitation');
     $inviteHTML = CInvitation::getHTML(null, 'groups,inviteUsers', $group->id);
     // Add tagging code
     /*
     $tagsHTML = '';
     if($config->get('tags_groups')){
     	CFactory::load('libraries', 'tags');
     	$tags = new CTags();
     	$tagsHTML = $tags->getHTML('groups', $group->id, $isAdmin );
     }
     */
     // Upgrade wall to stream @since 2.5
     if (!$params->get('stream', FALSE)) {
         $group->upgradeWallToStream();
     }
     // Add custom stream
     $activities = new CActivities();
     $streamHTML = $groupLib->getStreamHTML($group);
     $totalStream = $activityModel->getTotalActivities(array("`groupid` = '{$group->id}'"));
     CFactory::load('libraries', 'userstatus');
     $creators = array();
     $creators[] = CUserStatusCreator::getMessageInstance();
     if ($isAdmin && $params->get('photopermission') == 1 || $isMember && $params->get('photopermission') == 2) {
         $creators[] = CUserStatusCreator::getPhotoInstance();
     }
     if ($isAdmin && $params->get('videopermission') == 1 || $isMember && $params->get('videopermission') == 2) {
         $creators[] = CUserStatusCreator::getVideoInstance();
     }
     if ($allowCreateEvent && $config->get('group_events') && $config->get('enableevents') && ($config->get('createevents') || COwnerHelper::isCommunityAdmin())) {
         $creators[] = CUserStatusCreator::getEventInstance();
     }
     $status = new CUserStatus($group->id, 'groups', $creators);
     // Get Event Admins
     $groupAdmins = $group->getAdmins(12, CC_RANDOMIZE);
     $adminsInArray = array();
     // Attach avatar of the admin
     for ($i = 0; $i < count($groupAdmins); $i++) {
         $row =& $groupAdmins[$i];
         $admin = CFactory::getUser($row->id);
         array_push($adminsInArray, '<a href="' . CUrlHelper::userLink($admin->id) . '">' . $admin->getDisplayName() . '</a>');
     }
     $adminsList = ltrim(implode(', ', $adminsInArray), ',');
     echo $tmpl->setMetaTags('group', $group)->set('streamHTML', $streamHTML)->set('status', $status)->set('likesHTML', $likesHTML)->set('events', $events)->set('totalEvents', $totalEvents)->set('inviteHTML', $inviteHTML)->set('showEvents', $config->get('group_events') && $config->get('enableevents'))->set('showPhotos', $params->get('photopermission') != -1)->set('showVideos', $params->get('videopermission') != -1)->set('bookmarksHTML', $bookmarksHTML)->set('allowManagePhotos', $allowManagePhotos)->set('allowManageVideos', $allowManageVideos)->set('allowCreateEvent', $allowCreateEvent)->set('videos', $videos)->set('videoThumbWidth', $videoThumbWidth)->set('videoThumbHeight', $videoThumbHeight)->set('totalVideos', $totalVideos)->set('albums', $albums)->set('totalAlbums', $totalAlbums)->set('reportHTML', $reportHTML)->set('editGroup', $editGroup)->set('waitingApproval', $waitingApproval)->set('config', $config)->set('my', $my)->set('isMine', $isMine)->set('isAdmin', $isAdmin)->set('isSuperAdmin', $isSuperAdmin)->set('isMember', $isMember)->set('isInvited', $isInvited)->set('friendsCount', $friendsCount)->set('join', $join)->set('unapproved', $unapproved)->set('membersCount', $membersCount)->set('group', $group)->set('totalBulletin', $totalBulletin)->set('totalDiscussion', $totalDiscussion)->set('totalVideos', $totalVideos)->set('members', $approvedMembers)->set('bulletins', $bulletins)->set('wallForm', $wallForm)->set('wallContent', $wallContent)->set('discussions', $discussions)->set('discussionsHTML', $discussionsHTML)->set('bulletinsHTML', $bulletinsHTML)->set('isCommunityAdmin', $isCommunityAdmin)->set('isBanned', $isBanned)->set('isPrivate', $group->approvals)->set('limit', $limit)->set('adminsList', $adminsList)->set('alertNewDiscussion', $my->count('group_discussion_' . $group->id) != $totalDiscussion)->set('alertNewBulletin', $my->count('group_bulletin_' . $group->id) != $totalBulletin)->set('alertNewStream', $my->count('group_activity_' . $group->id) != $totalStream)->fetch('groups.viewgroup');
     // Update stream count cache, can only set this after we've set the alert aove
     $my->setCount('group_activity_' . $group->id, $totalStream);
 }
示例#22
0
 /**
  * Set user profile avatar
  */
 public function setImage($path, $type = 'thumb')
 {
     CError::assert($path, '', '!empty', __FILE__, __LINE__);
     $db = $this->getDBO();
     // Fix the back quotes
     $path = JString::str_ireplace('\\', '/', $path);
     $type = JString::strtolower($type);
     // Test if the record exists.
     $oldFile = $this->{$type};
     if ($db->getErrorNum()) {
         JError::raiseError(500, $db->stderr());
     }
     if ($oldFile) {
         // File exists, try to remove old files first.
         $oldFile = JString::str_ireplace('/', '/', $oldFile);
         // If old file is default_thumb or default, we should not remove it.
         if (!JString::stristr($oldFile, 'user.png') && !JString::stristr($oldFile, 'user_thumb.png') && !JString::stristr($oldFile, 'avatar_')) {
             jimport('joomla.filesystem.file');
             JFile::delete($oldFile);
         }
     }
     $this->{$type} = $path;
     $this->store();
     // Trigger profile avatar update event.
     if ($type == 'avatar') {
         $appsLib = CAppPlugins::getInstance();
         $appsLib->loadApplications();
         $args = array();
         $args[] = $this->userid;
         // userid
         $args[] = $oldFile;
         // old path
         $args[] = $path;
         // new path
         $appsLib->triggerEvent('onProfileAvatarUpdate', $args);
     }
 }
示例#23
0
文件: CMvc.php 项目: Rgss/imp
 /**
  * 启动控制器
  *
  */
 public function runController()
 {
     $cBuilder = Imp::app()->instance('mvcBuilder')->controllerBuilder();
     $cBuilder->init();
     $cFile = $cBuilder->file();
     $cName = $cBuilder->controller();
     $cAction = $cBuilder->action();
     $cParams = $cBuilder->params();
     $config = Imp::app()->instance('config')->get();
     if (!is_file($cFile)) {
         if ($config['debug']) {
             CError::show("Controller file \"<font color=\"red\">{$cFile}</font>\" not found");
         } else {
             View::show404();
         }
         return;
     }
     // 应用基类
     $myController = Imp::app()->basePath() . '/MyController/BaseController.php';
     if (is_file($myController)) {
         require $myController;
     }
     require $cFile;
     if (!class_exists($cName)) {
         if ($config['debug']) {
             Error::show(Error::getError(Error::$errorType['no_controller']) . ': ' . $cName);
         } else {
             View::show404();
         }
     }
     // 检查最终的控制器及其方法
     if (!method_exists($cName, $cAction)) {
         Imp::app()->instance('router')->unShiftParams($cAction);
         $cAction = Imp::app()->instance('config')->get('default_action');
         $cParams = Imp::app()->instance('router')->getParams();
         Imp::app()->instance('router')->setAction($cAction);
     }
     // action 钩子
     Imp::app()->instance('hook')->call('action');
     // 实例化操作模块
     $cInstance = new $cName();
     // 检查最终的控制器及其方法
     if (!method_exists($cInstance, $cAction)) {
         if ($config['debug']) {
             Error::show(Error::getError(Error::$errorType['no_action']) . ': ' . $cAction);
         } else {
             View::show404();
         }
         return;
     }
     // 调用当前控制器方法
     call_user_func_array(array($cInstance, $cAction), $cParams);
 }
示例#24
0
 public function triggerEvent($eventName, &$args, $target = null)
 {
     CError::assert($args, 'object', 'istype', __FILE__, __LINE__);
     require_once COMMUNITY_COM_PATH . '/libraries/apps.php';
     $appsLib = CAppPlugins::getInstance();
     $appsLib->loadApplications();
     $params = array();
     $params[] = $args;
     if (!is_null($target)) {
         $params[] = $target;
     }
     $appsLib->triggerEvent($eventName, $params);
     return true;
 }
示例#25
0
 public function triggerEvents($eventName, &$args, $target = null)
 {
     CError::assert($args, 'object', 'istype', __FILE__, __LINE__);
     require_once JPATH_ROOT . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'apps.php';
     $appsLib =& CAppPlugins::getInstance();
     $appsLib->loadApplications();
     $params = array();
     $params[] =& $args;
     if (!is_null($target)) {
         $params[] = $target;
     }
     $appsLib->triggerEvent($eventName, $params);
     return true;
 }
示例#26
0
 /**
  * Add new activity,
  * @access 	static
  * 	 
  */
 public function add($activity, $params = '', $points = 1)
 {
     CError::assert($activity, '', '!empty', __FILE__, __LINE__);
     // If params is an object, instead of a string, we convert it to string
     $cmd = !empty($activity->cmd) ? $activity->cmd : '';
     if (!empty($cmd)) {
         $userPointModel = CFactory::getModel('Userpoints');
         // Test command, with userpoint command. If is unpublished do not proceed into adding to activity stream.
         $point = $userPointModel->getPointData($cmd);
         if ($point && !$point->published) {
             return;
         }
     }
     $actor = !empty($activity->actor) ? $activity->actor : '';
     $target = !empty($activity->target) ? $activity->target : 0;
     $title = !empty($activity->title) ? $activity->title : '';
     $content = !empty($activity->content) ? $activity->content : '';
     $appname = !empty($activity->app) ? $activity->app : '';
     $cid = !empty($activity->cid) ? $activity->cid : 0;
     $groupid = !empty($activity->groupid) ? $activity->groupid : 0;
     $group_access = !empty($activity->group_access) ? $activity->group_access : 0;
     $event_access = !empty($activity->event_access) ? $activity->event_access : 0;
     $eventid = !empty($activity->eventid) ? $activity->eventid : 0;
     $points = !empty($activity->points) ? $activity->points : $points;
     $access = !empty($activity->access) ? $activity->access : 0;
     $location = !empty($activity->location) ? $activity->location : '';
     $comment_id = !empty($activity->comment_id) ? $activity->comment_id : 0;
     $comment_type = !empty($activity->comment_type) ? $activity->comment_type : '';
     $like_id = !empty($activity->like_id) ? $activity->like_id : 0;
     $like_type = !empty($activity->like_type) ? $activity->like_type : '';
     // If the params in embedded within the activity object, use it
     // if it is not explicitly overriden
     if (empty($params) && !empty($activity->params)) {
         $params = $activity->params;
     }
     $activities = CFactory::getModel('activities');
     // Update access for activity based on the user's profile privacy
     if (!empty($actor) && $actor != 0) {
         $user = CFactory::getUser($actor);
         $userParams = $user->getParams();
         $profileAccess = $userParams->get('privacyProfileView');
         // Only overwrite access if the user global profile privacy is higher
         // BUT, if access is defined as PRIVACY_FORCE_PUBLIC, do not modify it
         if ($access != PRIVACY_FORCE_PUBLIC && $profileAccess > $access) {
             $access = $profileAccess;
         }
     }
     $table =& JTable::getInstance('Activity', 'CTable');
     $table->actor = $actor;
     $table->target = $target;
     $table->title = $title;
     $table->content = $content;
     $table->app = $appname;
     $table->cid = $cid;
     $table->groupid = $groupid;
     $table->group_access = $group_access;
     $table->eventid = $eventid;
     $table->event_access = $event_access;
     $table->points = $points;
     $table->access = $access;
     $table->location = $location;
     $table->params = $params;
     $table->comment_id = $comment_id;
     $table->comment_type = $comment_type;
     $table->like_id = $like_id;
     $table->like_type = $like_type;
     $table->store();
     // Update comment id, if we comment on the stream itself
     if ($comment_id == CActivities::COMMENT_SELF) {
         $table->comment_id = $table->id;
     }
     // Update comment id, if we like on the stream itself
     if ($comment_id == CActivities::LIKE_SELF) {
         $table->like_id = $table->id;
     }
     if ($comment_id == CActivities::COMMENT_SELF || $comment_id == CActivities::LIKE_SELF) {
         $table->store();
     }
 }
示例#27
0
 /**
  * Formats the comment in the rows
  *
  * @param Array    An array of wall objects
  * */
 public static function triggerWallComments(&$rows, $newlineReplace = true)
 {
     CError::assert($rows, 'array', 'istype', __FILE__, __LINE__);
     require_once COMMUNITY_COM_PATH . '/libraries/apps.php';
     $appsLib = CAppPlugins::getInstance();
     $appsLib->loadApplications();
     for ($i = 0; $i < count($rows); $i++) {
         if (isset($rows[$i]->comment) && !empty($rows[$i]->comment)) {
             $args = array();
             if (!$newlineReplace) {
                 // if newline replace is false, pass the information to the comment to leave out the newline
                 // replace in wall.trigger
                 $rows[$i]->newlineReplace = false;
             }
             $args[] = $rows[$i];
             $appsLib->triggerEvent('onWallDisplay', $args);
         }
     }
     return true;
 }
示例#28
0
/**
 * Custom exception handler with backtrace
 * 
 * @param exception $exception Thrown exception
 * 
 * @return void
 */
function exceptionHandler($exception)
{
    global $dPconfig;
    $time = date("Y-m-d H:i:s");
    // User information
    $user_id = null;
    $user_view = "";
    if (class_exists("CAppUI", false) && CAppUI::$user) {
        $user = CAppUI::$user;
        if ($user->_id) {
            $user_id = $user->_id;
            $user_view = $user->_view;
        }
    }
    // Server IP
    $server_ip = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : null;
    $file = mbRelativePath($exception->getFile());
    $line = $exception->getLine();
    $type = "exception";
    $text = $exception->getMessage();
    // Stacktrace
    $contexts = $exception->getTrace();
    foreach ($contexts as &$ctx) {
        unset($ctx['args']);
    }
    // Might noy be ready at the time error is thrown
    $session = isset($_SESSION) ? $_SESSION : array();
    unset($session['AppUI']);
    unset($session['dPcompteRendu']['templateManager']);
    $_all_params = array("GET" => $_GET, "POST" => $_POST, "SESSION" => $session);
    filterInput($_all_params);
    // CApp might not be ready yet as of early error handling
    $request_uid = null;
    if (class_exists("CApp", false)) {
        $request_uid = CApp::getRequestUID();
        CApp::$performance[CError::$_categories["exception"]]++;
    }
    $build_output = ini_get("display_errors");
    $save_to_file = false;
    $data = array("stacktrace" => $contexts, "param_GET" => $_all_params["GET"], "param_POST" => $_all_params["POST"], "session_data" => $_all_params["SESSION"]);
    if (@$dPconfig["error_logs_in_db"] && class_exists("CErrorLog")) {
        try {
            CErrorLog::insert($user_id, $server_ip, $time, $request_uid, $type, $text, $file, $line, $data);
        } catch (Exception $e) {
            $build_output = true;
            $save_to_file = true;
        }
    } else {
        $build_output = true;
        $save_to_file = true;
    }
    if ($build_output) {
        $hash = md5(serialize($contexts));
        $html_class = "big-warning";
        $log = "\n\n<div class='{$html_class}' title='{$hash}'>";
        if ($user_id) {
            $log .= "\n<strong>User: </strong>{$user_view} ({$user_id})";
        }
        $file = CError::openInIDE($file, $line);
        $log .= <<<HTML
  <strong>Time: </strong>{$time}
  <strong>Type: </strong>{$type}
  <strong>Text: </strong>{$text}
  <strong>File: </strong>{$file}
  <strong>Line: </strong>{$line}
HTML;
        foreach ($_all_params as $_type => $_params) {
            $log .= print_infos($_all_params[$_type], $_type);
        }
        foreach ($contexts as $context) {
            $function = isset($context["class"]) ? $context["class"] . ":" : "";
            $function .= $context["function"] . "()";
            $log .= "\n<strong>Function: </strong> {$function}";
            if (isset($context["file"])) {
                $log .= "\n<strong>File: </strong>" . CError::openInIDE($context["file"], isset($context["line"]) ? $context["line"] : null);
            }
            if (isset($context["line"])) {
                $log .= "\n<strong>Line: </strong>" . $context["line"];
            }
            $log .= "<br />";
        }
        $log .= "</div>";
        if ($save_to_file) {
            file_put_contents(LOG_PATH, $log, FILE_APPEND);
        }
        if (ini_get("display_errors")) {
            echo $log;
        }
    }
}
示例#29
0
 /**
  *	Gets the count of wall entries for specific item
  *	
  * @params uniqueId	The unique id for the speicific item
  * @params	type		The unique type for the specific item
  **/
 public function getCount($uniqueId, $type)
 {
     $cache = CFactory::getFastCache();
     $cacheid = __FILE__ . __LINE__ . serialize(func_get_args()) . serialize(JRequest::get());
     if ($data = $cache->get($cacheid)) {
         return $data;
     }
     CError::assert($uniqueId, '', '!empty', __FILE__, __LINE__);
     $db =& $this->getDBO();
     $query = 'SELECT COUNT(*) FROM ' . $db->nameQuote('#__community_wall') . 'WHERE ' . $db->nameQuote('contentid') . '=' . $db->Quote($uniqueId) . 'AND ' . $db->nameQuote('type') . '=' . $db->Quote($type);
     $db->setQuery($query);
     $count = $db->loadResult();
     $cache->store($count, $cacheid);
     return $count;
 }
示例#30
0
 public function getBannedMembers($groupid, $limit = 0, $randomize = false)
 {
     CError::assert($groupid, '', '!empty', __FILE__, __LINE__);
     $db = $this->getDBO();
     $limit = $limit === 0 ? $this->getState('limit') : $limit;
     $limitstart = $this->getState('limitstart');
     $query = 'SELECT a.' . $db->quoteName('memberid') . ' AS id, a.' . $db->quoteName('approved') . ' , b.' . $db->quoteName('name') . ' as name ' . ' FROM ' . $db->quoteName('#__community_groups_members') . ' AS a ' . ' INNER JOIN ' . $db->quoteName('#__users') . ' AS b ' . ' WHERE b.' . $db->quoteName('id') . '=a.' . $db->quoteName('memberid') . ' AND a.' . $db->quoteName('groupid') . '=' . $db->Quote($groupid) . ' AND a.' . $db->quoteName('permissions') . '=' . $db->Quote(COMMUNITY_GROUP_BANNED);
     if ($randomize) {
         $query .= ' ORDER BY RAND() ';
     }
     if (!is_null($limit)) {
         $query .= ' LIMIT ' . $limitstart . ',' . $limit;
     }
     $db->setQuery($query);
     $result = $db->loadObjectList();
     if ($db->getErrorNum()) {
         JError::raiseError(500, $db->stderr());
     }
     $query = 'SELECT COUNT(*) FROM ' . $db->quoteName('#__community_groups_members') . ' AS a ' . ' INNER JOIN ' . $db->quoteName('#__users') . ' AS b ' . ' WHERE b.' . $db->quoteName('id') . '=a.' . $db->quoteName('memberid') . ' AND a.' . $db->quoteName('groupid') . '=' . $db->Quote($groupid) . ' ' . ' AND a.' . $db->quoteName('permissions') . '=' . $db->Quote(COMMUNITY_GROUP_BANNED);
     $db->setQuery($query);
     $total = $db->loadResult();
     $this->total = $total;
     if ($db->getErrorNum()) {
         JError::raiseError(500, $db->stderr());
     }
     if (empty($this->_pagination)) {
         jimport('joomla.html.pagination');
         $this->_pagination = new JPagination($total, $limitstart, $limit);
     }
     return $result;
 }