public function editActionAuth(Param\AnyInt $id) { if (!($post = Blogs\Post::getById($id))) { \Difra\Libs\Cookies::getInstance()->notify(\Difra\Locales::getInstance()->getXPath('blogs/notifies/post_not_found'), true); $this->view->redirect('/'); } $Auth = \Difra\Auth::getInstance(); if ($post->getUser() != $Auth->getEmail() && !$Auth->isModerator()) { $group = $post->getBlog()->getGroup(); if (!$group or $group->getOwner() != \Difra\Auth::getInstance()->getEmail()) { \Difra\Libs\Cookies::getInstance()->notify(\Difra\Locales::getInstance()->getXPath('blogs/notifies/edit_post_denied'), true); $this->view->redirect('/'); } } $rootNode = $this->root->appendChild($this->xml->createElement('left')); /** @var \DOMElement $editNode */ $editNode = $rootNode->appendChild($this->xml->createElement('blogsPostEdit')); $post->getXML($editNode, true); if ($tags = \Difra\Plugins\Tags::getInstance()->get('posts', $id->val())) { $tags = array_map(function ($t) { return $t['tag']; }, $tags); $tags = implode(', ', $tags); $editNode->setAttribute('tags', $tags); } // необходимо запомнить текущий редактируемый пост, что бы при загрузке картинки загружать туда, куда нужно $_SESSION['editPost'] = $post->getId(); }
public function createaliaseAjaxAction(\Difra\Param\AjaxInt $tagId, \Difra\Param\AjaxString $module, \Difra\Param\AjaxString $aliase) { if (\Difra\Plugins\Tags::getInstance()->createAliase($module->val(), $tagId->val(), $aliase->val())) { \Difra\Libs\Cookies::getInstance()->notify(\Difra\Locales::getInstance()->getXPath('tags/adm/aliasCreated')); $this->ajax->reload(); } else { $this->ajax->notify(\Difra\Locales::getInstance()->getXPath('tags/adm/aliasCreateError')); } }
/** * Возвращает XML с библиотекой канала * @param \DOMElement $node * @param string $sortMode */ public function getLibraryXML($node, $sortMode = null) { switch ($sortMode) { case 'name': $order = " ORDER BY g.`name` ASC, t.`title` ASC"; break; case 'weight': $order = " ORDER BY rt.`weight` DESC"; break; case 'last': default: $order = " ORDER BY rt.`lastPlayed` ASC"; $sortMode = 'last'; break; } $node->setAttribute('sort', $sortMode); $node->setAttribute('minSongInQuery', $this->minSongInQuery); $db = \Difra\MySQL::getInstance(); $res = $db->fetch("SELECT rt.`id`, t.`title`, g.`name`, rt.`weight`, rt.`played`, rt.`plays`, rt.`lastPlayed`, rt.`duration`,\n\t\t\t\t\tIF( UNIX_TIMESTAMP( rt.`lastPlayed` )>0, UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP( rt.`lastPlayed` ), NULL) AS `tdiff`\n\t\t\t\t\tFROM `radio_tracks` rt\n\t\t\t\t\tLEFT JOIN `tracks` AS `t` ON t.`id`=rt.`id`\n\t\t\t\t\tLEFT JOIN `groups` AS `g` ON g.`id`=rt.`group_id`\n\t\t\t\t\tWHERE rt.`channel`='" . $this->name . "'" . $order); if (!empty($res)) { $idArray = []; foreach ($res as $data) { $idArray[] = $data['id']; } $tags = \Difra\Plugins\Tags::getInstance()->getMassive('tracks', $idArray); foreach ($res as $data) { /** @var \DOMElement $itemXml */ $itemXml = $node->appendChild($node->ownerDocument->createElement('track')); foreach ($data as $key => $value) { if ($key == 'duration') { $value = date('i:s', mktime(0, 0, $value)); } if ($key == 'tdiff' && $value > 0) { $value = floor($value / 60); } $itemXml->setAttribute($key, $value); } if (isset($tags[$data['id']])) { $tagString = ''; foreach ($tags[$data['id']] as $tag) { $tagString .= $tag . ', '; } $tagString = rtrim($tagString, " ,"); $itemXml->setAttribute('tags', $tagString); } } } else { $node->appendChild($node->ownerDocument->createElement('empty')); } }