php [Инструкция] Замена поля ICQ на ВК или Skype + добавление поля Привилегия(CS:BANS)

Сообщения
83
Реакции
63
Помог
1 раз(а)
Всем привет!:thank_you:
Когда-то на c-s.net.ua писал пост как заменить icq на вк + добавить колонку skype и вот что получилось при старом варианте 1.png
Правда мне не нравилась cылка в графе вк ..
На dev-cs.ru по моему мануалу написали статью как вместо ссылки сделать просто значок вк ... идея неплохая ... но мне не понравилось так как колонка получается слишком пустая ..
2.png
Поэтому задавался вопросом как сделать так чтобы ссылку меняло на имя с ВК.
Помогли хорошие люди на форуме breakt, fantom, за что им большое спасибо) Получилось вот что 3.png
К каждому примеру добавил готовые файлы. Если что-то пропустил .. пишите .. отредактирую ... Спасибо!
P.S.: Закомментировал часть кода, а именно флаги доступа и информацию о доступе, думаю, что этого обычному игроку знать не нужно, а вы и так знаете какие флаги вы выдали, если хотите то раскомментируйте!
И так поехали:
1. В файле protected/models/amxadmins.php сделать следующие изменения:
Изменить
PHP:
* @property integer $icq Контакты
на
PHP:
* @property integer $icq Skype
Изменить
PHP:
array('icq, ashow, days, change', 'numerical', 'integerOnly'=>true),
на
PHP:
array('ashow, days, change', 'numerical', 'integerOnly'=>true),
array('icq', 'length', 'max'=>64),
Изменить
PHP:
'icq' => 'ICQ',
на
PHP:
'icq' => 'Skype',
2. В файле /protected/views/amxadmins/index.php сделать следующие изменения:
Изменить
PHP:
,
        array(
            'name' => 'icq',
            'type' => 'raw',
            'value' => '$data->icq != 0 ? CHtml::encode($data->icq) : "<i>Не задан</i>"',
            'htmlOptions' => array(
                'style' => 'width: 100px;'
            )
на
PHP:
,
        array(
            'name' => 'icq',
            'type' => 'raw',
            'value' => '$data->icq ? CHtml::image("/images/skype.ico"). " " . CHtml::link($data->icq, "skype:".$data->icq."?call") : "". CHtml::image("/images/skype.ico"). "<i>  Не указано</i>"',
            'htmlOptions' => array(
                'style' => 'width: 170px;'
            )
/images/skype.ico - это путь к вашей иконки
3. В файле protected/controllers/AmxadminsController.php сделать следующие изменения:
Изменить
PHP:
<tr>";
      $info .= "<td><b>Контакты</b></td>";
      $info .= "<td>" . ($model->icq ? CHtml::image("//icq-rus.com/icq/3/".$model->icq.".gif"). " " . $model->icq : 'Не задан') . "</td>";
      $info .= "</tr>
на
PHP:
<tr>";
        $info .= "<td><b>Skype</b></td>";
        $info .= "<td>" . ($model->icq ? CHtml::image("/images/skype.ico"). " " . CHtml::link($model->icq, "skype:".$model->icq."?call") : CHtml::image("/images/skype.ico"). '  Не указано') . "</td>";
        $info .= "</tr>
/images/skype.ico - это путь к вашей иконки
В базе в таблице amxadmins для колонки "icq" выставить тип "varchar" с длинной "64"
Вот что получилось 4.png
Даю сразу готовые файлы .. просто заменить... файлик с названием only skype
1. В файле protected/models/amxadmins.php сделать следующие изменения:
Изменить
PHP:
* @property integer $icq Контакты
на
PHP:
* @property integer $icq Вконтакте
Изменить
PHP:
array('icq, ashow, days, change', 'numerical', 'integerOnly'=>true),
на
PHP:
array('ashow, days, change', 'numerical', 'integerOnly'=>true),
array('icq', 'length', 'max'=>64),
Изменить
PHP:
'icq' => 'ICQ',
на
PHP:
'icq' => 'Вконтакте',
После
PHP:
        return parent::afterValidate();
    }
добавить
PHP:
public function getNameicq(){
    $title = Yii::app()->cache->get('ICQ_' . $this->icq);
    if ($title !== false) {
        return $title;
    }
    $url = 'http://' . parse_url($this->icq, PHP_URL_HOST);
    $title = '';
    $page = @file_get_contents('http://'.$this->icq);
    if ($page && preg_match("#<title>([^<]+)</title>#iu", $page, $out)) {
        $title = $out[1];
        mb_convert_encoding($title, 'utf8');
        Yii::app()->cache->set('ICQ_' . $this->icq, $title, 21600);
    }
    return $title;
}
2. В файле /protected/views/amxadmins/index.php сделать следующие изменения:
Изменить
PHP:
,
        array(
            'name' => 'icq',
            'type' => 'raw',
            'value' => '$data->icq != 0 ? CHtml::encode($data->icq) : "<i>Не задан</i>"',
            'htmlOptions' => array(
                'style' => 'width: 100px;'
            )
на
PHP:
,
        array(
            'name' => 'icq',
            'type' => 'raw',
            'value' => '$data->icq ? CHtml::image("/images/vk.ico"). " ". CHtml::link($data->nameicq, "http://".$data->icq, array("target"=>"_blank")): "". CHtml::image("/images/vk.ico"). "<i>  Не указано</i>"',
            'htmlOptions' => array(
                'style' => 'width: 170px;'
            )
/images/vk.ico - это путь к вашей иконки
3. В файле protected/controllers/AmxadminsController.php сделать следующие изменения:
Изменить
PHP:
<tr>";
      $info .= "<td><b>Контакты</b></td>";
      $info .= "<td>" . ($model->icq ? CHtml::image("//icq-rus.com/icq/3/".$model->icq.".gif"). " " . $model->icq : 'Не задан') . "</td>";
      $info .= "</tr>
на
PHP:
<tr>";
        $info .= "<td><b>Вконтакте</b></td>";
        $info .= "<td>" . ($model->icq ? CHtml::image("/images/vk.ico"). " " . CHtml::link($model->nameicq,"http://".$model->icq, array("target"=>"_blank")) : CHtml::image("/images/vk.ico"). '  Не указано') . "</td>";
        $info .= "</tr>
/images/vk.ico - это путь к вашей иконки
В базе в таблице amxadmins для колонки "icq" выставить тип "varchar" с длинной "64"
При добавлении админа ссылку на вк указивать без https://
Вот что получилось 5.png
Даю сразу готовые файлы .. просто заменить... файлик с названием only vk
1. В файле protected/models/amxadmins.php сделать следующие изменения:
После
PHP:
* @property integer $icq Вконтакте
добавить
PHP:
* @property integer $skype Skype
Изменить
PHP:
array('icq', 'length', 'max'=>64),
на
PHP:
array('icq, skype', 'length', 'max'=>64),
Изменить
PHP:
array('id, username, password, access, flags, steamid, nickname, icq, ashow, created, expired, days', 'safe',  'on'=>'search'),
на
PHP:
array('id, username, password, access, flags, steamid, nickname, icq, ashow, created, expired, days, skype', 'safe',  'on'=>'search'),
После
PHP:
'icq' => 'Вконтакте',
добавить
PHP:
'skype' => 'Skype',
После
PHP:
$criteria->compare('icq',$this->icq);
добавить
PHP:
$criteria->compare('skype',$this->skype);
2. В файле /protected/views/amxadmins/index.php сделать следующие изменения:
После
PHP:
,
        array(
            'name' => 'icq',
            'type' => 'raw',
            'value' => '$data->icq ? CHtml::image("/images/vk.ico"). " ". CHtml::link($data->nameicq, "http://".$data->icq, array("target"=>"_blank")): "". CHtml::image("/images/vk.ico"). "<i>  Не указано</i>"',
            'htmlOptions' => array(
                'style' => 'width: 170px;'
            )
        )
добавить
PHP:
,
        array(
            'name' => 'skype',
            'type' => 'raw',
            'value' => '$data->skype ? CHtml::image("/images/skype.ico"). " " . CHtml::link($data->skype, "skype:".$data->skype."?call") : "". CHtml::image("/images/skype.ico"). "<i>  Не указано</i>"',
            'htmlOptions' => array(
                'style' => 'width: 170px;'
            )
        )
/images/vk.ico - это путь к вашей иконки
/images/skype.ico - это путь к вашей иконки
3. В файле protected/controllers/AmxadminsController.php сделать следующие изменения:
После
PHP:
<tr>";
        $info .= "<td><b>Вконтакте</b></td>";
        $info .= "<td>" . ($model->icq ? CHtml::image("/images/vk.ico"). " " . CHtml::link($model->nameicq,"http://".$model->icq, array("target"=>"_blank")) : CHtml::image("/images/vk.ico"). '  Не указано') . "</td>";
        $info .= "</tr>
добавить
PHP:
<tr>";
        $info .= "<td><b>Skype</b></td>";
        $info .= "<td>" . ($model->skype ? CHtml::image("/images/skype.ico"). " " . CHtml::link($model->skype, "skype:".$model->skype."?call") : CHtml::image("/images/skype.ico"). '  Не указано') . "</td>";
        $info .= "</tr>
/images/vk.ico - это путь к вашей иконки
/images/skype.ico - это путь к вашей иконки
4. В файле /protected/views/amxadmins/_form.php сделать следующие изменения:
После
PHP:
echo $form->textFieldRow($model,'icq',array('class' => 'span6',));
добавить
PHP:
echo $form->textFieldRow($model,'skype',array('class' => 'span6',));
5. В файле /protected/views/amxadmins/view.php сделать следующие изменения:
После
PHP:
'icq',
добавить
PHP:
'skype',
В базе в таблице amxadmins нужно создать колонку "skype" тип "varchar" с длинной "64"
Можно создать автоматически если отправить SQL запрос: заходим в БД через phpmyadmin нажимаем вкладку SQL вставляем код и отправляем запрос
SQL:
ALTER TABLE `amx_amxadmins` ADD `skype` VARCHAR(64) NULL;
При добавлении админа ссылку на вк указивать без https://
Вот что получилось 6.png
Даю сразу готовые файлы .. просто заменить... файлик с названием vk+skype
1. В файле protected/models/amxadmins.php сделать следующие изменения:
После
PHP:
* @property integer $icq Вконтакте
добавить
PHP:
* @property integer $privilege Привилегия
Изменить
PHP:
array('icq', 'length', 'max'=>64),
на
PHP:
array('icq, privilege', 'length', 'max'=>64),
Изменить
PHP:
array('id, username, password, access, flags, steamid, nickname, icq, ashow, created, expired, days', 'safe',  'on'=>'search'),
на
PHP:
array('id, username, password, access, flags, steamid, nickname, icq, ashow, created, expired, days, privilege', 'safe',  'on'=>'search'),
После
PHP:
'icq' => 'Вконтакте',
добавить
PHP:
'privilege' => 'Привилегия',
После
PHP:
$criteria->compare('icq',$this->icq);
добавить
PHP:
$criteria->compare('privilege',$this->privilege);
2. В файле /protected/views/amxadmins/index.php сделать следующие изменения:
После
PHP:
,
        array(
            'name' => 'icq',
            'type' => 'raw',
            'value' => '$data->icq ? CHtml::image("/images/vk.ico"). " ". CHtml::link($data->nameicq, "http://".$data->icq, array("target"=>"_blank")): "". CHtml::image("/images/vk.ico"). "<i>  Не указано</i>"',
            'htmlOptions' => array(
                'style' => 'width: 170px;'
            )
        )
добавить
PHP:
,
        array(
            'name' => 'privilege',
            'type' => 'raw',
            'value' => '$data->privilege',
            'htmlOptions' => array(
                'style' => 'width: 170px;'
            )
        )
/images/vk.ico - это путь к вашей иконки
3. В файле protected/controllers/AmxadminsController.php сделать следующие изменения:
После
PHP:
<tr>";
        $info .= "<td><b>Вконтакте</b></td>";
        $info .= "<td>" . ($model->icq ? CHtml::image("/images/vk.ico"). " " . CHtml::link($model->nameicq,"http://".$model->icq, array("target"=>"_blank")) : CHtml::image("/images/vk.ico"). '  Не указано') . "</td>";
        $info .= "</tr>
добавить
PHP:
<tr>";
        $info .= "<td><b>Привилегия</b></td>";
        $info .= "<td>".$model->privilege."</td>";
        $info .= "</tr>
/images/vk.ico - это путь к вашей иконки
4. В файле /protected/views/amxadmins/_form.php сделать следующие изменения:
После
PHP:
echo $form->textFieldRow($model,'icq',array('class' => 'span6',));
добавить
PHP:
echo $form->textFieldRow($model,'privilege',array('class' => 'span6',));
5. В файле /protected/views/amxadmins/view.php сделать следующие изменения:
После
PHP:
'icq',
добавить
PHP:
'privilege',
В базе в таблице amxadmins нужно создать колонку "privilege" тип "varchar" с длинной "64"
Можно создать автоматически если отправить SQL запрос: заходим в БД через phpmyadmin нажимаем вкладку SQL вставляем код и отправляем запрос
SQL:
ALTER TABLE `amx_amxadmins` ADD `privilege` VARCHAR(64) NULL;
При добавлении админа ссылку на вк указивать без https://
Вот что получилось 7.png
Даю сразу готовые файлы .. просто заменить... файлик с названием vk+privilege
1. В файле protected/models/amxadmins.php сделать следующие изменения:
После
PHP:
* @property integer $skype Skype
добавить
PHP:
* @property integer $privilege Привилегия
Изменить
PHP:
array('icq, skype', 'length', 'max'=>64),
на
PHP:
array('icq, skype, privilege', 'length', 'max'=>64),
Изменить
PHP:
array('id, username, password, access, flags, steamid, nickname, icq, ashow, created, expired, days, skype', 'safe',  'on'=>'search'),
на
PHP:
array('id, username, password, access, flags, steamid, nickname, icq, ashow, created, expired, days, skype, privilege', 'safe',  'on'=>'search'),
После
PHP:
'skype' => 'Skype',
добавить
PHP:
'privilege' => 'Привилегия',
После
PHP:
$criteria->compare('skype',$this->skype);
добавить
PHP:
$criteria->compare('privilege',$this->privilege);
2. В файле /protected/views/amxadmins/index.php сделать следующие изменения:
После
PHP:
,
        array(
            'name' => 'skype',
            'type' => 'raw',
            'value' => '$data->skype ? CHtml::image("/images/skype.ico"). " " . CHtml::link($data->skype, "skype:".$data->skype."?call") : "". CHtml::image("/images/skype.ico"). "<i>  Не указано</i>"',
            'htmlOptions' => array(
                'style' => 'width: 170px;'
            )
        )
добавить
PHP:
,
        array(
            'name' => 'privilege',
            'type' => 'raw',
            'value' => '$data->privilege',
            'htmlOptions' => array(
                'style' => 'width: 170px;'
            )
        )
/images/skype.ico - это путь к вашей иконки
3. В файле protected/controllers/AmxadminsController.php сделать следующие изменения:
После
PHP:
<tr>";
        $info .= "<td><b>Skype</b></td>";
        $info .= "<td>" . ($model->skype ? CHtml::image("/images/skype.ico"). " " . CHtml::link($model->skype, "skype:".$model->skype."?call") : CHtml::image("/images/skype.ico"). '  Не указано') . "</td>";
        $info .= "</tr>
добавить
PHP:
<tr>";
        $info .= "<td><b>Привилегия</b></td>";
        $info .= "<td>".$model->privilege."</td>";
        $info .= "</tr>
/images/skype.ico - это путь к вашей иконки
4. В файле /protected/views/amxadmins/_form.php сделать следующие изменения:
После
PHP:
echo $form->textFieldRow($model,'skype',array('class' => 'span6',));
добавить
PHP:
echo $form->textFieldRow($model,'privilege',array('class' => 'span6',));
5. В файле /protected/views/amxadmins/view.php сделать следующие изменения:
После
PHP:
'skype',
добавить
PHP:
'privilege',
В базе в таблице amxadmins нужно создать колонку "privilege" тип "varchar" с длинной "64"
Можно создать автоматически если отправить SQL запрос: заходим в БД через phpmyadmin нажимаем вкладку SQL вставляем код и отправляем запрос
SQL:
ALTER TABLE `amx_amxadmins` ADD `privilege` VARCHAR(64) NULL;
При добавлении админа ссылку на вк указивать без https://
Вот что получилось8.png
Даю сразу готовые файлы .. просто заменить... файлик с названием vk+skype+privilege

Копирования статьи на другие ресурсы без согласия автора запрещено!!!
 

Download all Attachments

Последнее редактирование:
Сообщения
148
Реакции
48
Помог
4 раз(а)
Добрый вечер! Форумчане, подскажите как на странице АДМИНЫ сортируется вообще список? Можно ли сделать сортировку по нику, по дате окончания услуги и если это не тяжело по дате добавления услуги? На данный момент стоит VK+Privilege. Может быть добавить колонку вначале с порядковым номером, а при добавлении админа задавать ему порядковый номер (но думаю это слишком геморно получается)
 
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
Stas, сделать можно, через правку исходников
  1. В файле protected\controllers\AmxadminsController.php
    на 256 строке ищем
    PHP:
    $admins=new CActiveDataProvider(Amxadmins::model()->cache(300, $dependecy), array(
                'criteria'=>array(
                    // Выводим только тех, кого разрешено ваыводить
                    'condition' => "`ashow`=1 AND (`expired` = 0 OR `expired` > UNIX_TIMESTAMP())",
                    'order' => '`expired` DESC, `nickname` ASC',
                ),
                'pagination' => array(
                    'pageSize' => Yii::app()->config->bans_per_page,
    
                )
            ));
    заменяем на
    PHP:
    $admins=new CActiveDataProvider(Amxadmins::model()->cache(300, $dependecy), array(
                'criteria'=>array(
                    // Выводим только тех, кого разрешено выводить
                    'condition' => "`ashow`=1 AND (`expired` = 0 OR `expired` > UNIX_TIMESTAMP())"
                ),
                'pagination' => array(
                    'pageSize' => Yii::app()->config->bans_per_page,
                ),
                'sort' => array(
                    'attributes'=>array('nickname','expired', 'created'))
    
            ));
  2. В файле protected\views\amxadmins\index.php
    после 41 строка меняем
    PHP:
    'enableSorting' => false,
    на
    PHP:
    'enableSorting' => array('nickname', 'expired', 'created'),
 
Последнее редактирование:
Сообщения
148
Реакции
48
Помог
4 раз(а)
В файле protected\views\admin\index.php
после 41 строка меняем
PHP:
'enableSorting' => false,
на
PHP:
'enableSorting' => array('nickname', 'expired', 'created'),
Я думаю тут ошибка. Не в файле protected\views\admin\index.php а в protected\views\amxadmins\index.php.

Сортировка производится сейчас только по дате добавления. А как сделать еще по колонкам: Ник админа и по истечению срока?
 
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
Stas, должны появиться стрелочки сортировки на 3 столбцах.
 
Сообщения
25
Реакции
41
Помог
1 раз(а)
"Рассмотрим замену icq на VK:"

Как сделать чтоб только админы видели графу с ВК в списке админов сервера?
 
Сообщения
281
Реакции
196
Помог
1 раз(а)
А еще бы работающий магазин бы к этой системе цены бы небыло ей.
 
Сообщения
25
Реакции
41
Помог
1 раз(а)
Stas, сделать можно, через правку исходников
  1. В файле protected\controllers\AmxadminsController.php
    на 256 строке ищем
    PHP:
    $admins=new CActiveDataProvider(Amxadmins::model()->cache(300, $dependecy), array(
                'criteria'=>array(
                    // Выводим только тех, кого разрешено ваыводить
                    'condition' => "`ashow`=1 AND (`expired` = 0 OR `expired` > UNIX_TIMESTAMP())",
                    'order' => '`expired` DESC, `nickname` ASC',
                ),
                'pagination' => array(
                    'pageSize' => Yii::app()->config->bans_per_page,
    
                )
            ));
    заменяем на
    PHP:
    $admins=new CActiveDataProvider(Amxadmins::model()->cache(300, $dependecy), array(
                'criteria'=>array(
                    // Выводим только тех, кого разрешено выводить
                    'condition' => "`ashow`=1 AND (`expired` = 0 OR `expired` > UNIX_TIMESTAMP())"
                ),
                'pagination' => array(
                    'pageSize' => Yii::app()->config->bans_per_page,
                ),
                'sort' => array(
                    'attributes'=>array('nickname','expired', 'created'))
    
            ));
  2. В файле protected\views\amxadmins\index.php
    после 41 строка меняем
    PHP:
    'enableSorting' => false,
    на
    PHP:
    'enableSorting' => array('nickname', 'expired', 'created'),
Как сделать чтоб дефолтно сортировало по кол-ву флагов? Если в condition дописать ORDER BY `access`, то выводит как надо, но при попытке нажать на сортировку, пишет ошибку:
 

Вложения

Последнее редактирование:
Сообщения
83
Реакции
63
Помог
1 раз(а)
SEREGA, мне кажеться что в етом шаблоне надо файли заменить в папке с темой.... если не поможет.. пиши в личку.. помогу!
 
Сообщения
957
Реакции
1,185
Помог
52 раз(а)
Rias, 'order' => '`expired` DESC, `nickname` ASC'
 
Сообщения
26
Реакции
4
Vesuvius, да это в шаблоне дело! а как сделать, чтоб на этом шаблоне работало?
 
Сообщения
83
Реакции
63
Помог
1 раз(а)
SEREGA, закунуть в ту папку что и ета тема.. В таком порядке.. Хотя уменя роботает и без етого... А на стандартной работает?
 
Сообщения
83
Реакции
63
Помог
1 раз(а)
SEREGA, пиши в личку... помогу
явно проблема в шаблоне... в него надо закидать ети файлики
 
Сообщения
10
Реакции
-2
Предупреждения
100
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
как сделать что бы значок отображался ? сылка есть, но значка нету , в папку закинул его !
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу