parent
74dddf9e9d
commit
91b02118b0
@ -0,0 +1,178 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
use Chamilo\CoreBundle\Entity\ExtraFieldSavedSearch; |
||||
|
||||
$cidReset = true; |
||||
|
||||
require_once 'main/inc/global.inc.php'; |
||||
|
||||
api_block_anonymous_users(); |
||||
|
||||
if (!api_is_drh()) { |
||||
api_not_allowed(true); |
||||
} |
||||
|
||||
$userId = api_get_user_id(); |
||||
$userInfo = api_get_user_info(); |
||||
|
||||
$userToLoad = isset($_GET['user_id']) ? $_GET['user_id'] : ''; |
||||
$action = isset($_GET['action']) ? $_GET['action'] : ''; |
||||
|
||||
switch ($action) { |
||||
case 'subscribe_user': |
||||
$sessionId = isset($_GET['session_id']) ? $_GET['session_id'] : ''; |
||||
SessionManager::suscribe_users_to_session($sessionId, [$userToLoad], SESSION_VISIBLE_READ_ONLY, false); |
||||
Display::addFlash(Display::return_message(get_lang('UserAdded'))); |
||||
|
||||
/**header("Location: ".api_get_self().'?user_id='.$userToLoad); |
||||
break;*/ |
||||
} |
||||
|
||||
$em = Database::getManager(); |
||||
|
||||
$formSearch = new FormValidator('load', 'get', api_get_self()); |
||||
$formSearch->addHeader(get_lang('LoadDiagnosis')); |
||||
if (!empty($userInfo)) { |
||||
if ($userInfo['status'] == DRH) { |
||||
$users = UserManager::get_users_followed_by_drh($userId); |
||||
if (!empty($users)) { |
||||
$userList = []; |
||||
foreach ($users as $user) { |
||||
$userList[$user['user_id']] = api_get_person_name($user['firstname'], $user['lastname']); |
||||
} |
||||
$formSearch->addSelect('user_id', get_lang('User'), $userList); |
||||
} |
||||
} |
||||
} |
||||
|
||||
$formSearch->addButtonSearch(get_lang('Search'), 'save'); |
||||
|
||||
$form = new FormValidator('search', 'post', api_get_self().'&user_id='.$userToLoad); |
||||
$form->addHeader(get_lang('Diagnosis')); |
||||
$form->addHidden('user_id', $userToLoad); |
||||
|
||||
/** @var ExtraFieldSavedSearch $saved */ |
||||
$search = [ |
||||
'user' => $userToLoad |
||||
]; |
||||
|
||||
$items = $em->getRepository('ChamiloCoreBundle:ExtraFieldSavedSearch')->findBy($search); |
||||
if (empty($items)) { |
||||
Display::addFlash(Display::return_message('NoData')); |
||||
} |
||||
|
||||
$extraField = new ExtraField('session'); |
||||
$extraFieldValue = new ExtraFieldValue('session'); |
||||
$extra = $extraField->addElements($form, '', [], true); |
||||
|
||||
$form->addButtonSearch(get_lang('Save'), 'save'); |
||||
|
||||
$result = SessionManager::getGridColumns('simple'); |
||||
$columns = $result['columns']; |
||||
$column_model = $result['column_model']; |
||||
$defaults = []; |
||||
|
||||
if (!empty($items)) { |
||||
/** @var ExtraFieldSavedSearch $item */ |
||||
foreach ($items as $item) { |
||||
$variable = 'extra_'.$item->getField()->getVariable(); |
||||
$defaults[$variable] = $item->getValue(); |
||||
} |
||||
} |
||||
|
||||
$form->setDefaults($defaults); |
||||
|
||||
$view = $form->returnForm(); |
||||
$filterToSend = ''; |
||||
|
||||
if ($form->validate()) { |
||||
$params = $form->getSubmitValues(); |
||||
// Search |
||||
$filters = []; |
||||
// Parse params. |
||||
foreach ($params as $key => $value) { |
||||
if (substr($key, 0, 6) != 'extra_' && substr($key, 0, 7) != '_extra_') { |
||||
continue; |
||||
} |
||||
if (!empty($value)) { |
||||
$filters[$key] = $value; |
||||
} |
||||
} |
||||
|
||||
$filterToSend = []; |
||||
if (!empty($filters)) { |
||||
$filterToSend = ['groupOp' => 'AND']; |
||||
if ($filters) { |
||||
$count = 1; |
||||
$countExtraField = 1; |
||||
foreach ($result['column_model'] as $column) { |
||||
if ($count > 5) { |
||||
if (isset($filters[$column['name']])) { |
||||
$defaultValues['jqg'.$countExtraField] = $filters[$column['name']]; |
||||
$filterToSend['rules'][] = ['field' => $column['name'], 'op' => 'cn', 'data' => $filters[$column['name']]]; |
||||
} |
||||
$countExtraField++; |
||||
} |
||||
$count++; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
$htmlHeadXtra[] =' |
||||
<script> |
||||
|
||||
$(function() { |
||||
'.$extra['jquery_ready_content'].' |
||||
}); |
||||
</script>'; |
||||
|
||||
|
||||
if (!empty($filterToSend)) { |
||||
$filterToSend = json_encode($filterToSend); |
||||
$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_sessions&_search=true&_force_search=true&rows=20&page=1&sidx=&sord=asc&filters2='.$filterToSend; |
||||
} else { |
||||
$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_sessions&_search=true&_force_search=true&rows=20&page=1&sidx=&sord=asc'; |
||||
} |
||||
|
||||
// Autowidth |
||||
$extra_params['autowidth'] = 'true'; |
||||
|
||||
// height auto |
||||
$extra_params['height'] = 'auto'; |
||||
$extra_params['postData'] = array( |
||||
'filters' => array( |
||||
"groupOp" => "AND", |
||||
"rules" => $result['rules'] |
||||
) |
||||
); |
||||
|
||||
$action_links = 'function action_formatter(cellvalue, options, rowObject) { |
||||
return \'<a href="'.api_get_self().'?action=subscribe_user&user_id='.$userToLoad.'&session_id=\'+options.rowId+\'">'.Display::return_icon('add.png', get_lang('Subscribe'),'',ICON_SIZE_SMALL).'</a>'. |
||||
'\'; |
||||
}'; |
||||
|
||||
$htmlHeadXtra[] = api_get_jqgrid_js(); |
||||
|
||||
$griJs = Display::grid_js('sessions', $url, $columns, $column_model, $extra_params, array(), $action_links, true); |
||||
|
||||
$grid = '<div id="session-table" class="table-responsive">'; |
||||
$grid .= Display::grid_html('sessions'); |
||||
$grid .= '</div>'; |
||||
|
||||
$tpl = new Template(get_lang('Diagnosis')); |
||||
|
||||
if (empty($items)) { |
||||
$view = ''; |
||||
$grid = ''; |
||||
$griJs = ''; |
||||
} |
||||
$tpl->assign('form', $view); |
||||
$tpl->assign('form_search', $formSearch->returnForm()); |
||||
$tpl->assign('grid', $grid); |
||||
$tpl->assign('grid_js', $griJs); |
||||
|
||||
$content = $tpl->fetch('default/user_portal/search_extra_field.tpl'); |
||||
$tpl->assign('content', $content); |
||||
$tpl->display_one_col_template(); |
||||
@ -0,0 +1,12 @@ |
||||
{{ form_search }} |
||||
|
||||
{{ form }} |
||||
|
||||
<script> |
||||
$(function() { |
||||
{{ grid_js }} |
||||
}); |
||||
</script> |
||||
|
||||
{{ grid }} |
||||
|
||||
@ -0,0 +1,209 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
use Chamilo\CoreBundle\Entity\ExtraFieldSavedSearch; |
||||
$cidReset = true; |
||||
|
||||
require_once 'main/inc/global.inc.php'; |
||||
|
||||
api_block_anonymous_users(); |
||||
|
||||
$userId = api_get_user_id(); |
||||
$userInfo = api_get_user_info(); |
||||
|
||||
$em = Database::getManager(); |
||||
|
||||
$form = new FormValidator('search', 'post', api_get_self()); |
||||
$form->addHeader(get_lang('Diagnosis')); |
||||
|
||||
/** @var ExtraFieldSavedSearch $saved */ |
||||
$search = [ |
||||
'user' => $userId |
||||
]; |
||||
|
||||
$items = $em->getRepository('ChamiloCoreBundle:ExtraFieldSavedSearch')->findBy($search); |
||||
|
||||
$extraField = new ExtraField('session'); |
||||
$extraFieldValue = new ExtraFieldValue('session'); |
||||
$extra = $extraField->addElements($form, '', [], true); |
||||
|
||||
$form->addButtonSave(get_lang('Save'), 'save'); |
||||
$form->addButtonSearch(get_lang('Search'), 'search'); |
||||
|
||||
$result = SessionManager::getGridColumns('simple'); |
||||
$columns = $result['columns']; |
||||
$column_model = $result['column_model']; |
||||
|
||||
|
||||
$defaults = []; |
||||
|
||||
if (!empty($items)) { |
||||
/** @var ExtraFieldSavedSearch $item */ |
||||
foreach ($items as $item) { |
||||
$variable = 'extra_'.$item->getField()->getVariable(); |
||||
$defaults[$variable] = $item->getValue(); |
||||
} |
||||
} |
||||
|
||||
$form->setDefaults($defaults); |
||||
|
||||
$view = $form->returnForm(); |
||||
$filterToSend = ''; |
||||
|
||||
if ($form->validate()) { |
||||
$params = $form->getSubmitValues(); |
||||
if (isset($params['save'])) { |
||||
// save |
||||
foreach ($params as $key => $value) { |
||||
$found = strpos($key, '__persist__'); |
||||
|
||||
if ($found === false) { |
||||
continue; |
||||
} |
||||
|
||||
$tempKey = str_replace('__persist__', '', $key); |
||||
if (!isset($params[$tempKey])) { |
||||
$params[$tempKey] = array(); |
||||
} |
||||
} |
||||
|
||||
// Parse params. |
||||
foreach ($params as $key => $value) { |
||||
if (substr($key, 0, 6) != 'extra_' && substr($key, 0, 7) != '_extra_') { |
||||
continue; |
||||
} |
||||
|
||||
$field_variable = substr($key, 6); |
||||
$extraFieldInfo = $extraFieldValue |
||||
->getExtraField() |
||||
->get_handler_field_info_by_field_variable($field_variable); |
||||
|
||||
if (!$extraFieldInfo) { |
||||
continue; |
||||
} |
||||
|
||||
$user = $em->getRepository('ChamiloUserBundle:User')->find($userId); |
||||
$extraFieldObj = $em->getRepository('ChamiloCoreBundle:ExtraField')->find($extraFieldInfo['id']); |
||||
|
||||
$search = [ |
||||
'field' => $extraFieldObj, |
||||
'user' => $user |
||||
]; |
||||
|
||||
/** @var ExtraFieldSavedSearch $saved */ |
||||
$saved = $em->getRepository('ChamiloCoreBundle:ExtraFieldSavedSearch')->findOneBy($search); |
||||
|
||||
if ($saved) { |
||||
$saved |
||||
->setField($extraFieldObj) |
||||
->setUser($user) |
||||
->setValue($value) |
||||
; |
||||
$em->merge($saved); |
||||
|
||||
} else { |
||||
$saved = new ExtraFieldSavedSearch(); |
||||
$saved |
||||
->setField($extraFieldObj) |
||||
->setUser($user) |
||||
->setValue($value) |
||||
; |
||||
$em->persist($saved); |
||||
} |
||||
$em->flush(); |
||||
} |
||||
|
||||
Display::addFlash(Display::return_message(get_lang('Saved'))); |
||||
header("Location: ".api_get_self()); |
||||
exit; |
||||
} else { |
||||
// Search |
||||
$filters = []; |
||||
// Parse params. |
||||
foreach ($params as $key => $value) { |
||||
if (substr($key, 0, 6) != 'extra_' && substr($key, 0, 7) != '_extra_') { |
||||
continue; |
||||
} |
||||
if (!empty($value)) { |
||||
$filters[$key] = $value; |
||||
} |
||||
} |
||||
|
||||
$filterToSend = []; |
||||
if (!empty($filters)) { |
||||
$filterToSend = ['groupOp' => 'AND']; |
||||
if ($filters) { |
||||
$count = 1; |
||||
$countExtraField = 1; |
||||
foreach ($result['column_model'] as $column) { |
||||
if ($count > 5) { |
||||
if (isset($filters[$column['name']])) { |
||||
$defaultValues['jqg'.$countExtraField] = $filters[$column['name']]; |
||||
$filterToSend['rules'][] = ['field' => $column['name'], 'op' => 'cn', 'data' => $filters[$column['name']]]; |
||||
} |
||||
$countExtraField++; |
||||
} |
||||
$count++; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
$htmlHeadXtra[] =' |
||||
<script> |
||||
|
||||
$(function() { |
||||
'.$extra['jquery_ready_content'].' |
||||
}); |
||||
</script>'; |
||||
|
||||
|
||||
if (!empty($filterToSend)) { |
||||
$filterToSend = json_encode($filterToSend); |
||||
$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_sessions&_search=true&_force_search=true&rows=20&page=1&sidx=&sord=asc&filters2='.$filterToSend; |
||||
} else { |
||||
$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_sessions&_search=true&_force_search=true&rows=20&page=1&sidx=&sord=asc'; |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Autowidth |
||||
$extra_params['autowidth'] = 'true'; |
||||
|
||||
// height auto |
||||
$extra_params['height'] = 'auto'; |
||||
$extra_params['postData'] = array( |
||||
'filters' => array( |
||||
"groupOp" => "AND", |
||||
"rules" => $result['rules'], |
||||
/*array( |
||||
array( "field" => "display_start_date", "op" => "gt", "data" => ""), |
||||
array( "field" => "display_end_date", "op" => "gt", "data" => "") |
||||
),*/ |
||||
//'groups' => $groups |
||||
) |
||||
); |
||||
|
||||
$action_links = 'function action_formatter(cellvalue, options, rowObject) { |
||||
return \'<a href="session_edit.php?page=resume_session.php&id=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'. |
||||
'\'; |
||||
}'; |
||||
|
||||
$htmlHeadXtra[] = api_get_jqgrid_js(); |
||||
|
||||
$griJs = Display::grid_js('sessions', $url, $columns, $column_model, $extra_params, array(), $action_links, true); |
||||
|
||||
$grid = '<div id="session-table" class="table-responsive">'; |
||||
$grid .= Display::grid_html('sessions'); |
||||
$grid .= '</div>'; |
||||
|
||||
$tpl = new Template(get_lang('Diagnosis')); |
||||
$tpl->assign('form', $view); |
||||
$tpl->assign('grid', $grid); |
||||
$tpl->assign('grid_js', $griJs); |
||||
$content = $tpl->fetch('default/user_portal/search_extra_field.tpl'); |
||||
$tpl->assign('content', $content); |
||||
$tpl->display_one_col_template(); |
||||
@ -0,0 +1,166 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
namespace Chamilo\CoreBundle\Entity; |
||||
|
||||
use Chamilo\UserBundle\Entity\User; |
||||
use Doctrine\ORM\Mapping as ORM; |
||||
use Gedmo\Mapping\Annotation as Gedmo; |
||||
|
||||
/** |
||||
* Class ExtraField |
||||
* |
||||
* @ORM\Entity |
||||
* @ORM\Table(name="extra_field_saved_search") |
||||
* |
||||
*/ |
||||
class ExtraFieldSavedSearch |
||||
{ |
||||
/** |
||||
* @var integer |
||||
* |
||||
* @ORM\Column(name="id", type="integer", nullable=false) |
||||
* @ORM\Id |
||||
* @ORM\GeneratedValue |
||||
*/ |
||||
protected $id; |
||||
|
||||
/** |
||||
* @var ExtraField |
||||
* @ORM\ManyToOne(targetEntity="Chamilo\CoreBundle\Entity\ExtraField") |
||||
* @ORM\JoinColumn(name="field_id", referencedColumnName="id") |
||||
*/ |
||||
protected $field; |
||||
|
||||
/** |
||||
* @var User |
||||
* |
||||
* @ORM\ManyToOne(targetEntity="Chamilo\UserBundle\Entity\User") |
||||
* @ORM\JoinColumn(name="user_id", referencedColumnName="id") |
||||
*/ |
||||
protected $user; |
||||
|
||||
/** |
||||
* @var string |
||||
* |
||||
* @ORM\Column(name="value", type="array", nullable=true, unique=false) |
||||
*/ |
||||
protected $value; |
||||
|
||||
/** |
||||
* @var \DateTime $createdAt |
||||
* |
||||
* @Gedmo\Timestampable(on="create") |
||||
* @ORM\Column(name="created_at", type="datetime") |
||||
*/ |
||||
protected $createdAt; |
||||
|
||||
/** |
||||
* @var \DateTime $updatedAt |
||||
* |
||||
* @Gedmo\Timestampable(on="update") |
||||
* @ORM\Column(name="updated_at", type="datetime") |
||||
*/ |
||||
protected $updatedAt; |
||||
|
||||
/** |
||||
* Get id |
||||
* |
||||
* @return integer |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
|
||||
/** |
||||
* @return ExtraField |
||||
*/ |
||||
public function getField() |
||||
{ |
||||
return $this->field; |
||||
} |
||||
|
||||
/** |
||||
* @param ExtraField $field |
||||
* @return ExtraFieldSavedSearch |
||||
*/ |
||||
public function setField($field) |
||||
{ |
||||
$this->field = $field; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return User |
||||
*/ |
||||
public function getUser() |
||||
{ |
||||
return $this->user; |
||||
} |
||||
|
||||
/** |
||||
* @param User $user |
||||
* @return ExtraFieldSavedSearch |
||||
*/ |
||||
public function setUser($user) |
||||
{ |
||||
$this->user = $user; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
*/ |
||||
public function getValue() |
||||
{ |
||||
return $this->value; |
||||
} |
||||
|
||||
/** |
||||
* @param string $value |
||||
* @return ExtraFieldSavedSearch |
||||
*/ |
||||
public function setValue($value) |
||||
{ |
||||
$this->value = $value; |
||||
|
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return \DateTime |
||||
*/ |
||||
public function getCreatedAt() |
||||
{ |
||||
return $this->createdAt; |
||||
} |
||||
|
||||
/** |
||||
* @param \DateTime $createdAt |
||||
* @return ExtraFieldSavedSearch |
||||
*/ |
||||
public function setCreatedAt($createdAt) |
||||
{ |
||||
$this->createdAt = $createdAt; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return \DateTime |
||||
*/ |
||||
public function getUpdatedAt() |
||||
{ |
||||
return $this->updatedAt; |
||||
} |
||||
|
||||
/** |
||||
* @param \DateTime $updatedAt |
||||
* @return ExtraFieldSavedSearch |
||||
*/ |
||||
public function setUpdatedAt($updatedAt) |
||||
{ |
||||
$this->updatedAt = $updatedAt; |
||||
return $this; |
||||
} |
||||
} |
||||
Loading…
Reference in new issue