Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ошибки , хз почему

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
sanek964
Отправлено: 08 Сентября, 2012 - 23:23:00
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Notice: Use of undefined in ..... on line 85
Notice: Undefined index: in ..... on line 89 - убираетса с помощью ?page=...


PHP:
скопировать код в буфер обмена
  1.  
  2.         $limit = 15;
  3.        
  4.         $query = "SELECT COUNT(*) as num FROM $tableName";
  5.         $total_pages = mysql_fetch_array(mysql_query($query));
  6.         85 - $total_pages = $total_pages[num];
  7.        
  8.         $stages = 1;
  9.        
  10.         89 - $page = mysql_escape_string($_GET['page']);
  11.         if($page){
  12.         $start = ($page - 1) * $limit;
  13.         }else{$start = 0;}     
  14.        
  15.     // Get page data
  16.         $query1 = "SELECT * FROM $tableName LIMIT $start, $limit";
  17.         $result = mysql_query($query1);
  18.        
  19.         // Initial page num setup
  20.         if ($page == 0){$page = 1;}
  21.         $prev = $page - 1;     
  22.         $next = $page + 1;                                                     
  23.         $lastpage = ceil($total_pages/$limit);         
  24.         $LastPagem1 = $lastpage - 1;                                   
  25.        
  26.        
  27.         $paginate = '';
  28.  

(Отредактировано автором: 08 Сентября, 2012 - 23:24:03)

 
 Top
Bio man
Отправлено: 08 Сентября, 2012 - 23:27:52
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




sanek964 пишет:
on line 85
скорее всего mysql_fetch_array(mysql_query($query)); возвращает array() или false. И кто учил писать ключи без кавычек? $total_pages['num'];

sanek964 пишет:
on line 89
адресную строку покажи.
 
 Top
Jet4Fire
Отправлено: 08 Сентября, 2012 - 23:29:49
Post Id



Новичок


Покинул форум
Сообщений всего: 50
Дата рег-ции: Янв. 2010  


Помог: 3 раз(а)




sanek964 пишет:
85 - $total_pages = $total_pages[num];


тут будет
PHP:
скопировать код в буфер обмена
  1. $total_pages = $total_pages['num'];


а тут надо на существование значения в массиве GET проверять

PHP:
скопировать код в буфер обмена
  1.  
  2. if (isset($_GET['page'])) {
  3.         $page = mysql_escape_string($_GET['page']);
  4.         if($page){
  5.                 $start = ($page - 1) * $limit;
  6.         }else{$start = 0;}
  7. }
  8.  


-----
Programming - this is an art!
 
 Top
Bio man
Отправлено: 08 Сентября, 2012 - 23:33:47
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Jet4Fire пишет:
тут будет
не факт что ошибка из-за этого. РНР в таком случае если не находит константу трактует ключ как строку, то есть не явно ставит кавычки. Тут либо есть такая константа либо это не массив (или нет такого ключа) либо я чего то не досмотрел Хм

(Отредактировано автором: 08 Сентября, 2012 - 23:35:27)

 
 Top
OrmaJever Модератор
Отправлено: 08 Сентября, 2012 - 23:37:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Bio man пишет:
РНР в таком случае если не находит константу трактует ключ как строку
и даёт стабильный нотис, а т.к. в даной теме мы говорим про нотисы то это уже ошибка.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Jet4Fire
Отправлено: 08 Сентября, 2012 - 23:38:18
Post Id



Новичок


Покинул форум
Сообщений всего: 50
Дата рег-ции: Янв. 2010  


Помог: 3 раз(а)




Bio man пишет:
Jet4Fire пишет:
тут будет
не факт что ошибка из-за этого. РНР в таком случае если не находит константу трактует ключ как строку, то есть не явно ставит кавычки. Тут либо есть такая константа либо это не массив (или нет такого ключа) либо я чего то не досмотрел Хм


так там как раз код уведомления (notice) он написал наверху, это именно это!


-----
Programming - this is an art!
 
 Top
Bio man
Отправлено: 08 Сентября, 2012 - 23:43:50
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




OrmaJever Jet4Fire, да, точняк.
Если бы ошибки полностью написал было бы понятней, хотя бы эту часть Use of undefined constant num
 
 Top
sanek964
Отправлено: 08 Сентября, 2012 - 23:46:26
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Jet4Fire пишет:
if (isset($_GET['page'])) {
$page = mysql_escape_string($_GET['page']);
if($page){
$start = ($page - 1) * $limit;
}else{$start = 0;}
}


не помогло ,еше больше ошибок стало Не понял
(Добавление)
Notice: Undefined variab in .... on line 63
Notice: Undefined variab in .... on line 67
Warning: mysql_fetch_arra in .... on line 170
Call Stack
# Time Memory Function Location
1 0.0084 409104 {main}( ) ..\players.php:0
2 0.0167 417720 mysql_fetch_array ( ) ..\players.php:170

63 - $query1 = "SELECT * FROM $tableName LIMIT $start, $limit";
67 - if ($page == 0){$page = 1;}
170 - while($row = mysql_fetch_array($result))

(Отредактировано автором: 08 Сентября, 2012 - 23:49:15)

 
 Top
Jet4Fire
Отправлено: 08 Сентября, 2012 - 23:49:21
Post Id



Новичок


Покинул форум
Сообщений всего: 50
Дата рег-ции: Янв. 2010  


Помог: 3 раз(а)




sanek964 пишет:
Jet4Fire пишет:
if (isset($_GET['page'])) {
$page = mysql_escape_string($_GET['page']);
if($page){
$start = ($page - 1) * $limit;
}else{$start = 0;}
}


не помогло ,еше больше ошибок стало Не понял


потому что у вас не существует значения 'page' в массиве GET и он не не определит переменные $page и $start соответственно, допишите просто в адресной страке что-то типа ?page=tra-la-la и поймёте!

(Отредактировано автором: 08 Сентября, 2012 - 23:49:43)



-----
Programming - this is an art!
 
 Top
sanek964
Отправлено: 09 Сентября, 2012 - 00:23:39
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




все наладил с помощью if (!isset($_GET['page'])) {$_GET['page']=1;}
Можете не отвечать в тему Закатив глазки
 
 Top
Onizuka
Отправлено: 27 Сентября, 2012 - 10:54:31
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Привет. У меня такая же проблема в двух строках. было
if (!$_GET['page']){
$this->start='0';
}
if ($_GET['page']){
$this->start = $number*($_GET['page']-1);

благодаря вам убрал ошибку с первой строки - стало
if (!isset($_GET['page'])) {$_GET['page']=1;}
$this->start='0';
}
if ($_GET['page'])
$this->start = $number*($_GET['page']-1);
но осталась на другой, я не программист если не сложно помогите исправить.
 
 Top
Jet4Fire
Отправлено: 27 Сентября, 2012 - 11:29:09
Post Id



Новичок


Покинул форум
Сообщений всего: 50
Дата рег-ции: Янв. 2010  


Помог: 3 раз(а)




Onizuka пишет:
Привет. У меня такая же проблема в двух строках. было
if (!$_GET['page']){
$this->start='0';
}
if ($_GET['page']){
$this->start = $number*($_GET['page']-1);

благодаря вам убрал ошибку с первой строки - стало
if (!isset($_GET['page'])) {$_GET['page']=1;}
$this->start='0';
}
if ($_GET['page'])
$this->start = $number*($_GET['page']-1);
но осталась на другой, я не программист если не сложно помогите исправить.


PHP:
скопировать код в буфер обмена
  1.  
  2. if (!isset($_GET['page'])){
  3.         $this->start='0';
  4. }
  5. if (isset($_GET['page'])){
  6.         $this->start = $number*($_GET['page']-1);
  7.  


-----
Programming - this is an art!
 
 Top
Onizuka
Отправлено: 27 Сентября, 2012 - 12:07:25
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Сент. 2012  


Помог: 0 раз(а)




Не помогло ошибок еще больше. и не только от этого модуля.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. /**
  3.  *      iCagenda - iC calendar
  4.  *----------------------------------------------------------------------------
  5.  * @package     com_icagenda
  6.  * @copyright   Copyright (C) 2012 JOOMLIC - All rights reserved.
  7.  * @license     GNU General Public License version 2 or later; see LICENSE.txt
  8.  * @author      Jooml!C - http://www.joomlic.com
  9.  *
  10.  * @since               1.2
  11.  *----------------------------------------------------------------------------
  12. */
  13.  
  14. // No direct access to this file
  15. defined( '_JEXEC' ) or die( 'Restricted access' );
  16.  
  17. jimport( 'joomla.methods' );
  18.  
  19. // classe du Module
  20. class modiCcalendarHelper
  21. {
  22.         private function construct($params)
  23.         {
  24.                 $this->catid = $params->get('mcatid');
  25.                 $this->time = $params->get('time');
  26.                 $this->number = $params->get('number');
  27.                  if (!isset($_GET['page'])){
  28.         $this->start='0';
  29. }
  30. if (isset($_GET['page'])){
  31.         $this->start = $number*($_GET['page']-1);
  32.                
  33.                 $this->template=$params->get('template');
  34.                 $this->format= $params->get('format');
  35.                 $this->itemid= $params->get('itemid');
  36.                         }      
  37.                 //Add Security
  38.                 $id = $_GET["id"];
  39.                 if ((!$id) || (!preg_match("/^[0-9]+$/", $id))) {};
  40.        
  41.                 $Itemid = $_GET["Itemid"];
  42.                 if ((!$Itemid) || (!preg_match("/^[0-9]+$/", $Itemid))) exit();
  43.                 if($this->itemid===NULL) $this->itemid = $Itemid;
  44.                
  45.                 $this->date_start=date('Y-m-d');
  46.                 if(isset($_GET['date'])&&(!empty($_GET['date']))) $this->date_start=$_GET['date'];
  47.  
  48.                 if($time==0) $this->addFilter('e.next', $this->date_start,'>=');
  49.                 if($this->catid!=0) $this->addFilter('e.catid', $this->catid);
  50.         }
  51.  
  52.         function start($params)
  53.         {
  54.                 $this->construct($params);
  55.         }
  56.  
  57.         function addFilter($key, $var, $for=NULL){
  58.                 if($for==NULL) $for='=';
  59.                 $this->filter[$key]=' AND '.$key.$for.$var;
  60.         }
  61.         // Class Method
  62.         function getStamp($params)
  63.         {
  64.                 $this->start($params);
  65.                 // Pr&#381;pare la requ&#144;te
  66.                 $db             = JFactory::getDbo();
  67.                 $query  = $db->getQuery(true);
  68.                
  69.                 // S&#381;lection de la requ&#144;te
  70.                 $query->select(
  71.                         'e.id, e.title, e.alias, e.params, e.catid, e.image, e.file, e.next, e.dates, e.time, e.desc, e.address as address, e.place as place_name, e.city as city, e.coordinate as coordinate, c.title as cat_title, c.alias as cat_alias, c.color as cat_color'
  72.                 );
  73.                 $query->from('`#__icagenda_events` AS e');
  74.                 $query->leftJoin('`#__icagenda_category` AS c ON c.id = e.catid');
  75.                 $query->leftJoin('`#__icagenda_events` AS l ON l.id = e.place');
  76.                
  77.                 // where
  78.                 $where='e.state = 1';
  79.  
  80.                 // ajout des filtres
  81.                 if(isset($this->filter)){
  82.                         foreach ($this->filter as $filter){
  83.                                 $where.=$filter;
  84.                         }
  85.                 }
  86.  
  87.                 $query->where($where);
  88.                 $query->order('e.next');
  89.                 $query.=' LIMIT 0, 1000';
  90.                 // requ&#144;te
  91.                 $db->setQuery($query);
  92.                 $res = $db->loadObjectList();
  93.                
  94.                 $days=$this->getDays($this->date_start, $this->format);
  95.                
  96.                 foreach ($res as $r) {
  97.                         $next=$this->getNext($r->dates, $r->id);
  98.                         $datelist=$this->getDatelist($r->dates, $next);
  99.  
  100.  
  101.                        
  102.                        
  103. // Requ&#144;te Itemid
  104.                 $lang = JFactory::getLanguage();
  105.                 $locale = $lang->getlocale() ;
  106.                 setlocale( LC_TIME, $locale[0] ) ;
  107.  
  108.                 $langcur = $lang->getTag();
  109.                 $langcurrent = $langcur;
  110.                
  111.                 $db = JFactory::getDbo();
  112.                 $query  = $db->getQuery(true);
  113.                 $query->select('id AS idm, language AS lng')->from('#__menu')->where( "(link = 'index.php?option=com_icagenda&view=list') AND (published > 0) AND (language = '$langcurrent')" );
  114.                 $db->setQuery($query);
  115.                 $idm=$db->loadObject()->idm;
  116.                 $mItemid=$idm;
  117.                
  118.                 if ($mItemid == NULL) {
  119.                 $db = JFactory::getDbo();
  120.                 $query  = $db->getQuery(true);
  121.                 $query->select('id AS noidm, language AS nolng')->from('#__menu')->where( "(link = 'index.php?option=com_icagenda&view=list') AND (published > 0) AND (language = '*')" );
  122.                 $db->setQuery($query);
  123.                 $noidm=$db->loadObject()->noidm;
  124.                 $noidm=$noidm;
  125.                 }
  126.                
  127.                 if ($noidm == NULL && $mItemid == NULL) {
  128.                         echo '<div style="color:#a40505; font-weight: bold; text-align: center;">'.JText::_( 'MOD_ICCALENDAR_COM_ICAGENDA_MENULINK_UNPUBLISHED_MESSAGE' ).'</div><br>';
  129.                         $nolink = 1;
  130.                 }                      
  131.                
  132.                 if ($nolink == 1) {
  133.                         $urlevent = '#';
  134.                 }else {
  135.                         $lien = $mItemid;
  136.                         $eventnumber = $r->id;
  137. //                      $eventdate = $d;
  138. //                      $urlevent = JRoute::_('index.php?option=com_icagenda&view=list&layout=event&Itemid='.$lien.$noidm.'&id='.$eventnumber.'&eventdate='.$eventdate);
  139.                         $urlevent = JRoute::_('index.php?option=com_icagenda&view=list&layout=event&Itemid='.$lien.$noidm.'&id='.$eventnumber);
  140.                 }
  141.                 $event=array(
  142.                                 'id' => $r->id,
  143.                                 'url'=> $urlevent,
  144.                                 'title' => $r->title,
  145.                                 'image' => $r->image,
  146.                                 'dates' => $r->dataini,
  147.                                 'next' => date('Y-m-d', $next),
  148.                                 'time' => $r->time,
  149.                                 'address' => $r->address,
  150.                                 'place' => $r->place,
  151.                                 'cat_title' => $r->cat_title,
  152.                                 'cat_color' => $r->cat_color,
  153.                         );
  154.  
  155.                         foreach ($datelist as $d){
  156.                                 foreach ($days as $k=>$dy){
  157.                                         if($d==$dy['date']){
  158.                                                 array_push ($days[$k]['events'], $event);
  159.                                         }
  160.                                 }
  161.                         }
  162.                 }
  163.                
  164.                
  165.                 return $days;
  166.         }
  167.        
  168.         function clickDate ($eventdate, $d)
  169.         {
  170.                 $eventdate = $d;
  171.                 return $eventdate;
  172.         }
  173.  
  174.         /***/
  175.  
  176.  
  177.          
  178.         // G&#381;n&#381;ration des jours du mois
  179.         function getDays ($d, $f)
  180.         {
  181.  
  182.                 //update default value, from 1.2.2 to 1.2.3
  183.                 if ($f == 'd-m-Y') {
  184.                         $f = '%d-%m-%Y';
  185.                 }
  186.                
  187.                 // d&#381;termine le mois et l'ann&#381;e
  188.  
  189.                 $ex_data=explode('-', $d);
  190.                 $mese=$ex_data[1];
  191.                 $anno=$ex_data[0];
  192.  
  193.                 // G&#381;n&#381;ration du Calendrier
  194.                 $days = date("d", mktime(0, 0, 0, $mese+1, 0, $anno));
  195.                 $list = array();
  196.                                
  197.                 for($a=1; $a<=$days; $a++)
  198.                 {
  199.                         $list[$a]['date'] = date('Y-m-d', mktime(0, 0, 0, $mese, $a, $anno));
  200.                         $list[$a]['dateFormat'] = date($f, mktime(0, 0, 0, $mese, $a, $anno));
  201.                         $list[$a]['dateTitle'] = strftime($f, mktime(0, 0, 0, $mese, $a, $anno));
  202.                         $list[$a]['week'] = date('N', mktime(0, 0, 0, $mese, $a, $anno));
  203.                         $list[$a]['day'] = $a;
  204.                         $list[$a]['month'] = $mese;
  205.                         $list[$a]['year'] = $anno;
  206.                         $list[$a]['year'] = $anno;
  207.                         $list[$a]['events']=array();
  208.                 }
  209.                 return $list;
  210.         }
  211.         /***/
  212.        
  213.         /**
  214.          * liste des dates pour un &#381;v&#143;nement
  215.          */
  216.         private function getDatelist($dates, $next)
  217.         {
  218.        
  219.                 $dates=unserialize($dates);
  220.                 $da=array();
  221.                 foreach($dates as $d){
  222.                         $d=$this->mkt($d);
  223.                         if($d>=$next){
  224.                                 array_push($da, date('Y-m-d', $d));
  225.                         }
  226.                 }
  227.                 return $da;
  228.         }
  229.  
  230.         // Format Date
  231.         private function mkt($data)
  232.         {
  233.                 $ex_data=explode('-', $data);
  234.                 $ris=mktime('00', '00', '00', $ex_data['1'], $ex_data['2'], $ex_data['0']);
  235.                 return $ris;
  236.         }
  237.        
  238.         //
  239.         private function addDay ($mkt)
  240.         {
  241.                 return $mkt+82800;
  242.         }
  243.  
  244.         /**
  245.          * Fonction de mise &#710; jour de la date &#710; venir (update si n&#381;cessaire)
  246.          */
  247.         private function getNext ($dates, $id)
  248.         {
  249.                 $dates=unserialize($dates);
  250.                 $today=time();
  251.                 $day= date('d');
  252.                 $m= date('m');
  253.                 $y= date('y');
  254.                 $today=mktime(0,0,0,$m,$day,$y);
  255.  
  256.                 if(count($dates)){
  257.                                
  258.                         if ($next <= $today) {
  259.                                 $dd = $this->mkt($dates[0]);
  260.                                 foreach($dates as $a){
  261.                                         $d=$this->mkt($a);
  262.                                         if ($dd < $today){
  263.                                                 $next=date('Y-m-d', $dd);
  264.  
  265.                                         }
  266.                                         elseif ($d>=$today){
  267.                                                 $next=date('Y-m-d', $d);
  268.  
  269.                                         }
  270.                                 }
  271.                         }
  272.  
  273.                                                 $db             = Jfactory::getDbo();
  274.                                                 $query  = $db->getQuery(true);
  275.                                         $query->clear();
  276.                                                 $query->update(' #__icagenda_events ');
  277.                                                 $query->set(' next = '.$db->Quote($next) );
  278.                                                 $query->where(' id = ' . (int) $id );
  279.                                                 $db->setQuery((string)$query);
  280.                                                 $db->query($query);
  281.                                         if (!$db->query()) {
  282.                                             JError::raiseError(500, $db->getErrorMsg());
  283.                                                 return false;
  284.                                         } else {
  285.                                                 return true;
  286.                                                 }
  287.                 }
  288.                 return $next;
  289.         }
  290.  
  291.  
  292.  
  293.         /***/
  294.  
  295.         /** Syst&#143;me de navigation **/
  296.         function getNav($date_start)
  297.         {
  298.                 $option = 'index.php?option='.JRequest::getVar('option');
  299.                 $view = '&view='.JRequest::getVar('view');
  300.                 if(JRequest::getVar('layout'))$layout = '&layout='.JRequest::getVar('layout');
  301.                 $Itemid = '&Itemid='.JRequest::getVar('Itemid');
  302.                 if(JRequest::getVar('id'))$id = '&id='.JRequest::getVar('id');
  303.                 $Aurl = $option.$view.$layout.$Itemid.$id;
  304.  
  305.  
  306.                 $ex_date=explode('-', $date_start);
  307.                 $mkt_date=$this->mkt($date_start);
  308.                 $year=$ex_date[0];
  309.                 $month=$ex_date[1];
  310.                 $day=1;
  311.  
  312.                 if($month!=1){$backMonth=$month-1; $backYear=$year;}
  313.                 if($month==1){$backMonth=12; $backYear=$year-1;}
  314.                 if($month!=12){$nextMonth=$month+1; $nextYear=$year;}
  315.                 if($month==12){$nextMonth=1; $nextYear=$year+1;}
  316.                 $back='<a class="back icagendabtn" href="'.$Aurl.'&date='.$backYear.'-'.$backMonth.'-'.$day.'">&#9668</a>';
  317.                 $next='<a class="next icagendabtn" href="'.$Aurl.'&date='.$nextYear.'-'.$nextMonth.'-'.$day.'">&#9658</a>';
  318.  
  319.                 $title=date('M-Y', $mkt_date);
  320.                 $lang = JFactory::getLanguage();
  321.                 $locale = $lang->getlocale() ;
  322.                 setlocale( LC_TIME, $locale[0] ) ;
  323.  
  324.         /** translate the month in the calendar module -- Leland Vandervort **/
  325.                 $dateFormat = $title;
  326.  
  327.                 // split out the month and year to obtain translation key for JText using joomla core translation
  328.                 $t_day = strftime("%d", strtotime("$dateFormat"));
  329.                 $t_month = strftime("%B", strtotime("$dateFormat"));
  330.                 $t_year = strftime("%Y", strtotime("$dateFormat"));
  331.  
  332.                 // now resplice the title back together and call JText::
  333.                 $title = JText::_(strtoupper($t_month)) . ' ' . $t_year;
  334.  
  335.         /***/
  336.  
  337.                 $html.='<div class="nav">'.$back.$next.'<div class="title" style="text-transform: uppercase;">'.$title.'</div></div>';
  338.  
  339.                 return $html;
  340.         }
  341.         /***/
  342.  
  343. }
  344. ?>

(Отредактировано автором: 27 Сентября, 2012 - 12:16:13)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB