dolibarr 19.0.3
index.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3 * Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
4 * Copyright (C) 2004-2020 Laurent Destailleur <eldy@users.sourceforge.net>
5 * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
6 * Copyright (C) 2019 Nicolas ZABOURI <info@inovea-conseil.com>
7 * Copyright (C) 2021-2023 Frédéric France <frederic.france@netlgic.fr>
8 * Copyright (C) 2021-2023 Waël Almoman <info@almoman.com>
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 3 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 */
23
30// Load Dolibarr environment
31require '../main.inc.php';
32require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php';
33require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent_type.class.php';
34require_once DOL_DOCUMENT_ROOT.'/adherents/class/subscription.class.php';
35require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
36
37
38// Load translation files required by the page
39$langs->loadLangs(array("companies", "members"));
40
41
42$hookmanager = new HookManager($db);
43
44// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array
45$hookmanager->initHooks(array('membersindex'));
46
47
48// Security check
49$result = restrictedArea($user, 'adherent');
50
51
52/*
53 * Actions
54 */
55
56$userid = GETPOST('userid', 'int');
57if (GETPOST('addbox')) {
58 // Add box (when submit is done from a form when ajax disabled)
59 require_once DOL_DOCUMENT_ROOT.'/core/class/infobox.class.php';
60 $zone = GETPOST('areacode', 'int');
61 $boxorder = GETPOST('boxorder', 'aZ09');
62 $boxorder .= GETPOST('boxcombo', 'aZ09');
63 $result = InfoBox::saveboxorder($db, $zone, $boxorder, $userid);
64 if ($result > 0) {
65 setEventMessages($langs->trans("BoxAdded"), null);
66 }
67}
68
69
70/*
71 * View
72 */
73
74$form = new Form($db);
75
76// Load $resultboxes (selectboxlist + boxactivated + boxlista + boxlistb)
77$resultboxes = FormOther::getBoxesArea($user, "2");
78
79llxHeader('', $langs->trans("Members"), 'EN:Module_Foundations|FR:Module_Adh&eacute;rents|ES:M&oacute;dulo_Miembros|DE:Modul_Mitglieder');
80
81$staticmember = new Adherent($db);
82$statictype = new AdherentType($db);
83$subscriptionstatic = new Subscription($db);
84
85print load_fiche_titre($langs->trans("MembersArea"), $resultboxes['selectboxlist'], 'members');
86
87/*
88 * Statistics
89 */
90
91$boxgraph = '';
92if ($conf->use_javascript_ajax) {
93 $year = date('Y');
94 $numberyears = getDolGlobalInt("MAIN_NB_OF_YEAR_IN_MEMBERSHIP_WIDGET_GRAPH");
95
96 $boxgraph .='<div class="div-table-responsive-no-min">';
97 $boxgraph .='<table class="noborder nohover centpercent">';
98 $boxgraph .='<tr class="liste_titre"><th colspan="2">'.$langs->trans("Statistics").($numberyears ? ' ('.($year-$numberyears).' - '.$year.')' : '').'</th></tr>';
99 $boxgraph .='<tr><td class="center" colspan="2">';
100
101 require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherentstats.class.php';
102 $stats = new AdherentStats($db, 0, $userid);
103
104 // Show array
105 $sumMembers = $stats->countMembersByTypeAndStatus($numberyears);
106 if (is_array($sumMembers) && !empty($sumMembers)) {
107 $total = $sumMembers['total']['members_draft'] + $sumMembers['total']['members_pending'] + $sumMembers['total']['members_uptodate'] + $sumMembers['total']['members_expired'] + $sumMembers['total']['members_excluded'] + $sumMembers['total']['members_resiliated'];
108 } else {
109 $total = 0;
110 }
111 foreach (array('members_draft', 'members_pending', 'members_uptodate', 'members_expired', 'members_excluded', 'members_resiliated') as $val) {
112 if (empty($sumMembers['total'][$val])) {
113 $sumMembers['total'][$val] = 0;
114 }
115 }
116
117 $dataseries = array();
118 $dataseries[] = array($langs->transnoentitiesnoconv("MembersStatusToValid"), $sumMembers['total']['members_draft']); // Draft, not yet validated
119 $dataseries[] = array($langs->transnoentitiesnoconv("WaitingSubscription"), $sumMembers['total']['members_pending']);
120 $dataseries[] = array($langs->transnoentitiesnoconv("UpToDate"), $sumMembers['total']['members_uptodate']);
121 $dataseries[] = array($langs->transnoentitiesnoconv("OutOfDate"), $sumMembers['total']['members_expired']);
122 $dataseries[] = array($langs->transnoentitiesnoconv("MembersStatusExcluded"), $sumMembers['total']['members_excluded']);
123 $dataseries[] = array($langs->transnoentitiesnoconv("MembersStatusResiliated"), $sumMembers['total']['members_resiliated']);
124
125 include DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/theme_vars.inc.php';
126
127 include_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php';
128 $dolgraph = new DolGraph();
129 $dolgraph->SetData($dataseries);
130 $dolgraph->SetDataColor(array('-'.$badgeStatus0, $badgeStatus1, $badgeStatus4, $badgeStatus8, '-'.$badgeStatus8, $badgeStatus6));
131 $dolgraph->setShowLegend(2);
132 $dolgraph->setShowPercent(1);
133 $dolgraph->SetType(array('pie'));
134 $dolgraph->setHeight('200');
135 $dolgraph->draw('idgraphstatus');
136 $boxgraph .=$dolgraph->show($total ? 0 : 1);
137
138 $boxgraph .= '</td></tr>';
139 $boxgraph .= '<tr class="liste_total"><td>'.$langs->trans("Total").'</td><td class="right">';
140 $boxgraph .= $total;
141 $boxgraph .= '</td></tr>';
142 $boxgraph .= '</table>';
143 $boxgraph .= '</div>';
144 $boxgraph .= '<br>';
145}
146
147// boxes
148print '<div class="clearboth"></div>';
149print '<div class="fichecenter fichecenterbis">';
150
151print '<div class="twocolumns">';
152
153print '<div class="firstcolumn fichehalfleft boxhalfleft" id="boxhalfleft">';
154
155print $boxgraph;
156
157print $resultboxes['boxlista'];
158
159print '</div>'."\n";
160
161print '<div class="secondcolumn fichehalfright boxhalfright" id="boxhalfright">';
162
163print $resultboxes['boxlistb'];
164
165print '</div>'."\n";
166
167print '</div>';
168print '</div>';
169
170$parameters = array('user' => $user);
171$reshook = $hookmanager->executeHooks('dashboardMembers', $parameters, $object); // Note that $action and $object may have been modified by hook
172
173// End of page
174llxFooter();
175$db->close();
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Definition wrapper.php:55
llxFooter()
Empty footer.
Definition wrapper.php:69
Class to manage members of a foundation.
Class to manage statistics of members.
Class to manage members type.
Class to build graphs.
Class to manage generation of HTML components Only common components must be here.
static getBoxesArea($user, $areacode)
Get array with HTML tabs with boxes of a particular area including personalized choices of user.
Class to manage hooks.
static saveboxorder($dbs, $zone, $boxorder, $userid=0)
Save order of boxes for area and user.
Class to manage subscriptions of foundation members.
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.