0 Пользователей и 1 Гость просматривают эту тему.
  • 0 Ответов
  • 1712 Просмотров
*

ghenja

  • Новичок
  • 2
  • 0 / 0
Joomla 1.5 + Joomleague 1.6
Делал недавно людям возможность импорта игроков и персонала с предыдущих турниров, так что бы сохранялись позиции, номера, фото... вообщем все.
Если позиций не создано или каких то нет, которые есть в проекте из которого импортируются игроки и персонал, они автоматически создаются.

Когда в турнире просматриваешь состав или персонал какой-либо команды, вверху появляется поле, где можно выбрать турнир с которого произвести импорт игроков или персонал, и кнопка импортировать.

Затронуто 4 файла по игрокам и аналогично 4 файла по персоналу.
Игроки:

1. \administrator\components\com_joomleague\controllers\teamplayer.php
написана и добавлена функция
Код
	function import()
{
$db =& JFactory::getDBO();
$option='com_joomleague';
$mainframe =& JFactory::getApplication();
$project_id=$mainframe->getUserState($option.'project');
$p_team_id=$mainframe->getUserState($option.'project_team_id',0);
//$team_id = $mainframe->getUserState( $option . 'team' );
$newproject_id=JRequest::getVar('newp');
$qptnew="SELECT pn.id FROM `#__joomleague_project_team` AS pp LEFT JOIN `#__joomleague_project_team` AS pn ON pn.project_id='".$newproject_id."' AND pn.team_id=pp.team_id WHERE pp.id='".$p_team_id."' LIMIT 1";
$db->setQuery($qptnew);
$ptnew=$db->loadResult();
//echo $ptnew;
$query = "INSERT IGNORE INTO #__joomleague_project_position SELECT '','".$project_id."',pp.position_id,pp.modified,pp.modified_by FROM #__joomleague_project_position AS pp LEFT JOIN #__joomleague_position AS p ON p.id=pp.position_id WHERE pp.project_id='".$newproject_id."' AND p.persontype='1'";
$db->setQuery($query);
$db->query();
$q1="SELECT pp.id AS ppid,pn.id AS pnid, p.name AS name FROM `#__joomleague_project_position` AS pp LEFT JOIN #__joomleague_position AS p ON p.id=pp.position_id LEFT JOIN `#__joomleague_project_position` AS pn ON pn.position_id=pp.position_id AND pn.project_id='".$project_id."' WHERE pp.project_id='".$newproject_id."' AND p.persontype='1'";
$db->setQuery($q1);
//echo $q1.'<br>';
//$this->_db->setQuery($q1);
$result=$db->loadObjectList();
foreach ($result as $position){
$q2="INSERT IGNORE INTO `#__joomleague_team_player` (`projectteam_id`,`person_id`,`project_position_id`,`active`,`jerseynumber`,`notes`,`picture`,`extended`,`injury`,`injury_date`,`injury_end`,`injury_detail`,`injury_date_start`,`injury_date_end`,`suspension`,`suspension_date`,`suspension_end`,`suspension_detail`,`susp_date_start`,`susp_date_end`,`away`,`away_date`,`away_end`,`away_detail`,`away_date_start`,`away_date_end`,`published`,`ordering`,`checked_out`,`checked_out_time`,`modified`,`modified_by`)
SELECT '".$p_team_id."',`person_id`,'".$position->pnid."',`active`,`jerseynumber`,`notes`,`picture`,`extended`,`injury`,`injury_date`,`injury_end`,`injury_detail`,`injury_date_start`,`injury_date_end`,`suspension`,`suspension_date`,`suspension_end`,`suspension_detail`,`susp_date_start`,`susp_date_end`,`away`,`away_date`,`away_end`,`away_detail`,`away_date_start`,`away_date_end`,`published`,`ordering`,`checked_out`,`checked_out_time`,`modified`,`modified_by`
FROM `#__joomleague_team_player` WHERE projectteam_id='".$ptnew."' AND project_position_id='".$position->ppid."'";
$db->setQuery($q2);
$db->query();
//echo $q2.'<br>';
if (mysql_affected_rows()>0) echo $position->name." импортированы успешно! - ";
}
$this->display();
}

2. \administrator\components\com_joomleague\views\teamplayers\view.html.php
в функцию function _displayDefault( $tpl ) добавлена передача в шаблон переменных
Код
$this->assignRef( 'project_id',			$project_id );
$this->assignRef( 'plist', $this->get('ProjectsBySportsType') );

3. \administrator\components\com_joomleague\views\teamplayers\tmpl\default.php
в шаблон добавлено то самое поле
Код
<fieldset class="adminform">
<legend>
Импортировать состав
</legend>
<form name="import1" action="<?php echo JURI::root(); ?>administrator/index.php?option=com_joomleague&controller=teamplayer&view=teamplayers&task=import" method="post">
<input type="hidden" name="projectteam_id" id="projectteam_id" value="<?php echo $this->teamws->id; ?>" />


<table>
<tr>
<td>выбирите турнир: <?php
//build the HTML select list for projects
$projects[]=JHTML::_('select.option','0','выбирите турнир','id','name');

//check if the season filter is set and select the needed projects
$res = $this->plist;
$projects=array_merge($projects,$res);

echo JHTML::_('select.genericList',
$projects,
'newp',
'class="inputbox" style="width:100%"',
'id',
'name');
//echo $lists['projects']; ?></td>
</tr>
<tr>
<td><button type="submit" onclick="this.form.submit(); " value="import">Импортировать</button></td>

<input type="hidden" name="search_mode" value="<?php echo $this->lists['search_mode'];?>" id="search_mode" />
<input type="hidden" name="boxchecked" value="0" />
<input type="hidden" name="filter_order" value="<?php echo $this->lists['order']; ?>" />
<input type="hidden" name="filter_order_Dir" value="" />
</tr>
</table>

<?php echo JHTML::_( 'form.token' ); ?>
</form>
</fieldset>

4. \administrator\components\com_joomleague\models\teamplayers.php
в модель добавлена функция - ! sports_type_id - это id вида спорта, ставьте свое значение
   
Код
function getProjectsBySportsType()
{
$query = "SELECT id, name FROM #__joomleague_project as p
WHERE sports_type_id=1
AND published=1 ";
if ($season) {
$query .= ' AND season_id = '.(int) $season;
}
$query .= " ORDER BY p.ordering, p.name ASC ";
$this->_db->setQuery($query);
if (!$result = $this->_db->loadObjectList())
{
$this->setError($this->_db->getErrorMsg());
return false;
}
return $result;
}

Персонал:

1. \administrator\components\com_joomleague\controllers\teamstaff.php
написана и добавлена функция
Код
	function import()
{
$db =& JFactory::getDBO();
$option='com_joomleague';
$mainframe =& JFactory::getApplication();
$project_id=$mainframe->getUserState($option.'project');
$p_team_id=$mainframe->getUserState($option.'project_team_id',0);
//$team_id = $mainframe->getUserState( $option . 'team' );
$newproject_id=JRequest::getVar('newp');
$qptnew="SELECT pn.id FROM `#__joomleague_project_team` AS pp LEFT JOIN `#__joomleague_project_team` AS pn ON pn.project_id='".$newproject_id."' AND pn.team_id=pp.team_id WHERE pp.id='".$p_team_id."' LIMIT 1";
$db->setQuery($qptnew);
$ptnew=$db->loadResult();
//echo $ptnew;
$query = "INSERT IGNORE INTO #__joomleague_project_position SELECT '','".$project_id."',pp.position_id,pp.modified,pp.modified_by FROM #__joomleague_project_position AS pp LEFT JOIN #__joomleague_position AS p ON p.id=pp.position_id WHERE pp.project_id='".$newproject_id."' AND p.persontype>1";
$db->setQuery($query);
$db->query();
$q1="SELECT pp.id AS ppid,pn.id AS pnid, p.name AS name FROM `#__joomleague_project_position` AS pp LEFT JOIN #__joomleague_position AS p ON p.id=pp.position_id LEFT JOIN `#__joomleague_project_position` AS pn ON pn.position_id=pp.position_id AND pn.project_id='".$project_id."' WHERE pp.project_id='".$newproject_id."' AND p.persontype>1";
$db->setQuery($q1);
//echo $q1.'<br>';
//$this->_db->setQuery($q1);
$result=$db->loadObjectList();
foreach ($result as $position){
$q2="INSERT IGNORE INTO `#__joomleague_team_staff` (`projectteam_id`,`person_id`,`project_position_id`,`active`,`notes`,`injury`,`injury_date`,`injury_end`,`injury_detail`,`injury_date_start`,`injury_date_end`,`suspension`,`suspension_date`,`suspension_end`,`suspension_detail`,`susp_date_start`,`susp_date_end`,`away`,`away_date`,`away_end`,`away_detail`,`away_date_start`,`away_date_end`,`picture`,`extended`,`published`,`ordering`,`checked_out`,`checked_out_time`,`modified`,`modified_by`)
SELECT '".$p_team_id."',`person_id`,'".$position->pnid."',`active`,`notes`,`injury`,`injury_date`,`injury_end`,`injury_detail`,`injury_date_start`,`injury_date_end`,`suspension`,`suspension_date`,`suspension_end`,`suspension_detail`,`susp_date_start`,`susp_date_end`,`away`,`away_date`,`away_end`,`away_detail`,`away_date_start`,`away_date_end`,`picture`,`extended`,`published`,`ordering`,`checked_out`,`checked_out_time`,`modified`,`modified_by`
FROM `#__joomleague_team_staff` WHERE projectteam_id='".$ptnew."' AND project_position_id='".$position->ppid."'";
$db->setQuery($q2);
$db->query();
//echo $q2.'<br>';
if (mysql_affected_rows()>0) echo $position->name." импортированы успешно! - ";
}
$this->display();
}

2. \administrator\components\com_joomleague\views\teamstaff\view.html.php
в функцию function _displayDefault( $tpl ) добавлена передача в шаблон переменных
Код
$this->assignRef( 'project_id',			$project_id );
$this->assignRef( 'plist', $this->get('ProjectsBySportsType') );

3. \administrator\components\com_joomleague\views\teamstaff\tmpl\default.php
в шаблон добавлено то самое поле
Код
<fieldset class="adminform">
<legend>
Импортировать состав
</legend>
<form name="import1" action="<?php echo JURI::root(); ?>administrator/index.php?option=com_joomleague&controller=teamstaff&view=teamstaffs&task=import" method="post">
<input type="hidden" name="projectteam_id" id="projectteam_id" value="<?php echo $this->teamws->id; ?>" />


<table>
<tr>
<td>выбирите турнир: <?php
//build the HTML select list for projects
$projects[]=JHTML::_('select.option','0','выбирите турнир','id','name');

//check if the season filter is set and select the needed projects
$res = $this->plist;
$projects=array_merge($projects,$res);

echo JHTML::_('select.genericList',
$projects,
'newp',
'class="inputbox" style="width:100%"',
'id',
'name');
//echo $lists['projects']; ?></td>
</tr>
<tr>
<td><button type="submit" onclick="this.form.submit(); " value="import">Импортировать</button></td>

<input type="hidden" name="search_mode" value="<?php echo $this->lists['search_mode'];?>" id="search_mode" />
<input type="hidden" name="boxchecked" value="0" />
<input type="hidden" name="filter_order" value="<?php echo $this->lists['order']; ?>" />
<input type="hidden" name="filter_order_Dir" value="" />
</tr>
</table>

<?php echo JHTML::_( 'form.token' ); ?>
</form>
</fieldset>

4. \administrator\components\com_joomleague\models\teamplayers.php
в модель добавлена функция - ! sports_type_id - это id вида спорта, ставьте свое значение
   
Код
function getProjectsBySportsType()
{
$query = "SELECT id, name FROM #__joomleague_project as p
WHERE sports_type_id=1
AND published=1 ";
if ($season) {
$query .= ' AND season_id = '.(int) $season;
}
$query .= " ORDER BY p.ordering, p.name ASC ";
$this->_db->setQuery($query);
if (!$result = $this->_db->loadObjectList())
{
$this->setError($this->_db->getErrorMsg());
return false;
}
return $result;
}

Все работает!

P.S. Если кому-то сложно добавить вышеуказанное (хотя вроде подробно все написал), то ообращайтесь помогу за вознаграждение :-)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Копирование игроков из другого турнира

Автор sopila

Ответов: 5
Просмотров: 2962
Последний ответ 10.03.2019, 01:31:20
от DragonbyKuzya
Неверно считаются матчи в истории игр и в персональной статистике игроков

Автор tornario

Ответов: 6
Просмотров: 2124
Последний ответ 26.11.2015, 12:25:35
от M0sk0W
Joomleague 2 - поиск игроков

Автор born

Ответов: 0
Просмотров: 1790
Последний ответ 11.06.2015, 17:53:29
от born
Изменить вид таблицы игроков

Автор drongo666

Ответов: 8
Просмотров: 1978
Последний ответ 18.05.2015, 15:34:35
от drongo666
Сортировка игроков по результативности

Автор apugachev86

Ответов: 0
Просмотров: 1722
Последний ответ 28.01.2015, 20:57:48
от apugachev86