Пример #1
0
 public function getDescription()
 {
     // strip HTML and BBcode
     $content = strip_tags($this->body);
     $content = preg_replace('|[[\\/\\!]*?[^\\[\\]]*?]|si', '', $content);
     return Engine_String::strlen($content) > 255 ? Engine_String::substr($content, 0, 255) . '...' : $content;
 }
Пример #2
0
 public static function isNative()
 {
     if (null === self::$_isNative) {
         self::$_isNative = function_exists('mb_strpos');
     }
     return self::$_isNative;
 }
Пример #3
0
 public function getDescription()
 {
     // Remove bbcode
     $desc = strip_tags($this->body);
     $desc = preg_replace('/\\[[^\\[\\]]+?\\]/', '', $desc);
     return Engine_String::substr($desc, 0, 255);
 }
Пример #4
0
 public function indexAction()
 {
     if (Engine_Api::_()->user()->getViewer()->getIdentity()) {
         return $this->_helper->redirector->gotoRoute(array('action' => 'home'), 'user_general', true);
     }
     /*
     		if (isset($_SESSION['skip_registration'])) {
     			return $this -> _helper -> redirector -> gotoRoute(array(), 'user_home', true);
     		}
     */
     // Languages
     $translate = Zend_Registry::get('Zend_Translate');
     $languageList = $translate->getList();
     // Prepare default langauge
     $defaultLanguage = Engine_Api::_()->getApi('settings', 'core')->getSetting('core.locale.locale', 'en');
     if (!in_array($defaultLanguage, $languageList)) {
         if ($defaultLanguage == 'auto' && isset($languageList['en'])) {
             $defaultLanguage = 'en';
         } else {
             $defaultLanguage = null;
         }
     }
     // Prepare language name list
     $languageNameList = array();
     $languageDataList = Zend_Locale_Data::getList(null, 'language');
     $territoryDataList = Zend_Locale_Data::getList(null, 'territory');
     foreach ($languageList as $localeCode) {
         $languageNameList[$localeCode] = Engine_String::ucfirst(Zend_Locale::getTranslation($localeCode, 'language', $localeCode));
         if (empty($languageNameList[$localeCode])) {
             if (false !== strpos($localeCode, '_')) {
                 list($locale, $territory) = explode('_', $localeCode);
             } else {
                 $locale = $localeCode;
                 $territory = null;
             }
             if (isset($territoryDataList[$territory]) && isset($languageDataList[$locale])) {
                 $languageNameList[$localeCode] = $territoryDataList[$territory] . ' ' . $languageDataList[$locale];
             } else {
                 if (isset($territoryDataList[$territory])) {
                     $languageNameList[$localeCode] = $territoryDataList[$territory];
                 } else {
                     if (isset($languageDataList[$locale])) {
                         $languageNameList[$localeCode] = $languageDataList[$locale];
                     } else {
                         continue;
                     }
                 }
             }
         }
     }
     $languageNameList = array_merge(array($defaultLanguage => $defaultLanguage), $languageNameList);
     ksort($languageNameList);
     $this->view->languageNameList = $languageNameList;
     $this->_helper->layout->disableLayout();
     // Render
     //$this -> _helper -> content
     //-> setNoRender()
     //	-> setEnabled();
 }
Пример #5
0
 public function getDescription()
 {
     $firstPost = $this->getFirstPost();
     if (null !== $firstPost) {
         $content = strip_tags($firstPost->body);
         return Engine_String::substr($content, 0, 255);
     }
     return '';
 }
Пример #6
0
 public function getDescription()
 {
     $firstPost = $this->getFirstPost();
     $content = '';
     if (null !== $firstPost) {
         $content = $firstPost->body;
         // strip HTML and BBcode
         $content = strip_tags($content);
         $content = preg_replace('|[[\\/\\!]*?[^\\[\\]]*?]|si', '', $content);
         $content = Engine_String::strlen($content) > 255 ? Engine_String::substr($content, 0, 255) . '...' : $content;
     }
     return $content;
 }
Пример #7
0
 public function getRichContent($view = false, $params = array())
 {
     // if video type is youtube
     if ($this->type == 1) {
         $videoEmbedded = $this->compileYouTube($this->code, $view);
     }
     // if video type is vimeo
     if ($this->type == 2) {
         $videoEmbedded = $this->compileVimeo($this->code, $view);
     }
     // if video type is uploaded
     if ($this->type == 3) {
         $video_location = Engine_Api::_()->storage()->get($this->file_id, $this->getType())->getHref();
         $videoEmbedded = $this->compileFlowPlayer($video_location, $view);
     }
     // $view == false means that this rich content is requested from the activity feed
     if ($view == false) {
         // prepare the duration
         //
         $video_duration = "";
         if ($this->duration) {
             if ($this->duration > 360) {
                 $duration = gmdate("H:i:s", $this->duration);
             } else {
                 $duration = gmdate("i:s", $this->duration);
             }
             if ($duration[0] == '0') {
                 $duration = substr($duration, 1);
             }
             $video_duration = "<span class='video_length'>" . $duration . "</span>";
         }
         // prepare the thumbnaile
         $thumb = Zend_Registry::get('Zend_View')->itemPhoto($this, 'thumb.video.activity');
         if ($this->photo_id) {
             $thumb = Zend_Registry::get('Zend_View')->itemPhoto($this, 'thumb.video.activity');
         } else {
             $thumb = '<img alt="" src="application/modules/Video/externals/images/video.png">';
         }
         $thumb = '<a id="video_thumb_' . $this->video_id . '" style="" href="javascript:void(0);" onclick="javascript:var myElement = $(this);myElement.style.display=\'none\';var next = myElement.getNext(); next.style.display=\'block\';">
           <div class="video_thumb_wrapper">' . $video_duration . $thumb . '</div>
           </a>';
         // prepare title and description
         $title = "<a href='" . $this->getHref($params) . "'>{$this->title}</a>";
         $tmpBody = strip_tags($this->description);
         $description = "<div class='video_desc'>" . (Engine_String::strlen($tmpBody) > 255 ? Engine_String::substr($tmpBody, 0, 255) . '...' : $tmpBody) . "</div>";
         $videoEmbedded = $thumb . '<div id="video_object_' . $this->video_id . '" style="display:none;">' . $videoEmbedded . '</div><div class="video_info">' . $title . $description . '</div>';
     }
     return $videoEmbedded;
 }
 public function indexAction()
 {
     $this->view->navigation = $navigation = Engine_Api::_()->getApi('menus', 'core')->getNavigation('core_footer');
     // Languages
     $translate = Zend_Registry::get('Zend_Translate');
     $languageList = $translate->getList();
     //$currentLocale = Zend_Registry::get('Locale')->__toString();
     // Prepare default langauge
     $defaultLanguage = Engine_Api::_()->getApi('settings', 'core')->getSetting('core.locale.locale', 'en');
     if (!in_array($defaultLanguage, $languageList)) {
         if ($defaultLanguage == 'auto' && isset($languageList['en'])) {
             $defaultLanguage = 'en';
         } else {
             $defaultLanguage = null;
         }
     }
     // Prepare language name list
     $languageNameList = array();
     $languageDataList = Zend_Locale_Data::getList(null, 'language');
     $territoryDataList = Zend_Locale_Data::getList(null, 'territory');
     foreach ($languageList as $localeCode) {
         $languageNameList[$localeCode] = Engine_String::ucfirst(Zend_Locale::getTranslation($localeCode, 'language', $localeCode));
         if (empty($languageNameList[$localeCode])) {
             if (false !== strpos($localeCode, '_')) {
                 list($locale, $territory) = explode('_', $localeCode);
             } else {
                 $locale = $localeCode;
                 $territory = null;
             }
             if (isset($territoryDataList[$territory]) && isset($languageDataList[$locale])) {
                 $languageNameList[$localeCode] = $territoryDataList[$territory] . ' ' . $languageDataList[$locale];
             } else {
                 if (isset($territoryDataList[$territory])) {
                     $languageNameList[$localeCode] = $territoryDataList[$territory];
                 } else {
                     if (isset($languageDataList[$locale])) {
                         $languageNameList[$localeCode] = $languageDataList[$locale];
                     } else {
                         continue;
                     }
                 }
             }
         }
     }
     $languageNameList = array_merge(array($defaultLanguage => $defaultLanguage), $languageNameList);
     $this->view->languageNameList = $languageNameList;
     // Get affiliate code
     $this->view->affiliateCode = Engine_Api::_()->getDbtable('settings', 'core')->core_affiliate_code;
 }
Пример #9
0
 public function getRichContent($view = false, $params = array())
 {
     $playlist = $this->getParent();
     $videoEmbedded = '';
     // $view == false means that this rich content is requested from the activity feed
     if ($view == false) {
         $desc = strip_tags($playlist->description);
         $desc = "<div class='music_desc'>" . (Engine_String::strlen($desc) > 255 ? Engine_String::substr($desc, 0, 255) . '...' : $desc) . "</div>";
         $zview = Zend_Registry::get('Zend_View');
         $zview->playlist = $playlist;
         $zview->songs = array($this);
         $zview->short_player = true;
         $videoEmbedded = $desc . $zview->render('application/modules/Music/views/scripts/_Player.tpl');
     }
     return $videoEmbedded;
 }
Пример #10
0
 public function getEmailElementFieldName()
 {
     if ($this->_emailFieldName !== null) {
         return $this->_emailFieldName;
     }
     if (!$this->isEmailAntispamEnabled()) {
         $this->_emailFieldName = $this->_orgEmailFieldName;
     } else {
         if (isset($_POST[$this->_orgEmailFieldName . '_field'])) {
             $this->_emailFieldName = base64_decode($_POST[$this->_orgEmailFieldName . '_field']);
         } else {
             $this->_emailFieldName = Engine_String::str_random(10);
         }
     }
     return $this->_emailFieldName;
 }
Пример #11
0
 public function getSlug($str = NULL, $maxstrlen = 64)
 {
     $str = $this->getTitle();
     if (strlen($str) > 32) {
         $str = Engine_String::substr($str, 0, 32) . '...';
     }
     $str = preg_replace('/([a-z])([A-Z])/', '$1 $2', $str);
     $str = strtolower($str);
     $str = preg_replace('/[^a-z0-9-]+/i', '-', $str);
     $str = preg_replace('/-+/', '-', $str);
     $str = trim($str, '-');
     if (!$str) {
         $str = '-';
     }
     return $str;
 }
Пример #12
0
 public function getRichContent($view = false, $params = array())
 {
     $videoEmbedded = '';
     // $view == false means that this rich content is requested from the activity feed
     if ($view == false) {
         $desc = strip_tags($this->description);
         $desc = "<div class='music_desc'>" . (Engine_String::strlen($desc) > 255 ? Engine_String::substr($desc, 0, 255) . '...' : $desc) . "</div>";
         $zview = Zend_Registry::get('Zend_View');
         $zview->playlist = $this;
         $zview->songs = $this->getSongs();
         $zview->short_player = true;
         $videoEmbedded = $desc . $zview->render('application/modules/Music/views/scripts/_Player.tpl');
     }
     // hide playlist if in production mode
     if (!count($zview->songs) && 'production' == APPLICATION_ENV) {
         throw new Exception('Empty playlists show not be shown');
     }
     return $videoEmbedded;
 }
Пример #13
0
 protected function _translateRow(array $data, $key = null)
 {
     $url = Engine_String::slug($data['title']);
     $hasUrl = true;
     $i = 0;
     do {
         $existingNameId = $this->getToDb()->select()->from($this->getToTable(), 'page_id')->where('url = ?', $url . ($i ? '-' . $i : ''))->limit(1)->query()->fetchColumn(0);
         if (!$existingNameId) {
             $hasUrl = false;
             $url = $url . ($i ? '-' . $i : '');
         } else {
             $i++;
         }
     } while ($hasUrl);
     // Insert into comments?
     $this->getToDb()->insert($this->getToTable(), array('custom' => 1, 'displayname' => $data['title'], 'title' => $data['title'], 'description' => '', 'keywords' => '', 'url' => $url));
     $pageIdentity = $this->getToDb()->lastInsertId();
     $this->setPageMap($data['id'], $pageIdentity);
     return false;
 }
Пример #14
0
 public function viewMore($string, $moreLength = null, $maxLength = null)
 {
     if (!is_numeric($moreLength) || $moreLength <= 0) {
         $moreLength = $this->_moreLength;
     }
     if (!is_numeric($maxLength) || $maxLength <= 0) {
         $maxLength = $this->_maxLength;
     }
     if (Engine_String::strlen($string) <= $moreLength + $this->_fudgesicles) {
         return $string;
     }
     if (Engine_String::strlen($string) >= $maxLength) {
         $string = Engine_String::substr($string, 0, $maxLength) . $this->view->translate('... &nbsp;');
     }
     //$id = $this->_prefix . '_' . self::$_index++;
     //$class = $this->_prefix;
     $content = '';
     $content .= '<' . $this->_tag . ' class="view_more"' . '>' . Engine_String::substr($string, 0, $moreLength) . $this->view->translate('... &nbsp;') . '<a class="view_more_link" href="javascript:void(0);" onclick="$(this).getParent().getNext().style.display=\'\';$(this).getParent().style.display=\'none\';">' . $this->view->translate('more') . '</a>' . '</' . $this->_tag . '>' . '<' . $this->_tag . ' class="view_more"' . ' style="display:none;"' . '>' . $string . ' &nbsp;' . '<a class="view_less_link" href="javascript:void(0);" onclick="$(this).getParent().getPrevious().style.display=\'\';$(this).getParent().style.display=\'none\';">' . $this->view->translate('less') . '</a>' . '</' . $this->_tag . '>';
     return $content;
 }
Пример #15
0
 public function createAction()
 {
     $this->view->options = array();
     $this->view->form = $form = new Ynfeedback_Form_Admin_Polls_Create();
     $viewer = Engine_Api::_()->user()->getViewer();
     if (!$this->getRequest()->isPost()) {
         return;
     }
     if (!$form->isValid($this->getRequest()->getPost())) {
         return;
     }
     // Check options
     $options = (array) $this->_getParam('optionsArray');
     $options = array_filter(array_map('trim', $options));
     $options = array_slice($options, 0, $max_options);
     $this->view->options = $options;
     if (empty($options) || !is_array($options) || count($options) < 2) {
         return $form->addError('You must provide at least two possible answers.');
     }
     foreach ($options as $index => $option) {
         if (strlen($option) > 80) {
             $options[$index] = Engine_String::substr($option, 0, 80);
         }
     }
     // Process
     $pollTable = Engine_Api::_()->getItemTable('ynfeedback_poll');
     $pollOptionsTable = Engine_Api::_()->getDbtable('options', 'ynfeedback');
     $db = $pollTable->getAdapter();
     $db->beginTransaction();
     try {
         $values = $form->getValues();
         $values['user_id'] = $viewer->getIdentity();
         // Create poll
         $poll = $pollTable->createRow();
         $poll->setFromArray($values);
         $poll->save();
         // Create options
         $censor = new Engine_Filter_Censor();
         $html = new Engine_Filter_Html(array('AllowedTags' => array('a')));
         foreach ($options as $option) {
             $option = $censor->filter($html->filter($option));
             $pollOptionsTable->insert(array('poll_id' => $poll->getIdentity(), 'poll_option' => $option));
         }
         $db->commit();
     } catch (Exception $e) {
         $db->rollback();
         throw $e;
     }
     $this->_forward('success', 'utility', 'core', array('smoothboxClose' => 10, 'parentRefresh' => 10, 'messages' => array('')));
 }
Пример #16
0
 public function truncate($string, $length = 300, $chopString = null)
 {
     if (Engine_String::strlen($string) <= $length) {
         return $string;
     }
     if (null === $chopString) {
         $chopString = '...';
     }
     $chopString = $this->view->translate($chopString);
     return Engine_String::substr($string, 0, $length) . $chopString;
 }
Пример #17
0
 /**
  * @url : http://localhost/pcus907/ynmember/member/share/type/user/id/1/format/smoothbox
  * Sharing member
  * @throws Exception
  */
 public function shareAction()
 {
     if (!$this->_helper->requireUser()->isValid()) {
         return;
     }
     $type = $this->_getParam('type');
     $id = $this->_getParam('id');
     $viewer = Engine_Api::_()->user()->getViewer();
     $this->view->attachment = $attachment = Engine_Api::_()->getItem($type, $id);
     $this->view->form = $form = new Activity_Form_Share();
     if (!$attachment) {
         // tell smoothbox to close
         $this->view->status = true;
         $this->view->message = Zend_Registry::get('Zend_Translate')->_('You cannot share this item because it has been removed.');
         $this->view->smoothboxClose = true;
         return $this->render('deletedItem');
     }
     // hide facebook and twitter option if not logged in
     $facebookTable = Engine_Api::_()->getDbtable('facebook', 'user');
     if (!$facebookTable->isConnected()) {
         $form->removeElement('post_to_facebook');
     }
     $twitterTable = Engine_Api::_()->getDbtable('twitter', 'user');
     if (!$twitterTable->isConnected()) {
         $form->removeElement('post_to_twitter');
     }
     if (!$this->getRequest()->isPost()) {
         return;
     }
     if (!$form->isValid($this->getRequest()->getPost())) {
         return;
     }
     // Process
     $db = Engine_Api::_()->getDbtable('actions', 'activity')->getAdapter();
     $db->beginTransaction();
     try {
         // Get body
         $body = $form->getValue('body');
         // Set Params for Attachment
         $params = array();
         // Add activity
         $api = Engine_Api::_()->getDbtable('actions', 'activity');
         //$action = $api->addActivity($viewer, $viewer, 'post_self', $body);
         $action = $api->addActivity($viewer, $attachment->getOwner(), 'ynmember_share', $body, $params);
         if ($action) {
             $api->attachActivity($action, $attachment);
         }
         $db->commit();
         // Notifications
         $notifyApi = Engine_Api::_()->getDbtable('notifications', 'activity');
         // Add notification for owner of activity (if user and not viewer)
         if ($action->subject_type == 'user' && $attachment->getOwner()->getIdentity() != $viewer->getIdentity()) {
             $notifyApi->addNotification($attachment->getOwner(), $viewer, $action, 'ynmember_shared', array('label' => $this->view->translate('you')));
         }
         // Preprocess attachment parameters
         $publishMessage = html_entity_decode($form->getValue('body'));
         $publishUrl = null;
         $publishName = null;
         $publishDesc = null;
         $publishPicUrl = null;
         // Add attachment
         if ($attachment) {
             $publishUrl = $attachment->getHref();
             $publishName = $attachment->getTitle();
             $publishDesc = $attachment->getDescription();
             if (empty($publishName)) {
                 $publishName = ucwords($attachment->getShortType());
             }
             if ($tmpPicUrl = $attachment->getPhotoUrl()) {
                 $publishPicUrl = $tmpPicUrl;
             }
             // prevents OAuthException: (#100) FBCDN image is not allowed in stream
             if ($publishPicUrl && preg_match('/fbcdn.net$/i', parse_url($publishPicUrl, PHP_URL_HOST))) {
                 $publishPicUrl = null;
             }
         } else {
             $publishUrl = $action->getHref();
         }
         // Check to ensure proto/host
         if ($publishUrl && false === stripos($publishUrl, 'http://') && false === stripos($publishUrl, 'https://')) {
             $publishUrl = 'http://' . $_SERVER['HTTP_HOST'] . $publishUrl;
         }
         if ($publishPicUrl && false === stripos($publishPicUrl, 'http://') && false === stripos($publishPicUrl, 'https://')) {
             $publishPicUrl = 'http://' . $_SERVER['HTTP_HOST'] . $publishPicUrl;
         }
         // Add site title
         if ($publishName) {
             $publishName = Engine_Api::_()->getApi('settings', 'core')->core_general_site_title . ": " . $publishName;
         } else {
             $publishName = Engine_Api::_()->getApi('settings', 'core')->core_general_site_title;
         }
         // Publish to facebook, if checked & enabled
         if ($this->_getParam('post_to_facebook', false) && 'publish' == Engine_Api::_()->getApi('settings', 'core')->core_facebook_enable) {
             try {
                 $facebookTable = Engine_Api::_()->getDbtable('facebook', 'user');
                 $facebookApi = $facebook = $facebookTable->getApi();
                 $fb_uid = $facebookTable->find($viewer->getIdentity())->current();
                 if ($fb_uid && $fb_uid->facebook_uid && $facebookApi && $facebookApi->getUser() && $facebookApi->getUser() == $fb_uid->facebook_uid) {
                     $fb_data = array('message' => $publishMessage);
                     if ($publishUrl) {
                         $fb_data['link'] = $publishUrl;
                     }
                     if ($publishName) {
                         $fb_data['name'] = $publishName;
                     }
                     if ($publishDesc) {
                         $fb_data['description'] = $publishDesc;
                     }
                     if ($publishPicUrl) {
                         $fb_data['picture'] = $publishPicUrl;
                     }
                     $res = $facebookApi->api('/me/feed', 'POST', $fb_data);
                 }
             } catch (Exception $e) {
                 // Silence
             }
         }
         // end Facebook
         // Publish to twitter, if checked & enabled
         if ($this->_getParam('post_to_twitter', false) && 'publish' == Engine_Api::_()->getApi('settings', 'core')->core_twitter_enable) {
             try {
                 $twitterTable = Engine_Api::_()->getDbtable('twitter', 'user');
                 if ($twitterTable->isConnected()) {
                     // Get attachment info
                     $title = $attachment->getTitle();
                     $url = $attachment->getHref();
                     $picUrl = $attachment->getPhotoUrl();
                     // Check stuff
                     if ($url && false === stripos($url, 'http://')) {
                         $url = 'http://' . $_SERVER['HTTP_HOST'] . $url;
                     }
                     if ($picUrl && false === stripos($picUrl, 'http://')) {
                         $picUrl = 'http://' . $_SERVER['HTTP_HOST'] . $picUrl;
                     }
                     // Try to keep full message
                     // @todo url shortener?
                     $message = html_entity_decode($form->getValue('body'));
                     if (strlen($message) + strlen($title) + strlen($url) + strlen($picUrl) + 9 <= 140) {
                         if ($title) {
                             $message .= ' - ' . $title;
                         }
                         if ($url) {
                             $message .= ' - ' . $url;
                         }
                         if ($picUrl) {
                             $message .= ' - ' . $picUrl;
                         }
                     } else {
                         if (strlen($message) + strlen($title) + strlen($url) + 6 <= 140) {
                             if ($title) {
                                 $message .= ' - ' . $title;
                             }
                             if ($url) {
                                 $message .= ' - ' . $url;
                             }
                         } else {
                             if (strlen($title) > 24) {
                                 $title = Engine_String::substr($title, 0, 21) . '...';
                             }
                             // Sigh truncate I guess
                             if (strlen($message) + strlen($title) + strlen($url) + 9 > 140) {
                                 $message = Engine_String::substr($message, 0, 140 - (strlen($title) + strlen($url) + 9)) - 3 . '...';
                             }
                             if ($title) {
                                 $message .= ' - ' . $title;
                             }
                             if ($url) {
                                 $message .= ' - ' . $url;
                             }
                         }
                     }
                     $twitter = $twitterTable->getApi();
                     $twitter->statuses->update($message);
                 }
             } catch (Exception $e) {
                 // Silence
             }
         }
         // Publish to janrain
         if ('publish' == Engine_Api::_()->getApi('settings', 'core')->core_janrain_enable) {
             try {
                 $session = new Zend_Session_Namespace('JanrainActivity');
                 $session->unsetAll();
                 $session->message = $publishMessage;
                 $session->url = $publishUrl ? $publishUrl : 'http://' . $_SERVER['HTTP_HOST'] . _ENGINE_R_BASE;
                 $session->name = $publishName;
                 $session->desc = $publishDesc;
                 $session->picture = $publishPicUrl;
             } catch (Exception $e) {
                 // Silence
             }
         }
     } catch (Exception $e) {
         $db->rollBack();
         throw $e;
         // This should be caught by error handler
     }
     // Disable layout and viewrenderer
     //$this -> _helper -> layout -> disableLayout();
     return $this->_forward('success', 'utility', 'core', array('smoothboxClose' => true, 'parentRefresh' => false, 'layout' => 'default-simple', 'messages' => array(Zend_Registry::get('Zend_Translate')->_('Shared This Member Successfully!'))));
     exit;
 }
Пример #18
0
 public function indexAction()
 {
     if (YNRESPONSIVE_ACTIVE != 'ynresponsive-event') {
         return $this->setNoRender(true);
     }
     $this->view->navigation = $navigation = Engine_Api::_()->getApi('menus', 'core')->getNavigation('core_footer');
     // Get affiliate code
     $this->view->affiliateCode = Engine_Api::_()->getDbtable('settings', 'core')->core_affiliate_code;
     // Languages
     $translate = Zend_Registry::get('Zend_Translate');
     $languageList = $translate->getList();
     // Prepare default langauge
     $defaultLanguage = Engine_Api::_()->getApi('settings', 'core')->getSetting('core.locale.locale', 'en');
     if (!in_array($defaultLanguage, $languageList)) {
         if ($defaultLanguage == 'auto' && isset($languageList['en'])) {
             $defaultLanguage = 'en';
         } else {
             $defaultLanguage = null;
         }
     }
     $ch = curl_init('ipinfo.io/country');
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     $country = substr(curl_exec($ch), 0, 2);
     curl_close($ch);
     // check mapping
     $table = Engine_Api::_()->getDbTable('langcountrymappings', 'core');
     $select = $table->select()->where('country_code = ?', $country)->limit(1);
     $countryLanguage = '';
     if ($row = $table->fetchRow($select)) {
         $countryLanguage = $row->language_code;
     }
     $this->view->countryLanguage = $countryLanguage;
     // Prepare language name list
     $languageNameList = array();
     $languageDataList = Zend_Locale_Data::getList(null, 'language');
     $territoryDataList = Zend_Locale_Data::getList(null, 'territory');
     foreach ($languageList as $localeCode) {
         $languageNameList[$localeCode] = Engine_String::ucfirst(Zend_Locale::getTranslation($localeCode, 'language', $localeCode));
         if (empty($languageNameList[$localeCode])) {
             if (false !== strpos($localeCode, '_')) {
                 list($locale, $territory) = explode('_', $localeCode);
             } else {
                 $locale = $localeCode;
                 $territory = null;
             }
             if (isset($territoryDataList[$territory]) && isset($languageDataList[$locale])) {
                 $languageNameList[$localeCode] = $territoryDataList[$territory] . ' ' . $languageDataList[$locale];
             } else {
                 if (isset($territoryDataList[$territory])) {
                     $languageNameList[$localeCode] = $territoryDataList[$territory];
                 } else {
                     if (isset($languageDataList[$locale])) {
                         $languageNameList[$localeCode] = $languageDataList[$locale];
                     } else {
                         continue;
                     }
                 }
             }
         }
     }
     $languageNameList = array_merge(array($defaultLanguage => $defaultLanguage), $languageNameList);
     ksort($languageNameList);
     $this->view->languageNameList = $languageNameList;
 }
Пример #19
0
 public function getDescription()
 {
     $firstPost = $this->getFirstPost();
     return null !== $firstPost ? Engine_String::substr($firstPost->body, 0, 255) : '';
 }
Пример #20
0
	public function getRichContent($view = false, $params = array())
	{
		$session = new Zend_Session_Namespace('mobile');
		$mobile = $session -> mobile;
		$count_video = 0;
		if (isset($session -> count))
			$count_video = ++$session -> count;
		$paramsForCompile = array_merge(array(
			'video_id' => $this -> video_id,
			'code' => $this -> code,
			'view' => $view,
			'mobile' => $mobile,
			'duration' => $this -> duration,
			'count_video' => $count_video
		), $params);
		if ($this -> type == Ynvideo_Plugin_Factory::getUploadedType())
		{
			$responsive_mobile = FALSE;
			if (defined('YNRESPONSIVE'))
			{
				$responsive_mobile = Engine_Api::_() -> ynresponsive1() -> isMobile();
			}
			if (!empty($this -> file1_id))
			{
				$storage_file = Engine_Api::_() -> getItem('storage_file', $this -> file_id);
				if ($session -> mobile || $responsive_mobile)
				{
					$storage_file = Engine_Api::_() -> getItem('storage_file', $this -> file1_id);
				}
				if ($storage_file)
				{
					$paramsForCompile['location1'] = $storage_file -> getHref();
					$paramsForCompile['location'] = '';
				}
			}
			else 
			{
				$storage_file = Engine_Api::_() -> getItem('storage_file', $this -> file_id);
				if ($storage_file)
				{
					$paramsForCompile['location'] = $storage_file -> getHref();
					$paramsForCompile['location1'] = '';
				}
			}
		}
		else
		if ($this -> type == Ynvideo_Plugin_Factory::getVideoURLType())
		{
			$paramsForCompile['location'] = $this -> code;
		}
        $videoEmbedded = Ynvideo_Plugin_Factory::getPlugin((int)$this -> type) -> compileVideo($paramsForCompile);

		// $view == false means that this rich content is requested from the activity feed
		if ($view == false)
		{
			$video_duration = "";
			if ($this -> duration)
			{
				if ($this -> duration >= 3600)
				{
					$duration = gmdate("H:i:s", $this -> duration);
				}
				else
				{
					$duration = gmdate("i:s", $this -> duration);
				}
				$video_duration = "<span class='video_length'>" . $duration . "</span>";
			}

			// prepare the thumbnail
			$thumb = Zend_Registry::get('Zend_View') -> itemPhoto($this, 'thumb.large');
			if ($this -> photo_id)
			{
				$thumb = Zend_Registry::get('Zend_View') -> itemPhoto($this, 'thumb.large');
			}
			else
			{
				$thumb = '<img alt="" src="' . Zend_Registry::get('StaticBaseUrl') . 'application/modules/Video/externals/images/video.png">';
			}

			if (!$mobile)
			{
				$thumb = '<a id="video_thumb_' . $this -> video_id . $count_video . '" style="" href="javascript:void(0);" onclick="javascript:var myElement = $(this);myElement.style.display=\'none\';var next = myElement.getNext(); next.style.display=\'block\';">
                  <div class="video_thumb_wrapper">' . $video_duration . $thumb . '</div>
                  </a>';
			}
			else
			{
				$thumb = '<a id="video_thumb_' . $this -> video_id . $count_video . '" class="video_thumb" href="javascript:void(0);">
                  <div class="video_thumb_wrapper">' . $video_duration . $thumb . '</div>
                  </a>';
			}

			// prepare title and description
			$title = "<a class='smoothbox' href='" . $this -> getPopupHref($params) . "'>". $this-> getTitle()."</a>";
			$tmpBody = strip_tags($this -> description);
			$description = "<div class='video_desc'>" . (Engine_String::strlen($tmpBody) > 255 ? Engine_String::substr($tmpBody, 0, 255) . '...' : $tmpBody) . "</div>";

			$class_html5 = "";
			if ($this -> type == Ynvideo_Plugin_Factory::getVideoURLType() || $this -> type == Ynvideo_Plugin_Factory::getUploadedType())
			{
				$class_html5 = 'html5_player';
			}
			$totalLike = Engine_Api::_() -> getDbtable('likes', 'yncomment') -> likes($this) -> getLikeCount();
          	$totalDislike = Engine_Api::_() -> getDbtable('dislikes', 'yncomment') -> getDislikeCount($this);
			
			$videoEmbedded = '<div class="video_info">' .$title . $description . '</div>'.$thumb . '<div id="video_object_' . $this -> video_id . '" class="video_object ' . $class_html5 . '">' . $videoEmbedded . '</div>';
			
			$view = Zend_Registry::get('Zend_View');  
			$videoEmbedded .= '<div class="tfvideo_statistics">
          	<span>'. $view->translate(array('%s like', '%s likes', $totalLike), $totalLike). '</span>
          	<span>'. $view->translate(array('%s dislike', '%s dislikes', $totalDislike), $totalDislike). '</span>
          	<span>'. $view->translate(array('%s comment', '%s comments', $this -> comment_count), $this -> comment_count).'</span>
      		</div>';
		}

		return $videoEmbedded;
	}
Пример #21
0
 protected function _insertSearch($resourceType, $resourceId, $searchData = array())
 {
     $defaultData = array('type' => $resourceType, 'id' => $resourceId, 'title' => '', 'description' => '', 'keywords' => '', 'hidden' => '');
     $searchData = array_merge($defaultData, array_filter($searchData));
     if ($searchData['description']) {
         $description = strip_tags($searchData['description']);
         $searchData['description'] = Engine_String::strlen($description) > 255 ? Engine_String::substr($description, 0, 252) . '...' : $description;
     }
     try {
         $this->getToDb()->insert('engine4_core_search', $searchData);
     } catch (Exception $e) {
         // ignore exception
     }
 }
Пример #22
0
 public function getDescription()
 {
     // Remove bbcode
     $desc = strip_tags($this->body);
     return Engine_String::substr($desc, 0, 255);
 }
Пример #23
0
 public function getDescription()
 {
     $content = strip_tags($this->description);
     return Engine_String::substr($content, 0, 255);
 }
Пример #24
0
 public function getDescription()
 {
     // @todo decide how we want to handle multibyte string functions
     $tmpBody = strip_tags($this->description);
     return Engine_String::strlen($tmpBody) > 255 ? Engine_String::substr($tmpBody, 0, 255) . '...' : $tmpBody;
 }
Пример #25
0
 public function getDescription()
 {
     return Engine_String::substr($this->body, 0, 255);
 }
Пример #26
0
 /**
  * Gets a url slug for this item, based on it's title
  *
  * @return string The slug
  */
 public function getSlug($str = null)
 {
     if (null === $str) {
         $str = $this->getTitle();
     }
     if (strlen($str) > 64) {
         $str = Engine_String::substr($str, 0, 64) . '...';
     }
     $search = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ẩ', 'Ầ', 'Ẫ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'ạ', 'à', 'á', 'ả', 'â', 'ậ', 'ã', 'ä', 'å', 'ầ', 'ẫ', 'æ', 'ắ', 'ằ', 'ẩ', 'ấ', 'ặ', 'ç', 'ẹ', 'è', 'é', 'ê', 'ế', 'ề', 'ệ', 'ë', 'ẻ', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ổ', 'ô', 'õ', 'ö', 'ø', 'ộ', 'ồ', 'ờ', 'ơ', 'ở', 'ợ', 'ỏ', 'ỡ', 'ù', 'ú', 'ứ', 'û', 'ü', 'ừ', 'ý', 'ÿ', 'Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'ẽ', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'ể', 'ễ', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'ị', 'Ī', 'ī', 'Ĭ', 'ĭ', 'Į', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'ố', 'ỗ', 'ớ', 'Œ', 'œ', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', 'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'ủ', 'Ų', 'ų', 'ử', 'ụ', 'ự', 'ừ', 'ứ', 'ữ', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'ỷ', 'ỳ', 'Ÿ', 'Ź', 'ź', 'Ż', 'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'ọ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'ứ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', 'ǿ');
     $replace = array('A', 'A', 'A', 'A', 'A', 'A', 'AE', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'e', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'o', 'o', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'u', 'U', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'W', 'w', 'Y', 'y', 'y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o');
     $str = str_replace($search, $replace, $str);
     $str = preg_replace('/([a-z])([A-Z])/', '$1 $2', $str);
     $str = strtolower($str);
     $str = preg_replace('/[^a-z0-9-]+/i', '-', $str);
     $str = preg_replace('/-+/', '-', $str);
     $str = trim($str, '-');
     if (!$str) {
         $str = '-';
     }
     return $str;
 }
 public function filter($value)
 {
     return Engine_String::substr($value, 0, $this->_maxLength);
 }
Пример #28
0
 public function createAction()
 {
     if (!$this->_helper->requireUser()->isValid()) {
         return;
     }
     if (!$this->_helper->requireAuth()->setAuthParams('poll', null, 'create')->isValid()) {
         return;
     }
     // Get navigation
     $this->view->navigation = $navigation = Engine_Api::_()->getApi('menus', 'core')->getNavigation('poll_main');
     $this->view->options = array();
     $this->view->maxOptions = $max_options = Engine_Api::_()->getApi('settings', 'core')->getSetting('poll.maxoptions', 15);
     $this->view->form = $form = new Poll_Form_Create();
     $viewer = Engine_Api::_()->user()->getViewer();
     if (!$this->getRequest()->isPost()) {
         return;
     }
     if (!$form->isValid($this->getRequest()->getPost())) {
         return;
     }
     // Check options
     $options = (array) $this->_getParam('optionsArray');
     $options = array_filter(array_map('trim', $options));
     $options = array_slice($options, 0, $max_options);
     $this->view->options = $options;
     if (empty($options) || !is_array($options) || count($options) < 2) {
         return $form->addError('You must provide at least two possible answers.');
     }
     foreach ($options as $index => $option) {
         if (strlen($option) > 80) {
             $options[$index] = Engine_String::substr($option, 0, 80);
         }
     }
     // Process
     $pollTable = Engine_Api::_()->getItemTable('poll');
     $pollOptionsTable = Engine_Api::_()->poll()->api()->getDbtable('options', 'poll');
     $db = $pollTable->getAdapter();
     $db->beginTransaction();
     try {
         $values = $form->getValues();
         $values['user_id'] = $viewer->getIdentity();
         // Create poll
         $poll = $pollTable->createRow();
         $poll->setFromArray($values);
         $poll->save();
         // Create options
         $censor = new Engine_Filter_Censor();
         foreach ($options as $option) {
             $pollOptionsTable->insert(array('poll_id' => $poll->getIdentity(), 'poll_option' => $censor->filter($option)));
         }
         // Privacy
         $auth = Engine_Api::_()->authorization()->context;
         $roles = array('owner', 'owner_member', 'owner_member_member', 'owner_network', 'registered', 'everyone');
         if (empty($values['auth_view'])) {
             $values['auth_view'] = array('everyone');
         }
         if (empty($values['auth_comment'])) {
             $values['auth_comment'] = array('everyone');
         }
         $viewMax = array_search($values['auth_view'], $roles);
         $commentMax = array_search($values['auth_comment'], $roles);
         foreach ($roles as $i => $role) {
             $auth->setAllowed($poll, $role, 'view', $i <= $viewMax);
             $auth->setAllowed($poll, $role, 'comment', $i <= $commentMax);
         }
         $auth->setAllowed($poll, 'registered', 'vote', true);
         $db->commit();
     } catch (Exception $e) {
         $db->rollback();
         throw $e;
     }
     // Process activity
     $db = Engine_Api::_()->getDbTable('polls', 'poll')->getAdapter();
     $db->beginTransaction();
     try {
         $action = Engine_Api::_()->getDbtable('actions', 'activity')->addActivity(Engine_Api::_()->user()->getViewer(), $poll, 'poll_new');
         if ($action) {
             Engine_Api::_()->getDbtable('actions', 'activity')->attachActivity($action, $poll);
         }
         $db->commit();
     } catch (Exception $e) {
         $db->rollback();
         throw $e;
     }
     // Redirect
     return $this->_helper->redirector->gotoUrl($poll->getHref(), array('prependBase' => false));
 }
Пример #29
0
    public function viewMore($string, $moreLength = null, $maxLength = null, $lessLength = null, $nl2br = true)
    {
        if (!is_numeric($moreLength) || $moreLength <= 0) {
            $moreLength = $this->_moreLength;
        }
        if (!is_numeric($maxLength) || $maxLength <= 0) {
            $maxLength = $this->_maxLength;
        }
        if (!is_numeric($lessLength) || $lessLength <= 0) {
            $lessLength = $this->_lessLength;
        }
        // If using line breaks, ensure that there are not too many line breaks
        if ($nl2br) {
            $string = trim(preg_replace('/(\\r\\n|\\n\\r|\\r|\\n)/', "\n", $string));
            if (($c = substr_count($string, "\n")) > $this->_maxLineBreaks) {
                $pos = 0;
                for ($i = 0; $i < $this->_maxLineBreaks; $i++) {
                    $pos = strpos($string, "\n", $pos + 1);
                }
                if ($pos <= 0 || !is_int($pos)) {
                    $pos = null;
                }
                if ($pos && $pos < $moreLength) {
                    $moreLength = $pos;
                }
            }
        }
        // If length is less than max len, just return
        $strLen = Engine_String::strlen($string);
        if ($strLen <= $moreLength + $this->_fudgesicles) {
            if ($nl2br) {
                return nl2br($string);
            } else {
                return $string;
            }
        }
        // Otherwise truncate
        if ($strLen >= $maxLength) {
            $strLen = $maxLength;
            $string = Engine_String::substr($string, 0, $maxLength) . $this->view->translate('... &nbsp;');
        }
        $shortText = Engine_String::substr($string, 0, $moreLength);
        $fullText = $string;
        // Do nl2br
        if ($nl2br) {
            $shortText = nl2br($shortText);
            $fullText = nl2br($fullText);
        }
        $onclick = <<<EOF
var me = \$(this).getParent(), other = \$(this).getParent().getNext(), fn = function() {
  me.style.display = 'none';
  other.style.display = '';
};
fn();
setTimeout(fn, 0);
EOF;
        $content = '<' . $this->_tag . ' class="view_more"' . '>' . $shortText . $this->view->translate('... &nbsp;') . '<a class="view_more_link" href="javascript:void(0);" onclick="' . htmlspecialchars($onclick) . '">' . $this->view->translate('more') . '</a>' . '</' . $this->_tag . '>' . '<' . $this->_tag . ' class="view_more"' . ' style="display:none;"' . '>' . $fullText . ' &nbsp;';
        if ($strLen >= $lessLength) {
            $onclick = <<<EOF
var me = \$(this).getParent(), other = \$(this).getParent().getPrevious(), fn = function() {
  me.style.display = 'none';
  other.style.display = '';
};
fn();
setTimeout(fn, 0);
EOF;
            $content .= '<a class="view_less_link" href="javascript:void(0);" onclick="' . htmlspecialchars($onclick) . '">' . $this->view->translate('less') . '</a>';
        }
        $content .= '</' . $this->_tag . '>';
        return $content;
    }
Пример #30
0
 public function init()
 {
     $this->setTitle('Create Tour Guide Step')->setDescription('Please compose your new tour guide item below.')->setAttrib('id', 'touritem_create');
     // $model = new Yntour_Model_DbTable_Tours;
     // $select = $model -> select()->from($model->info('name'),array('tour_id', 'label'=>new Zend_Db_Expr('substring(title,1,30)')));
     // $options = $model->getAdapter()->fetchPairs($select);
     //
     // $this -> addElement('Select', 'tour_id', array(
     // 'required' => true,
     // 'label' => 'Tour guide',
     // 'multiOptions' => $options
     // ));
     // Add title
     // $this -> addElement('Text', 'title', array(
     // 'label' => 'Title',
     // 'required' => true,
     // 'allowEmpty' => false,
     // ));
     // Add title
     $this->addElement('Text', 'priority', array('label' => 'Ordering', 'validators' => array('Int'), 'required' => true, 'allowEmpty' => false));
     $this->addElement('Text', 'time_delay', array('label' => 'Time delay in second(s)', 'description' => '', 'validators' => array('Int'), 'value' => '6', 'required' => true, 'allowEmpty' => false));
     $this->addElement('Text', 'width', array('label' => 'Width (px)', 'value' => '20', 'required' => true, 'allowEmpty' => false));
     $pos = array('top' => 'top', 'right' => 'right', 'bottom' => 'bottom', 'left' => 'left');
     $this->addElement('Select', 'position', array('label' => 'Position', 'placeholder' => 'position', 'multiOptions' => $pos, 'filters' => array(new Engine_Filter_Censor())));
     $this->addElement('Text', 'left_position', array('label' => 'Left Position (px)', 'validators' => array('Int'), 'value' => '20', 'required' => true, 'allowEmpty' => false));
     $this->addElement('Text', 'top_position', array('label' => 'Top Position (px)', 'validators' => array('Int'), 'value' => '20', 'required' => true, 'allowEmpty' => false));
     // $this -> addElement('Text', 'width', array(
     // 'label' => 'Width',
     // 'required' => true,
     // 'value'=>'auto',
     // 'description'=>'etc: 300px, 300pt, default is auto',
     // 'allowEmpty' => false,
     // ));
     // Add title
     // $this -> addElement('Text', 'path', array(
     // 'label' => 'Path',
     // 'required' => true,
     // 'allowEmpty' => false,
     // ));
     // $this->addElement('Radio','enabled',array(
     // 'label'=>'Enabled',
     // 'value'=>1,
     // 'multiOptions'=>array(
     // '0'=>'Disable',
     // '1'=>'Enable',
     // ),
     // ));
     //get all languages
     // Languages
     $translate = Zend_Registry::get('Zend_Translate');
     $languageList = $translate->getList();
     // Prepare language name list
     $languageNameList = array();
     $languageDataList = Zend_Locale_Data::getList(null, 'language');
     $territoryDataList = Zend_Locale_Data::getList(null, 'territory');
     foreach ($languageList as $localeCode) {
         $languageNameList[$localeCode] = Engine_String::ucfirst(Zend_Locale::getTranslation($localeCode, 'language', $localeCode));
         if (empty($languageNameList[$localeCode])) {
             if (false !== strpos($localeCode, '_')) {
                 list($locale, $territory) = explode('_', $localeCode);
             } else {
                 $locale = $localeCode;
                 $territory = null;
             }
             if (isset($territoryDataList[$territory]) && isset($languageDataList[$locale])) {
                 $languageNameList[$localeCode] = $territoryDataList[$territory] . ' ' . $languageDataList[$locale];
             } else {
                 if (isset($territoryDataList[$territory])) {
                     $languageNameList[$localeCode] = $territoryDataList[$territory];
                 } else {
                     if (isset($languageDataList[$locale])) {
                         $languageNameList[$localeCode] = $languageDataList[$locale];
                     } else {
                         continue;
                     }
                 }
             }
         }
         $this->addElement('Textarea', 'body_' . $localeCode, array('label' => 'Body (' . $languageDataList[$localeCode] . ')', 'required' => true, 'allowEmpty' => false));
     }
     //end
     // Buttons
     $this->addElement('Button', 'submit', array('label' => 'Submit', 'type' => 'submit', 'ignore' => true, 'decorators' => array('ViewHelper')));
     $this->addElement('Cancel', 'cancel', array('label' => 'cancel', 'ignore' => true, 'link' => true, 'href' => Zend_Controller_Front::getInstance()->getRouter()->assemble(array('module' => 'yntour', 'controller' => 'manage', 'action' => 'item', 'id' => $this->getTourId()), 'admin_default', true), 'prependText' => Zend_Registry::get('Zend_Translate')->_(' or '), 'decorators' => array('ViewHelper')));
     $this->addDisplayGroup(array('submit', 'cancel'), 'buttons');
 }