Файл: concrete5.7.5.6/concrete/src/Gathering/Gathering.php
Строк: 159
<?php
namespace ConcreteCoreGathering;
use Loader;
use ConcreteCoreFoundationObject;
class Gathering extends Object implements ConcreteCorePermissionObjectInterface {
public function getGatheringID() {return $this->gaID;}
public function getGatheringDateCreated() {return $this->gaDateCreated;}
public function getGatheringDateLastUpdated() {return $this->gaDateLastUpdated;}
public function getPermissionObjectIdentifier() { return $this->gaID;}
public function getPermissionResponseClassName() {
return '\Concrete\Core\Permission\Response\GatheringResponse';
}
public function getPermissionAssignmentClassName() {
return '\Concrete\Core\Permission\Assignment\GatheringAssignment';
}
public function getPermissionObjectKeyCategoryHandle() {
return 'gathering';
}
public static function getByID($gaID) {
$db = Loader::db();
$r = $db->GetRow('select gaID, gaDateCreated, gaDateLastUpdated from Gatherings where gaID = ?', array($gaID));
if (is_array($r) && $r['gaID'] == $gaID) {
$ag = new Gathering;
$ag->setPropertiesFromArray($r);
return $ag;
}
}
public static function getList() {
$db = Loader::db();
$r = $db->Execute('select gaID from Gatherings order by gaDateLastUpdated asc');
$gatherings = array();
while ($row = $r->FetchRow()) {
$ag = Gathering::getByID($row['gaID']);
if (is_object($ag)) {
$gatherings[] = $ag;
}
}
return $gatherings;
}
public static function add() {
$db = Loader::db();
$date = Loader::helper('date')->getOverridableNow();
$r = $db->Execute('insert into Gatherings (gaDateCreated) values (?)', array($date));
return Gathering::getByID($db->Insert_ID());
}
public function getGatheringItems() {
$db = Loader::db();
$r = $db->Execute('select gaiID from GatheringItems where gaID = ?', array($this->gaID));
$list = array();
while ($row = $r->FetchRow()) {
$item = GatheringItem::getByID($row['gaiID']);
if (is_object($item)) {
$list[] = $item;
}
}
return $list;
}
public function getConfiguredGatheringDataSources() {
$db = Loader::db();
$r = $db->Execute('select gcsID from GatheringConfiguredDataSources where gaID = ?', array($this->gaID));
$list = array();
while ($row = $r->FetchRow()) {
$source = GatheringDataSourceConfiguration::getByID($row['gcsID']);
if (is_object($source)) {
$list[] = $source;
}
}
return $list;
}
public function clearConfiguredGatheringDataSources() {
$sources = $this->getConfiguredGatheringDataSources();
foreach($sources as $s) {
$s->delete();
}
}
public function duplicate() {
$db = Loader::db();
$newag = Gathering::add();
// dupe data sources
foreach($this->getConfiguredGatheringDataSources() as $source) {
$source->duplicate($newag);
}
// dupe items
foreach($this->getGatheringItems() as $item) {
$item->duplicate($newag);
}
return $newag;
}
/**
* Runs through all active gathering data sources, creates GatheringItem objects
*/
public function generateGatheringItems() {
$configuredDataSources = $this->getConfiguredGatheringDataSources();
$items = array();
foreach($configuredDataSources as $configuration) {
$dataSource = $configuration->getGatheringDataSourceObject();
$dataSourceItems = $dataSource->createGatheringItems($configuration);
$items = array_merge($dataSourceItems, $items);
}
// now we loop all the items returned, and assign the batch to those items.
$agiBatchTimestamp = time();
$db = Loader::db();
foreach($items as $it) {
$it->setGatheringItemBatchTimestamp($agiBatchTimestamp);
$it->setAutomaticGatheringItemSlotWidth();
$it->setAutomaticGatheringItemSlotHeight();
}
// now, we find all the items with that timestamp, and we update their display order.
$agiBatchDisplayOrder = 0;
$r = $db->Execute('select gaiID from GatheringItems where gaID = ? and gaiBatchTimestamp = ? order by gaiPublicDateTime desc', array($this->getGatheringID(), $agiBatchTimestamp));
while ($row = $r->FetchRow()) {
$db->Execute('update GatheringItems set gaiBatchDisplayOrder = ? where gaiID = ?', array($agiBatchDisplayOrder, $row['gaiID']));
$agiBatchDisplayOrder++;
}
$date = Loader::helper('date')->getOverridableNow();
$db->Execute('update Gatherings set gaDateLastUpdated = ? where gaID = ?', array($date, $this->gaID));
}
public function clearGatheringItems() {
$items = $this->getGatheringItems();
foreach($items as $it) {
$it->delete();
}
}
public function delete() {
$db = Loader::db();
$db->Execute('delete from Gatherings where gaID = ?', array($this->getGatheringID()));
$this->clearConfiguredGatheringDataSources();
$this->clearGatheringItems();
}
}