Advertisement

Jeffrey
Rising Star-
Posts
927 -
Joined
-
Last visited
-
Days Won
56
Content Type
Profiles
Forums
Downloads
Bugs
WF Feature Plan
Suggestions
WebFlake Release Notes
FAQ
Store
Blogs
Applications
Ideas
Everything posted by Jeffrey
-
The question(s) in this support topic have been answered and the topic author has resolved their issue. This topic is now closed. If you have other questions, please open a new topic.
-
The reactions feature was added with the release of IPS 4.2. Unfortunately, there is no way to enable this for IPS 4.1. However, we happily have IPS 4.2 available for download:
-
I recommend you use Group Name Indicator 2.0.1.
-
Use the following widget code generated by Twitter and paste it into a blank html page. <a class="twitter-timeline" href="https://twitter.com/rapdab?ref_src=twsrc%5Etfw">Tweets by rapdab</a> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
-
https://webflake.sx/files/file/2568-back-to-top/
-
-
How upgrade the last version IPS 4.2.6 Nulled?
Jeffrey replied to youtuber's question in Invision Answered Questions
@youtuber 1. Download the WF IPS 4.2.6 Nulled software. 2. Upload the archive onto your system. 3. Extract archive to the directory you have your current forums in. 4. Override the current forum files. 5. Go to the following directory in a browser: public_html/(current forum directory)/admin/upgrade. 6. Enter your admin account details. 7. Follow the instructions. -
429 downloads
Animate is a dark, modern design and is named after the animated background effect seen in its header. The theme comes with an animated header and is perfect for any forum looking for a quick loading dark design - especially great for gaming forums! Theme Settings Easily enable, disable or modify theme features such as background images, logos, social media links, guest messages and colors. This makes modifications and upgrades very simple since little code changes are required. Animated header This theme features two animated images in the header, powered by css animations. The effect can be customized extensively, or removed entirely if necessary. Background picker Your members can choose their own background image (or color) from a predefined selection and their choice is saved via cookies. This feature can be configured or disabled within the theme settings. Minimal HTML edits This theme has very few template files, which means in most cases, you will not need to install theme updates between IPS versions. Too easy! Global Message Display a message across the top of your site with important announcements. Once your members have seen the message, they can press the Dismiss button to remove it (until you configure a new one). Retina Ready All gradients, shadows and icons are generated using css which means your site will look great on all devices - even those with high resolution screens.- 1 review
-
- 5
-
-
I usually use multi CMS' as well as their file managing features.
-
@leguedric
-
Whoever created the theme didn't edit the css for either moderation posts or "popular" topics/comments.
-
Check the group that user is assigned to. If you set any html customizations to the group, you might need to close all the html tags (suffix).
-
How to change forum (board) width?
Jeffrey replied to Mr.Aces's question in Invision Answered Questions
Admin CP -> Themes -> Edit current theme -> Custom tab -> Change the fixed width -
It would work better with jQuery. https://webflake.sx/topic/16887-snowflake-effect-with-jquery/
-
How to edit color of "Follow" button?
Jeffrey replied to Mr.Aces's question in Invision Answered Questions
.ipsApp .ipsButton_link.ipsFollow, .ipsApp .ipsButton_link.ipsPromote { background-color: INSERT COLOR HERE; } -
To be completely honest, I believe this should belong in the IPS 4.2 Requests section. I'd offer to help, however I am not experienced with the ecommerce portion of the suite.
-
Reminder: we will never require a license.
Jeffrey replied to Tony's topic in Announcements and Updates
We try our best! <3 -
If I'm not mistaken: "/system/Login/Ipsconnect.php" Edit: File name: concrete_bridge <?php class concrete_bridge implements bridge { /** * A set of replacement keys for cross compatibility. * @access private * @var array */ private static $replacements = array(); /** * The member data. * @access private * @var array */ public $member; /** * The settings data. * @access public * @var array */ public $settings; /** * The database instance. * @access private * @var class_db */ public $database; /** * A constructor for the bridge class. * @access public */ public function __construct() { define("IPS_PATH", (substr(INTEGRATION_FOLDER, 0, 1) == "/" ? "" : PATH_BASE."/").INTEGRATION_FOLDER); chdir(IPS_PATH); require_once(IPS_PATH."/init.php"); \IPS\Session\Front::i(); \IPS\Dispatcher\External::i(); $this->settings = \IPS\Settings::i(); $this->database = \IPS\Db::i(); $this->member = \IPS\Member::loggedIn(); } /** * Gather topics from certain given boards (optionally matching the * given {@code author}'s member id). * @access public * @param $boards array The boards we're looking in for the topics. * @param $maximum int The maximum amount of topics to fetch. * @param null $starter int The starter's member id. * @param int $order_key int The order key (0=start_date, 1=last_post). * @return mixed The topics we've found. */ public function topics($boards, $maximum, $starter = null, $order_key = 0) { $topics = array(); $board_conditions = array('t.forum_id = ?', $boards[0]); for($i = 1; $i < count($boards); $i++) { $board_conditions[0] .= " OR t.forum_id = ?"; $board_conditions[] = $boards[$i]; } $conditions = array(array("t.approved = ?", 1), $board_conditions); if($starter != null) { $conditions[] = array("t.starter_id = ?", $starter); } $select = \IPS\Db::i()->select( "t.*", array("forums_topics", "t"), $conditions, "t.".($order_key == 1 ? "last_post" : "start_date")." DESC", $maximum == null ? null : array(0, $maximum) ); foreach($select as $row) { $topics[] = $row; } return $topics; } /** * Gather posts from the given topic (optionally matching the given * {@code author)'s member id). * @access public * @param $topic int The topic we're looking in for the posts. * @param $maximum int The maximum amount of topics to fetch. * @param null $author int The author's member id. * @return mixed The posts we've found. */ public function posts($topic, $maximum, $author = null) { $posts = array(); $conditions = array("p.topic_id = ?", $topic); if($author != null) { $conditions += array('p.author_id = ?', $author); } $select = \IPS\Db::i()->select( "p.*", array("forums_posts", "p"), $conditions, "p.post_date ASC", $maximum == null ? null : array(0, $maximum) ); foreach($select as $row) { $posts[] = $row; } return $posts; } /** * Gather a single post by the given identification number. * @param $id int The post id. * @param null $author int The author's member id. * @return mixed The post we've found, else {@code false}. */ public function post($id, $author = null) { $conditions = array("p.pid = ?", $id); if($author != null) { $conditions += array('p.author_id = ?', $author); } $select = \IPS\Db::i()->select( "p.*", array("forums_posts", "p"), $conditions, "p.post_date ASC", array(0, 1) ); return $select->first(); } /** * Gather a member by searching for a match with the given identifier * and key. * @access public * @param $member mixed The variable we'll pass the member's data to. * @param $identifier string The identifier matching for the {@code key}. * @param string $key string The key we'll search through (id, name or email). * @return bool If we were able to find the member {@code true}. */ public function member(&$member, $identifier, $key = "id") { $member = \IPS\Member::load($identifier); while($key = key($member)) { if(@in_array($key, self::$replacements)) { $pair = array(self::$replacements[$key] => current($member)); unset($member[$key]); array_merge($member, $pair); } next($member); } } /** * Gather members by searching for matches with the given identifiers * and key. * @access public * @param $members array The variable we'll pass the members data to. * @param $identifiers array The identifiers used to match to the {@code key}. * @param string $key string The key we'll search through (id, name or email). * @return bool If we were able to find a member {@code true}. */ public function members(&$members, $identifiers, $key = "id") { foreach($identifiers as $identifier) { if($this->member($member, $identifier, $key)) { $members[] = $member; } } return count($members) > 0; } /** * Login to the third party software using the given name and password. * @access public * @param $name string The name we're using. * @param $password string The password we're using. * @param bool $remember bool If the credentials should be remembered {@code true}. * @return mixed The response code. * */ public function login($name, $password, $remember = false) { $row = $this->database->select( "l.*", array("core_login_handlers", "l"), array("l.login_key = ?", "Internal") )->first(); $login = \IPS\Login\LoginAbstract::constructFromData($row); $values = array("auth" => $name, "password" => $password); $login->authTypes = \IPS\Login::AUTH_TYPE_USERNAME; $member = null; try { $member = $login->authenticate($values); } catch(\IPS\Login\Exception $e) { return $e->getCode(); } \IPS\Session::i()->setMember($member); if($remember) { $expire = new \IPS\DateTime; $expire->add(new \DateInterval('P7D')); \IPS\Request::i()->setCookie('member_id', $member->member_id, $expire); \IPS\Request::i()->setCookie('pass_hash', $member->member_login_key, $expire); } $member->memberSync('onLogin', array(\IPS\Login::getDestination())); return $member; } /** * Force a login session to a member matching the given identifier and * selection key. * @param $identifier string The identifier used to match the member. * @param string $key string The selection key. * @param bool $remember bool If the session should be remembered {@code true}. * @return bool If we were able to login to the member {@code true}. */ public function forceLogin($identifier, $key = "id", $remember = false) { $member = null; $this->member($member, $identifier, $key); if($member != null) { \IPS\Session::i()->setMember($member); if($remember) { $expire = new \IPS\DateTime; $expire->add(new \DateInterval('P7D')); \IPS\Request::i()->setCookie('member_id', $member->member_id, $expire); \IPS\Request::i()->setCookie('pass_hash', $member->member_login_key, $expire); } $member->memberSync('onLogin', array(\IPS\Login::getDestination())); return true; } return false; } /** * Logout from the third party software and optionally redirect to * a given uniform resource locator. * @access public * @param null $redirect string The URL we'll forward to after logout. * @return mixed The response code. */ public function logout($redirect = null) { $redirectUrl = $redirect == null ? null : \IPS\Http\Url::external($redirect); \IPS\Request::i()->setCookie('member_id', null); \IPS\Request::i()->setCookie('pass_hash', null); \IPS\Request::i()->setCookie('anon_login', null); foreach(\IPS\Request::i()->cookie as $name => $value) { if(mb_strpos($name, "ipbforumpass_") !== false) { \IPS\Request::i()->setCookie($name, null); } } session_destroy(); $this->member->memberSync('onLogout', array($redirect == null ? \IPS\Http\Url::internal('') : $redirectUrl)); if($redirectUrl != null) { \IPS\Output::i()->redirect($redirectUrl->setQueryString('_fromLogout', 1)); } } /** * Check if we're logged in to the integrated software. * @access public * @return bool If we're logged in {@code true}. */ public function isLoggedIn() { return $this->member->member_id; } /** * Update the password of a member using the given identifier. * @access public * @param $identifier string The identifier. * @param $password string The new password. * @param string $key string The selection key. */ public function updatePassword($identifier, $password, $key = "id") { $member = null; $this->member($member, $identifier, $key); if($member != null) { $member->members_pass_salt = $member->generateSalt(); $member->members_pass_hash = $member->encryptedPassword($password); $member->save(); $member->memberSync('onPassChange', array($password)); } } /** * Display who's online at the moment on the forum. * @access public * @param bool $crowns bool If crowns must be shown {@code true}. * @param int $within int The time where the session time must be within. * @return array The online members. */ public function membersOnline($crowns = true, $within = null) { $where = array( array('core_sessions.running_time>'.\IPS\DateTime::create()->sub(new \DateInterval('PT30M'))->getTimeStamp()), array('core_groups.g_hide_online_list=0'), array('member_id > 0') ); $members = iterator_to_array($this->database->select( 'core_sessions.member_id,core_groups.prefix,core_groups.suffix,core_sessions.member_name,core_sessions.seo_name,core_sessions.member_group,core_sessions.login_type,CONCAT(core_groups.prefix,core_sessions.member_name,core_groups.suffix) AS formatted_name', 'core_sessions', $where, 'core_sessions.running_time DESC' )->join('core_groups', 'core_sessions.member_group=core_groups.g_id')); return $members; } /** * Get the amount of registered members on the integrated software. * @access public * @return int The amount of registered members. */ public function registeredMembers() { return $this->database->select('COUNT(*)', 'core_members', array('name<>? AND email<>?', '', ''))->first(); } /** * Get a formatted topic link using the id and title. * @access public * @param $id int The id. * @param $title string The title. * @param bool $view_last_post bool If we'd like to view the last post. * @return string The formatted topic link. */ public function formatTopicLink($id, $title, $view_last_post = false) { } /** * Format given BB code to a proper HTML output that can be used * to display topics and posts properly. * @access public * @param $bb_code string The bb code to format. * @return string The formatted bb code as HTML. */ public function formatBBCode($bb_code) { return \IPS\Text\_Parser::parseStatic($bb_code, true); } /** * Get the username for this member's ongoing session. This is the * actual username for a member, unlike the display name which may * be changed by a user at any given moment (if allowed). * @access public * @return string The member's username. */ public function username() { return $this->member->name; } /** * Get the display name for this member's ongoing session. A display * name may be changed at any given moment unlike the actual username. * @access public * @param bool $formatted bool If the name should be formatted. * @return string The member's display name. */ public function displayName($formatted = false) { $name = $this->member->name; return $formatted ? $this->member['prefix'].$name.$this->member['suffix'] : $name; } /** * Get the identification number for the primary group this member * has been submitted to. Each group has its own special restrictions * and permissions. * @access public * @return int The unique group identification number. */ public function primaryGroupId() { return $this->member->member_group_id; } /** * Get the identification numbers for each additional group this * member has been submitted to. * @access public * @return array The additional group ids. */ public function additionalGroupIds() { return explode(",", $this->member->mgroup_others); } /** * Get the uniform resource locator for the profile photo of the * member. If no profile photo has been uploaded or set the default * image should be returned instead. * @access public * @return string The URL for this member's current profile photo. */ public function profilePhoto() { return $this->member->pp_main_photo; } /** * Get the registration date of the member. The registration date * is a timestamp which may be formatted instead of returning a plain * numeric timestamp. A timestamp may be formatted with the formatting * options located at http://php.net/manual/en/function.date.php. * @param null $format string The formatting string. * @access public * @return mixed The registration date as timestamp or date string. */ public function registrationDate($format = null) { return $format ? date($this->member->joined, $format) : $this->member->joined; } /** * Get the (group/rank) title for this member. A title can stand for * a certain rank, amount of posts or reputation. In some cases the * member can enter his own member title. * @access public * @return string The member title. */ public function memberTitle() { return $this->member->member_title; } /** * Create a new page wrapped by the forum that this library is set * to integrate with. Using this function you can write HTML code * using the {@code $content} argument. * @param $content string The code to write on the output page. * @param $title string The title for this output page. * @param null $navigation array The navigation item. * @param string $head string The head element for meta-data. * @access public * @return mixed The response differing per forum integration. */ public function createPage($content, $title, $navigation = null, $head = "") { if(is_array($navigation)) { \IPS\Output::i()->breadcrumb = $navigation; } \IPS\Output::i()->headCss .= $head; \IPS\Output::i()->sendOutput(\IPS\Theme::i()->getTemplate('global', 'core')->globalTemplate($title, $content, array( 'app' => \IPS\Dispatcher::i()->application->directory, 'module' => \IPS\Dispatcher::i()->module->key, 'controller' => \IPS\Dispatcher::i()->controller ))); } /** * Render a widget in a plain HTML string from one of the Invision * Power Suite 4 applications. This can be used to show widgets * programmatically when using the {@code createPage} function. * @param $application string The application name. * @param $widget string The name of application widget. * @param bool $print bool If the widget should be rendered directly. * @access public * @return mixed The widget code in a plain HTML string. */ public function renderWidget($application, $widget, $print = true) { $application = $application == null ? null : \IPS\Application::load($application); if($application == null) { $application = new stdClass(); $application->location = $widget; } $widget = \IPS\Widget::load($application, $widget, uniqid(), array(), null, "horizontal"); $string = $widget->__toString(); if($print) { print $string; } return $string; } /** * Invoke an integration hook we have implicitly defined. * @access public * @param $name string The hook name. * @return mixed The response result. */ public function invoke($name) { /* * Empty */ } }
-
How can i make an application/plugin
Jeffrey replied to Dane's question in Invision Answered Questions
Look into the developer's documentation on the IPS site. It will give you a lot of information regarding the development of plugins and various features in the software. https://invisioncommunity.com/developers/docs/development/plugins/ -
php.ini log_errors = Off error_log = "./" display_errors = On error_reporting = E_ALL
-
Create a topic from another place
Jeffrey replied to Comendator's question in Invision Answered Questions
What "specific area" do you want the button to be at? -
This is a php error. Turn on "display_errors" in php to show off the error.
-
Why not an animated GIF (such as an animated banner)? Would this be just a static image? How much for the ad space? Will any statistics be available to those who want to purchase the ad space (how many visits/views, clicks, etc.)?