Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
dolibarr
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container registry
Model registry
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Software_Artifact_Infrastructure_Repository
dolibarr
Commits
d05c8d32
Commit
d05c8d32
authored
8 years ago
by
Xebax
Browse files
Options
Downloads
Patches
Plain Diff
Add Subscriptions to the REST API.
parent
cd11ccbe
No related branches found
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
htdocs/adherents/class/api_subscriptions.class.php
+243
-0
243 additions, 0 deletions
htdocs/adherents/class/api_subscriptions.class.php
htdocs/adherents/class/cotisation.class.php
+3
-1
3 additions, 1 deletion
htdocs/adherents/class/cotisation.class.php
with
246 additions
and
1 deletion
htdocs/adherents/class/api_subscriptions.class.php
0 → 100644
+
243
−
0
View file @
d05c8d32
<?php
/* Copyright (C) 2016 Xebax Christy <xebax@wanadoo.fr>
*
* 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/>.
*/
use
Luracast\Restler\RestException
;
require_once
DOL_DOCUMENT_ROOT
.
'/adherents/class/cotisation.class.php'
;
/**
* API class for subscriptions
*
* @access protected
* @class DolibarrApiAccess {@requires user,external}
*/
class
Subscriptions
extends
DolibarrApi
{
/**
* @var array $FIELDS Mandatory fields, checked when create and update object
*/
static
$FIELDS
=
array
(
'fk_adherent'
,
'dateh'
,
'datef'
,
'amount'
);
/**
* Constructor
*/
function
__construct
()
{
global
$db
,
$conf
;
$this
->
db
=
$db
;
}
/**
* Get properties of a subscription object
*
* Return an array with subscription informations
*
* @param int $id ID of subscription
* @return array|mixed data without useless information
*
* @throws RestException
*/
function
get
(
$id
)
{
if
(
!
DolibarrApiAccess
::
$user
->
rights
->
adherent
->
cotisation
->
lire
)
{
throw
new
RestException
(
401
);
}
$subscription
=
new
Cotisation
(
$this
->
db
);
$result
=
$subscription
->
fetch
(
$id
);
if
(
!
$result
)
{
throw
new
RestException
(
404
,
'subscription not found'
);
}
return
$this
->
_cleanObjectDatas
(
$subscription
);
}
/**
* List subscriptions
*
* Get a list of subscriptions
*
* @param string $sortfield Sort field
* @param string $sortorder Sort order
* @param int $limit Limit for list
* @param int $page Page number
* @return array Array of subscription objects
*
* @throws RestException
*/
function
index
(
$sortfield
=
"dateadh"
,
$sortorder
=
'ASC'
,
$limit
=
0
,
$page
=
0
)
{
global
$db
,
$conf
;
$obj_ret
=
array
();
if
(
!
DolibarrApiAccess
::
$user
->
rights
->
adherent
->
cotisation
->
lire
)
{
throw
new
RestException
(
401
);
}
$sql
=
"SELECT rowid"
;
$sql
.
=
" FROM "
.
MAIN_DB_PREFIX
.
"cotisation"
;
$nbtotalofrecords
=
0
;
if
(
empty
(
$conf
->
global
->
MAIN_DISABLE_FULL_SCANLIST
))
{
$result
=
$db
->
query
(
$sql
);
$nbtotalofrecords
=
$db
->
num_rows
(
$result
);
}
$sql
.
=
$db
->
order
(
$sortfield
,
$sortorder
);
if
(
$limit
)
{
if
(
$page
<
0
)
{
$page
=
0
;
}
$offset
=
$limit
*
$page
;
$sql
.
=
$db
->
plimit
(
$limit
+
1
,
$offset
);
}
$result
=
$db
->
query
(
$sql
);
if
(
$result
)
{
$i
=
0
;
$num
=
$db
->
num_rows
(
$result
);
while
(
$i
<
$num
)
{
$obj
=
$db
->
fetch_object
(
$result
);
$subscription
=
new
Cotisation
(
$this
->
db
);
if
(
$subscription
->
fetch
(
$obj
->
rowid
))
{
$obj_ret
[]
=
$this
->
_cleanObjectDatas
(
$subscription
);
}
$i
++
;
}
}
else
{
throw
new
RestException
(
503
,
'Error when retrieve subscription list : '
.
$subscription
->
error
);
}
if
(
!
count
(
$obj_ret
))
{
throw
new
RestException
(
404
,
'No subscription found'
);
}
return
$obj_ret
;
}
/**
* Create subscription object
*
* @param array $request_data Request data
* @return int ID of subscription
*/
function
post
(
$request_data
=
null
)
{
if
(
!
DolibarrApiAccess
::
$user
->
rights
->
adherent
->
cotisation
->
creer
)
{
throw
new
RestException
(
401
);
}
// Check mandatory fields
$result
=
$this
->
_validate
(
$request_data
);
$subscription
=
new
Cotisation
(
$this
->
db
);
foreach
(
$request_data
as
$field
=>
$value
)
{
$subscription
->
$field
=
$value
;
}
if
(
$subscription
->
create
(
DolibarrApiAccess
::
$user
)
<
0
)
{
throw
new
RestException
(
503
,
'Error when create subscription : '
.
$subscription
->
error
);
}
return
$subscription
->
id
;
}
/**
* Update subscription
*
* @param int $id ID of subscription to update
* @param array $request_data Datas
* @return int
*/
function
patch
(
$id
,
$request_data
=
null
)
{
if
(
!
DolibarrApiAccess
::
$user
->
rights
->
adherent
->
creer
)
{
throw
new
RestException
(
401
);
}
$subscription
=
new
Cotisation
(
$this
->
db
);
$result
=
$subscription
->
fetch
(
$id
);
if
(
!
$result
)
{
throw
new
RestException
(
404
,
'subscription not found'
);
}
foreach
(
$request_data
as
$field
=>
$value
)
{
$subscription
->
$field
=
$value
;
}
if
(
$subscription
->
update
(
DolibarrApiAccess
::
$user
)
>
0
)
return
$this
->
get
(
$id
);
return
false
;
}
/**
* Delete subscription
*
* @param int $id ID of subscription to delete
* @return array
*/
function
delete
(
$id
)
{
// The right to delete a subscription comes with the right to create one.
if
(
!
DolibarrApiAccess
::
$user
->
rights
->
adherent
->
cotisation
->
creer
)
{
throw
new
RestException
(
401
);
}
$subscription
=
new
Cotisation
(
$this
->
db
);
$result
=
$subscription
->
fetch
(
$id
);
if
(
!
$result
)
{
throw
new
RestException
(
404
,
'subscription not found'
);
}
if
(
!
$subscription
->
delete
(
DolibarrApiAccess
::
$user
))
{
throw
new
RestException
(
401
,
'error when deleting subscription'
);
}
return
array
(
'success'
=>
array
(
'code'
=>
200
,
'message'
=>
'subscription deleted'
)
);
}
/**
* Validate fields before creating an object
*
* @param array $data Data to validate
* @return array
*
* @throws RestException
*/
function
_validate
(
$data
)
{
$subscription
=
array
();
foreach
(
Subscriptions
::
$FIELDS
as
$field
)
{
if
(
!
isset
(
$data
[
$field
]))
throw
new
RestException
(
400
,
"
$field
field missing"
);
$subscription
[
$field
]
=
$data
[
$field
];
}
return
$subscription
;
}
}
This diff is collapsed.
Click to expand it.
htdocs/adherents/class/cotisation.class.php
+
3
−
1
View file @
d05c8d32
...
...
@@ -82,7 +82,9 @@ class Cotisation extends CommonObject
$resql
=
$this
->
db
->
query
(
$sql
);
if
(
$resql
)
{
return
$this
->
db
->
last_insert_id
(
MAIN_DB_PREFIX
.
"cotisation"
);
$this
->
id
=
$this
->
db
->
last_insert_id
(
MAIN_DB_PREFIX
.
"cotisation"
);
$this
->
db
->
commit
();
return
$this
->
id
;
}
else
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment