Файл: concrete5.7.5.6/concrete/src/Attribute/Set.php
Строк: 147
<?php
namespace ConcreteCoreAttribute;
use ConcreteCoreFoundationObject;
use GettextTranslations;
use Loader;
use ConcreteCorePackagePackageList;
use ConcreteCoreAttributeKeyCategory as AttributeKeyCategory;
class Set extends Object {
public static function getByID($asID) {
$db = Loader::db();
$row = $db->GetRow('select asID, asHandle, pkgID, asName, akCategoryID, asIsLocked from AttributeSets where asID = ?', array($asID));
if (isset($row['asID'])) {
$akc = new static();
$akc->setPropertiesFromArray($row);
return $akc;
}
}
public static function getByHandle($asHandle, $akCategoryID = null) {
$db = Loader::db();
if($akCategoryID > 0) {
$row = $db->GetRow(
'select asID, asHandle, pkgID, asName, akCategoryID, asIsLocked from AttributeSets where asHandle = ? AND akCategoryID = ?',
array($asHandle, $akCategoryID)
);
} else {
$row = $db->GetRow('select asID, asHandle, pkgID, asName, akCategoryID, asIsLocked from AttributeSets where asHandle = ?', array($asHandle));
}
if (isset($row['asID'])) {
$akc = new static();
$akc->setPropertiesFromArray($row);
return $akc;
}
}
public static function getListByPackage($pkg) {
$db = Loader::db();
$list = array();
$r = $db->Execute('select asID from AttributeSets where pkgID = ? order by asID asc', array($pkg->getPackageID()));
while ($row = $r->FetchRow()) {
$list[] = static::getByID($row['asID']);
}
$r->Close();
return $list;
}
public function getAttributeSetID() {return $this->asID;}
public function getAttributeSetHandle() {return $this->asHandle;}
public function getAttributeSetName() {return $this->asName;}
public function getPackageID() {return $this->pkgID;}
public function getPackageHandle() {return PackageList::getHandle($this->pkgID);}
public function getAttributeSetKeyCategoryID() {return $this->akCategoryID;}
public function isAttributeSetLocked() {return $this->asIsLocked;}
/** Returns the display name for this attribute set (localized and escaped accordingly to $format)
* @param string $format = 'html'
* Escape the result in html format (if $format is 'html').
* If $format is 'text' or any other value, the display name won't be escaped.
* @return string
*/
public function getAttributeSetDisplayName($format = 'html') {
$value = tc('AttributeSetName', $this->getAttributeSetName());
switch($format) {
case 'html':
return h($value);
case 'text':
default:
return $value;
}
}
public function updateAttributeSetName($asName) {
$this->asName = $asName;
$db = Loader::db();
$db->Execute("update AttributeSets set asName = ? where asID = ?", array($asName, $this->asID));
}
public function updateAttributeSetHandle($asHandle) {
$this->asHandle = $asHandle;
$db = Loader::db();
$db->Execute("update AttributeSets set asHandle = ? where asID = ?", array($asHandle, $this->asID));
}
public function addKey($ak) {
$db = Loader::db();
$no = $db->GetOne("select count(akID) from AttributeSetKeys where akID = ? and asID = ?", array($ak->getAttributeKeyID(), $this->getAttributeSetID()));
if ($no < 1) {
$do = $db->GetOne('select max(displayOrder) from AttributeSetKeys where asID = ?', array($this->getAttributeSetID()));
$do++;
$db->Execute('insert into AttributeSetKeys (asID, akID, displayOrder) values (?, ?, ?)', array($this->getAttributeSetID(), $ak->getAttributeKeyID(), $do));
}
}
public function clearAttributeKeys() {
$db = Loader::db();
$db->Execute('delete from AttributeSetKeys where asID = ?', array($this->asID));
}
public function export($axml) {
$category = AttributeKeyCategory::getByID($this->getAttributeSetKeyCategoryID())->getAttributeKeyCategoryHandle();
$akey = $axml->addChild('attributeset');
$akey->addAttribute('handle',$this->getAttributeSetHandle());
$akey->addAttribute('name', $this->getAttributeSetName());
$akey->addAttribute('package', $this->getPackageHandle());
$akey->addAttribute('locked', $this->isAttributeSetLocked());
$akey->addAttribute('category', $category);
$keys = $this->getAttributeKeys();
foreach($keys as $ak) {
$ak->export($akey, false);
}
return $akey;
}
public static function exportList($xml) {
$axml = $xml->addChild('attributesets');
$db = Loader::db();
$r = $db->Execute('select asID from AttributeSets order by asID asc');
$list = array();
while ($row = $r->FetchRow()) {
$list[] = static::getByID($row['asID']);
}
foreach($list as $as) {
$as->export($axml);
}
}
public function getAttributeKeys() {
$db = Loader::db();
$r = $db->Execute('select akID from AttributeSetKeys where asID = ? order by displayOrder asc', array($this->getAttributeSetID()));
$keys = array();
$cat = AttributeKeyCategory::getByID($this->akCategoryID);
while ($row = $r->FetchRow()) {
$ak = $cat->getAttributeKeyByID($row['akID']);
if (is_object($ak)) {
$keys[] = $ak;
}
}
return $keys;
}
public function contains($ak) {
$db = Loader::db();
$r = $db->GetOne('select count(akID) from AttributeSetKeys where asID = ? and akID = ?', array($this->getAttributeSetID(), $ak->getAttributeKeyID()));
return $r > 0;
}
/**
* Removes an attribute set and sets all keys within to have a set ID of 0.
*/
public function delete() {
$db = Loader::db();
$db->Execute('delete from AttributeSets where asID = ?', array($this->getAttributeSetID()));
$db->Execute('delete from AttributeSetKeys where asID = ?', array($this->getAttributeSetID()));
}
public function deleteKey($ak) {
$db = Loader::db();
$db->Execute('delete from AttributeSetKeys where asID = ? and akID = ?', array($this->getAttributeSetID(), $ak->getAttributeKeyID()));
$this->rescanDisplayOrder();
}
protected function rescanDisplayOrder() {
$db = Loader::db();
$do = 1;
$r = $db->Execute('select akID from AttributeSetKeys where asID = ? order by displayOrder asc', array($this->getAttributeSetID()));
while ($row = $r->FetchRow()) {
$db->Execute('update AttributeSetKeys set displayOrder = ? where akID = ? and asID = ?', array($do, $row['akID'], $this->getAttributeSetID()));
$do++;
}
}
public function updateAttributesDisplayOrder($uats) {
$db = Loader::db();
for ($i = 0; $i < count($uats); $i++) {
$v = array($this->getAttributeSetID(), $uats[$i]);
$db->query("update AttributeSetKeys set displayOrder = {$i} where asID = ? and akID = ?", $v);
}
}
public static function exportTranslations()
{
$translations = new Translations();
$db = Database::get();
$r = $db->Execute('select asID from AttributeSets order by asID asc');
while ($row = $r->FetchRow()) {
$set = static::getByID($row['asID']);
$translations->insert('AttributeSet', $set->getAttributeSetName());
}
return $translations;
}
}