Файл: concrete5.7.5.6/concrete/src/Editor/Snippet.php
Строк: 166
<?php
namespace ConcreteCoreEditor;
use Loader;
use ConcreteCoreFoundationObject;
use ConcreteCorePackagePackageList;
use Core;
use Package;
abstract class Snippet extends Object {
/**
* Required for snippets to work
*/
abstract public function replace();
public function getSystemContentEditorSnippetHandle() { return $this->scsHandle;}
public function getSystemContentEditorSnippetName() { return $this->scsName;}
public function isSystemContentEditorSnippetActive() { return $this->scsIsActive;}
public function getPackageID() { return $this->pkgID;}
public function getPackageHandle() {
return PackageList::getHandle($this->pkgID);
}
public function getPackageObject() {return Package::getByID($this->pkgID);}
public function findAndReplace($text) {
$r = preg_replace_callback('/<span[^>]*data-scsHandle="' . $this->scsHandle . '">[^<]*</span>/is', array($this, 'replace'), $text);
return $r;
}
public static function getByHandle($scsHandle) {
$db = Loader::db();
$r = $db->GetRow('select scsHandle, scsIsActive, pkgID, scsName from SystemContentEditorSnippets where scsHandle = ?', array($scsHandle));
if (is_array($r) && $r['scsHandle']) {
$pkgHandle = false;
if ($r['pkgID']) {
$pkgHandle = PackageList::getHandle($r['pkgID']);
}
$class = overrideable_core_class(
'Core\Editor\' . camelcase($r['scsHandle']) . 'Snippet',
DIRNAME_CLASSES . '/Editor/' . camelcase($r['scsHandle']) . 'Snippet.php',
$pkgHandle
);
$sc = Core::make($class);
$sc->setPropertiesFromArray($r);
return $sc;
}
}
public static function add($scsHandle, $scsName, $pkg = false) {
$pkgID = 0;
if (is_object($pkg)) {
$pkgID = $pkg->getPackageID();
}
$db = Loader::db();
$db->Execute('insert into SystemContentEditorSnippets (scsHandle, scsName, pkgID) values (?, ?, ?)', array($scsHandle, $scsName, $pkgID));
return static::getByHandle($scsHandle);
}
public function delete() {
$db = Loader::db();
$db->Execute('delete from SystemContentEditorSnippets where scsHandle = ?', array($this->scsHandle));
}
public function activate() {
$db = Loader::db();
$db->Execute('update SystemContentEditorSnippets set scsIsActive = 1 where scsHandle = ?', array($this->scsHandle));
}
public function deactivate() {
$db = Loader::db();
$db->Execute('update SystemContentEditorSnippets set scsIsActive = 0 where scsHandle = ?', array($this->scsHandle));
}
public static function getList() {
$db = Loader::db();
$scsHandles = $db->GetCol('select scsHandle from SystemContentEditorSnippets order by scsHandle asc');
$libraries = array();
foreach($scsHandles as $scsHandle) {
$scs = static::getByHandle($scsHandle);
$libraries[] = $scs;
}
return $libraries;
}
public static function getActiveList() {
$db = Loader::db();
$scsHandles = $db->GetCol('select scsHandle from SystemContentEditorSnippets where scsIsActive = 1 order by scsHandle asc');
$libraries = array();
foreach($scsHandles as $scsHandle) {
$scs = static::getByHandle($scsHandle);
$libraries[] = $scs;
}
return $libraries;
}
public static function getListByPackage($pkg) {
$db = Loader::db();
$scsHandles = $db->GetCol('select scsHandle from SystemContentEditorSnippets where pkgID = ? order by scsHandle asc', array($pkg->getPackageID()));
$libraries = array();
foreach($scsHandles as $scsHandle) {
$scs = static::getByHandle($scsHandle);
$libraries[] = $scs;
}
return $libraries;
}
public static function exportList($xml) {
$list = self::getList();
$nxml = $xml->addChild('systemcontenteditorsnippets');
foreach($list as $sc) {
$activated = 0;
$type = $nxml->addChild('snippet');
$type->addAttribute('handle', $sc->getSystemContentEditorSnippetHandle());
$type->addAttribute('name', $sc->getSystemContentEditorSnippetName());
$type->addAttribute('package', $sc->getPackageHandle());
$type->addAttribute('activated', $sc->isSystemContentEditorSnippetActive());
}
}
}