Example #1
0
 /**
  * Retrieve a unique URL for a profile based on the display name.
  *
  * @param  string $displayName The display name to base on.
  * @param  int    $id          The id of the profile to ignore.
  * @return string
  */
 public static function getUrl($displayName, $id = null)
 {
     // decode special chars
     $displayName = \SpoonFilter::htmlspecialcharsDecode((string) $displayName);
     // urlise
     $url = (string) CommonUri::getUrl($displayName);
     // get db
     $db = FrontendModel::getContainer()->get('database');
     // new item
     if ($id === null) {
         // get number of profiles with this URL
         $number = (int) $db->getVar('SELECT 1
              FROM profiles AS p
              WHERE p.url = ?
              LIMIT 1', (string) $url);
         // already exists
         if ($number != 0) {
             // add number
             $url = FrontendModel::addNumber($url);
             // try again
             return self::getURL($url);
         }
     } else {
         // current profile should be excluded
         // get number of profiles with this URL
         $number = (int) $db->getVar('SELECT 1
              FROM profiles AS p
              WHERE p.url = ? AND p.id != ?
              LIMIT 1', array((string) $url, (int) $id));
         // already exists
         if ($number != 0) {
             // add number
             $url = FrontendModel::addNumber($url);
             // try again
             return self::getURL($url, $id);
         }
     }
     return $url;
 }