2013-04-09 23:05:50 +02:00
< ? php
2017-11-24 10:00:46 +01:00
/* Copyright ( C ) 2013 - 2017 Laurent Destailleur < eldy @ users . sourceforge . net >
2014-03-05 11:22:01 +01:00
* Copyright ( C ) 2014 Marcos García < marcosgdf @ gmail . com >
2013-04-09 23:05:50 +02:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*/
2013-06-05 16:24:32 +02:00
/**
* \file htdocs / opensurvey / list . php
* \ingroup opensurvey
* \brief Page to list surveys
2013-04-09 23:05:50 +02:00
*/
require_once ( '../main.inc.php' );
require_once ( DOL_DOCUMENT_ROOT . " /core/lib/admin.lib.php " );
require_once ( DOL_DOCUMENT_ROOT . " /core/lib/files.lib.php " );
2016-05-07 17:12:31 +02:00
require_once ( DOL_DOCUMENT_ROOT . " /opensurvey/class/opensurveysondage.class.php " );
2013-04-09 23:05:50 +02:00
2014-01-05 06:18:26 +01:00
// Security check
if ( ! $user -> rights -> opensurvey -> read ) accessforbidden ();
2018-04-07 16:17:40 +02:00
$action = GETPOST ( 'action' , 'aZ09' ) ? GETPOST ( 'action' , 'aZ09' ) : 'view' ; // The action 'add', 'create', 'edit', 'update', 'view', ...
$massaction = GETPOST ( 'massaction' , 'alpha' ); // The bulk action (combo box choice into lists)
$show_files = GETPOST ( 'show_files' , 'int' ); // Show files area generated by bulk actions ?
$confirm = GETPOST ( 'confirm' , 'alpha' ); // Result of a confirmation
$cancel = GETPOST ( 'cancel' , 'alpha' ); // We click on a Cancel button
$toselect = GETPOST ( 'toselect' , 'array' ); // Array of ids of elements selected into a list
$contextpage = GETPOST ( 'contextpage' , 'aZ' ) ? GETPOST ( 'contextpage' , 'aZ' ) : 'myobjectlist' ; // To manage different context of search
$backtopage = GETPOST ( 'backtopage' , 'alpha' ); // Go back to a dedicated page
$optioncss = GETPOST ( 'optioncss' , 'aZ' ); // Option for the css output (always '' except when 'print')
2014-09-13 19:04:25 +02:00
$id = GETPOST ( 'id' , 'alpha' );
2014-01-03 22:13:15 +01:00
$numsondage = $id ;
2017-03-30 16:00:53 +02:00
$search_ref = GETPOST ( 'search_ref' , 'alpha' );
2017-11-24 10:00:46 +01:00
$search_title = GETPOST ( 'search_title' , 'alpha' );
$search_status = GETPOST ( 'search_status' , 'alpha' );
2014-03-05 11:22:01 +01:00
2018-04-07 16:17:40 +02:00
// Load variable for pagination
$limit = GETPOST ( 'limit' , 'int' ) ? GETPOST ( 'limit' , 'int' ) : $conf -> liste_limit ;
$sortfield = GETPOST ( 'sortfield' , 'alpha' );
$sortorder = GETPOST ( 'sortorder' , 'alpha' );
$page = GETPOST ( 'page' , 'int' );
2017-06-06 10:53:53 +02:00
if ( empty ( $page ) || $page == - 1 ) { $page = 0 ; } // If $page is not defined, or '' or -1
2015-12-16 19:38:40 +01:00
$offset = $limit * $page ;
2014-03-05 11:22:01 +01:00
$pageprev = $page - 1 ;
$pagenext = $page + 1 ;
2015-02-16 18:02:25 +01:00
if ( ! $sortfield ) $sortfield = " p.date_fin " ;
if ( ! $sortorder ) $sortorder = " DESC " ;
2013-04-09 23:05:50 +02:00
2018-05-26 17:57:30 +02:00
// Load translation files required by the page
2014-03-05 11:22:01 +01:00
$langs -> load ( " opensurvey " );
2018-04-07 16:17:40 +02:00
2014-03-05 11:22:01 +01:00
/*
* Actions
*/
2017-11-24 10:00:46 +01:00
if ( GETPOST ( 'button_removefilter_x' , 'alpha' ) || GETPOST ( 'button_removefilter.x' , 'alpha' ) || GETPOST ( 'button_removefilter' , 'alpha' )) // All tests are required to be compatible with all browsers
2014-03-05 11:22:01 +01:00
{
2017-11-24 10:00:46 +01:00
$search_status = '' ;
$search_title = '' ;
2017-03-30 16:00:53 +02:00
$search_ref = '' ;
2014-03-05 11:22:01 +01:00
}
2013-04-09 23:05:50 +02:00
/*
* View
*/
$form = new Form ( $db );
2016-05-07 17:12:31 +02:00
$opensurvey_static = new Opensurveysondage ( $db );
2013-04-09 23:05:50 +02:00
2014-03-05 11:22:01 +01:00
$now = dol_now ();
2017-11-24 10:00:46 +01:00
llxHeader ( '' , $langs -> trans ( " OpenSurveyArea " ));
2013-04-09 23:05:50 +02:00
2014-03-05 11:22:01 +01:00
$param = '' ;
2014-03-05 11:37:32 +01:00
$fieldtosortuser = empty ( $conf -> global -> MAIN_FIRSTNAME_NAME_POSITION ) ? 'firstname' : 'lastname' ;
2014-03-05 11:22:01 +01:00
2018-04-07 16:17:40 +02:00
2018-04-03 15:28:12 +02:00
$newcardbutton = '' ;
2018-04-18 03:26:15 +02:00
if ( ! $user -> rights -> opensurvey -> creer )
2018-04-03 15:28:12 +02:00
{
2018-06-13 22:57:41 +02:00
$newcardbutton = '<a class="butActionNew" href="' . DOL_URL_ROOT . '/opensurvey/wizard/index.php"><span class="valignmiddle">' . $langs -> trans ( 'NewSurvey' ) . '</span>' ;
2018-04-18 03:26:15 +02:00
$newcardbutton .= '<span class="fa fa-plus-circle valignmiddle"></span>' ;
$newcardbutton .= '</a>' ;
2018-04-15 17:37:49 +02:00
}
else
{
2018-04-18 03:26:15 +02:00
$newcardbutton = '<a class="butActionNewRefused" href="#">' . $langs -> trans ( 'NewSurvey' );
$newcardbutton .= '<span class="fa fa-plus-circle valignmiddle"></span>' ;
$newcardbutton .= '</a>' ;
2018-04-03 15:28:12 +02:00
}
2018-04-07 16:17:40 +02:00
$sql = " SELECT p.id_sondage, p.fk_user_creat, p.format, p.date_fin, p.status, p.titre, p.nom_admin, " ;
$sql .= " u.login, u.firstname, u.lastname " ;
$sql .= " FROM " . MAIN_DB_PREFIX . " opensurvey_sondage as p " ;
$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . " user u ON u.rowid = p.fk_user_creat " ;
$sql .= " WHERE p.entity IN ( " . getEntity ( 'survey' ) . " ) " ;
if ( $search_status != '-1' && $search_status != '' ) $sql .= natural_search ( " p.status " , $search_status , 2 );
if ( $search_expired == 'expired' ) $sql .= " AND p.date_fin < ' " . $db -> idate ( $now ) . " ' " ;
if ( $search_expired == 'opened' ) $sql .= " AND p.date_fin >= ' " . $db -> idate ( $now ) . " ' " ;
if ( $search_ref ) $sql .= natural_search ( " p.id_sondage " , $search_ref );
if ( $search_title ) $sql .= natural_search ( " p.titre " , $search_title );
$sql .= $db -> order ( $sortfield , $sortorder );
// Count total nb of records
$nbtotalofrecords = '' ;
if ( empty ( $conf -> global -> MAIN_DISABLE_FULL_SCANLIST ))
{
$result = $db -> query ( $sql );
$nbtotalofrecords = $db -> num_rows ( $result );
2018-04-24 11:37:57 +02:00
if (( $page * $limit ) > $nbtotalofrecords ) // if total resultset is smaller then paging size (filtering), goto and load page 0
{
$page = 0 ;
$offset = 0 ;
}
2018-04-07 16:17:40 +02:00
}
$sql .= $db -> plimit ( $limit + 1 , $offset );
$resql = $db -> query ( $sql );
if ( ! $resql ) dol_print_error ( $db );
$num = $db -> num_rows ( $resql );
2013-04-09 23:05:50 +02:00
2014-03-05 11:22:01 +01:00
// List of surveys into database
print '<form action="' . $_SERVER [ " PHP_SELF " ] . '" method="post" name="formulaire">' ;
print '<input type="hidden" name="token" value="' . $_SESSION [ 'newtoken' ] . '">' ;
print '<input type="hidden" name="action" value="list">' ;
print '<input type="hidden" name="sortfield" value="' . $sortfield . '">' ;
print '<input type="hidden" name="sortorder" value="' . $sortorder . '">' ;
2017-05-21 02:43:51 +02:00
print '<input type="hidden" name="page" value="' . $page . '">' ;
2013-04-09 23:05:50 +02:00
2018-04-07 16:17:40 +02:00
print_barre_liste ( $langs -> trans ( " OpenSurveyArea " ), $page , $_SERVER [ " PHP_SELF " ], $param , $sortfield , $sortorder , $massactionsbutton , $num , $nbtotalofrecords , 'title_generic.png' , 0 , $newcardbutton , '' , $limit );
2016-11-27 13:49:46 +01:00
$moreforfilter = '' ;
2018-04-07 16:17:40 +02:00
$parameters = array ();
$reshook = $hookmanager -> executeHooks ( 'printFieldPreListTitle' , $parameters , $object ); // Note that $action and $object may have been modified by hook
if ( empty ( $reshook )) $moreforfilter .= $hookmanager -> resPrint ;
else $moreforfilter = $hookmanager -> resPrint ;
if ( ! empty ( $moreforfilter ))
{
print '<div class="liste_titre liste_titre_bydiv centpercent">' ;
print $moreforfilter ;
print '</div>' ;
}
$varpage = empty ( $contextpage ) ? $_SERVER [ " PHP_SELF " ] : $contextpage ;
$selectedfields = $form -> multiSelectArrayWithCheckbox ( 'selectedfields' , $arrayfields , $varpage ); // This also change content of $arrayfields
$selectedfields .= ( count ( $arrayofmassactions ) ? $form -> showCheckAddButtons ( 'checkforselect' , 1 ) : '' );
2016-11-27 13:49:46 +01:00
print '<div class="div-table-responsive">' ;
print '<table class="tagtable liste' . ( $moreforfilter ? " listwithfilterbefore " : " " ) . '">' . " \n " ;
2018-04-07 16:17:40 +02:00
// Fields title search
// --------------------------------------------------------------------
2017-03-30 16:00:53 +02:00
print '<tr class="liste_titre_filter">' ;
print '<td class="liste_titre"><input type="text" class="maxwidth100" name="search_ref" value="' . dol_escape_htmltag ( $search_ref ) . '"></td>' ;
2017-11-24 10:00:46 +01:00
print '<td class="liste_titre"><input type="text" class="maxwidth100onsmartphone" name="search_title" value="' . dol_escape_htmltag ( $search_title ) . '"></td>' ;
2016-12-11 16:11:42 +01:00
print '<td class="liste_titre"></td>' ;
print '<td class="liste_titre"></td>' ;
print '<td class="liste_titre"></td>' ;
print '<td class="liste_titre"></td>' ;
2017-11-24 10:00:46 +01:00
$arraystatus = array ( '-1' => ' ' , '0' => $langs -> trans ( " Draft " ), '1' => $langs -> trans ( " Opened " ), '2' => $langs -> trans ( " Closed " ));
print '<td class="liste_titre" align="center">' . $form -> selectarray ( 'search_status' , $arraystatus , $search_status ) . '</td>' ;
2014-03-05 11:22:01 +01:00
print '<td class="liste_titre" align="right">' ;
2018-04-07 16:17:40 +02:00
$searchpicto = $form -> showFilterButtons ();
2017-05-14 21:06:33 +02:00
print $searchpicto ;
2014-03-05 11:22:01 +01:00
print '</td>' ;
print '</tr>' . " \n " ;
2018-04-07 16:17:40 +02:00
// Fields title label
// --------------------------------------------------------------------
2017-03-30 16:00:53 +02:00
print '<tr class="liste_titre">' ;
2017-08-02 13:31:53 +02:00
print_liste_field_titre ( " Ref " , $_SERVER [ " PHP_SELF " ], " p.id_sondage " , $param , " " , " " , $sortfield , $sortorder );
print_liste_field_titre ( " Title " , $_SERVER [ " PHP_SELF " ], " p.titre " , $param , " " , " " , $sortfield , $sortorder );
2017-11-24 10:00:46 +01:00
print_liste_field_titre ( " Type " , $_SERVER [ " PHP_SELF " ], " p.format " , $param , " " , " " , $sortfield , $sortorder );
2017-08-02 13:31:53 +02:00
print_liste_field_titre ( " Author " , $_SERVER [ " PHP_SELF " ], " u. " . $fieldtosortuser , $param , " " , " " , $sortfield , $sortorder );
print_liste_field_titre ( " NbOfVoters " , $_SERVER [ " PHP_SELF " ], " " , $param , " " , 'align="right"' , $sortfield , $sortorder );
print_liste_field_titre ( " ExpireDate " , $_SERVER [ " PHP_SELF " ], " p.date_fin " , $param , " " , 'align="center"' , $sortfield , $sortorder );
print_liste_field_titre ( " Status " , $_SERVER [ " PHP_SELF " ], " p.status " , $param , " " , 'align="center"' , $sortfield , $sortorder );
2017-03-30 16:00:53 +02:00
print_liste_field_titre ( '' );
print '</tr>' . " \n " ;
2013-04-09 23:05:50 +02:00
2018-04-07 16:17:40 +02:00
// Loop on record
// --------------------------------------------------------------------
$i = 0 ;
$totalarray = array ();
while ( $i < min ( $num , $limit ))
2013-04-09 23:05:50 +02:00
{
2018-04-07 16:17:40 +02:00
$obj = $db -> fetch_object ( $resql );
if ( empty ( $obj )) break ; // Should not happen
2018-04-15 17:37:49 +02:00
2013-04-09 23:05:50 +02:00
$sql2 = 'select COUNT(*) as nb from ' . MAIN_DB_PREFIX . " opensurvey_user_studs where id_sondage=' " . $db -> escape ( $obj -> id_sondage ) . " ' " ;
$resql2 = $db -> query ( $sql2 );
if ( $resql2 )
{
$obj2 = $db -> fetch_object ( $resql2 );
$nbuser = $obj2 -> nb ;
}
else dol_print_error ( $db );
2016-05-07 17:12:31 +02:00
$opensurvey_static -> id = $obj -> id_sondage ;
2017-11-12 14:21:34 +01:00
$opensurvey_static -> ref = $obj -> id_sondage ;
$opensurvey_static -> title = $obj -> titre ;
2016-05-07 17:12:31 +02:00
$opensurvey_static -> status = $obj -> status ;
2017-11-24 10:00:46 +01:00
$opensurvey_static -> date_fin = $db -> jdate ( $obj -> date_fin );
2017-07-04 13:05:02 +02:00
2018-04-07 16:17:40 +02:00
// Show here line of result
print '<tr class="oddeven">' ;
2017-11-12 14:21:34 +01:00
// Ref
2013-04-09 23:05:50 +02:00
print '<td>' ;
2017-11-12 14:21:34 +01:00
print $opensurvey_static -> getNomUrl ( 1 );
print '</td>' ;
// Title
2017-11-24 10:00:46 +01:00
print '<td>' . dol_htmlentities ( $obj -> titre ) . '</td>' ;
// Type
print '<td>' ;
2014-01-05 20:48:20 +01:00
$type = ( $obj -> format == 'A' ) ? 'classic' : 'date' ;
2013-04-09 23:05:50 +02:00
print img_picto ( '' , dol_buildpath ( '/opensurvey/img/' . ( $type == 'classic' ? 'chart-32.png' : 'calendar-32.png' ), 1 ), 'width="16"' , 1 );
print ' ' . $langs -> trans ( $type == 'classic' ? " TypeClassic " : " TypeDate " );
2014-01-06 05:08:42 +01:00
print '</td><td>' ;
2014-03-05 11:22:01 +01:00
2014-01-06 05:08:42 +01:00
// Author
if ( $obj -> fk_user_creat ) {
$userstatic = new User ( $db );
$userstatic -> id = $obj -> fk_user_creat ;
2014-03-05 11:37:32 +01:00
$userstatic -> firstname = $obj -> firstname ;
$userstatic -> lastname = $obj -> lastname ;
$userstatic -> login = $userstatic -> getFullName ( $langs , 0 , - 1 , 48 );
2014-03-05 11:22:01 +01:00
2014-01-06 05:08:42 +01:00
print $userstatic -> getLoginUrl ( 1 );
} else {
print dol_htmlentities ( $obj -> nom_admin );
}
2014-03-05 11:22:01 +01:00
2014-01-06 05:08:42 +01:00
print '</td>' ;
2013-04-09 23:05:50 +02:00
2017-11-24 10:00:46 +01:00
// Nb of voters
2017-03-30 16:00:53 +02:00
print '<td align="right">' . $nbuser . '</td>' . " \n " ;
2017-07-04 13:05:02 +02:00
2013-04-09 23:05:50 +02:00
print '<td align="center">' . dol_print_date ( $db -> jdate ( $obj -> date_fin ), 'day' );
2017-11-24 10:06:42 +01:00
if ( $db -> jdate ( $obj -> date_fin ) < $now && $obj -> status == Opensurveysondage :: STATUS_VALIDATED ) { print img_warning ( $langs -> trans ( " Expired " )); }
2013-04-09 23:05:50 +02:00
print '</td>' ;
2016-05-07 17:12:31 +02:00
print '<td align="center">' . $opensurvey_static -> getLibStatut ( 5 ) . '</td>' . " \n " ;
2017-07-04 13:05:02 +02:00
2015-06-30 01:34:17 +02:00
print '<td align="center"></td>' . " \n " ;
2013-04-09 23:05:50 +02:00
print '</tr>' . " \n " ;
$i ++ ;
}
2017-07-04 13:05:02 +02:00
// If no record found
if ( $num == 0 )
{
$colspan = 8 ;
//foreach($arrayfields as $key => $val) { if (! empty($val['checked'])) $colspan++; }
print '<tr><td colspan="' . $colspan . '" class="opacitymedium">' . $langs -> trans ( " NoRecordFound " ) . '</td></tr>' ;
}
2013-04-09 23:05:50 +02:00
print '</table>' . " \n " ;
2016-11-27 13:49:46 +01:00
print '</div>' ;
2014-03-05 11:22:01 +01:00
print '</form>' ;
2013-04-09 23:05:50 +02:00
llxFooter ();
$db -> close ();