]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge remote branch 'statusnet/0.8.x' into 0.9.x
authorCraig Andrews <candrews@integralblue.com>
Thu, 24 Sep 2009 21:15:54 +0000 (17:15 -0400)
committerCraig Andrews <candrews@integralblue.com>
Thu, 24 Sep 2009 21:15:54 +0000 (17:15 -0400)
Conflicts:
EVENTS.txt
actions/requesttoken.php
classes/File.php
install.php
lib/action.php
lib/noticeform.php

1  2 
EVENTS.txt
actions/newnotice.php
actions/showstream.php
classes/User.php
index.php
install.php
lib/action.php
lib/noticeform.php
lib/router.php
lib/util.php

diff --cc EVENTS.txt
index 2b16d43c07ef9fff852035782e3b9049a6ab839e,dfaf34a66e5e1b1da89b66508e4abadbac6dbd6f..fa25aabcd66208cf10c97feee0df1219ea88e14a
@@@ -135,139 -135,8 +135,139 @@@ StartAddressData: Allows the site owne
  EndAddressData: At the end of <address>
  - $action: the current action
  
- StartHeadChildren: called before showing the children of <head> element (after <head> tag)
- - $action: action object being shown
- EndHeadChildren: called after showing the children of <head> element (before </head>)
- - $action: action object being shown
 +StartLoginGroupNav: Before showing the login and register navigation menu
 +- $action: the current action
 +
 +EndLoginGroupNav: After showing the login and register navigation menu
 +- $action: the current action
 +
 +StartAccountSettingsNav: Before showing the account settings menu
 +- $action: the current action
 +
 +EndAccountSettingsNav: After showing the account settings menu
 +- $action: the current action
 +
 +Autoload: When trying to autoload a class
 +- $cls: the class being sought. A plugin might require_once the file for the class.
 +
 +SensitiveAction: determines if an action is 'sensitive' and should use SSL
 +- $action: name of the action, like 'login'
 +- $sensitive: flag for whether this is a sensitive action
 +
 +LoginAction: determines if an action is a 'login' action (OK for public view in private mode)
 +- $action: name of the action, like 'register'
 +- $login: flag for whether this is a login action
 +
 +StartShowHead: called before showing the <head> element and children
 +- $action: action object being show
 +
 +EndShowHead: called after showing the <head> element (and </head>)
 +- $action: action object being shown
 +
 +StartShowBody: called before showing the <body> element and children
 +- $action: action object being shown
 +
 +EndShowBody: called after showing the <body> element (and </body>)
 +- $action: action object being shown
 +
 +StartPersonalGroupNav: beginning of personal group nav menu
 +- $action: action object being shown
 +
 +EndPersonalGroupNav: end of personal group nav menu (good place to add a menu item)
 +- $action: action object being shown
 +
 +StartEndHTML: just before the </html> tag
 +- $action: action object being shown
 +
 +EndEndHTML: just after the </html> tag
 +- $action: action object being shown
 +
 +StartShowDesign: just before showing a site, user, or group design
 +- $action: action object being shown
 +
 +EndShowDesign: just after showing a site, user, or group design
 +- $action: action object being shown
 +
 +StartShowExportData: just before showing the <div> with export data (feeds)
 +- $action: action object being shown
 +
 +EndShowExportData: just after showing the <div> with export data (feeds)
 +- $action: action object being shown
 +
 +StartShowPageNotice: just before showing the page notice (instructions or error)
 +- $action: action object being shown
 +
 +EndShowPageNotice: just after showing the page notice (instructions or error)
 +- $action: action object being shown
 +
 +StartShowPageTitle: just before showing the main h1 title of a page (only for registration)
 +- $action: action object being shown
 +
 +StartProfileFormData: just before showing text entry fields on profile settings page
 +- $action: action object being shown
 +
 +EndProfileFormData: just after showing text entry fields on profile settings page
 +- $action: action object being shown
 +
 +StartProfileSaveForm: before starting to save a profile settings form
 +- $action: action object being shown
 +
 +EndProfileSaveForm: after saving a profile settings form (after commit, no profile or user object!)
 +- $action: action object being shown
 +
 +StartRegistrationFormData: just before showing text entry fields on registration page
 +- $action: action object being shown
 +
 +EndRegistrationFormData: just after showing text entry fields on registration page
 +- $action: action object being shown
 +
 +StartRegistrationTry: before validating and saving a new user
 +- $action: action object being shown
 +
 +EndRegistrationTry: after saving a new user (note: no profile or user object!)
 +- $action: action object being shown
 +
 +StartNewQueueManager: before trying to start a new queue manager; good for plugins implementing new queue manager classes
 +- $qm: empty queue manager to set
 +
 +RedirectToLogin: event when we force a redirect to login (like when going to a settings page on a remembered login)
 +- $action: action object being shown
 +- $user: current user
 +
 +StartLoadDoc: before loading a help doc (hook this to show your own documentation)
 +- $title: title of the document
 +- $output: HTML output to show
 +
 +EndLoadDoc: after loading a help doc (hook this to modify other documentation)
 +- $title: title of the document
 +- $output: HTML output to show
 +
 +StartApiRss: after the rss <channel> element is started
 +- $action: action object being shown
 +
 +StartApiAtom: after the <feed> element is started
 +- $action: action object being shown
 +
 +StartEnqueueNotice: about to add a notice to the queues (good place to add a new transport)
 +- $notice: the notice being added
 +- &$transports: modifiable list of transports (as strings) to queue for
 +
 +EndEnqueueNotice: after adding a notice to the queues
 +- $notice: the notice being added
 +- $transports: modifiable list of transports to use
 +
 +UnqueueHandleNotice: Handle a notice when no queue manager is available
 +- $notice: the notice to handle
 +- $queue: the "queue" that is being executed
 +
 +GetValidDaemons: Just before determining which daemons to run
 +- &$daemons: modifiable list of daemon scripts to run, filenames relative to scripts/
 +
 +HandleQueuedNotice: Handle a queued notice at queue time (or immediately if no queue)
 +- &$notice: notice to handle
++
+ StartShowHeadElements: Right after the <head> tag
+ - $action: the current action
+ EndShowHeadElements: Right before the </head> tag; put <script>s here if you need them in <head>
+ - $action: the current action
Simple merge
Simple merge
Simple merge
diff --cc index.php
index 8ff67d19d9165def2675d5c6955b435f8b884d8d,362ab3cd37e1bef5cd189703f949063c99c6309c..51e30f57821ffd5c1053174759e6944ec63248f3
+++ b/index.php
@@@ -45,11 -29,16 +45,17 @@@ $action = null
  function getPath($req)
  {
      if ((common_config('site', 'fancy') || !array_key_exists('PATH_INFO', $_SERVER))
 -        && array_key_exists('p', $req)) {
 +        && array_key_exists('p', $req)
 +    ) {
          return $req['p'];
      } else if (array_key_exists('PATH_INFO', $_SERVER)) {
-         return $_SERVER['PATH_INFO'];
+         $path = $_SERVER['PATH_INFO'];
+         $script = $_SERVER['SCRIPT_NAME'];
+         if (substr($path, 0, mb_strlen($script)) == $script) {
+             return substr($path, mb_strlen($script));
+         } else {
+             return $path;
+         }
      } else {
          return null;
      }
diff --cc install.php
index 46248c7891b2ab503f4d5faff524e09d183da6fd,30dd34496b6e9d0c5068c47f9be7825af5992701..3786b6db1764f4d0f8c7051af754e56c1895ff79
@@@ -235,38 -200,36 +235,47 @@@ function main(
      }
  }
  
 +/**
 + * checks if an external libary is present
 + *
 + * @param string $external_library Name of library
 + *
 + * @return boolean indicates if library present
 + */
  function haveExternalLibrary($external_library)
  {
-     if (isset($external_library['include']) && ! @include_once $external_library['include'] ) {
+     if(isset($external_library['include']) && ! haveIncludeFile($external_library['include'])){
          return false;
      }
 -    if(isset($external_library['check_function']) && ! function_exists($external_library['check_function'])){
 +    if (isset($external_library['check_function']) && ! function_exists($external_library['check_function'])) {
          return false;
      }
 -    if(isset($external_library['check_class']) && ! class_exists($external_library['check_class'])){
 +    if (isset($external_library['check_class']) && ! class_exists($external_library['check_class'])) {
          return false;
      }
      return true;
  }
  
+ // Attempt to include a PHP file and report if it worked, while
+ // suppressing the annoying warning messages on failure.
+ function haveIncludeFile($filename) {
+     $old = error_reporting(error_reporting() & ~E_WARNING);
+     $ok = include_once($filename);
+     error_reporting($old);
+     return $ok;
+ }
 +/**
 + * Check if all is ready for installation
 + *
 + * @return void
 + */
  function checkPrereqs()
  {
 -      $pass = true;
 +    $pass = true;
  
      if (file_exists(INSTALLDIR.'/config.php')) {
 -         ?><p class="error">Config file &quot;config.php&quot; already exists.</p>
 -         <?php
 +         printf('<p class="error">Config file &quot;config.php&quot; already exists.</p>');
          $pass = false;
      }
  
  
      foreach ($reqs as $req) {
          if (!checkExtension($req)) {
 -            ?><p class="error">Cannot load required extension: <code><?php echo $req; ?></code></p><?php
 -                  $pass = false;
 +            printf('<p class="error">Cannot load required extension: <code>%s</code></p>', $req);
 +            $pass = false;
 +        }
 +    }
 +    // Make sure we have at least one database module available
 +    global $dbModules;
 +    $missingExtensions = array();
 +    foreach ($dbModules as $type => $info) {
 +        if (!checkExtension($info['check_module'])) {
 +            $missingExtensions[] = $info['check_module'];
 +        }
 +    }
 +
 +    if (count($missingExtensions) == count($dbModules)) {
 +        $req = implode(', ', $missingExtensions);
 +        printf('<p class="error">Cannot find mysql or pgsql extension. You need one or the other.');
 +        $pass = false;
 +    }
 +
 +    if (!is_writable(INSTALLDIR)) {
 +        printf('<p class="error">Cannot write config file to: <code>%s</code></p>', INSTALLDIR);
 +        printf('<p>On your server, try this command: <code>chmod a+w %s</code>', INSTALLDIR);
 +        $pass = false;
 +    }
 +
 +    // Check the subdirs used for file uploads
 +    $fileSubdirs = array('avatar', 'background', 'file');
 +    foreach ($fileSubdirs as $fileSubdir) {
 +        $fileFullPath = INSTALLDIR."/$fileSubdir/";
 +        if (!is_writable($fileFullPath)) {
 +            printf('<p class="error">Cannot write to %s directory: <code>%s</code></p>', $fileSubdir, $fileFullPath);
 +            printf('<p>On your server, try this command: <code>chmod a+w %s</code></p>', $fileFullPath);
 +            $pass = false;
          }
      }
 -    if (!checkExtension('pgsql') && !checkExtension('mysql')) {
 -      ?><p class="error">Cannot find mysql or pgsql extension. You need one or the other: <code><?php echo $req; ?></code></p><?php
 -                    $pass = false;
 -    }
 -
 -      if (!is_writable(INSTALLDIR)) {
 -         ?><p class="error">Cannot write config file to: <code><?php echo INSTALLDIR; ?></code></p>
 -             <p>On your server, try this command: <code>chmod a+w <?php echo INSTALLDIR; ?></code>
 -         <?php
 -           $pass = false;
 -      }
 -
 -      // Check the subdirs used for file uploads
 -      $fileSubdirs = array('avatar', 'background', 'file');
 -      foreach ($fileSubdirs as $fileSubdir) {
 -              $fileFullPath = INSTALLDIR."/$fileSubdir/";
 -              if (!is_writable($fileFullPath)) {
 -           ?><p class="error">Cannot write <?php echo $fileSubdir; ?> directory: <code><?php echo $fileFullPath; ?></code></p>
 -                     <p>On your server, try this command: <code>chmod a+w <?php echo $fileFullPath; ?></code></p>
 -           <?php
 -                   $pass = false;
 -              }
 -      }
 -
 -      return $pass;
 +
 +    return $pass;
  }
  
 +/**
 + * Checks if a php extension is both installed and loaded
 + *
 + * @param string $name of extension to check
 + *
 + * @return boolean whether extension is installed and loaded
 + */
  function checkExtension($name)
  {
-     if (!extension_loaded($name)) {
-         if (!@dl($name.'.so')) {
-             return false;
-         }
+     if (extension_loaded($name)) {
+         return true;
+     } elseif (function_exists('dl') && ini_get('enable_dl') && !ini_get('safe_mode')) {
+       // dl will throw a fatal error if it's disabled or we're in safe mode.
+       // More fun, it may not even exist under some SAPIs in 5.3.0 or later...
+       $soname = $name . '.' . PHP_SHLIB_SUFFIX;
+       if (PHP_SHLIB_SUFFIX == 'dll') {
+               $soname = "php_" . $soname;
+       }
+       return @dl($soname);
+     } else {
+         return false;
      }
-     return true;
  }
  
 +/**
 + * Show list of libraries
 + *
 + * @return void
 + */
  function showLibs()
  {
      global $external_libraries;
      <h2>Absent Libraries</h2>
      <ul id="absent_libraries">
  E_O_T;
 -    foreach($absent_libraries as $library)
 -    {
 +    foreach ($absent_libraries as $library) {
          echo '<li>';
-         if (isset($library['url'])) {
+         if(isset($library['url'])){
              echo '<a href=">'.$library['url'].'">'.htmlentities($library['name']).'</a>';
 -        }else{
 +        } else {
              echo htmlentities($library['name']);
          }
          echo '<ul>';
      <h2>Installed Libraries</h2>
      <ul id="present_libraries">
  E_O_T;
 -    foreach($present_libraries as $library)
 -    {
 +    foreach ($present_libraries as $library) {
          echo '<li>';
-         if ($library['url']) {
+         if(isset($library['url'])){
              echo '<a href=">'.$library['url'].'">'.htmlentities($library['name']).'</a>';
 -        }else{
 +        } else {
              echo htmlentities($library['name']);
          }
          echo '</li>';
diff --cc lib/action.php
Simple merge
index cee46709e1f045d485e65ebe46124ea18d41e15b,350e37db8cc90f78c11843fef7adf80aefd880a9..62320dd60230695c098f5c742fa2b350c1c325e6
@@@ -83,7 -89,8 +89,7 @@@ class NoticeForm extends For
  
          $this->action  = $action;
          $this->content = $content;
+         $this->inreplyto = $inreplyto;
 -        
          if ($user) {
              $this->user = $user;
          } else {
diff --cc lib/router.php
Simple merge
diff --cc lib/util.php
index 441dcf68e3a7bc4b89a5c7f4bad62f402bca9191,b831859e993392d14de493f3ae349d9e61e919e2..56753debe0ac5e1bfdc1d4031eeb0a09aeab70fd
@@@ -1379,23 -1363,58 +1380,20 @@@ function common_shorten_url($long_url
      } else {
          $svc = $user->urlshorteningservice;
      }
 -
 -    $curlh = curl_init();
 -    curl_setopt($curlh, CURLOPT_CONNECTTIMEOUT, 20); // # seconds to wait
 -    curl_setopt($curlh, CURLOPT_USERAGENT, 'StatusNet');
 -    curl_setopt($curlh, CURLOPT_RETURNTRANSFER, true);
 -
 -    switch($svc) {
 -     case 'ur1.ca':
 -        require_once INSTALLDIR.'/lib/Shorturl_api.php';
 -        $short_url_service = new LilUrl;
 -        $short_url = $short_url_service->shorten($long_url);
 -        break;
 -
 -     case '2tu.us':
 -        $short_url_service = new TightUrl;
 -        require_once INSTALLDIR.'/lib/Shorturl_api.php';
 -        $short_url = $short_url_service->shorten($long_url);
 -        break;
 -
 -     case 'ptiturl.com':
 -        require_once INSTALLDIR.'/lib/Shorturl_api.php';
 -        $short_url_service = new PtitUrl;
 -        $short_url = $short_url_service->shorten($long_url);
 -        break;
 -
 -     case 'bit.ly':
 -        curl_setopt($curlh, CURLOPT_URL, 'http://bit.ly/api?method=shorten&long_url='.urlencode($long_url));
 -        $short_url = current(json_decode(curl_exec($curlh))->results)->hashUrl;
 -        break;
 -
 -     case 'is.gd':
 -        curl_setopt($curlh, CURLOPT_URL, 'http://is.gd/api.php?longurl='.urlencode($long_url));
 -        $short_url = curl_exec($curlh);
 -        break;
 -     case 'snipr.com':
 -        curl_setopt($curlh, CURLOPT_URL, 'http://snipr.com/site/snip?r=simple&link='.urlencode($long_url));
 -        $short_url = curl_exec($curlh);
 -        break;
 -     case 'metamark.net':
 -        curl_setopt($curlh, CURLOPT_URL, 'http://metamark.net/api/rest/simple?long_url='.urlencode($long_url));
 -        $short_url = curl_exec($curlh);
 -        break;
 -     case 'tinyurl.com':
 -        curl_setopt($curlh, CURLOPT_URL, 'http://tinyurl.com/api-create.php?url='.urlencode($long_url));
 -        $short_url = curl_exec($curlh);
 -        break;
 -     default:
 -        $short_url = false;
 +    global $_shorteners;
 +    if (!isset($_shorteners[$svc])) {
 +        //the user selected service doesn't exist, so default to ur1.ca
 +        $svc = 'ur1.ca';
 +    }
 +    if (!isset($_shorteners[$svc])) {
 +      // no shortener plugins installed.
 +      return $long_url;
      }
  
 -    curl_close($curlh);
 +    $reflectionObj = new ReflectionClass($_shorteners[$svc]['callInfo'][0]);
 +    $short_url_service = $reflectionObj->newInstanceArgs($_shorteners[$svc]['callInfo'][1]);
 +    $short_url = $short_url_service->shorten($long_url);
  
-     if(substr($short_url,0,7)=='http://'){
-         $short_url = substr($short_url,7);
-     }
      return $short_url;
  }