%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/modules/landing/lib/publicaction/ |
Current File : //home/bitrix/www/bitrix/modules/landing/lib/publicaction/site.php |
<?php namespace Bitrix\Landing\PublicAction; use \Bitrix\Landing\Manager; use \Bitrix\Landing\File; use \Bitrix\Landing\Landing; use \Bitrix\Landing\Site as SiteCore; use \Bitrix\Landing\PublicActionResult; use \Bitrix\Main\Localization\Loc; Loc::loadMessages(__FILE__); class Site { /** * Clear disallow keys from add/update fields. * @param array $fields * @return array */ protected static function clearDisallowFields($fields) { $disallow = array('ACTIVE'); if (is_array($fields)) { foreach ($fields as $k => $v) { if (in_array($k, $disallow)) { unset($fields[$k]); } } } return $fields; } /** * Get additional fields of site. * @param int $id Id of site. * @return \Bitrix\Landing\PublicActionResult */ public static function getAdditionalFields($id) { $result = new PublicActionResult(); if (($fields = SiteCore::getAdditionalFields($id))) { foreach ($fields as $key => $field) { $fields[$key] = $field->getValue(); if (!$fields[$key]) { unset($fields[$key]); } } $result->setResult( $fields ); } return $result; } /** * Get available sites. * @param array $params Params ORM array. * @return \Bitrix\Landing\PublicActionResult */ public static function getList($params = array()) { $result = new PublicActionResult(); if (!is_array($params)) { $params = array(); } // more usable for domain mame if ( isset($params['select']) && is_array($params['select']) && in_array('DOMAIN_NAME', $params['select']) ) { foreach ($params['select'] as $k => $code) { if ($code == 'DOMAIN_NAME') { unset($params['select'][$k]); break; } } $params['select']['DOMAIN_NAME'] = 'DOMAIN.DOMAIN'; } $data = array(); $res = SiteCore::getList($params); while ($row = $res->fetch()) { $data[] = $row; } $result->setResult($data); return $result; } /** * Create new site. * @param array $fields Site data. * @return \Bitrix\Landing\PublicActionResult */ public static function add($fields) { $result = new PublicActionResult(); $error = new \Bitrix\Landing\Error; $fields = self::clearDisallowFields($fields); $fields['ACTIVE'] = 'N'; $res = SiteCore::add($fields); if ($res->isSuccess()) { $result->setResult($res->getId()); } else { $error->addFromResult($res); $result->setError($error); } return $result; } /** * Update site. * @param int $id Site id. * @param array $fields Site new data. * @return \Bitrix\Landing\PublicActionResult */ public static function update($id, $fields) { $result = new PublicActionResult(); $error = new \Bitrix\Landing\Error; $fields = self::clearDisallowFields($fields); $res = SiteCore::update($id, $fields); if ($res->isSuccess()) { $result->setResult(true); } else { $error->addFromResult($res); $result->setError($error); } return $result; } /** * Delete site. * @param int $id Site id. * @return \Bitrix\Landing\PublicActionResult */ public static function delete($id) { $result = new PublicActionResult(); $error = new \Bitrix\Landing\Error; $res = SiteCore::delete($id); if ($res->isSuccess()) { $result->setResult(true); } else { $error->addFromResult($res); $result->setError($error); } return $result; } /** * Mark entity as deleted. * @param int $id Entity id. * @param boolean $mark Mark. * @return \Bitrix\Landing\PublicActionResult */ public static function markDelete($id, $mark = true) { $result = new PublicActionResult(); $error = new \Bitrix\Landing\Error; if ($mark) { $res = SiteCore::markDelete($id); } else { $res = SiteCore::markUnDelete($id); } if ($res->isSuccess()) { $result->setResult($res->getId()); } else { $error->addFromResult($res); $result->setError($error); } return $result; } /** * Mark entity as undeleted. * @param int $id Entity id. * @return \Bitrix\Landing\PublicActionResult */ public static function markUnDelete($id) { return self::markDelete($id, false); } /** * Make site public. * @param int $id Entity id. * @param boolean $mark Mark. * @return \Bitrix\Landing\PublicActionResult */ public static function publication($id, $mark = true) { $result = new PublicActionResult(); $error = new \Bitrix\Landing\Error; $res = SiteCore::update($id, array( 'ACTIVE' => $mark ? 'Y' : 'N' )); if ($res->isSuccess()) { $result->setResult($res->getId()); // work with pages $res = Landing::getList(array( 'select' => array( 'ID' ), 'filter' => array( 'SITE_ID' => $id ) )); while ($row = $res->fetch()) { $landing = Landing::createInstance($row['ID']); if ($mark) { $landing->publication(); } else { $landing->unpublic(); } } } else { $error->addFromResult($res); $result->setError($error); } return $result; } /** * Mark site unpublic. * @param int $id Entity id. * @return \Bitrix\Landing\PublicActionResult */ public static function unpublic($id) { return self::publication($id, false); } /** * Full export of the site. * @param int $id Site id. * @param array $params Params array. * @return \Bitrix\Landing\PublicActionResult */ public static function fullExport($id, $params = array()) { $result = new PublicActionResult(); $result->setResult( SiteCore::fullExport($id, $params) ); return $result; } /** * Upload file by url or from FILE. * @param int $id Site id. * @param string $picture File url / file array. * @param string $ext File extension. * @param array $params Some file params. * @return \Bitrix\Landing\PublicActionResult */ public static function uploadFile($id, $picture, $ext = false, $params = array()) { static $internal = true; $result = new PublicActionResult(); $result->setResult(false); $error = new \Bitrix\Landing\Error; $res = SiteCore::getList(array( 'filter' => array( 'ID' => $id ) )); if ($res->fetch()) { $file = Manager::savePicture($picture, $ext, $params); if ($file) { File::addToSite($id, $file['ID']); $result->setResult(array( 'id' => $file['ID'], 'src' => $file['SRC'] )); } else { $error->addError( 'FILE_ERROR', Loc::getMessage('LANDING_FILE_ERROR') ); $result->setError($error); } } return $result; } }