Иконка ресурса

Персоны кино v2.0.0

Исправил мелкие баги, найденные в ходе проверки!

Спасибо всем за тестирование мода!
Все выше пожелания, исправления были учтены.
Добавлен парсер!
Переписан языковой файл на person.
Ну и тык мелочи!

1-е. Сделать запрос в базу.
Код:
CREATE TABLE IF NOT EXISTS `bb_person` (
  `pers_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `pers_runame` varchar(150) NOT NULL DEFAULT '',
  `pers_enname` varchar(150) NOT NULL DEFAULT '',
  `pers_gender` tinyint(1) NOT NULL DEFAULT '0',
  `pers_biography` text NOT NULL,
  `pers_career` varchar(150) NOT NULL DEFAULT '',
  `pers_foto` varchar(200) NOT NULL DEFAULT '',
  `pers_birthdate` date NOT NULL DEFAULT '0000-00-00',
  `pers_birthplace` varchar(255) NOT NULL,
  `kp_id` mediumint(8) NOT NULL,
  PRIMARY KEY (`pers_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

INSERT INTO `bb_config` VALUES ('pers_enable', '1');
INSERT INTO `bb_config` VALUES ('pers_repl_text', '<a href="person.php?id={id}">{name}</a>');
INSERT INTO `bb_config` VALUES ('pers_per_page', '40');
INSERT INTO `bb_config` VALUES ('pers_photo_dir', 'data/person');
INSERT INTO `bb_config` VALUES ('pers_idkp_list', '');
2-е. Открыть (library/includes/init_bb.php).
Найти:
PHP:
define('BB_ADS', 'bb_ads');
Ниже вставить:
PHP:
define('BB_PERSON', 'bb_person');
3-е. Открыть (library\includes\page_header.php).
Найти:
PHP:
   'U_TRACKER'  => "tracker.php",
Ниже вставить:
PHP:
   'U_PERSON'         => "person.php",
4-е. Вставить код в конец (library\language\[ru, en, uk]\main.php).
PHP:
//Person
$lang['PERS_PERSONS'] = 'Персоны';

$lang['PERS_RU_NAME'] = 'Имя на Русском';
$lang['PERS_EN_NAME'] = 'Имя на Английском';
$lang['PERS_NAME'] = 'Имя персоны';
$lang['PERS_ID'] = 'ID персоны';
$lang['PERS_BIRTHDATE'] = 'Дата рождения';
$lang['PERS_BIRTHPLACE'] = 'Место рождения';
$lang['PERS_FOTO'] = 'Фотография';
$lang['PERS_CAREER'] = 'Карьера';
$lang['PERS_BIOGRAPHY'] = 'Биография';
$lang['KP_ID'] = 'ID страницы на Кинопоиске';
$lang['KP_STR'] = 'Страница на Кинопоиске';
$lang['PERS_INFO'] = 'Информация о персоне';
$lang['PERS_LIST'] = 'Список персон';
$lang['PERS_EDIT'] = 'Редактирование персоны';
$lang['PERS_LIST_TORR'] = 'Раздачи с персоной';
$lang['PERS_EDIT_TETLE'] = 'Редактирование персоны';
$lang['PERS_NEW_ADD_TETLE'] = 'Добавление персоны';


$lang['NO_PERS_NAME'] = 'Вы должны указать имя персоны.';
$lang['PERS_NO_LIST'] = 'Список пуст';
$lang['PERS_NO'] = 'Такого актера не существует.';
$lang['PERS_ADD'] = 'Персона была успешно добавлена!';
$lang['PERS_EDITED'] = 'Персона была успешно изменена!';
$lang['PERS_DELETED'] = 'Персона была успешно удалена!';
$lang['PERS_U_RETURN'] = 'Перейти к просмотру персоны';
$lang['PERS_CONFIRM_DELETE'] = 'Вы уверены, что хотите удалить эту персону?';
$lang['PERS_NO_BIRTHDAY'] = 'Вы не указали дату рождения!';
$lang['PERS_WORK_IMAGES_FORMAT'] = 'Не верный формат изображения! Доступны только (gif, png, jpg)';
$lang['PERS_NO_TORR_LIST'] = 'Нет раздач с этой персоной.';
$lang['KP_ID_NO_FORMAT'] = 'Вы должны указать только число.';
$lang['PERS_THERE'] = 'Эта персона уже есть!';
$lang['ZODIAC_SIGN'] = array(
  'AQUARIUS'  => 'Водолей',
  'ARIES'  => 'Овен',
  'CANCER'  => 'Рак',
  'CAPRICORN'  => 'Козерог',
  'GEMINI'  => 'Близнецы',
  'LEO'  => 'Лев',
  'LIBRA'  => 'Весы',
  'PISCES'  => 'Рыбы',
  'SAGITTARIUS'  => 'Стрелец',
  'SCORPIO'  => 'Скорпион',
  'TAURUS'  => 'Телец',
  'VIRGO'  => 'Дева',
);

//Person Admin
$lang['AD_PERS_PANEL'] = 'Управление персонами';
$lang['AD_PERS_PANEL_EXPLAIN'] = 'Здесь вы можете добавлять, редактировать, просматривать и удалять персон. Вы также можете обновить базу.';
$lang['AD_PERS_ADD_NEW'] = 'Добавить персону';
$lang['AD_PERS_SYC'] = 'Обновить посты';
$lang['AD_PERS_ENABLE'] = 'Включить показ персон';
$lang['AD_PERS_ENABLE_EXPLAIN'] = 'Выделять персон в торрен раздачах';
$lang['AD_PERS_PER_PAGE'] = 'Персон на страницу';
$lang['AD_PERS_REPLACE_TEXT'] = 'Как будет выглядеть ссылка в топиках';
$lang['AD_PERS_CONFIG'] = 'Настройки';
$lang['AD_PERS_CONFIG_EXPLAIN'] = 'Эта форма позволит вам изменить настройки мода персоны.';
$lang['AD_PERS_CONFIG_UPDATED'] = 'Настройки персон успешно изменены';
$lang['AD_CLICK_RETURN_PERS_LIST'] = '%sПерейти к списку персон%s';
$lang['AD_CLICK_RETURN_PERS_CONFIG'] = '%sВернуться к настройкам%s';

$lang['AD_PERS_IDKP_LIST'] = 'Список ID персон с КиноПоиска';
$lang['AD_PERS_IDKP_LIST_EXPLAIN'] = 'Каждый <b>ID</b> должен отделятся запятой!';
$lang['AD_PERS_PHOTO_DIR'] = 'Путь к фотографиям';
$lang['AD_PERS_PHOTO_DIR_EXPLAIN'] = 'Куда будут скачиватся фотографии персон (Путь указывать относительно корня сайта).';
//Person Parser Admin
$lang['AD_PERS_PARSER'] = 'Парсер';
$lang['AD_PERS_PARSER_RUN'] = 'Запустить парсер';
$lang['AD_PERS_AUTO_PARSER'] = 'Автоматический парсер персон';
$lang['AD_PERS_PARSER_THERE'] = 'Эта персона уже есть! - <b>[NAME:<a target="_parent" href="/person.php?id=%s">%s</a>]</b>';
$lang['AD_PERS_PARSER_NOT_FOUND'] = 'Ничего не найдено! - <b>[ID:%s]</b>';
$lang['AD_PERS_PARSER_ADD_NEWS'] = 'Добавлена новая персона! - (<b><a target="_parent" href="/person.php?id=%s">%s</a></b>)';
$lang['AD_PERS_PARSER_ERROR_NOT_NAME'] = '<b>Персона не добавлена (Имя персоны пусто)! - <i>[ID:%s]</i><b> ';
$lang['AD_PERS_PARSER_ERROR'] = '<b>ОШИБКА</b>, неверные настройки парсера!';
$lang['AD_PERS_PARSER_LIST_EMPTY'] = '<b>ОШИБКА</b>, Список ID персон пуст! Укажите в настройках.';
$lang['AD_PERS_PARSER_INVALID_ID'] = 'Персоны с таким ID нет!';
$lang['AD_PERS_PARSER_NOT_ID'] = 'Вы не указали ID персоны!';
5-е. Открыть (styles\templates\default\page_header.tpl).
Найти:
PHP:
<a href="{U_TRACKER}"><b>{L_TRACKER}</b></a><span style="color:#CDCDCD;">|</span>
Ниже вставить:
PHP:
<a href="{U_PERSON}"><b>{L_PERS_PERSONS}</b></a><span style="color:#CDCDCD;">|</span>

6-е. Вставить код в конец (styles\templates\default\css\main.css).
Код:
.listPersons{letter-spacing:-5px;clear:both;display:inline-block;font-family:Tahoma,Geneva,sans-serif;width:100%}.listPersons li{box-shadow:1px 1px 0 rgba(0,0,0,.1) inset,-1px -1px 0 rgba(0,0,0,.1) inset;margin:0 .4% 1%;width:11%;padding:.3%;border-radius:2px;display:inline-block;zoom:1;vertical-align:top;letter-spacing:normal;font-size:80%;color:#666;position:relative}.listPersons li a.thumb{margin:0;background-size:auto 101%;background-position:center;background-repeat:no-repeat;display:block;position:relative;border-radius:2px;overflow:hidden}.listPersons li a.thumb img,.listPersons li span.sthumbs a img{width:100%;height:auto;display:inline-block;zoom:1;border:none}.listPersons li span.base{position:absolute;bottom:0;left:0;width:95%;padding:.3% 2.5%;background:rgba(0,0,0,.75)}.listPersons li span.nameru{font-size:160%;font-weight:700;margin:0;color:#fff;line-height:160%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-family:'Helvetica Neue',Helvetica,Arial;display:block;text-decoration:none}.listPersons li p.nameen{font-size:90%;display:block;margin:0 0 6px;color:#ccc}

7-е. Открыть (ajax.php) и найти:
PHP:
  case 'sitemap';
  require(CLASS_DIR .'sitemap.php');
  break;
Ниже вставить:
PHP:
  case 'person';
  require_once (CLASS_DIR .'person.class.php');
  break;
}

Найти:
PHP:
     'post_mod_comment'  => array('mod'),
Ниже вставить:
PHP:
  'person'  => array('mod'),

найти:
PHP:
  function sitemap()
  {
  require(AJAX_DIR .'sitemap.php');
  }
Ниже вставить:
PHP:
  function person()
  {
  require(AJAX_DIR .'mod_person.php');
  }
8-е. Открыть (library/includes/functions.php) и в конец добавить:
PHP:
function get_zodiac($birthday, $mode = 'full')
{
  global $lang;

  if (!empty($birthday))
  {
  list($bmonth, $bday) = array_map('intval', explode('-', substr($birthday, 5)));
  $zodiac_array = array(
  'aries'  => array(3, 21, 4, 20),
  'taurus'  => array(4, 21, 5, 20),
  'gemini'  => array(5, 21, 6, 21),
  'cancer'  => array(6, 22, 7, 22),
  'leo'  => array(7, 23, 8, 23),
  'virgo'  => array(8, 24, 9, 23),
  'libra'  => array(9, 24, 10, 23),
  'scorpio'  => array(10, 24, 11, 22),
  'sagittarius'  => array(11, 23, 12, 21),
  'capricorn'  => array(12, 22, 1, 20),
  'aquarius'  => array(1, 21, 2, 20),
  'pisces'  => array(2, 21, 3, 20),
  );

  foreach ($zodiac_array as $sign => $date)
  {
  if (($bmonth == $date[0] && $bday > $date[1]) || ($bmonth == $date[2] && $bday < $date[3]))
  {
  $image = BB_ROOT .'styles/images/zodiac/' . $sign . '.gif';
  $title = $lang['ZODIAC_SIGN'][(strtoupper($sign))];
  switch ($mode){
  case 'name':
  $data = $title;
  break;
  case 'images':
  $data = "<img src='$image' alt='$title' title='$title' style='vertical-align:middle;' />";
  break;
  case 'full':
  $data = "($title) <img src='$image' alt='$title' title='$title' style='vertical-align:middle;' />";;
  break;
  }

  return $data;
  }
  }
  }
}
9-е. Открыть (library/includes/bbcode.php) и найти.
PHP:
  $message = bbcode2html($postrow['post_text']);
Ниже вставить:
PHP:
  if($bb_cfg['pers_enable']){
  $actrow = DB()->fetch_rowset("SELECT pers_id, pers_runame, pers_enname FROM " . BB_PERSON . ' ORDER BY pers_id ASC');

  if ($actrow){
  foreach ($actrow as $key => $row) {
  $runame = explode(',', $row['pers_runame']);
  $enname = explode(',', $row['pers_enname']);
  $array_name = array_diff(array_merge($runame, $enname), array(''));

  foreach ($array_name as $word) {
  $name[] = $word;
  $replace[] = str_replace(array('{id}', '{name}'), array($row['pers_id'], $word), $bb_cfg['pers_repl_text']);
  }
  }

  $message = str_replace($name, $replace, $message);
  }
  }
10-е. Открыть (library/includes/functions_post.php) найти:
PHP:
   update_post_html(array(
     'post_id'  => $post_id,
     'post_text'  => $post_message,
   ));
Выше вставить:
PHP:
  if($bb_cfg['pers_enable']){
  $actrow = DB()->fetch_rowset("SELECT pers_id, pers_runame, pers_enname FROM " . BB_PERSON . ' ORDER BY pers_id ASC');

  if ($actrow){
  foreach ($actrow as $key => $row) {
  $runame = explode(',', $row['pers_runame']);
  $enname = explode(',', $row['pers_enname']);
  $array_name = array_diff(array_merge($runame, $enname), array(''));

  foreach ($array_name as $word) {
  $name[] = $word;
  $replace[] = str_replace(array('{id}', '{name}'), array($row['pers_id'], $word), $bb_cfg['pers_repl_text']);
  }
  }

  $message = str_replace($name, $replace, $message);
  }
  }
11-е. Скапировать все файлы в кореть сайта и дать права (777) папке {data/person}:
  1. Исправлены ранние найденные ошибки.
  2. Перенесено добавление актеров, редактирование и обновление постов в Админ панель.
  3. Добавлены настройки мода.
  4. Обновлен парсер старых постов.
  5. Переделана функция вывода знака зодиака.
  6. И еще что то.

1-е. Сделать запрос в базу.
Код:
INSERT INTO `bb_config` VALUES ('act_enable', '1');
INSERT INTO `bb_config` VALUES ('act_repl_text', '<a href="actors.php?id={id}">{name}</a>');
INSERT INTO `bb_config` VALUES ('act_per_page', '40');
2-е. Заменить код в конец (library\language\[ru, en, uk]\main.php) Этот :
PHP:
//Actors
$lang['ACT_PERSONS'] = 'Актёры';
$lang['ACT_RU_NAME'] = 'Имя на Русском';
$lang['ACT_EN_NAME'] = 'Имя на Английском';
$lang['ACT_BIRTHDATE'] = 'Дата рождения';
$lang['ACT_BIRTHPLACE'] = 'Место рождения';
$lang['ACT_FOTO'] = 'Фотография';
$lang['ACT_CAREER'] = 'Карьера';
$lang['ACT_BIOGRAPHY'] = 'Биография';
$lang['KP_ID'] = 'ID странице на Кинопоиске';
$lang['KP_STR'] = 'Страница на Кинопоиске';
$lang['ACT_INFO'] = 'Информация о актёре';
$lang['ACT_LIST'] = 'Список актеров';
$lang['ACT_EDIT'] = 'Редактирование персоны';
$lang['ACT_LIST_TORR'] = 'Раздачи с актером';
$lang['ACT_EDIT_TETLE'] = 'Редактирование персоны';
$lang['ACT_NEW_ADD_TETLE'] = 'Добавления новай персоны';
$lang['NO_ACT_NAME'] = 'Вы должны указать имя актера.';
$lang['ACT_NO_LIST'] = 'Список пуст';
$lang['ACT_NO'] = 'Такого актера не существует.';
$lang['ACT_ADD'] = 'Актор был успешно добавлен!';
$lang['ACT_EDITED'] = 'Актор был успешно изменен!';
$lang['ACT_DELETED'] = 'Актор был успешно удален!';
$lang['ACT_U_RETURN'] = 'Перейти к просмотру актера';
$lang['ACT_CONFIRM_DELETE'] = 'Вы уверены, что хотите удалить этого актера?';
$lang['ACT_NO_BIRTHDAY'] = 'Вы не указали дату рождения!';
$lang['ACT_WORK_IMAGES_FORMAT'] = 'Не верный формат изображения! Доступны только (gif, png, jpg)';
$lang['ACT_NO_TORR_LIST'] = 'Нет раздач с этим актером.';
$lang['KP_ID_NO_FORMAT'] = 'Вы должны указать только число.';
$lang['ZODIAC_SIGN'] = array(
'start' => array(1=>21, 2=>20, 3=>20, 4=>20, 5=>20, 6=>20, 7=>21, 8=>22, 9=>23, 10=>23, 11=>23, 12=>23),
'zn' => array(
'name' => array('Козерог', 'Водолей', 'Рыбы', 'Овен', 'Телец', 'Близнецы', 'Рак', 'Лев', 'Девы', 'Весы', 'Скорпион', 'Стрелец'),
'img' => array('capricorn.gif','aquarius.gif','pisces.gif','aries.gif','taurus.gif','gemini.gif','cancer.gif','leo.gif','virgo.gif','libra.gif','scorpio.gif','sagittarius.gif'),
)
);
На этот
PHP:
//Actors
$lang['ACT_PERSONS'] = 'Актёры';

$lang['ACT_RU_NAME'] = 'Имя на Русском';
$lang['ACT_EN_NAME'] = 'Имя на Английском';
$lang['ACT_NAME'] = 'Имя актера';
$lang['ACT_ID'] = 'ID актера';
$lang['ACT_BIRTHDATE'] = 'Дата рождения';
$lang['ACT_BIRTHPLACE'] = 'Место рождения';
$lang['ACT_FOTO'] = 'Фотография';
$lang['ACT_CAREER'] = 'Карьера';
$lang['ACT_BIOGRAPHY'] = 'Биография';
$lang['KP_ID'] = 'ID странице на Кинопоиске';
$lang['KP_STR'] = 'Страница на Кинопоиске';

$lang['ACT_INFO'] = 'Информация о актёре';
$lang['ACT_LIST'] = 'Список актеров';
$lang['ACT_EDIT'] = 'Редактирование персоны';
$lang['ACT_LIST_TORR'] = 'Раздачи с актером';


$lang['ACT_EDIT_TETLE'] = 'Редактирование персоны';
$lang['ACT_NEW_ADD_TETLE'] = 'Добавление персоны';


$lang['NO_ACT_NAME'] = 'Вы должны указать имя актера.';

$lang['ACT_NO_LIST'] = 'Список пуст';
$lang['ACT_NO'] = 'Такого актера не существует.';
$lang['ACT_ADD'] = 'Актор был успешно добавлен!';
$lang['ACT_EDITED'] = 'Актор был успешно изменен!';
$lang['ACT_DELETED'] = 'Актор был успешно удален!';
$lang['ACT_U_RETURN'] = 'Перейти к просмотру актера';
$lang['ACT_CONFIRM_DELETE'] = 'Вы уверены, что хотите удалить этого актера?';
$lang['ACT_NO_BIRTHDAY'] = 'Вы не указали дату рождения!';
$lang['ACT_WORK_IMAGES_FORMAT'] = 'Не верный формат изображения! Доступны только (gif, png, jpg)';
$lang['ACT_NO_TORR_LIST'] = 'Нет раздач с этим актером.';
$lang['KP_ID_NO_FORMAT'] = 'Вы должны указать только число.';

$lang['ZODIAC_SIGN'] = array(
    'AQUARIUS'      => 'Водолей',
    'ARIES'         => 'Овен',
    'CANCER'        => 'Рак',
    'CAPRICORN'     => 'Козерог',
    'GEMINI'        => 'Близнецы',
    'LEO'           => 'Лев',
    'LIBRA'         => 'Весы',
    'PISCES'        => 'Рыбы',
    'SAGITTARIUS'   => 'Стрелец',
    'SCORPIO'       => 'Скорпион',
    'TAURUS'        => 'Телец',
    'VIRGO'         => 'Дева',
);

//Actors Admin
$lang['AD_ACT_PANEL'] = 'Управление актерами';
$lang['AD_ACT_PANEL_EXPLAIN'] = 'Здесь вы можете добавлять, редактировать, просматривать и удалять актеров. Вы также можете обновить базу.';
$lang['AD_ACT_ADD_NEW'] = 'Добавить актера';
$lang['AD_ACT_SYC'] = 'Обновить посты';
$lang['AD_ACT_ENABLE'] = 'Включить паказ актеров';
$lang['AD_ACT_ENABLE_EXPLAIN'] = 'Выдилять актеров в торрен раздачах';
$lang['AD_ACT_PER_PAGE'] = 'Актеров на страницу';
$lang['AD_ACT_REPLACE_TEXT'] = 'Как будет выглядеть ссылка в топиках';
$lang['AD_ACT_CONFIG'] = 'Настройки';
$lang['AD_ACT_CONFIG_EXPLAIN'] = 'Эта форма позволит вам изменить настройки мода Актеры.';
$lang['AD_ACT_CONFIG_UPDATED'] = 'Настройки актеров успешно изменены';
$lang['AD_CLICK_RETURN_ACT_LIST'] = '%sПерейти к списку актеров%s';
$lang['AD_CLICK_RETURN_ACT_CONFIG'] = '%sВернуться к настройкам%s';
3-е. Открыть (library/includes/functions.php) и заменить function zodiac_sign() на:
PHP:
function get_zodiac($birthday, $mode = 'full')
{
    global $lang;

    if (!empty($birthday))
    {
        list($bday, $bmonth) = array_map('intval', explode('-', $birthday));
        $zodiac_array = array('aries' => array(3, 20, 4, 20),'taurus' => array(4, 19, 5, 21),'gemini' => array(50, 20, 6, 21),'cancer' => array(6, 20, 7, 23), 'leo' => array(7, 22, 8, 23),'virgo' => array(8, 22, 9, 23),
            'libra' => array(9, 22, 10, 23),'scorpio' => array(10, 22, 11, 22),'sagittarius' => array(11, 21, 12, 22),'capricorn' => array(12, 21, 1, 20),'aquarius' => array(1, 19, 2, 19),'pisces' => array(2, 18, 3, 21));

        foreach ($zodiac_array as $sign => $date)
        {
            if (($bmonth == $date[0] && $bday > $date[1]) || ($bmonth == $date[2] && $bday < $date[3]))
            {
                $image = BB_ROOT .'styles/images/zodiac/' . $sign . '.gif';
                $title = $lang['ZODIAC_SIGN'][(strtoupper($sign))];
                switch ($mode){
                    case 'name':
                        $data = $title;
                        break;
                    case 'images':
                        $data = "<img src='$image' alt='$title' title='$title' style='vertical-align:middle;' />";
                        break;
                    case 'full':
                        $data = "($title) <img src='$image' alt='$title' title='$title' style='vertical-align:middle;' />";;
                        break;
                }

                return $data;
            }
        }
    }
}
4-е. Открыть (library/includes/bbcode.php) найти:
PHP:
    if (!$actors = $datastore->get('actors'))
    {
        $datastore->update('actors');
        $actors = $datastore->get('actors');
    }

    foreach ($actors as $key => $row) {
        if (!empty($row['actor_runame']) || !empty($row['actor_enname']) ) {
            $runame = explode(',', $row['actor_runame']);
            $enname = explode(',', $row['actor_enname']);

            foreach (array_merge($runame, $enname) as $word) {
                $name[] = $word;
                $replace[] = "<a href=\"actors.php?id={$row['actor_id']}\">$word</a>";
            }
        }
    }
    $message = str_replace($name, $replace, $message);
Заменить на:
PHP:
    if($bb_cfg['act_enable']){
        $actrow = DB()->fetch_rowset("SELECT actor_id, actor_runame, actor_enname FROM " . BB_ACTORS . ' ORDER BY actor_id ASC');

        if ($actrow){
            foreach ($actrow as $key => $row) {
                    $runame = explode(',', $row['actor_runame']);
                    $enname = explode(',', $row['actor_enname']);
                    $array_name = array_diff(array_merge($runame, $enname), array(''));

                    foreach ($array_name as $word) {
                        $name[] = $word;
                        $replace[] = str_replace(array('{id}', '{name}'), array($row['actor_id'], $word), $bb_cfg['act_repl_text']);
                    }
            }

            $message = str_replace($name, $replace, $message);
        }
    }
5-е. Открыть (library/includes/functions_post.php) найти:
PHP:
    update_post_html(array(
        'post_id'        => $post_id,
        'post_text'      => $post_message,
    ));
Выше вставить:
PHP:
    if($bb_cfg['act_enable']){
        $actrow = DB()->fetch_rowset("SELECT actor_id, actor_runame, actor_enname FROM " . BB_ACTORS . ' ORDER BY actor_id ASC');

        if ($actrow){

            foreach ($actrow as $key => $row) {
                    $runame = explode(',', $row['actor_runame']);
                    $enname = explode(',', $row['actor_enname']);
                    $array_name = array_diff(array_merge($runame, $enname), array(''));

                    foreach ($array_name as $word) {
                        $name[] = $word;
                        $replace[] = str_replace(array('{id}', '{name}'), array($row['actor_id'], $word), $bb_cfg['act_repl_text']);
                    }
            }
            //$replace = str_pad($replace, 10,htmlspecialchars("&nbsp"), STR_PAD_LEFT);
            $post_message = str_replace($name, $replace, $post_message);
        }
    }
Вроде все!
Исправлены найденные ошибки.
Добавлен кеш.
Добавлен раздачи актера.

1-е. Сделать запрос в базу.
Код:
ALTER TABLE `bb_actors` ADD `actor_birthplace` varchar(255) NOT NULL;
ALTER TABLE `bb_actors` ADD `kp_id` varchar(10) NOT NULL;
ALTER TABLE `bb_actors` CHANGE `actor_desc` `actor_biography` VARCHAR(10) NOT NULL;
2-е. Открыть (viewtopic.php) и удалить:
PHP:
     $sql = "SELECT actor_id, actor_runame, actor_enname FROM " . BB_ACTORS ;
    if (!($result = DB()->sql_query($sql)))
    {
        bb_die('Could not get actors information');
    }

    while ($row = DB()->sql_fetchrow($result)) {
        if (!empty($row['actor_runame']) || !empty($row['actor_enname']) ) {
            $runame = explode(',', $row['actor_runame']);
            $enname = explode(',', $row['actor_enname']);

            foreach (array_merge($runame, $enname) as $word) {
                $name[] = $word;
                $replace[] = "<a href=\"actors.php?id={$row['actor_id']}\">$word</a>";
            }
        }
    }
    $message = str_replace($name, $replace, $message);
3-е. Заменить код в конец (library\language\[ru, en, uk]\main.php).

Этот:
PHP:
 $lang['BIRTHDATE'] = 'Дата рождения';
$lang['BIOGRAPHY'] = 'Биография';
$lang['ACT_LIST'] = 'Список актеров';

$lang['ACT_EDIT'] = 'Редактирование персоны';

$lang['ACT_RU_NAME'] = 'Имя на Русском';
$lang['ACT_EN_NAME'] = 'Имя на Английском';
$lang['ACT_FOTO'] = 'Фотография';
$lang['ACT_BIRTHDATE'] = 'Когда родился';
$lang['ACT_DESC'] = 'Описание';
$lang['ACT_CAREER'] = 'Карьера';

На этот:
PHP:
//Actors
$lang['ACT_PERSONS'] = 'Актёры';

$lang['ACT_RU_NAME'] = 'Имя на Русском';
$lang['ACT_EN_NAME'] = 'Имя на Английском';
$lang['ACT_BIRTHDATE'] = 'Дата рождения';
$lang['ACT_BIRTHPLACE'] = 'Место рождения';
$lang['ACT_FOTO'] = 'Фотография';
$lang['ACT_CAREER'] = 'Карьера';
$lang['ACT_BIOGRAPHY'] = 'Биография';
$lang['KP_ID'] = 'ID странице на Кинопоиске';
$lang['KP_STR'] = 'Страница на Кинопоиске';

$lang['ACT_INFO'] = 'Информация о актёре';
$lang['ACT_LIST'] = 'Список актеров';
$lang['ACT_EDIT'] = 'Редактирование персоны';
$lang['ACT_LIST_TORR'] = 'Раздачи с актером';


$lang['ACT_EDIT_TETLE'] = 'Редактирование персоны';
$lang['ACT_NEW_ADD_TETLE'] = 'Добавления новай персоны';


$lang['NO_ACT_NAME'] = 'Вы должны указать имя актера.';

$lang['ACT_NO_LIST'] = 'Список пуст';
$lang['ACT_NO'] = 'Такого актера не существует.';
$lang['ACT_ADD'] = 'Актор был успешно добавлен!';
$lang['ACT_EDITED'] = 'Актор был успешно изменен!';
$lang['ACT_DELETED'] = 'Актор был успешно удален!';
$lang['ACT_U_RETURN'] = 'Перейти к просмотру актера';
$lang['ACT_CONFIRM_DELETE'] = 'Вы уверены, что хотите удалить этого актера?';
$lang['ACT_NO_BIRTHDAY'] = 'Вы не указали дату рождения!';
$lang['ACT_WORK_IMAGES_FORMAT'] = 'Не верный формат изображения! Доступны только (gif, png, jpg)';
$lang['ACT_NO_TORR_LIST'] = 'Нет раздач с этим актером.';
$lang['KP_ID_NO_FORMAT'] = 'Вы должны указать только число.';


$lang['ZODIAC_SIGN'] = array(
    'start' => array(1=>21, 2=>20, 3=>20, 4=>20, 5=>20, 6=>20, 7=>21, 8=>22, 9=>23, 10=>23, 11=>23, 12=>23),
    'zn' => array(
        'name' => array('Козерог', 'Водолей', 'Рыбы', 'Овен', 'Телец', 'Близнецы', 'Рак', 'Лев', 'Девы', 'Весы', 'Скорпион', 'Стрелец'),
        'img' => array('capricorn.gif','aquarius.gif','pisces.gif','aries.gif','taurus.gif','gemini.gif','cancer.gif','leo.gif','virgo.gif','libra.gif','scorpio.gif','sagittarius.gif'),
    )
);
4-е. Заменить код в конец (styles\templates\default\css\main.css).
Этот:
Код:
.PersBlock .PersMain,.PersBlock img{width:172px;height:264px}.PersBlock .PersMain{background:#f6f6f6;min-height:250px;font-family:Roboto,sans-serif;font-weight:400;border-width:4px;border-style:solid;border-color:#DDD;box-shadow:10px 10px 6px -6px #777;cursor:pointer;float:left;margin:3px;position:relative}.PersBlock a.PersMain{position:relative;overflow:hidden;transition:all .4s;cursor:pointer}.PersBlock a.PersMain,a.PersMain span.PersInfo{display:block;-moz-transition:all .4s;-webkit-transition:all .4s;-o-transition:all .4s}a.PersMain span.PersInfo{background:rgba(0,37,141,.46);width:100%;height:25px;position:absolute;bottom:0;left:0;z-index:9910;transition:all .4s;white-space:pre;text-align:left;color:rgba(221,243,255,.8)}a.PersMain:hover span.PersInfo{bottom:0;height:60px;color:#fff}a.PersMain span.PersInfo h3{width:auto;padding:5px 0 0 6px;letter-spacing:0}a.PersMain span.PersInfo .PersSM{padding-left:6px;font-size:10px}
На этот:
Код:
.listPersons{letter-spacing:-5px;clear:both;display:inline-block;font-family:Tahoma,Geneva,sans-serif;width:100%}.listPersons li{box-shadow:1px 1px 0 rgba(0,0,0,.1) inset,-1px -1px 0 rgba(0,0,0,.1) inset;margin:0 .4% 1%;width:11%;padding:.3%;border-radius:2px;display:inline-block;zoom:1;vertical-align:top;letter-spacing:normal;font-size:80%;color:#666;position:relative}.listPersons li a.thumb{margin:0;background-size:auto 101%;background-position:center;background-repeat:no-repeat;display:block;position:relative;border-radius:2px;overflow:hidden}.listPersons li a.thumb img,.listPersons li span.sthumbs a img{width:100%;height:auto;display:inline-block;zoom:1;border:none}.listPersons li span.base{position:absolute;bottom:0;left:0;width:95%;padding:.3% 2.5%;background:rgba(0,0,0,.75)}.listPersons li span.nameru{font-size:160%;font-weight:700;margin:0;color:#fff;line-height:160%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-family:'Helvetica Neue',Helvetica,Arial;display:block;text-decoration:none}.listPersons li p.nameen{font-size:90%;display:block;margin:0 0 6px;color:#ccc}
5-е. Открыть (library/includes/datastore/common.php) и найти:
'attach_extensions' => 'build_attach_extensions.php',
Выше вставить:
'actors' => 'build_actors.php',
6-е. Открыть (ajax.php) и найти:
'manage_group' => array('user'),
Ниже вставить:
'actors' => array('user'),

найти:
PHP:
function sitemap()
{
require(AJAX_DIR .'sitemap.php');
}
Ниже вставить:
PHP:
function actors()
{
require(AJAX_DIR .'mod_actors.php');
}
7-е. Открыть (library/includes/functions.php) и в конец добавить:
PHP:
function zodiac_sign($data){
global $lang;
$date = explode('-', substr($data, 5));
$month = $date[0];
$day = $date[1];
if($day < $lang['ZODIAC_SIGN']['start'][$month + 1]){
$Zname = $lang['ZODIAC_SIGN']['zn']['name'][$month - 1];
$Zimages = $lang['ZODIAC_SIGN']['zn']['img'][$month - 1];
}else{
$Zname = $lang['ZODIAC_SIGN']['zn']['name'][$month % 12];
$Zimages = $lang['ZODIAC_SIGN']['zn']['img'][$month % 12];
}
$data = '<img src="'. BB_ROOT .'styles/images/zodiac/'. $Zimages .'" alt="'. $Zname .'" title="'. $Zname .'" border="0" />';
return $data;
}
8-е. Открыть (library/includes/bbcode.php) и заменить всю функцию get_parsed_post.
На это:
PHP:
function get_parsed_post ($postrow, $mode = 'full', $return_chars = 600)
{
global $bb_cfg, $datastore;
if ($bb_cfg['use_posts_cache'] && !empty($postrow['post_html'])) {
return $postrow['post_html'];
}
$message = bbcode2html($postrow['post_text']);

$ActList = DB()->fetch_rowset("SELECT actor_id, actor_runame, actor_enname FROM " . BB_ACTORS . ' ORDER BY actor_id ASC');
if ($ActList){
foreach ($ActList as $key => $row) {
if (!empty($row['actor_runame']) || !empty($row['actor_enname'])) {
$runame = explode(',', $row['actor_runame']);
$enname = explode(',', $row['actor_enname']);
foreach (array_merge($runame, $enname) as $word) {
$name[] = $word;
$replace[] = "<a href=\"actors.php?id={$row['actor_id']}\">$word</a>";
}
}
}
$message = str_replace($name, $replace, $message);
}
// Posts cache
if ($bb_cfg['use_posts_cache'])
{
DB()->shutdown['post_html'][] = array(
'post_id' => (int) $postrow['post_id'],
'post_html' => (string) $message,
);
}
return $message;
}
11-е. Распаковать архив в корень сайта.
Вот вроди и все!!!
Сайт выдавал ошибку при загрузки файла пришлось загрузить на внешний сервер.
Смотрим, тестим, предлогаем!
Сверху