Файл: concrete5.7.5.6/concrete/blocks/social_links/controller.php
Строк: 129
<?php
namespace ConcreteBlockSocialLinks;
use ConcreteCoreBlockBlockController;
use ConcreteCoreSharingSocialNetworkLink;
use ConcreteCoreSharingSocialNetworkService;
use Database;
use Core;
defined('C5_EXECUTE') or die("Access Denied.");
class Controller extends BlockController
{
public $helpers = array('form');
protected $btInterfaceWidth = 400;
protected $btCacheBlockOutput = true;
protected $btCacheBlockOutputOnPost = true;
protected $btCacheBlockOutputForRegisteredUsers = true;
protected $btInterfaceHeight = 400;
protected $btTable = 'btSocialLinks';
public function getBlockTypeDescription()
{
return t("Allows users to add social icons to their website");
}
public function getBlockTypeName()
{
return t("Social Links");
}
public function edit()
{
$all = Link::getList();
// first we populate the links list with the selected ones in the proper order.
$final = $selected = $this->getSelectedLinks();
foreach ($all as $link) {
if (!in_array($link, $selected)) {
$final[] = $link;
}
}
$this->set('links', $final);
$this->set('selectedLinks', $selected);
}
public function add()
{
$links = Link::getList();
$this->set('links', $links);
}
protected function getSelectedLinks()
{
$links = array();
$db = Database::get();
$slIDs = $db->GetCol('select slID from btSocialLinks where bID = ? order by displayOrder asc',
array($this->bID)
);
foreach ($slIDs as $slID) {
$link = Link::getByID($slID);
if (is_object($link)) {
$links[] = $link;
}
}
return $links;
}
public function export(SimpleXMLElement $blockNode)
{
foreach ($this->getSelectedLinks() as $link) {
$linkNode = $blockNode->addChild('link');
$linkNode->addAttribute('service', $link->getServiceObject()->getHandle());
}
}
public function getImportData($blockNode, $page)
{
$args = array();
foreach ($blockNode->link as $link) {
$link = Link::getByServiceHandle((string) $link['service']);
$args['slID'][] = $link->getID();
}
return $args;
}
public function validate($args)
{
$e = Core::make('helper/validation/error');
if (!isset($args['slID']) || empty($args['slID'])) {
$e->add(t('You must choose at least one link.'));
}
return $e;
}
public function duplicate($newBlockID)
{
$db = Database::get();
foreach ($this->getSelectedLinks() as $link) {
$db->insert('btSocialLinks', array('bID' => $newBlockID, 'slID' => $link->getID(), 'displayOrder' => $this->displayOrder));
}
}
public function save($args)
{
$db = Database::get();
$db->delete('btSocialLinks', array('bID' => $this->bID));
$slIDs = $args['slID'];
$statement = $db->prepare('insert into btSocialLinks (bID, slID, displayOrder) values (?, ?, ?)');
$displayOrder = 0;
foreach ($slIDs as $linkID) {
$statement->bindValue(1, $this->bID);
$statement->bindValue(2, $linkID);
$statement->bindValue(3, $displayOrder);
$statement->execute();
++$displayOrder;
}
}
public function delete()
{
$db = Database::get();
$db->delete('btSocialLinks', array('bID' => $this->bID));
}
public function view()
{
$links = $this->getSelectedLinks();
$this->set('links', $links);
}
public function registerViewAssets($outputContent = '')
{
$this->requireAsset('css', 'font-awesome');
}
}