Advertisement
Guest User

Untitled

a guest
Sep 3rd, 2014
438
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 14.17 KB | None | 0 0
  1. <?php
  2.  
  3. $urls = array(
  4.           'login' => '/login/',
  5.           'apps' => '/apps/',
  6.               'search' => '/apps/search',
  7.           'reviews' => '/apps/reviews?id=',
  8.           'logout' => '/logout/',
  9.           'help' => '/help/',
  10.           'settings' => '/settings/',
  11.           );
  12.  
  13.  
  14. function getUrl($name) {
  15.   global $urls;
  16.   return $urls[$name];
  17. }
  18.  
  19. function checkLogin() {
  20.   global $urls;
  21.   if (!isset($_SESSION['email'])) {
  22.     header('location: ' . $urls['login']);
  23.   }
  24. }
  25.  
  26. function getMarket() {
  27.   return $_SESSION['AndroidMarket'];
  28. }
  29.  
  30. function redirectsApp($appId) {
  31.   global $urls;
  32.   header('location: ' . $urls['reviews'] . $appId);
  33. }
  34. function redirectsApps() {
  35.   global $urls;
  36.   header('location: ' . $urls['apps']);
  37. }
  38.  
  39. function protect($string) {
  40.   return (htmlspecialchars(stripslashes($string)));
  41. }
  42.  
  43. function idToValid($str) {
  44.   return str_replace('.', '_', str_replace(':', '_', $str));
  45. }
  46.  
  47. //////////////////////////////////////////////////////////////////
  48. // Invites API
  49. //////////////////////////////////////////////////////////////////
  50.  
  51. include_once(__DIR__.'/consumer.php');
  52.  
  53. function check_invite($service_name, $invite) {
  54.   return consume('http://invite.paysdu42.fr',
  55.                  'invites', 'string',
  56.                  'GET', $invite,
  57.                  array('service_name' => $service_name));
  58. }
  59.  
  60. function use_invite($service_name, $invite) {
  61.   return consume('http://invite.paysdu42.fr',
  62.                  'invites', 'bool',
  63.                  'PUT', $invite,
  64.                  array('service_name' => $service_name));
  65. }
  66.  
  67. function PdoGetMessage($q) {
  68.   $err = $q->errorInfo();
  69.   return $err[2];
  70. }
  71.  
  72. //////////////////////////////////////////////////////////////////
  73. // Submit contact form
  74. //////////////////////////////////////////////////////////////////
  75.  
  76. function checkEmail($email) {
  77.   return filter_var($email, FILTER_VALIDATE_EMAIL);
  78. }
  79.  
  80. function submit_contact() {
  81.   if (empty($_POST['f_contact_type'])
  82.       || empty($_POST['f_contact_content']))
  83.     return false;
  84.   $email = protect($_POST['f_contact_email']);
  85.   if (!empty($email) && !checkEmail($email))
  86.     return 'Invalid email';
  87.  
  88.   include_once('Mail.php');
  89.   global $config;
  90.   $content = '
  91. <center>
  92. <h1><span style="color:#9acd32">A</span>ndroid <span style="color:#9acd32">R</span>eviews <span style="color:#9acd32">M</span>anager</h1>
  93. <i style="color:#9acd32">The Android Developer\'s best friend</i>
  94. </center>
  95. <br><br>
  96. </center>
  97.  
  98. Hello,<br>
  99. <br>
  100. <p>You recently submitted the following inquiry/feedback on our website:</p>
  101. <ul>
  102. <li><strong>Your name:</strong> '.protect($_POST['f_contact_name']).'</li>
  103. <li><strong>Your email:</strong> '.protect($_POST['f_contact_email']).'</li>
  104. <li><strong>The object of your message:</strong> '.protect($_POST['f_contact_type']).'</li>
  105. <li><strong>Your message:</strong><br />
  106. <p><i>'.str_replace("\n", '<br />', protect($_POST['f_contact_content'])).'</i></p></li>
  107. </ul>
  108. <p>We\'ll do our best to answer to your request soon.<p>
  109. <p>Thank you,</p>
  110. <p>The Android Reviews Manager Team</p>
  111. ';
  112.  
  113.     $headers['From']    = 'noreply@androidreviewsmanager.com';
  114.     $headers['To']      = $email;
  115.     $headers['Subject'] = 'Your Android Reviews Manager Inquiry/Feedback';
  116.     $content = utf8_encode($content);
  117.     $headers['Content-Type'] = "text/html; charset=\"UTF-8\"";
  118.     $headers['Content-Transfer-Encoding'] = "8bit";
  119.  
  120.     $params['sendmail_path'] = '/usr/lib/sendmail';
  121.     $mail_object =& Mail::factory('sendmail', $params);
  122.  
  123.     if (!empty($email))
  124.       $mail_object->send($headers['To'], $headers, $content);
  125.  
  126.     if (empty($email))
  127.       $email = 'noreply@androidreviewsmanager.com';
  128.     $headers['From']    = $email;
  129.     $headers['To']      = $config['email_admin'];
  130.     if (($mail_object->send($headers['To'], $headers, $content)) !== true)
  131.       return 'Couldn\'t send your message. Try again later.';
  132.     return true;
  133. }
  134.  
  135. //////////////////////////////////////////////////////////////////
  136. // Summary
  137. //////////////////////////////////////////////////////////////////
  138.  
  139. function    summary_($str, $len, $st)
  140. {
  141.   if (strlen($str) < $len)
  142.     return ($str);
  143.   elseif (preg_match("/(.{1,$len})\s./ms", $str, $match))
  144.     {
  145.       if ($st)
  146.     return ($match[1]."...");
  147.       else
  148.     return ($match[1]);
  149.     }
  150.   else
  151.     {
  152.       if ($st)
  153.     return (substr($str, 0, $len)."...");
  154.       else
  155.     return (substr($str, 0, $len));
  156.     }
  157. }
  158.  
  159. function summary($str, $len)
  160. {
  161.   return (summary_($str, $len, true));
  162. }
  163.  
  164. //////////////////////////////////////////////////////////////////
  165. // Views
  166. //////////////////////////////////////////////////////////////////
  167.  
  168. function viewAlert($type, $msg) {
  169.   if ($type == 'warning')
  170.     $icon = 'warning';
  171.   elseif ($type == 'danger')
  172.     $icon = 'exclamation-circle';
  173.   elseif ($type == 'success')
  174.     $icon = 'check-circle';
  175.   else
  176.     $icon = 'info-circle';
  177.   echo '<div class="alert alert-',
  178.     $type,
  179.     '">
  180.  <i class="fa fa-',
  181.     $icon,
  182.     ' fa-lg"></i>
  183.  ',$msg, '
  184. </div>';
  185. }
  186.  
  187. function viewGrid($per_line, $elements, $displayer, $param, $size = 'md') {
  188.   $row_nb = 0;
  189.   $idx = 0;
  190. ?>
  191.   <div class="row row<?= $row_nb ?>">
  192.     <?php $i = 1;
  193.       foreach ($elements as $e) { ?>
  194.     <div class="col-<?= $size ?>-<?= 12 / $per_line ?>">
  195.           <?php $displayer($e, $param, $idx) ?>
  196.     </div> <!-- col -->
  197. <?php if ($i == $per_line) { $row_nb++; ?>
  198.   </div> <!-- row -->
  199.   <div class="row row<?= $row_nb ?>">
  200.     <?php $i = 0;
  201.       }
  202.       $i++;
  203.       $idx++;
  204.       } ?>
  205.   </div> <!-- row -->
  206. <?php
  207. }
  208.  
  209. function viewSearchApp($app) { ?>
  210. <div class="well">
  211.   <div class="row">
  212.     <div class="col-xs-4">
  213.       <img src="<?= $app['icon'] ?>" alt="<?= $app['title'] ?>">
  214.     </div> <!-- col -->
  215.     <div class="col-xs-8">
  216.       <h5><?= $app['title'] ?></h5>
  217.       <form method="post" class="f_track">
  218.     <input type="hidden" name="f_track_id" value="<?= $app['id'] ?>">
  219.     <button type="submit" class="btn btn-android btn-xs <?= $app['tracked'] ? 'stop' : 'start' ?>" name="f_track_submit">
  220.       <i class="fa fa-<?= $app['tracked'] ? 'stop' : 'play' ?>"></i>
  221.       <?= $app['tracked'] ? 'Stop' : 'Start' ?> Tracking
  222.     </button>
  223.     <a href="/apps/reviews?id=<?= $app['id'] ?>" class="btn btn-xs btn-android">
  224.       Browse reviews</a>
  225.       </form>
  226.     </div> <!-- col -->
  227.   </div> <!-- row -->
  228. </div> <!-- well -->
  229. <?php }
  230.  
  231. function viewSearchApps($searchApps, $errorSearch, $currindex = 0) {
  232.   if (isset($searchApps)) {
  233.     if (!empty($errorSearch)) {
  234.       foreach ($errorSearch as $error) {
  235.     viewAlert('danger', $error);
  236.       }
  237.     } elseif (empty($searchApps) || !count($searchApps)) {
  238.       viewAlert('info', 'No result match your search.');
  239.     } else { ?>
  240.     <div class="text-right">  
  241.       <button class="btn btn-default btn-xs untrack-all">Untrack all <span class="total-search"></span> Apps</button>
  242.       <button class="btn btn-default btn-xs track-all">Track all <span class="total-search"></span> Apps</button>
  243.     </div> <!-- text-right -->
  244.     <?php viewGrid(3, $searchApps, viewSearchApp); ?>
  245.     <div class="text-center">
  246.       <hr class="hover">
  247.       <a href="#" id="loadmore" class="btn btn-default btn-s">
  248.         <span class="loadindex hidden"><?= $currindex + 9 ?></span>Load more</a>
  249.     </div>
  250. <?php
  251.     }
  252.   }
  253. }
  254.  
  255. function viewTrackedApps($tracked) {
  256. ?>
  257.   <?php $viewApp = function($app) { ?>
  258.   <?php if (empty($app)) { ?>
  259.   <div class="panel panel-default app">
  260.     <div class="panel-heading">
  261.       <h3>Add a new App to track here</h3>
  262.     </div> <!-- panel-heading -->
  263.     <div class="panel-body">
  264.       <a href="<?= getUrl('search') ?>" class="addapp">+</a>
  265.     </div> <!-- panel-body -->
  266.   </div> <!-- panel -->
  267.   <?php } else { ?>
  268.   <div class="panel panel-android app <?= $app['unread'] ? 'has_unread' : 'no_unread' ?>">
  269.     <div class="panel-heading">
  270.       <h3>
  271.     <img src="<?= $app['icon'] ?>" alt="<?= $app['title'] ?>">
  272.     <?= $app['title'] ?>
  273.       </h3>
  274.     </div> <!-- panel-heading -->
  275.     <div class="panel-body">
  276.       <details>
  277.     <summary><?= summary($app['description'], 100) ?></summary>
  278.     <p>
  279.       <?= $app['description'] ?>
  280.       </details>
  281.       <!-- <span class="label label-default"><?= $app['creator'] ?></span> -->
  282.       <!-- <span class="label label-warning"><?= $app['rating'] ?></span> -->
  283.       <form method="post" id="f_track" class="buttons">
  284.     <div class="<?= $app['unread'] ? 'unread' : 'read' ?> pull-right">
  285.       <a href="<?= getUrl('reviews'), $app['id'] ?>">
  286.         <div class="hexagon">
  287.           <?= $app['unread'] ?
  288.           $app['unread']
  289.           : '<i class="fa fa-envelope-o"></i>'
  290.           ?>
  291.         </div>
  292.       </a>
  293.       <?php if ($app['unread']) { ?>
  294.       <span class="fa-stack bubble">
  295.         <i class="fa fa-comment fa-stack-2x"></i>
  296.         <i class="fa fa-envelope fa-stack-1x"></i>
  297.       </span>
  298.       <?php } ?>
  299.     </div>
  300.     <input type="hidden" name="f_track_id" value="<?= $app['id'] ?>">
  301.     <button type="submit" name="f_track_submit" class="btn btn-android <?= $app['tracked'] ? 'stop' : 'start' ?>">
  302.       <i class="fa fa-<?= $app['tracked'] ? 'stop' : 'play' ?>"></i>
  303.       <?= $app['tracked'] ? 'Stop' : 'Start' ?> Tracking
  304.     </button>
  305.     <a href="/apps/reviews?id=<?= $app['id'] ?>" class="btn btn-android">Browse reviews</a>
  306.       </form>
  307.     </div> <!-- panel-body -->
  308.   </div> <!-- panel -->
  309.   <?php } ?>
  310.   <?php } ?>
  311.   <?php
  312.      $per_line = 3;
  313.      $extra = $per_line - (count($tracked) % $per_line);
  314.      for ($i = 0; $i < $extra; $i++) {
  315.                $tracked[] = array();
  316.                }
  317.                ?>
  318.      <div id="apps">
  319.        <?php viewGrid($per_line, $tracked, $viewApp); ?>
  320.      </div>
  321. <?php
  322. }
  323.  
  324. function viewRatingPics($rating) {
  325.   global $config;
  326.   $html = '<div>';
  327.   $full = floor($rating);
  328.   for ($i = 0; $i < $full; $i++)
  329.     $html .= '<img src="'.$config['website']['url'].'img/star_full.png">';
  330.   $rest = $rating - $full;
  331.   if ($full == 5);
  332.   elseif ($rest < 0.25)
  333.     $html .= '<img src="'.$config['website']['url'].'img/star_empty.png">';
  334.   elseif ($rest >= 0.25 && $rest <= 0.75)
  335.     $html .= '<img src="'.$config['website']['url'].'img/star_half.png">';
  336.   else
  337.     $html .= '<img src="'.$config['website']['url'].'img/star_full.png">';
  338.   $empty = 5 - $full - 1;
  339.   for ($i = 0; $i < $empty; $i++)
  340.     $html .= '<img src="'.$config['website']['url'].'img/star_empty.png">';
  341.   $html .= '</div>';
  342.   return $html;
  343. }
  344.  
  345. function viewRatingStars($rating) {
  346.   echo '<div class="text-',
  347.     ($rating <= 2 ? 'danger' : 'android'), '">';
  348.   $full = floor($rating);
  349.   for ($i = 0; $i < $full; $i++)
  350.     echo '<i class="fa fa-2x fa-star"></i>';
  351.   $rest = $rating - $full;
  352.   if ($full == 5);
  353.   elseif ($rest < 0.25)
  354.     echo '<i class="fa fa-2x fa-star-o"></i>';
  355.   elseif ($rest >= 0.25 && $rest <= 0.75)
  356.     echo '<i class="fa fa-2x fa-star-half-o"></i>';
  357.   else
  358.     echo'<i class="fa fa-2x fa-star"></i>';
  359.   $empty = 5 - $full - 1;
  360.   for ($i = 0; $i < $empty; $i++)
  361.     echo '<i class="fa fa-2x fa-star-o"></i>';  
  362.   echo '</div>';
  363. }
  364.  
  365. function viewReviews($reviews, $isTracked, $errorsReviews, $packageName, $viewStyle = null) {
  366.    if (!$viewStyle || ($viewStyle != 'one_view' && $viewStyle != 'list_view'))
  367.      //$viewStyle = $isTracked ? 'one_view' : 'list_view';
  368.      $viewStyle = 'list_view';
  369. ?>
  370.     <div class="reviews <?= $viewStyle ?>">
  371.       <?php
  372.     if (!empty($errorsReviews)) {
  373.       foreach ($errorsReviews as $error) {
  374.     viewAlert('danger', $error);
  375.       }
  376.     }
  377.    if (empty($reviews) || !count($reviews)) {
  378.       viewAlert('android', 'No reviews found');
  379.     } else { ?>
  380.  
  381.       <?php $viewReview = function ($review, $array, $idx) {
  382.       $isTracked = $array[0];
  383.       $packageName = $array[1];
  384.       $reviews = $array[2];
  385.        ?>
  386.       <div class="review panel panel-default" id="<?= idToValid($review['id']) ?>">
  387.     <div class="panel-body">
  388.       <div>
  389.         <div class="pull-right date">
  390.           <?= date('d M Y H:i', $review['creationTime'] / 1000) ?>
  391.         </div> <!-- pull-right -->
  392.         <p class="text-android"><?= $review['author'] ?></p>
  393.       </div>
  394.       <?php if (preg_match('/^([^\t]+)\t(.+)$/', $review['text'], $reviewContent)) { ?>
  395.       <p><strong><?= $reviewContent[1] ?></strong></p>
  396.       <p><?= $reviewContent[2] ?></p>
  397.       <? } else { ?>
  398.       <p><?= $review['text'] ?></p>
  399.       <? } ?>
  400.       <div class="pull-right rating">
  401.         <?php viewRatingStars($review['rating']); ?>
  402.       </div>
  403.     </div> <!-- panel-body -->
  404.     <div class="panel-footer">
  405.       <?php if ($isTracked && isset($review['read'])) { ?>
  406.       <form method="post" class="f_read">
  407.         <input type="hidden" name="f_read_id" value="<?= $review['id'] ?>">
  408.         <div class="pull-right">
  409.           <button type="submit" name="f_read_<?= $review['read'] ? 'unread' : 'read' ?>"
  410.               class="btn btn-default <?= $review['read'] ? 'read' : 'unread' ?>">
  411.         <i class="fa fa-<?= $review['read'] ? 'envelope' : 'envelope-o' ?>"></i>
  412.         <span>Mark as <?= $review['read'] ? 'unread' : 'read' ?></span>
  413.           </button>
  414.           <a href="https://play.google.com/apps/publish#ReviewsPlace:p=<?= $packageName ?>"
  415.          target="_blank" class="btn btn-default">
  416.         <i class="fa fa-reply"></i>
  417.         Reply
  418.           </a>
  419.           <button class="btn btn-android next">
  420.         <span class="hidden id_next"><?= idToValid($reviews[$idx + 1]['id']) ?></span>
  421.         <i class="fa fa-chevron-right"></i>
  422.           </button>
  423.         </div> <!-- text-right -->
  424.         <button class="btn btn-default<?= $idx ? '' : ' invisible' ?> prev">
  425.           <span class="hidden id_prev"><?= idToValid($reviews[$idx - 1]['id']) ?></span>
  426.           <i class="fa fa-chevron-left"></i>
  427.         </button>
  428.       </form>
  429.       <?php } ?>
  430.     </div> <!-- panel-footer -->
  431.       </div> <!-- panel -->
  432.       <?php } ?>
  433.       <?php if ($isTracked) { ?>
  434.       <div class="start_reading panel panel-android">
  435.     <div class="panel-body">
  436.       <div class="play js_start">
  437.         <i class="fa fa-youtube-play"></i>
  438.       </div>
  439.     </div> <!-- panel-body -->
  440.     <div class="panel-footer">
  441.       <div class="text-right">
  442.         <button class="btn btn-android js_start">
  443.           <i class="fa fa-play-circle"></i>
  444.           Start Reading Reviews
  445.         </button>
  446.       </div> <!-- text-right -->
  447.     </div> <!-- panel-footer -->
  448.       </div> <!-- panel -->
  449.       <?php } ?>
  450.       <?php viewGrid(2, $reviews, $viewReview, array($isTracked, $packageName, $reviews)); ?>
  451.       <?php } ?>
  452.     </div> <!-- reviews -->
  453. <?php
  454. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement