Персоны кино 2.0.2

Подсвечивание актеров в описании торрентых.

  1. ВаленокPC
    Совместимость:
    проверялся на совместимость
    Изменения в БД:
    требуются
    Дополнительные требования:
    curl, php-5.4
    Автор:
    ВаленокPC
    Общественное достояние:
    да
    Вывод персон
    Инструкция по установке:
    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($birthday5)));
      
    $zodiac_array = array(
      
    'aries'  => array(321420),
      
    'taurus'  => array(421520),
      
    'gemini'  => array(521621),
      
    'cancer'  => array(622722),
      
    'leo'  => array(723823),
      
    'virgo'  => array(824923),
      
    'libra'  => array(9241023),
      
    'scorpio'  => array(10241122),
      
    'sagittarius'  => array(11231221),
      
    'capricorn'  => array(1222120),
      
    'aquarius'  => array(121220),
      
    'pisces'  => array(221320),
      );

      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}:

    Минимальня версия PHP не ниже 5.4

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

    Изображения

    1. Image 1.png
    2. Image 2.png
    3. Image 3.png
    4. Image 4.png