44 $this->pobject_id = $a_pobject_id;
51 $this->price_type = $a_price_type;
70 return $this->prices ? $this->prices : array();
74 return $this->prices[$a_price_id] ? $this->prices[$a_price_id] : array();
83 $res = $ilDB->queryf(
'
84 SELECT * FROM payment_prices
86 array(
'integer'), array($a_price_id));
88 while(
$row = $ilDB->fetchObject(
$res))
92 $price[
'duration_until'] =
$row->duration_until;
94 $price[
'unlimited_duration'] =
$row->unlimited_duration;
96 $price[
'price'] = number_format(
$row->price, 2,
'.',
'');
108 $res = $ilDB->queryf(
'
109 SELECT count(price_id) FROM payment_prices
110 WHERE pobject_id = %s',
112 array($a_pobject_id));
131 $system_lng = $lng->getDefaultLanguage();
134 $use_comma_seperator = array(
'ar',
'bg',
'cs',
'de',
'da',
'es',
'et',
'it',
135 'fr',
'nl',
'el',
'sr',
'uk',
'ru',
'ro',
'tr',
'pl',
'lt',
'pt',
'sq',
'hu');
139 if(in_array($system_lng, $use_comma_seperator))
141 $gui_price = number_format((
float)$a_price, 2,
',',
'');
144 $gui_price = number_format((
float)$a_price, 2,
'.',
'');
151 include_once
'./Services/Payment/classes/class.ilPaymentSettings.php';
154 $currency_unit = $genSet->get(
'currency_unit');
158 return $gui_price .
' ' . $currency_unit;
174 include_once
'./Services/Payment/classes/class.ilPaymentCurrency.php';
175 include_once
'./Services/Payment/classes/class.ilPaymentSettings.php';
178 $currency_unit = $genSet->get(
"currency_unit");
181 $pr_str .= number_format($a_price , 2,
",",
".");
186 return $pr_str .
" " . $currency_unit;
192 include_once
'./Services/Payment/classes/class.ilPaymentPrices.php';
196 if (is_array($a_price_ids))
198 for ($i = 0; $i < count($a_price_ids); $i++)
202 $price = (float) $price_data[
"price"];
203 $amount[$a_price_ids[$i][
"pay_method"]] += (float)
$price;
212 $this->price = preg_replace(
'/,/',
'.',$a_price);
213 $this->price = (float)$a_price;
218 $this->currency = $a_currency_id;
222 if($this->unlimited_duration ==
'1' && ($a_duration ==
'' || null))
225 $this->duration = (int)$a_duration;
230 if($a_unlimited_duration)
231 $this->unlimited_duration = (int)$a_unlimited_duration;
233 $this->unlimited_duration = 0;
239 $this->extension = (int)$a_extension;
250 $next_id = $this->db->nextId(
'payment_prices');
252 $res = $this->db->insert(
'payment_prices', array(
253 'price_id' => array(
'integer', $next_id),
254 'pobject_id' => array(
'integer', $this->
getPobjectId()),
258 'price' => array(
'float', $this->
__getPrice()),
271 $this->db->update(
'payment_prices',
272 array(
'pobject_id' => array(
'integer', $this->
getPobjectId()),
276 'price' => array(
'float', $this->
__getPrice()),
283 array(
'price_id'=> array(
'integer', $a_price_id)));
289 public function delete($a_price_id)
291 $statement = $this->db->manipulateF(
'
292 DELETE FROM payment_prices
293 WHERE price_id = %s',
294 array(
'integer'), array($a_price_id));
302 $statement = $this->db->manipulateF(
'
303 DELETE FROM payment_prices
304 WHERE pobject_id = %s',
323 include_once
'Services/Payment/exceptions/class.ilShopException.php';
327 case self::TYPE_DURATION_MONTH:
328 if(!preg_match(
'/^[1-9][0-9]{0,1}$/', $this->
__getDuration()))
332 case self::TYPE_DURATION_DATE:
333 if(!preg_match(
'/^[0-9]{4,4}-[0-9]{1,2}-[0-9]{1,2}$/', $this->
__getDurationFrom()))
334 throw new ilShopException($lng->txt(
'payment_price_invalid_date_from'));
337 if(!checkdate($from_date[1], $from_date[2], $from_date[0]))
338 throw new ilShopException($lng->txt(
'payment_price_invalid_date_from'));
341 throw new ilShopException($lng->txt(
'payment_price_invalid_date_until'));
344 if(!checkdate($till_date[1], $till_date[2], $till_date[0]))
345 throw new ilShopException($lng->txt(
'payment_price_invalid_date_until'));
347 $from = mktime(12, 12, 12, $from_date[1], $from_date[2], $from_date[0]);
348 $till = mktime(12, 12, 12, $till_date[1], $till_date[2], $till_date[0]);
351 throw new ilShopException($lng->txt(
'payment_price_invalid_date_from_gt_until'));
354 case self::TYPE_UNLIMITED_DURATION:
359 throw new ilShopException($lng->txt(
'payment_no_price_type_selected_sdf'));
375 $res = $ilDB->queryf(
'
376 SELECT * FROM payment_prices
378 AND pobject_id = %s',
379 array(
'integer',
'integer'),
380 array($a_price_id, $a_pobject_id));
382 return $res->numRows() ?
true :
false;
394 if($this->currency == null)
407 private function __read($with_extension_prices =
false)
409 $this->prices = array();
411 if(!$with_extension_prices)
413 $res = $this->db->queryf(
'
414 SELECT * FROM payment_prices
415 WHERE pobject_id = %s
418 array(
'integer',
'integer'),
424 $res = $this->db->queryf(
'
425 SELECT * FROM payment_prices
426 WHERE pobject_id = %s
432 while(
$row = $this->db->fetchObject(
$res))
434 $this->prices[
$row->price_id][
'pobject_id'] =
$row->pobject_id;
435 $this->prices[
$row->price_id][
'price_id'] =
$row->price_id;
436 $this->prices[
$row->price_id][
'currency'] =
$row->currency;
437 $this->prices[
$row->price_id][
'duration'] =
$row->duration;
438 $this->prices[
$row->price_id][
'unlimited_duration'] =
$row->unlimited_duration;
439 $this->prices[
$row->price_id][
'price'] =
$row->price;
440 $this->prices[
$row->price_id][
'extension'] =
$row->extension;
441 $this->prices[
$row->price_id][
'duration_from'] =
$row->duration_from;
442 $this->prices[
$row->price_id][
'duration_until'] =
$row->duration_until;
443 $this->prices[
$row->price_id][
'description'] =
$row->description;
444 $this->prices[
$row->price_id][
'price_type'] =
$row->price_type;
452 $res = $this->db->queryf(
'
453 SELECT * FROM payment_prices
454 WHERE pobject_id = %s
457 array(
'integer',
'integer'),
460 while(
$row = $this->db->fetchObject(
$res))
466 $prices[
$row->price_id][
'unlimited_duration'] =
$row->unlimited_duration;
479 return count($this->prices);
484 $lowest_price_id = 0;
487 foreach ($this->prices as $price_id =>
$data)
489 $current_price =
$data[
'price'];
491 if($lowest_price == 0||
492 $lowest_price > (
float)$current_price)
494 $lowest_price = (float)$current_price;
495 $lowest_price_id = $price_id;
499 return is_array($this->prices[$lowest_price_id]) ? $this->prices[$lowest_price_id] : array();
505 $this->duration_from = $a_duration_from;
510 $this->duration_until = $a_duration_until;
515 $this->description = $a_description;