d1pro Опубликовано 4 Февраля 2005 Жалоба Поделиться Опубликовано 4 Февраля 2005 Song Дык и спрашиваю, будет ли толк... У них то тоже вроде не шибко они нагружаются... И обещанные куски кодаclass_db_mysql.phpВ нескольких местах, где по идее должен заменятся текущий запрос, к нему почему-то присоединяется новый. Конечно проблем не возникает, так как при выполнении запроса текущий все же зануляется, но почему не сразу?$this->cur_query .= "UPDATE ". $low_pro . SQL_PREFIX."$tbl SET $set";$this->cur_query .= "DELETE FROM ".SQL_PREFIX."$tbl";$this->cur_query .= "SELECT $get FROM ".SQL_PREFIX."$table";Т.е. имхо здесь было бы уместно убрать конкатенацию и заменить на просто присвоить...Далее, замена префикса автоматомif ( $this->obj['sql_tbl_prefix'] != "ibf_" and ! $this->prefix_changed )Возможно я плохо смотрел, но $this->prefix_changed нигде изменяется. В принципе там стоит 0, поэтому эта часть условия всегда верна. Ну не совсем баг, но все же . $the_error .= "mySQL error code: ".$this->error_no."\n";В fatal_error. $this->error_no не содержит текущую ошибку. А если содержит, то до строки просто не дойдет исполнение (такова логика этого участка ).Должно быть $the_error .= "mySQL error code: ".mysql_errno()."\n";Вроде больше ничего не помню... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
d1pro Опубликовано 25 Апреля 2005 Автор Жалоба Поделиться Опубликовано 25 Апреля 2005 Может я конечно чего-то очевидное не вижу... Но вот это имхо маразм: //----------------------------------------- // Post DB parse BBCode //----------------------------------------- function post_db_parse_bbcode($t="") { global $ibforums, $DB, $std; if ( is_array( $ibforums->cache['bbcode'] ) and count( $ibforums->cache['bbcode'] ) ) { foreach( $ibforums->cache['bbcode'] as $i => $row ) { if ( substr_count( $row['bbcode_replace'], '{content}' ) > 1 ) { //----------------------------------------- // Slightly slower //----------------------------------------- if ( $row['bbcode_useoption'] ) { preg_match_all( "#(\[".$row['bbcode_tag']."=(?:"|&\#39;)?(.+?)(?:"|&\#39;)?\])(.+?)(\[/".$row['bbcode_tag']."\])#si", $t, $match ); for ($i=0; $i < count($match[0]); $i++) { $tmp = $row['bbcode_replace']; $tmp = str_replace( '{option}' , $match[2][$i], $tmp ); $tmp = str_replace( '{content}', $match[3][$i], $tmp ); $t = str_replace( $match[0][$i], $tmp, $t ); } } else { preg_match_all( "#(\[".$row['bbcode_tag']."\])(.+?)(\[/".$row['bbcode_tag']."\])#si", $t, $match ); for ($i=0; $i < count($match[0]); $i++) { $tmp = $row['bbcode_replace']; $tmp = str_replace( '{content}', $match[2][$i], $tmp ); $t = str_replace( $match[0][$i], $tmp, $t ); } } } else { $replace = explode( '{content}', $row['bbcode_replace'] ); if ( $row['bbcode_useoption'] ) { $t = preg_replace( "#\[".$row['bbcode_tag']."=(?:"|&\#39;)?(.+?)(?:"|&\#39;)?\]#si", str_replace( '{option}', "\\1", $replace[0] ), $t ); } else { $t = preg_replace( '#\['.$row['bbcode_tag'].'\]#i' , $replace[0], $t ); } $t = preg_replace( '#\[/'.$row['bbcode_tag'].'\]#i', $replace[1], $t ); } } } return $t; }Я сделал бы так //----------------------------------------- // Post DB parse BBCode //----------------------------------------- function post_db_parse_bbcode($t="") { global $ibforums, $DB, $std; if ( is_array( $ibforums->cache['bbcode'] ) and count( $ibforums->cache['bbcode'] ) ) { foreach( $ibforums->cache['bbcode'] as $i => $row ) { if ( $row['bbcode_useoption'] ) { $replace = str_replace( array("{option}","{content}"), array('\\1','\\2'), $row['bbcode_replace'] ); $t = preg_replace( "#\[".$row['bbcode_tag']."=(?:"|&\#39;)?(.+?)(?:"|&\#39;)?\](.+?)\[/".$row['bbcode_tag']."\]#si", $replace, $t ); } else { $replace = str_replace( "{content}", '\\1', $row['bbcode_replace'] ); $t = preg_replace( "#\[".$row['bbcode_tag']."\](.+?)\[/".$row['bbcode_tag']."\]#si", $replace, $t ); } } } return $t; }Или я не прав? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Dr.Freddy Опубликовано 4 Июня 2005 Жалоба Поделиться Опубликовано 4 Июня 2005 Лазил по calendar.php, в функции make_event_html обнаружил загадочный метод вызова std'шной get_avatar:$member = $DB->fetch_row(); $member['avatar'] = $std->get_avatar( $member['avatar'], $ibforums->member['view_avs'], $member['avatar_size']);Естественно, аватары автора записи в событии календария не видно. Если помнять на корректное $member['avatar'] = $std->get_avatar( $member['avatar_location'] , 1, $member['avatar_size'], $member['avatar_type'] );, то всё отображается. =_= Единицу оставил из соображений логики — это же все равно что профиль, тут настройка видеть/не видеть работать, имхо, не должна. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
replicant Опубликовано 16 Сентября 2005 Жалоба Поделиться Опубликовано 16 Сентября 2005 Если помнять на корректное $member['avatar'] = $std->get_avatar( $member['avatar_location'] , 1, $member['avatar_size'], $member['avatar_type'] );, то всё отображается. =_= Единицу оставил из соображений логики — это же все равно что профиль, тут настройка видеть/не видеть работать, имхо, не должна.<{POST_SNAPBACK}> Отображается, но некорректно масштабируется, а единица тут вообще не нужна. $member['avatar'] = $std->get_avatar( $member['avatar_location'], $ibforums->member['view_avs'], $member['avatar_size'], $member['avatar_type']); У меня вот так переделано. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Dr.Freddy Опубликовано 16 Сентября 2005 Жалоба Поделиться Опубликовано 16 Сентября 2005 Во-первых,/*-------------------------------------------------------------------------*/ // GET USER AVATAR /*-------------------------------------------------------------------------*/ function get_avatar($member_avatar="", [b]$member_view_avatars=0[/b], $avatar_dims="x", $avatar_type='')Таки не нужна единица? Во-вторых, аватары масштабируются корректно. В третьих, между тем, что написал я, и тем, что написали вы, разница в том, что вы единицу заменили $ibforums->member['view_avs'], т.е. на календарь будет работать настройка «Отображать аватары пользователей?». Дикси. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
igorstr777 Опубликовано 26 Февраля 2006 Жалоба Поделиться Опубликовано 26 Февраля 2006 Что-то уже обыскался, есть похожие, но не то. Происходит какой-то косяк с сортировкой. Что это может быть. Удалил две спамерские темы и все темы форума исчезли. т.е. они показываются по кнопе - показать скрытые темы. Так-же они показываются и при любом другом способе сортировки (например от A-Z. Перерыл всю базу - различий с другими топиками не обнаружил. завел новую тему - все остальные темы - появились. Удаляю эту тему - снова исчезают. Выход пока нашел только такой - ставлю на этот форум другой способ сортировки (что не есть красиво :-( ) либо завожу левый топик и перевожу его в неодобренные. Кто-нибудь с таким боролся уже ? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
igorstr777 Опубликовано 27 Февраля 2006 Жалоба Поделиться Опубликовано 27 Февраля 2006 Ковырялся я долго (по вышприведенному посту). Добрался я до следующей ситуации. Все вышеприведенное натыкается на ошибку в SQL запросе, а именно в момент сортировки по полю last_post и именно по убыванию этого поля. Например если я просто тупо подаю SQL запрос (прямо в базу, не средствами форума) - вот такой SELECT * FROM ibf_topics WHERE forum_id=6 AND pinned IN (0,1) and approved=1 ORDER BY pinned DESC, last_post DESC ничего из базы не выбирается. Если-же я даю сортировку по возрастанию (ASC) то все нормально показыват. или если совсем без сортировки - тоже нормально. Я понимаю, что без самих данных - трудно что-либо сказать, но я вроде проверил это поле - там вроде все нормально. Может кто встречался с таким? Где хоть копать - поскажите... Вообщем в продолжение темы... Подавая запросы различными способами - определили, что если например поменять местами сортировку - например сначала по последним постам (last_post) а потом по прикрепленным сообщениям (pinned) то все темы показываются, но как и ожидалось - сортировка нарушается с прикрепленными сообщениями. А потом я просто взял и добавил еще одно поле в сортировку, что-б ничего не нарушать, дал сортировку снова по полу pinned - и все заработало. В чем трабла - я так и не понял, но работает. Короче вот такие строки я поменял (для 2.1.1)Найти $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'topics', 'where' => $query . $add_query, 'order' => 'pinned DESC, '.$topic_sort.' '.$sort_key .' '. $r_sort_by, Заменить $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'topics', 'where' => $query . $add_query, 'order' => 'pinned DESC,' .$topic_sort.' '.$sort_key .' '. $r_sort_by . ',pinned ', Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
DANMASTER Опубликовано 23 Июня 2006 Жалоба Поделиться Опубликовано 23 Июня 2006 d1pro, так что работает твой вариант замены? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.