Add ad system
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / data / ad / AdEditor.class.php
1 <?php
2 namespace wcf\data\ad;
3 use wcf\data\object\type\ObjectTypeCache;
4 use wcf\data\DatabaseObjectEditor;
5 use wcf\data\IEditableCachedObject;
6 use wcf\system\cache\builder\AdCacheBuilder;
7 use wcf\system\cache\builder\ConditionCacheBuilder;
8 use wcf\system\WCF;
9
10 /**
11 * Provides functions to edit ads.
12 *
13 * @author Matthias Schmidt
14 * @copyright 2001-2014 WoltLab GmbH
15 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
16 * @package com.woltlab.wcf
17 * @subpackage data.ad
18 * @category Community Framework
19 */
20 class AdEditor extends DatabaseObjectEditor implements IEditableCachedObject {
21 /**
22 * @see \wcf\data\DatabaseObjectDecorator::$baseClass
23 */
24 protected static $baseClass = 'wcf\data\ad\Ad';
25
26 /**
27 * Sets the show order of the ad.
28 *
29 * @param integer $showOrder
30 */
31 public function setShowOrder($showOrder = 0) {
32 $newShowOrder = 1;
33
34 $sql = "SELECT MAX(showOrder)
35 FROM wcf".WCF_N."_ad";
36 $statement = WCF::getDB()->prepareStatement($sql);
37 $statement->execute();
38 $maxShowOrder = $statement->fetchColumn();
39 if (!$maxShowOrder) $maxShowOrder = 0;
40
41 if (!$showOrder || $showOrder > $maxShowOrder) {
42 $newShowOrder = $maxShowOrder + 1;
43 }
44 else {
45 // shift other ads
46 $sql = "UPDATE wcf".WCF_N."_ad
47 SET showOrder = showOrder + 1
48 WHERE showOrder >= ?";
49 $statement = WCF::getDB()->prepareStatement($sql);
50 $statement->execute(array(
51 $showOrder
52 ));
53
54 $newShowOrder = $showOrder;
55 }
56
57 $this->update(array(
58 'showOrder' => $newShowOrder
59 ));
60 }
61
62 /**
63 * @see \wcf\data\IEditableCachedObject::resetCache()
64 */
65 public static function resetCache() {
66 AdCacheBuilder::getInstance()->reset();
67 ConditionCacheBuilder::getInstance()->reset(array(
68 'definitionID' => ObjectTypeCache::getInstance()->getDefinitionByName('com.woltlab.wcf.condition.ad')->definitionID
69 ));
70 }
71 }