Example #1
0
 public function formatted_body()
 {
     $parser = new Michelf\Markdown();
     $parser->no_markup = true;
     $html = $parser->transform($this->body);
     if (preg_match_all('~(<p>&lt;tn>.+?&lt;/tn></p>)~s', $html, $ms)) {
         foreach ($ms[1] as $m) {
             $html = str_replace($m, nl2br('<p class="tn">' . substr($m, 10, -12) . '</p>'), $html);
         }
     }
     return $html;
 }
Example #2
0
 public function toFormattedText($text)
 {
     $autoloader = realpath(dirname(__FILE__) . '/../vendor/autoload.php');
     if (file_exists('Markdown.php')) {
         require_once 'Markdown.php';
     } else {
         if (file_exists($autoloader)) {
             require_once $autoloader;
         }
     }
     $md = new \Michelf\Markdown();
     $md->empty_element_suffix = '>';
     return $md->transform(trim($text));
 }
 /**
  * Display help.
  * @param $args array
  * @param $request PKPRequest
  */
 function index($args, $request)
 {
     require_once 'lib/pkp/lib/vendor/michelf/php-markdown/Michelf/Markdown.inc.php';
     $path = 'docs/manual/';
     $filename = join('/', $request->getRequestedArgs());
     // If a hash (anchor) was specified, discard it -- we don't need it here.
     if ($hashIndex = strpos($filename, '#')) {
         $hash = substr($filename, $hashIndex + 1);
         $filename = substr($filename, 0, $hashIndex);
     } else {
         $hash = null;
     }
     $language = AppLocale::getIso1FromLocale(AppLocale::getLocale());
     if (!file_exists($path . $language)) {
         $language = 'en';
     }
     // Default
     if (!$filename || !preg_match('#^([[a-zA-Z0-9_-]+/)+[a-zA-Z0-9_-]+\\.\\w+$#', $filename) || !file_exists($path . $filename)) {
         $request->redirect(null, null, null, array($language, 'SUMMARY.md'));
     }
     // Use the summary document to find next/previous links.
     // (Yes, we're grepping markdown outside the parser, but this is much faster.)
     $previousLink = $nextLink = null;
     if (preg_match_all('/\\(([^)]+\\.md)\\)/sm', file_get_contents($path . $language . '/SUMMARY.md'), $matches)) {
         $matches = $matches[1];
         if (($i = array_search(substr($filename, strpos($filename, '/') + 1), $matches)) !== false) {
             if ($i > 0) {
                 $previousLink = $matches[$i - 1];
             }
             if ($i < count($matches) - 1) {
                 $nextLink = $matches[$i + 1];
             }
         }
     }
     // Use a URL filter to prepend the current path to relative URLs.
     $parser = new \Michelf\Markdown();
     $parser->url_filter_func = function ($url) use($filename) {
         return dirname($filename) . '/' . $url;
     };
     return new JSONMessage(true, array('content' => $parser->transform(file_get_contents($path . $filename)), 'previous' => $previousLink, 'next' => $nextLink));
 }
Example #4
0
 public function connect(Application $app)
 {
     $controllers = $app['controllers_factory'];
     // *******
     // ** Homepage
     // *******
     $controllers->get('/', function () use($app) {
         $app['session']->set('menu', 'home');
         $drinks = $app['drinks']->findNext(10);
         return $app['twig']->render('drink/index.html.twig', array('drinks' => $drinks));
     })->bind('_homepagedrinks');
     // *******
     // *******
     // ** List
     // *******
     $controllers->get('list.{format}', function ($format) use($app) {
         $app['session']->set('menu', 'listdrinks');
         //TODO pagination
         $drinks = $app['drinks']->findAll(25);
         return $app['twig']->render('drink/list.' . $format . '.twig', array('drinks' => $drinks));
     })->assert('format', 'html|atom')->bind('_listdrinks');
     // *******
     // *******
     // ** Add a drink
     // *******
     $controllers->match('new.html', function (Request $request) use($app) {
         if (!$app['session']->has('member')) {
             $app['session']->getFlashBag()->add('error', 'Vous devez être authentifié pour créer un événement.');
             return $app->redirect($app['url_generator']->generate('_signinmember'));
         }
         $app['session']->set('menu', 'newdrink');
         $form = $app['form.factory']->create('drink');
         if ('POST' === $request->getMethod()) {
             $form->bind($request->request->get('drink'));
             if ($form->isValid()) {
                 $data = $form->getData();
                 $member = $app['session']->get('member');
                 $data['member_id'] = $member['id'];
                 unset($data['captcha']);
                 try {
                     $app['drinks']->insert($data);
                 } catch (\Exception $e) {
                     $app->abort(500, 'Impossible de créer l\'événement. Merci de réessayer plus tard.');
                 }
                 $app['session']->getFlashBag()->add('success', 'L\'événement a été créé avec succès.');
                 return $app->redirect($app['url_generator']->generate('_showdrink', array('id' => $app['drinks']->lastInsertId())));
             }
         }
         return $app['twig']->render('drink/new.html.twig', array('form' => $form->createView()));
     })->bind('_newdrink')->method('GET|POST');
     // *******
     // *******
     // ** Edit a drink
     // *******
     $controllers->get('{id}/edit.html', function (Request $request, $id) use($app) {
         $app['session']->set('menu', null);
         $drink = $app['drinks']->find($id);
         if (!$drink) {
             $app->abort(404, 'Cet événement n\'existe pas.');
         }
         $now = new \Datetime('now');
         $dDrink = \Datetime::createFromFormat('Y-m-d H:i:s', $drink['day'] . ' ' . $drink['hour']);
         if ($now > $dDrink) {
             $app['session']->getFlashBag()->add('error', 'L\'événement est terminé.');
             return $app->redirect($app['url_generator']->generate('_showdrink', array('id' => $id)));
         }
         $member = $app['session']->get('member');
         if (!$member) {
             $app['session']->getFlashBag()->add('error', 'Vous devez être authentifié pour pouvoir éditer cet événement.');
             return $app->redirect($app['url_generator']->generate('_signinmember'));
         }
         if ($drink['member_id'] != $member['id']) {
             $app['session']->getFlashBag()->add('error', 'Vous devez être organisateur de cet événement pour pouvoir l\'éditer.');
             return $app->redirect($app['url_generator']->generate('_showdrink', array('id' => $id)));
         }
         $form = $app['form.factory']->create('drink', $drink);
         if ('POST' === $request->getMethod()) {
             $form->bind($request->request->get('drink'));
             if ($form->isValid()) {
                 $data = $form->getData();
                 $data['member_id'] = $member['id'];
                 unset($data['captcha']);
                 try {
                     $app['drinks']->update($data, array('id' => $drink['id']));
                 } catch (\Exception $e) {
                     $app->abort(500, 'Impossible de modifier l\'événement. Merci de réessayer plus tard.');
                 }
                 $app['session']->getFlashBag()->add('success', 'L\'événement a été modifié avec succès.');
                 return $app->redirect($app['url_generator']->generate('_showdrink', array('id' => $id)));
             } else {
                 $app['session']->getFlashBag()->add('error', 'Il y a des erreurs dans le formulaire.');
                 return $app->redirect($app['url_generator']->generate('_editdrink', array('id' => $id)));
             }
         }
         return $app['twig']->render('drink/edit.html.twig', array('form' => $form->createView(), 'id' => $id));
     })->bind('_editdrink')->method('GET|POST');
     // *******
     // *******
     // ** See a drink
     // *******
     $controllers->get('{id}/view.html/{email}/{token}', function ($id) use($app) {
         $app['session']->set('menu', null);
         $drink = $app['drinks']->find($id);
         if (!$drink) {
             $app->abort(404, 'Cet événement n\'existe pas.');
         }
         $member = $app['session']->get('member');
         $hideSpam = !($member && $member['id'] == $drink['member_id']);
         $participants = $app['drink_participants']->findByDrinkId($drink['id']);
         $presences = $app['drink_participants']->findAllPresencesInAssociativeArray();
         $comments = $app['drink_comments']->findByDrinkId($drink['id'], $hideSpam);
         $textProcessor = new \Michelf\Markdown();
         $textProcessor->no_markup = true;
         $textProcessor->no_entities = true;
         foreach ($comments as &$comment) {
             $comment['content'] = str_replace('href="javascript:', 'href="', substr($textProcessor->transform($comment['content']), 3, -5));
         }
         $user = $app['session']->get('user');
         // First, deal with participation
         $isParticipating = false;
         $data = array();
         if (null !== $user) {
             $data = array('user' => $user);
             if (false !== ($participation = $app['drink_participants']->findOne($id, $user['id']))) {
                 $data += $participation;
                 $isParticipating = true;
             }
         }
         // Avoid transformer error
         $data['reminder'] = (bool) array_key_exists('reminder', $data) ? (bool) $data['reminder'] : false;
         $participationForm = $app['form.factory']->create('drink_participate', $data);
         // If member is authenticated, prefill form.
         $data = array();
         if (null !== $user) {
             $data = array('user' => $user);
         }
         $commentForm = $app['form.factory']->create('drink_comment', $data);
         $now = new \Datetime('now');
         $dDrink = \Datetime::createFromFormat('Y-m-d H:i:s', $drink['day'] . ' ' . $drink['hour']);
         $drink['description'] = str_replace('href="javascript:', 'href="', substr($textProcessor->transform($drink['description']), 3, -5));
         return $app['twig']->render('drink/view.html.twig', array('drink' => $drink, 'participants' => $participants, 'comments' => $comments, 'commentForm' => $commentForm->createView(), 'participationForm' => $participationForm->createView(), 'isFinished' => $now > $dDrink, 'isParticipating' => $isParticipating, 'isConnected' => null !== $user, 'presences' => $presences));
     })->value('email', null)->value('token', null)->bind('_showdrink');
     // *******
     return $controllers;
 }
Example #5
0
	/**
	 * Function to get instance by using XML node
	 * @param <XML DOM> $extensionXMLNode
	 * @return <Settings_ExtensionStore_Extension_Model> $extensionModel
	 */
	public function getInstanceFromArray($listing) {
		$extensionModel = new self();
		
		foreach ($listing as $key => $value) {
			switch ($key) {
            case 'name'    :   $key = 'label'; break;
            case 'identifier': $key = 'name'; break;
			case 'version' :   $key = 'pkgVersion'; break;
			case 'minrange':   $key = 'vtigerVersion'; break;
			case 'maxrange':   $key = 'vtigerMaxVersion'; break;
			case 'CustomerId': $key = 'publisher'; break;
			case 'price':      $value = $value ? $value : 'Free'; break;
			case 'approvedon': $key = 'pubDate'; break;
			case 'ListingFileId': 
				if ($value) {
					$key = 'downloadURL'; 
					$value = $this->getExtensionsLookUpUrl() . '/customer/listingfiles?id='.$value;
				}
				break;
                        case 'thumbnail': 
                                if ($value) {
                                    $key = 'thumbnailURL';
                                    $value = str_replace('api', "_listingimages/$value", $this->getExtensionsLookUpUrl());
                                }
                                break;
                        case 'banner'   :
                               if ($value) {
                                   $key = 'bannerURL';
                                   $value = str_replace('api', "_listingimages/$value", $this->getExtensionsLookUpUrl());
                               }
                               break;
                        case 'description':
                            if($value){
                                $markDownInstance = new Michelf\Markdown();
                                $value = $markDownInstance->transform($value);
                            }
                        }
			$extensionModel->set($key, $value);
		}

		$label = $extensionModel->get('label');
		if (!$label) {
                    $extensionModel->set('label', $extensionModel->getName());
		}
        
        $moduleModel = self::getModuleFromExtnName($extensionModel->getName());
        if($moduleModel && $moduleModel->get('extnType') == 'language') {
            $trial = $extensionModel->get('trial');
            $moduleModel->set('trial',$trial);
        }
        $extensionModel->set('moduleModel',  $moduleModel);
		return $extensionModel;
	}
Example #6
0
    $wiki = $_GET['wiki'];
}
require_once './Michelf/Markdown.inc.php';
$parser = new Michelf\Markdown();
$parser->url_filter_func = function ($url) {
    if (strpos($url, "http") !== false) {
        return $url;
    } else {
        if (strpos($url, "img/") !== false) {
            return "./bulcky.wiki/" . $url;
        } else {
            return "help.php?wiki=" . $url;
        }
    }
};
$my_html = $parser->transform(file_get_contents("./bulcky.wiki/" . $wiki . ".md"));
echo $my_html;
?>
                 <p class="subtitle_right"><b><i><a href="/bulcky/main/plugin/help/help.php">Retour au sommaire</a></i></b></p>
                <br />

       </div>
        <div class="separator" id="footer_sep"></div>

            <!-- Footer -->
            <div id="footer">
                <!-- Copyright -->
                    <div class="copyright">
                        <ul class="menu">
                            <li>Contact : <a href="mailto:info@bulck.fr">info@bulck.fr</a></li>
                            <li>&copy; Bulck SAS. Tout droits réservés</li>