作者:emanuel-londo
项目:pimcor
public function codeAction()
{
$url = "";
if ($this->getParam("name")) {
$url = $this->getRequest()->getScheme() . "://" . $this->getRequest()->getHttpHost() . "/qr~-~code/" . $this->getParam("name");
} elseif ($this->getParam("documentId")) {
$doc = Document::getById($this->getParam("documentId"));
$url = $this->getRequest()->getScheme() . "://" . $this->getRequest()->getHttpHost() . $doc->getFullPath();
} elseif ($this->getParam("url")) {
$url = $this->getParam("url");
}
$code = new \Endroid\QrCode\QrCode();
$code->setText($url);
$code->setPadding(0);
$code->setSize(500);
$hexToRGBA = function ($hex) {
list($r, $g, $b) = sscanf($hex, "#%02x%02x%02x");
return ["r" => $r, "g" => $g, "b" => $b, "a" => 0];
};
if (strlen($this->getParam("foreColor", "")) == 7) {
$code->setForegroundColor($hexToRGBA($this->getParam("foreColor")));
}
if (strlen($this->getParam("backgroundColor", "")) == 7) {
$code->setBackgroundColor($hexToRGBA($this->getParam("backgroundColor")));
}
header("Content-Type: image/png");
if ($this->getParam("download")) {
$code->setSize(4000);
header('Content-Disposition: attachment;filename="qrcode-' . $this->getParam("name", "preview") . '.png"', true);
}
$code->render();
exit;
}
作者:basilico
项目:pimcore-plugin-participatio
/**
* @param object $participation
* @return void
* @throws \Exception
*/
public function sendEmail($participation)
{
$email = $participation->getEmail();
$emailDomain = trim(strtolower(preg_replace('/^[^@]+@/', '', $email)));
$participation->setEmailDomain($emailDomain);
$participation->save();
$confirmationLink = $this->createConfirmationLink($participation->getConfirmationCode());
$parameters = array('confirmationLink' => $confirmationLink, 'participationId' => $participation->getId());
$emailDocumentPath = Plugin::getConfig()->get('emailDocumentPath');
$emailDocument = DocumentModel::getByPath($emailDocumentPath);
if (!$emailDocument instanceof EmailDocument) {
throw new \Exception("Error: emailDocumentPath [{$emailDocumentPath}] " . "is not a valid email document.");
}
$mail = new Mail();
$mail->addTo($email);
if ($this->getSubject()) {
$mail->setSubject($this->getSubject());
}
$mail->setDocument($emailDocumentPath);
$mail->setParams($parameters);
$mail->send();
$note = new Note();
$note->setElement($participation);
$note->setDate(time());
$note->setType("confirmation");
$note->setTitle("Email sent");
$note->addData("email", "text", $email);
$note->setUser(0);
$note->save();
}
作者:sfi
项目:pimcor
/**
* Loads a list of entries for the specicifies parameters, returns an array of Search\Backend\Data
*
* @return array
*/
public function load()
{
$entries = array();
$data = $this->db->fetchAll("SELECT * FROM search_backend_data" . $this->getCondition() . $this->getGroupBy() . $this->getOrder() . $this->getOffsetLimit(), $this->model->getConditionVariables());
foreach ($data as $entryData) {
if ($entryData['maintype'] == 'document') {
$element = Document::getById($entryData['id']);
} else {
if ($entryData['maintype'] == 'asset') {
$element = Asset::getById($entryData['id']);
} else {
if ($entryData['maintype'] == 'object') {
$element = Object::getById($entryData['id']);
} else {
\Logger::err("unknown maintype ");
}
}
}
if ($element) {
$entry = new Search\Backend\Data();
$entry->setId(new Search\Backend\Data\Id($element));
$entry->setFullPath($entryData['fullpath']);
$entry->setType($entryData['type']);
$entry->setSubtype($entryData['subtype']);
$entry->setUserOwner($entryData['userowner']);
$entry->setUserModification($entryData['usermodification']);
$entry->setCreationDate($entryData['creationdate']);
$entry->setModificationDate($entryData['modificationdate']);
$entry->setPublished($entryData['published'] === 0 ? false : true);
$entries[] = $entry;
}
}
$this->model->setEntries($entries);
return $entries;
}
作者:dachcom-digita
项目:pimcore-toolbo
/**
* @see Document\Tag\TagInterface::setDataFromEditmode
* @param mixed $data
* @return void
*/
public function setDataFromEditmode($data)
{
if (!is_array($data)) {
$data = array();
}
if ($doc = Document::getByPath($data['path'])) {
if ($doc instanceof Document) {
$data['internal'] = true;
$data['internalId'] = $doc->getId();
$data['internalType'] = 'document';
}
//its an object?
} else {
if (strpos($data['path'], '::') !== FALSE) {
$data['internal'] = true;
$data['internalType'] = 'object';
}
}
if (!$data['internal']) {
if ($asset = Asset::getByPath($data['path'])) {
if ($asset instanceof Asset) {
$data['internal'] = true;
$data['internalId'] = $asset->getId();
$data['internalType'] = 'asset';
}
}
}
$this->data = $data;
return $this;
}
作者:solvera
项目:pimcor
protected function setValuesToDocument(Document\Link $link)
{
// data
if ($this->getParam("data")) {
$data = \Zend_Json::decode($this->getParam("data"));
if (!empty($data["path"])) {
if ($document = Document::getByPath($data["path"])) {
$data["linktype"] = "internal";
$data["internalType"] = "document";
$data["internal"] = $document->getId();
} elseif ($asset = Asset::getByPath($data["path"])) {
$data["linktype"] = "internal";
$data["internalType"] = "asset";
$data["internal"] = $asset->getId();
} else {
$data["linktype"] = "direct";
$data["direct"] = $data["path"];
}
} else {
// clear content of link
$data["linktype"] = "internal";
$data["direct"] = "";
$data["internalType"] = null;
$data["internal"] = null;
}
unset($data["path"]);
$link->setValues($data);
}
$this->addPropertiesToDocument($link);
}
作者:solvera
项目:pimcor
public function subscribeAction()
{
$this->enableLayout();
$newsletter = new Newsletter("person");
// replace "crm" with the class name you have used for your class above (mailing list)
$params = $this->getAllParams();
$this->view->success = false;
if ($newsletter->checkParams($params)) {
try {
$params["parentId"] = 1;
// default folder (home) where we want to save our subscribers
$newsletterFolder = Model\Object::getByPath("/crm/newsletter");
if ($newsletterFolder) {
$params["parentId"] = $newsletterFolder->getId();
}
$user = $newsletter->subscribe($params);
// user and email document
// parameters available in the email: gender, firstname, lastname, email, token, object
// ==> see mailing framework
$newsletter->sendConfirmationMail($user, Model\Document::getByPath("/en/advanced-examples/newsletter/confirmation-email"), ["additional" => "parameters"]);
// do some other stuff with the new user
$user->setDateRegister(new \DateTime());
$user->save();
$this->view->success = true;
} catch (\Exception $e) {
echo $e->getMessage();
}
}
}
作者:studioemm
项目:multilingua
/**
* @param $document
* @param null $language
* @return Document|null
*/
public function inotherlang($document, $language = null)
{
$documentInOtherLang = null;
if (is_null($language)) {
$language = CURRENT_LANGUAGE;
}
if ($document instanceof Document) {
$id = $document->getId();
} elseif (is_numeric($document)) {
$id = $document;
} else {
$id = 0;
}
$otherLangId = null;
try {
if (class_exists('\\Multilingual\\Document')) {
$otherLangId = \Multilingual\Document::getDocumentIdInOtherLanguage($id, $language);
} else {
$otherLangId = $id;
}
} catch (Exception $e) {
}
if ($otherLangId) {
$documentInOtherLang = Document::getById($otherLangId);
}
return $documentInOtherLang;
}
作者:pimcor
项目:pimcor
private function doGetChildren(Document $document)
{
$children = $document->getChilds();
foreach ($children as $child) {
if ($child instanceof Document\Printpage) {
$this->allChildren[] = $child;
}
if ($child instanceof Document\Folder || $child instanceof Document\Printcontainer) {
$this->doGetChildren($child);
}
if ($child instanceof Document\Hardlink) {
if ($child->getSourceDocument() instanceof Document\Printpage) {
$this->allChildren[] = $child;
}
$this->doGetChildren($child);
}
}
}
作者:solvera
项目:pimcor
/**
* @param \Zend_Controller_Request_Abstract $request
* @throws mixed
*/
protected function _handleError(\Zend_Controller_Request_Abstract $request)
{
// remove zend error handler
$front = \Zend_Controller_Front::getInstance();
$front->unregisterPlugin("Zend_Controller_Plugin_ErrorHandler");
$response = $this->getResponse();
if ($response->isException() && !$this->_isInsideErrorHandlerLoop) {
// get errorpage
try {
// enable error handler
$front->setParam('noErrorHandler', false);
$errorPath = Config::getSystemConfig()->documents->error_pages->default;
if (Site::isSiteRequest()) {
$site = Site::getCurrentSite();
$errorPath = $site->getErrorDocument();
}
if (empty($errorPath)) {
$errorPath = "/";
}
$document = Document::getByPath($errorPath);
if (!$document instanceof Document\Page) {
// default is home
$document = Document::getById(1);
}
if ($document instanceof Document\Page) {
$params = Tool::getRoutingDefaults();
if ($module = $document->getModule()) {
$params["module"] = $module;
}
if ($controller = $document->getController()) {
$params["controller"] = $controller;
$params["action"] = "index";
}
if ($action = $document->getAction()) {
$params["action"] = $action;
}
$this->setErrorHandler($params);
$request->setParam("document", $document);
\Zend_Registry::set("pimcore_error_document", $document);
// ensure that a viewRenderer exists, and is enabled
if (!\Zend_Controller_Action_HelperBroker::hasHelper("viewRenderer")) {
$viewRenderer = new \Pimcore\Controller\Action\Helper\ViewRenderer();
\Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
}
$viewRenderer = \Zend_Controller_Action_HelperBroker::getExistingHelper("viewRenderer");
$viewRenderer->setNoRender(false);
if ($viewRenderer->view === null) {
$viewRenderer->initView(PIMCORE_WEBSITE_PATH . "/views");
}
}
} catch (\Exception $e) {
\Logger::emergency("error page not found");
}
}
// call default ZF error handler
parent::_handleError($request);
}
作者:pimcor
项目:pimcor
public function getDocumentTypesAction()
{
$documentTypes = Document::getTypes();
$typeItems = [];
foreach ($documentTypes as $documentType) {
$typeItems[] = ["text" => $documentType];
}
$this->_helper->json($typeItems);
}
作者:solvera
项目:pimcor
public function ruleGetAction()
{
$target = Targeting\Rule::getById($this->getParam("id"));
$redirectUrl = $target->getActions()->getRedirectUrl();
if (is_numeric($redirectUrl)) {
$doc = Document::getById($redirectUrl);
if ($doc instanceof Document) {
$target->getActions()->redirectUrl = $doc->getFullPath();
}
}
$this->_helper->json($target);
}
作者:Gerhard1
项目:pimcor
protected function setValuesToDocument(Document\Hardlink $link)
{
// data
$data = \Zend_Json::decode($this->getParam("data"));
$sourceId = null;
if ($sourceDocument = Document::getByPath($data["sourcePath"])) {
$sourceId = $sourceDocument->getId();
}
$link->setSourceId($sourceId);
$link->setValues($data);
$this->addPropertiesToDocument($link);
}
作者:emanuel-londo
项目:pimcor
protected function getCondition()
{
if ($cond = $this->model->getCondition()) {
if (Document::doHideUnpublished() && !$this->model->getUnpublished()) {
return " WHERE (" . $cond . ") AND published = 1";
}
return " WHERE " . $cond . " ";
} elseif (Document::doHideUnpublished() && !$this->model->getUnpublished()) {
return " WHERE published = 1";
}
return "";
}
作者:shanky011
项目:pimcore-plugin-subdomain-admi
private function getErrorDocument()
{
$config = Config::getSystemConfig();
$errorDocPath = $config->documents->error_pages->default;
if (Site::isSiteRequest()) {
$site = Site::getCurrentSite();
$errorDocPath = $site->getErrorDocument();
}
$errorDoc = Document::getByPath($errorDocPath);
\Zend_Registry::set("pimcore_error_document", $errorDoc);
return $errorDoc;
}
作者:pimcor
项目:pimcor
/**
* Loads a list of objects (all are an instance of Document) for the given parameters an return them
*
* @return array
*/
public function load()
{
$documents = [];
$select = (string) $this->getQuery(['id', "type"]);
$documentsData = $this->db->fetchAll($select, $this->model->getConditionVariables());
foreach ($documentsData as $documentData) {
if ($documentData["type"]) {
if ($doc = Document::getById($documentData["id"])) {
$documents[] = $doc;
}
}
}
$this->model->setDocuments($documents);
return $documents;
}
作者:studioemm
项目:multilingua
/**
* Original function
* @see Admin_DocumentController::treeGetChildsByIdAction()
*/
public function treeGetChildsByIdAction()
{
$languages = Tool::getValidLanguages();
$language = $this->_getParam("language", reset($languages));
$document = Document::getById($this->getParam("node"));
$documents = array();
if ($document->hasChilds()) {
$limit = intval($this->getParam("limit"));
if (!$this->getParam("limit")) {
$limit = 100000000;
}
$offset = intval($this->getParam("start"));
$list = new Document\Listing();
if ($this->getUser()->isAdmin()) {
$list->setCondition("parentId = ? ", $document->getId());
} else {
$userIds = $this->getUser()->getRoles();
$userIds[] = $this->getUser()->getId();
$list->setCondition("parentId = ? and\r\n (\r\n (select list from users_workspaces_document where userId in (" . implode(',', $userIds) . ") and LOCATE(CONCAT(path,`key`),cpath)=1 ORDER BY LENGTH(cpath) DESC LIMIT 1)=1\r\n or\r\n (select list from users_workspaces_document where userId in (" . implode(',', $userIds) . ") and LOCATE(cpath,CONCAT(path,`key`))=1 ORDER BY LENGTH(cpath) DESC LIMIT 1)=1\r\n )", $document->getId());
}
$list->setOrderKey("index");
$list->setOrder("asc");
$list->setLimit($limit);
$list->setOffset($offset);
$childsList = $list->load();
foreach ($childsList as $childDocument) {
// only display document if listing is allowed for the current user
if ($childDocument->isAllowed("list")) {
if ($childDocument instanceof Document\Page && $childDocument->hasProperty('isLanguageRoot') && $childDocument->getProperty('isLanguageRoot') == 1) {
if ($childDocument->getKey() == $language) {
// $documents[] = $this->getTreeNodeConfig($childDocument);
$config = $this->getTreeNodeConfig($childDocument);
$config['expanded'] = true;
$documents[] = $config;
}
} else {
$documents[] = $this->getTreeNodeConfig($childDocument);
}
}
}
}
if ($this->getParam("limit")) {
$this->_helper->json(array("offset" => $offset, "limit" => $limit, "total" => $document->getChildAmount($this->getUser()), "nodes" => $documents));
} else {
$this->_helper->json($documents);
}
$this->_helper->json(false);
}
作者:solvera
项目:pimcor
public function updateAction()
{
$letter = Newsletter\Config::getByName($this->getParam("name"));
$data = \Zend_Json::decode($this->getParam("configuration"));
if ($emailDoc = Document::getByPath($data["document"])) {
$data["document"] = $emailDoc->getId();
}
foreach ($data as $key => $value) {
$setter = "set" . ucfirst($key);
if (method_exists($letter, $setter)) {
$letter->{$setter}($value);
}
}
$letter->save();
$this->_helper->json(["success" => true]);
}
作者:solvera
项目:pimcor
protected function getFilterPath()
{
if ($this->getParam("type") == "document" && $this->getParam("id")) {
$doc = Document::getById($this->getParam("id"));
$path = $doc->getFullPath();
if ($doc instanceof Document\Page && $doc->getPrettyUrl()) {
$path = $doc->getPrettyUrl();
}
if ($this->getParam("site")) {
$site = Site::getById($this->getParam("site"));
$path = preg_replace("@^" . preg_quote($site->getRootPath(), "@") . "/@", "/", $path);
}
return $path;
}
return $this->getParam("path");
}
作者:todod
项目:pimcor
/**
* @return null
*/
public function getRenderScript()
{
// try to get the template out of the params
if ($this->getParam("template")) {
return $this->getParam("template");
}
// try to get template out of the document object, but only if the parameter `staticroute´ is not set, which indicates
// if a request comes through a static/custom route (contains the route Object => Staticroute)
// see PIMCORE-1545
if ($this->document instanceof Document && !in_array($this->getParam("pimcore_request_source"), array("staticroute", "renderlet"))) {
if (method_exists($this->document, "getTemplate") && $this->document->getTemplate()) {
return $this->document->getTemplate();
}
}
return null;
}
作者:solvera
项目:pimcor
public function testAction()
{
/*
* This is an example of a categorization of controllers
* you can create folders to structure your controllers into sub-modules
*
* The controller name is then the name of the folder and the controller, separated by an underscore (_)
* in this case this is "category_example"
*
* For this example there's a static route and a document defined
* Name of static route: "category-example"
* Path of document: /en/advanced-examples/sub-modules
*/
$this->enableLayout();
// this is needed so that the layout can be rendered
$this->setDocument(\Pimcore\Model\Document::getById(1));
}