Copying path into variable

At least I think that's what I mean... Another very basic question!
My script is to set up a folder structure for jobs.
Basically I have:
set the_user to short user name of (system info)
(for which thanks, Michael)
then a lot of
make folder at folder "3 Artwork" of folder job_folder of folder "Desktop" of folder the_user of folder "Users" of startup disk with properties {name:"AW PDFs for Client"}
type instructions
I'd like to be able to tidy this up like:
set my_desktop to folder "Desktop" of folder the_user of folder "Users" of startup disk
- but this and variations on it don't seem to work. I have a hazy feeling the words 'a reference to' may need to appear somewhere, but haven't been able to make that work either!
I'm afraid this forum is making me lazy, but I'm up against time constraints here!

Hello Emma Glaisher,
Usually, the essential information you need to manipulate file/folder is its path information, e.g.
"Production:A:Argos:001122-Leaflet:"
All other things can be delived from it.
cf. pp.190-194
AppleScriptLanguageGuide.pdf
Note that 'folder A of folder B of folder C of disk D' sort of reference is 'Finder's reference form (Finder's object specfier) according to its AppleScript's object model and actually only used in 'Finder'. You don't have to bother with its lengthy form. Normally all you need is path string (or alias object associated to it).
* AppleScript's 'alias' is NOT Finder's 'alias file'. It's AppleScript's object of «class alis» that holds an 'alias record' for file system object. (Finder's 'alias file' is a file that contains an 'alias record' for its target object)
Also note that 'path string' may be plain string («class TEXT») or Unicode text («class utxt») in AppleScript terms. In some cases, you should be aware of the diffrence between them. (Possibly recent OSX's Finder may not coerce its item (folder/file/disk, etc) reference to plain string, but only to Unicode text. Just a guess)
Here's some sample code for you.
(Tested with OS9.1, not with OSX, sorry. I don't use OSX)
Hope it helps you to clear things up.
H
-- SCRIPT
(* 1. Path string *)
set node0 to "Production"
set node1 to "A"
set node2 to "Argos"
set node3 to "001122-Leaflet"
set fp to node0 & ":" & node1 & ":" & node2 & ":" & node3 & ":"
set fp to "Production:A:Argos:001122-Leaflet:" -- path string (= AppleScript's string object)
(* 2. Some basic forms for referring to file system object *)
set f_alias to fp as alias -- = AppleScript's alias object (# node fp must actually exist)
set f_fss to file fp as file specification -- = AppleScript's file specification object
-- return {fp, f_fss, f_alias} -- # uncomment this line to see what they are.
(* 3. Several ways to make new folder by Finder *)
-- (a) using Finder's item object
tell application "Finder"
-- (item fp) = Finder's item object
make new folder at (item fp) with properties {name:"3 Artwork"}
end tell
-- (b) using Finder's folder object, virtually identical to (a)
tell application "Finder"
-- (folder fp) = Finder's folder object
make new folder at (folder fp) with properties {name:"3 Artwork"}
end tell
-- (c) using AppleScript's alias
tell application "Finder"
-- (f_alias) = alias object given above
make new folder at (f_alias) with properties {name:"3 Artwork"}
end tell
-- (d) using AppleScript's file specification
tell application "Finder"
-- (f_fss) = file specification object given above
make new folder at (f_fss) with properties {name:"3 Artwork"}
end tell
-- END OF SCRIPT
  Mac OS 9.1.x  

Similar Messages

  • AppleScript Excel - Copy value of cells into variables

    I am super new to AppleScript, so please excuse me if I am not good at explaining what I am trying to do. I have an Excel file that has 12 columns and X rows, I need to have B2/C2/D2/etc copied into variables but have the column be a variable instead of a static number so I can write a loop to get all the rows, etc. Here is what I have now, and I know this is far from being correct.
    copy value of cell "B2" to varRow
    I have tried something crazy like this:
    copy value of column colSection of row intRow to varSection
    But that just throws up an error saying the object i am trying to access does not exist. I set the ColSection to "B" and intRow to 2, so I thought it would work. Any ideas or advice I am open! Thanks!

    The following should give you the idea:
    tell application "Microsoft Excel"
    activate
    make new workbook
    set myCol to 3 -- the starting column
    set myBgnRow to 2 -- the starting row
    set myString to "Hello World" -- characters to be inserted into sheet as sample values
    set myChar to 1 -- Points to first character ("H")
    set myEndRow to myBgnRow + (length of myString) - 1 -- the ending row
    -- Now put some values into the cells
    repeat with myRow from myBgnRow to myEndRow
    select (cell myCol of row myRow of active sheet)
    tell cell myCol of row myRow
    set value to character myChar of myString
    end tell
    set myChar to myChar + 1
    end repeat
    -- now get the values back out
    -- note that this is using same myBgnRow and myEndRow as above
    repeat with myRow from myBgnRow to myEndRow
    select (cell myCol of row myRow of active sheet)
    tell cell myCol of row myRow
    set myVal to value
    end tell
    display dialog (myCol as text) & "," & (myRow as text) & " " & myVal
    end repeat
    end tell

  • Copy and paste file path into bridge

    I use bridge a lot! One of the most annoying things about bridge is that I can't paste a file path into bridge to browse to that file, on a network server, for example. I work at a graphics company, all our files are stored on servers with hundreds of folder levels, which makes it a huge pain to browse to manually.
    I'll usually get a file path link that i can quickly paste into windows explorer to either open the file or browse to the folder it's in. With bridge i have to manually click through to the network folder.
    This change would make a huge difference in usability for me.

    Paste your path into explorer then you can Right Click on the folder and select "Browse in Adobe Bridge CS5"
    Edit:-  you can paste the path directly into the top bar just click to the right of the path and it will allow you to paste your path in.

  • Test-path where a directory in the path is variable

    My company has a series of fax lines and associated file shares. Faxes are processed & then dropped off into these file shares. From that point a service runs about every 60 seconds to look for files in these directories to import into a database.
    If there is a problem with the import then the service moves the file to a "HOLD" folder & files remain there until human intervention.
    I am trying to create a script that will find the HOLD directory in each of these folders and look for the existence of files, then email a group of users alerting them if there are.
    So there are several things I'm trying to accomplish.
    1. Look for files in a path where a folder in the middle of the path is variable.
    2. Send and email that will inform the recipient that there are files in the HOLD folder(s) and tell them WHICH ones
    Here's what I am starting with but it isn't working as expected.  There are files in at least one of these.  I also thought to try using some kind of foreach loop but it's eluding me.  Probably because it's late in the day for me.
    $folder = get-content -Path "\\child.domain.com\netlogon\scripts\ps\numbers.txt"
    if(Test-Path -Path "\\Server\scan import\fax\$folder\Hold" -include *.pdf, *.tif, *.jpg) {write-host "Files exist at $folder"} Else {write-host "No files in the hold folders"}
    # When I wrote this script only God and I knew what I was doing. # Now, only God Knows!

    The numbers.txt includes a list of folder names, one per line. I did come up with the following and it's working, for my purposes, so I now need to figure out how to get the results into the body of a single email.
    $parent = "\\server\scan import\fax\"
    $folders = get-content -Path "\\child.domain.com\netlogon\scripts\ps\numbers.txt"
    Foreach ($folder in $folders)
    if(Test-Path -Path "$parent$folder\HOLD\*" -PathType leaf)
    write-host "Files exist at $parent$folder\Hold"
    Else
    write-host "$folder Clear"
    I'm really only using the Write-Host actions in place of the Send-MailMessage Cmdlet, at least I think that is the command I need.
    # When I wrote this script only God and I knew what I was doing. # Now, only God Knows!

  • Storing Uploaded Image Path into Mysql

    Hi I am developing a cms and am using the code David gives in his book PHP Solutions,  everything works fine but I can't work out how to extract the uploaded path so that it is stored in my table.
    Help would be really appreciated, I am making good progress in learning the php especially with David's books but am still struggling when it comes to having to customized the code.
    The code for the upload.php is as follows,
    <?php
    class Gp1_Upload{
      protected $_uploaded = array();
      protected $_destination;
      protected $_max = 51200;
      protected $_messages = array();
      protected $_permitted = array('image/gif',
                                    'image/jpeg',
                                    'image/pjpeg',
                                    'image/png');
      protected $_renamed = false;
      public function __construct($path) {
        if (!is_dir($path) || !is_writable($path)) {
          throw new Exception("$path must be a valid, writable directory.");
        $this->_destination = $path;
        $this->_uploaded = $_FILES;
      public function getuploadpath (){
      public function getMaxSize() {
        return number_format($this->_max/1024, 1) . 'kB';
      public function setMaxSize($num) {
        if (!is_numeric($num)) {
          throw new Exception("Maximum size must be a number.");
        $this->_max = (int) $num;
      public function move($overwrite = false) {
        $field = current($this->_uploaded);
        if (is_array($field['name'])) {
          foreach ($field['name'] as $number => $filename) {
            // process multiple upload
            $this->_renamed = false;
            $this->processFile($filename, $field['error'][$number], $field['size'][$number], $field['type'][$number], $field['tmp_name'][$number], $overwrite);   
        } else {
          $this->processFile($field['name'], $field['error'], $field['size'], $field['type'], $field['tmp_name'], $overwrite);
      public function getMessages() {
        return $this->_messages;
      protected function checkError($filename, $error) {
        switch ($error) {
          case 0:
            return true;
          case 1:
          case 2:
            $this->_messages[] = "$filename exceeds maximum size: " . $this->getMaxSize();
            return true;
          case 3:
            $this->_messages[] = "Error uploading $filename. Please try again.";
            return false;
          case 4:
            $this->_messages[] = 'No file selected.';
            return false;
          default:
            $this->_messages[] = "System error uploading $filename. Contact webmaster.";
            return false;
      protected function checkSize($filename, $size) {
        if ($size == 0) {
          return false;
        } elseif ($size > $this->_max) {
          $this->_messages[] = "$filename exceeds maximum size: " . $this->getMaxSize();
          return false;
        } else {
          return true;
      protected function checkType($filename, $type) {
        if (empty($type)) {
          return false;
        } elseif (!in_array($type, $this->_permitted)) {
          $this->_messages[] = "$filename is not a permitted type of file.";
          return false;
        } else {
          return true;
      public function addPermittedTypes($types) {
        $types = (array) $types;
        $this->isValidMime($types);
        $this->_permitted = array_merge($this->_permitted, $types);
      protected function isValidMime($types) {
        $alsoValid = array('image/tiff',
                           'application/pdf',
                           'text/plain',
                           'text/rtf');
          $valid = array_merge($this->_permitted, $alsoValid);
        foreach ($types as $type) {
          if (!in_array($type, $valid)) {
            throw new Exception("$type is not a permitted MIME type");
      protected function checkName($name, $overwrite) {
        $nospaces = str_replace(' ', '_', $name);
        if ($nospaces != $name) {
          $this->_renamed = true;
        if (!$overwrite) {
          $existing = scandir($this->_destination);
          if (in_array($nospaces, $existing)) {
            $dot = strrpos($nospaces, '.');
            if ($dot) {
              $base = substr($nospaces, 0, $dot);
              $extension = substr($nospaces, $dot);
            } else {
              $base = $nospaces;
              $extension = '';
            $i = 1;
            do {
              $nospaces = $base . '_' . $i++ . $extension;
            } while (in_array($nospaces, $existing));
            $this->_renamed = true;
        return $nospaces;
      protected function processFile($filename, $error, $size, $type, $tmp_name, $overwrite) {
        $OK = $this->checkError($filename, $error);
        if ($OK) {
          $sizeOK = $this->checkSize($filename, $size);
          $typeOK = $this->checkType($filename, $type);
          if ($sizeOK && $typeOK) {
            $name = $this->checkName($filename, $overwrite);
            $success = move_uploaded_file($tmp_name, $this->_destination . $name);
            if ($success) {
                $message = "$filename uploaded successfully";
                if ($this->_renamed) {
                  $message .= " and renamed $name";
                $this->_messages[] = $message;
            } else {
              $this->_messages[] = "Could not upload $filename";
    ?>
    The code for my form page is this
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>
    <body>
    <?php
    //THE FOLLOWING CODE IS FOR THE UPLOADING OF IMAGES AND FILES
    // set the max upload size in bytes
    $max = 51200;
    if (isset ($_POST ['submit']))
                //define the path to the upload folder
                $destination = 'uploads/';
                require_once('classes/Upload.php');
                try {
                    $upload = new Gp1_Upload($destination);
                    $upload->setMaxSize($max);
                    $upload->move();
                    $result = $upload->getMessages();
                } catch (Exception $e) {
                    echo $e->getMessage();
    // END OF UPLOADING OF IMAGES AND FILES
    ?>
    <form id="newvenue" action="" method="post" enctype="multipart/form-data" >
          <?php
               // THIS CODE DISPLAYS ERROR MESSAGES FOR THE FILE UPLOADS
              if (isset($result)){
              echo '<ul>';
              foreach ($result as $message){
                  echo "<li>$message</li>";
              echo '</ul>';
           ?>
      <table id="neweventdisplay" cellpadding="5"  border="0">
        <tr>
      <td></td>
      <td><input type="hidden" name="user_id"  value="" /></td>
      </tr>
      <tr>
      <td></td>
        <td>Organisers Name</td>
        <td><input class="input80px" id="org_name" name="org_name" type="text" /> </td>
      </tr>
      <tr>
      <td></td>
      <td><label for="image">Upload image:</label></td>
      <td><p>
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max; ?>" />
    <input type="file" name="image" id="image" />
    </p></td>
    </tr>
      <tr>
      <td></td>
      <td>Details about your upload</td>
      <td><input class="input80px" id="org_uploadcapt" name="org_uploadcapt" type="text"  /></td>
    </tr>
      <tr>
      <td></td>
      <td><input type="submit" name="submit" id="submit" value="upload"></td>
      </tr>
      <tr>
      <td class="heading"> </td>
      <td></td>
      </tr>
    </table>
    </form>
    <prep>
    <?php
    if (isset ($_POST ['submit'])){
        print_r($_FILES);}
        ?>
        </prep>
    </body>
    </html>

    Hi David
    Thank you very much for your help.  I had continued to work on the code and had worked out how to input the image path into the database but it was using the original filename, so when every it is changed it did not work.  The code in my page at that point was the following,
    <?php     // 2. NEW USER REGISTRATION<br />
            include_once ("includes/form_functions.inc.php");
            $max = 100000;
            $destination = 'uploads/';
            // START FORM PROCESSING FOR A NEW REGISTRATION
            if (isset($_POST['submit'])) { // Form has been submitted.
            $errors = array();
            // perform validations on the form data
            $required_fields = array('org_name');
            $errors = array_merge($errors, check_required_fields($required_fields, $_POST));    
            $required_numberfields = array('user_id');
            $errors = array_merge($errors, check_number_fields($required_numberfields, $_POST));
            $fields_with_lengths = array('org_name' => 36, 'org_website' => 100, 'org_contact' => 40,  'org_conemail' => 80, 'org_contel' => 30);
            $errors = array_merge($errors, check_max_field_lengths($fields_with_lengths, $_POST));
            /*Here I am using trim as well as ucwords, this function converts the first letter of each work into a capital letter,  I am using this only on the
            firstname and surname to ensure that the data is how I want it as it is going  into the database,  The better the data is preformated the better the data
            swill be within the database.*/
            $org_name = trim(strtolower(mysql_prep($_POST['org_name'])));
            $org_website = trim(strtolower(mysql_prep($_POST['org_website'])));
            $org_contact = trim(strtolower (mysql_prep($_POST['org_contact'])));
            $org_conemail = trim(strtolower (mysql_prep($_POST['org_conemail'])));
            $org_contel = strtolower (mysql_prep($_POST['org_contel']));
            $userid = $_POST['user_id'];
            $org_uploadcapt = $_POST['org_uploadcapt'];
            $image = $_FILES['image'];
            /*Here is the code that takes the variable captured from the input form and matches it  up with the appropriate field in the database.  An important point with insertion is that  the variables are in the same order as the mysql field names, there will be an error if the number of variables does not match the number of field names.  Note that there is no entry for the user id as this is an auto increment file within mysql and so is not needed to be entered*/
            if ( empty($errors) ) {
                $sql = "INSERT INTO organiser
                          (org_name, org_website, org_contact, org_conemail, org_contel, user_id, org_uploadurl, org_uploadcapt)
                          VALUES
                          ('{$org_name}', '{$org_website}', '{$org_contact}', '{$org_conemail}', '{$org_contel}', '{$userid}', '{$destination}".$image['name']."', '{$org_uploadcapt}' )";
                $result = mysql_query($sql, $connection);
                if ($result) {
                    $message = "The organiser was successfully created.<br />";
                } else {
                    $message = "I am sorry but the organiser could not be added.";
                    $message .= "<br />" . mysql_error();
                } else {
                    /* this counts the number of errors and informs the user of how many fields were
                    incorrectly entered*/
                if (count($errors) == 1) {
                    $message = "There was 1 error in the form.";
                } else {
                    $message = "There were " . count($errors) . " errors in the form.";
        } else { // Form has not been submitted.
            $org_name = "";
            $org_website = "";
            $org_contact = "";
            $org_conemail = "";
            $org_contel = "";
            $userid = "";
            $org_uploadcapt = "";
    //THE FOLLOWING CODE IS FOR THE UPLOADING OF IMAGES AND FILES
    // set the max upload size in bytes
    if (isset ($_POST ['submit']))
                //define the path to the upload folder
                // Use This On The Local Hosting Machine
                //$destination = 'C:/upload_test/';
                // Use This On The Live Server
                require_once('classes/Upload.php');
                try {
                    $upload = new Gp1_Upload($destination);
                    $upload->setMaxSize($max);
                    $upload->move();
                    $result = $upload->getMessages();
                } catch (Exception $e) {
                    echo $e->getMessage();
    // END OF UPLOADING OF IMAGES AND FILES
    ?>
    <title>Horse Events</title>
    <?php include_once("includes/meta.inc.php");?>
    <?php include_once("includes/cssfavgoogle.inc.php");?>
    <link href="css/adminpanel.css" rel="stylesheet" type="text/css" />
    <style>
    input[type="number"] {
        width:40px;
    </style>
    </head>
    <body>
    <div id="wrapper">
        <div id="admincontent">
    <form id="newvenue" action="neworganiser.php" method="post" enctype="multipart/form-data" >
          <?php if (!empty ($message)) {echo "<p class=\"message\">" . $message . "</p>";} ?>
          <?php if (!empty ($errors)) {display_errors($errors); } ?>
          <?php
              // THIS CODE DISPLAYS ERROR MESSAGES FOR THE FILE UPLOADS
              if (isset($result)){
              echo '<ul>';
              foreach ($result as $message){
                  echo "<li>$message</li>";
              echo '</ul>';
           ?>
    <br />
          <table id="neweventdisplay" cellpadding="5"  border="0">
        <tr>
      <td></td>
      <td><input type="hidden" name="user_id"  value="<?php echo $url_userid ['user_id']; ?>" /></td>
      </tr>
      <tr>
      <td> <span class="compuls">*</span></td>
        <td>Organisers Name</td>
        <td><input class="input80px" id="org_name" name="org_name" type="text" />
         </td>
      </tr>
          <tr>
          <td><span class="compuls">*</span></td>
        <td>Their Website</td>
        <td><input class="input80px" id="org_website" name="org_website" type="text" /></td>
      </tr>
        <tr>
        <td><span class="compuls">*</span></td>
        <td>Organisers Contact</td>
        <td><input id="org_contact" name="org_contact" type="text" />eg: Mrs Jean Kelly</td>
      </tr>
        <tr>
        <td><span class="compuls">*</span></td>
        <td>Contact Email</td>
        <td><input class="input80px" id="org_conemail" name="org_conemail" type="text" />
          </td>
      </tr>
        <tr>
        <td><span class="compuls">*</span></td>
      <td>Contact Tel No.</td>
      <td><input id="org_contel" name="org_contel" type="text" /></td>
      </tr>
      <tr>
      <td></td>
      <td><label for="image">Upload image:</label></td>
      <td><p>
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max; ?>" />
    <input type="file" name="image" id="image" />
    </p></td>
    </tr>
      <tr>
      <td></td>
      <td>Details about your upload</td>
      <td><input class="input80px" id="org_uploadcapt" name="org_uploadcapt" type="text"  /></td>
    </tr>
      <tr>
      <td></td>
      <td><input type="submit" name="submit" id="submit" value="Add Your Organiser"></td>
      </tr>
      <tr>
      <td class="heading"> </td>
      <td></td>
      </tr>
    </table>
    <a  class="delete" href="controlpanel.php">Cancel</a>
    </form>
        </div>
    I have added the code you kindly forwarded but am getting an error,  I am still trying to learn the basics of php and am unsure of what to do next, my php Upload.php now looks like
    <?php
    class Gp1_Upload{
      protected $_uploaded = array();
      protected $_destination;
      protected $_max = 100000;
      protected $_messages = array();
      protected $_permitted = array('image/gif',
                                    'image/jpeg',
                                    'image/pjpeg',
                                    'image/png');
      protected $_renamed = false;
      protected $_filenames = array();
      public function __construct($path) {
        if (!is_dir($path) || !is_writable($path)) {
          throw new Exception("$path must be a valid, writable directory.");
        $this->_destination = $path;
        $this->_uploaded = $_FILES;
      public function getMaxSize() {
        return number_format($this->_max/100000, 1) . 'kB';
      public function setMaxSize($num) {
        if (!is_numeric($num)) {
          throw new Exception("Maximum size must be a number.");
        $this->_max = (int) $num;
      public function move($overwrite = false) {
        $field = current($this->_uploaded);
        if (is_array($field['name'])) {
          foreach ($field['name'] as $number => $filename) {
            // process multiple upload
            $this->_renamed = false;
            $this->processFile($filename, $field['error'][$number], $field['size'][$number], $field['type'][$number], $field['tmp_name'][$number], $overwrite);   
        } else {
          $this->processFile($field['name'], $field['error'], $field['size'], $field['type'], $field['tmp_name'], $overwrite);
      public function getMessages() {
        return $this->_messages;
      protected function checkError($filename, $error) {
        switch ($error) {
          case 0:
            return true;
          case 1:
          case 2:
            $this->_messages[] = "$filename exceeds maximum size: " . $this->getMaxSize();
            return true;
          case 3:
            $this->_messages[] = "Error uploading $filename. Please try again.";
            return false;
          case 4:
            $this->_messages[] = 'No file selected.';
            return false;
          default:
            $this->_messages[] = "System error uploading $filename. Contact webmaster.";
            return false;
      protected function checkSize($filename, $size) {
        if ($size == 0) {
          return false;
        } elseif ($size > $this->_max) {
          $this->_messages[] = "$filename exceeds maximum size: " . $this->getMaxSize();
          return false;
        } else {
          return true;
      protected function checkType($filename, $type) {
        if (empty($type)) {
          return false;
        } elseif (!in_array($type, $this->_permitted)) {
          $this->_messages[] = "$filename is not a permitted type of file.";
          return false;
        } else {
          return true;
      public function addPermittedTypes($types) {
        $types = (array) $types;
        $this->isValidMime($types);
        $this->_permitted = array_merge($this->_permitted, $types);
      protected function isValidMime($types) {
        $alsoValid = array('image/tiff',
                           'application/pdf',
                           'text/plain',
                           'text/rtf');
          $valid = array_merge($this->_permitted, $alsoValid);
        foreach ($types as $type) {
          if (!in_array($type, $valid)) {
            throw new Exception("$type is not a permitted MIME type");
      protected function checkName($name, $overwrite) {
        $nospaces = str_replace(' ', '_', $name);
        if ($nospaces != $name) {
          $this->_renamed = true;
        if (!$overwrite) {
          $existing = scandir($this->_destination);
          if (in_array($nospaces, $existing)) {
            $dot = strrpos($nospaces, '.');
            if ($dot) {
              $base = substr($nospaces, 0, $dot);
              $extension = substr($nospaces, $dot);
            } else {
              $base = $nospaces;
              $extension = '';
            $i = 1;
            do {
              $nospaces = $base . '_' . $i++ . $extension;
            } while (in_array($nospaces, $existing));
            $this->_renamed = true;
        return $nospaces;
      protected function processFile($filename, $error, $size, $type, $tmp_name, $overwrite) {
        $OK = $this->checkError($filename, $error);
        if ($OK) {
          $sizeOK = $this->checkSize($filename, $size);
          $typeOK = $this->checkType($filename, $type);
          if ($sizeOK && $typeOK) {
            $name = $this->checkName($filename, $overwrite);
            $success = move_uploaded_file($tmp_name, $this->_destination . $name);
            if ($success) {
                $message = "$filename uploaded successfully";
                if ($this->_renamed) {
                  $message .= " and renamed $name";
                $this->_messages[] = $message;
            } else {
              $this->_messages[] = "Could not upload $filename";
      public getFilenames() {
        return $this->_filenames;
    ?>
    The error is Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE.   
    I have not worked with oop before and have only very briefly looked at the principle was on my foundation degree.

  • About Replacement Path, Text Variables & Cusomer Exit?

    Hi
    Please explain along with examples youwhen we use Replacement Path
                                                   Text Variables and
                                                   Customer Exit
    Please search the forum before posting a thread
    Edited by: Pravender on Apr 18, 2011 3:48 PM

    Hi,
    1. Customer EXIT :
    Business Scenario:
    The business department wants to check if the orders from the customers for a  certain week (e.g. 6 weeks from now) are already transmitted into their system. Therefore they run a report with a variable, that is calculated automatically.
    Note: Of course this is not the only suitable solution, but it will show you how the exit works.
    Step by Step Solution:
    A.You should create a variable on the info object 0CALWEEK like this:
     1.Technical Name: WS_FWEEK
    2.Description: Workshop Future Week
    3 Interval
    5.Mandatory variable entry
    6.Processing: Customer Exit
    7.NOT ready for input
    B.Call transaction CMOD for the definition of the customer exit.  
    C.Create a new project, maintain the short text and assign a development class.  
    D.Go to Enhancement Assignments and assign RSR00001. Press the button components to continue.  
    E.Double-click on EXIT_SAPLRRS0_001.  
    F.For documentation place the cursor an RSR00001 and use the menu GoTo => Display documentation.   
    G.Then double-click on ZXRSRU01.  
    H. If the include does not exist, you have to create it; assign a development class and a transport request
    Enter this code:
    INCLUDE ZXRSRU01                                        *
      data: l_idx like sy-tabix,
            workdate(8) type d,
            futureweek(6) type c.
      DATA: L_S_RANGE TYPE RSR_S_RAGESID.
    case I_vnam.
    when u2018WS_FWEEKu2019.
    if i_step = 2          u201C after pop-up
    Calculate Current day plus 6 weeks:
      workdate = sy-datum  + 42 .
    Calculate the week of this day
      CALL FUNCTION 'DATE_GET_WEEK'
        EXPORTING
          DATE               = workdate
        IMPORTING
         WEEK               = futureweek
    EXCEPTIONS
      DATE_INVALID       = 1
      OTHERS             = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      l_s_range-low = futureweek.
    l_s_range-high =
      l_s_range-sign = 'I'.
      l_s_range-option = 'EQ'.
      append l_s_range to l_t_range.
      p_subrc = 0.
    ENDIF.
    ENDCASE.
    I.Save and activate the codie 
    J.Activate the project. (Very important!)
    K. Define a query using the above created variable.
    L.For displaying the variable values in the executed query you also may define two text variables. These should, if necessary, be able to show the lower and the upper value calculated by the customer exit.
    2 Replacement Path :
    Example for filling variable values depending on an other variable /
    Deriving one variable value from another variable
    Business scenario.
    A query should show in one column the value for one period. The period should be entered by the user. In the second column the accumulated vale from the beginning of the year to the period of the first column should be displayed. The InfoCube contains only the InfoObject 0CALMONTH (Month/Year) and not single InfoObjects for period and year.
    Solution:
    For this scenario we need four variables: two variables for the column text and two variables for the period values. One of these period variables is defined as a variable with a customer exit
    Step by Step Solution:
    Create an input variable u201CMONTHu201D (you need this specific information for the coding example below). The variable is based on the InfoObject 0CALMONTH. Set the following attributes:
    Single Value
    Ready for input
    Mandatory variable entry 
    Create a variable  u201CCUMMONTHu201D (you need this specific information for the coding example below) with a customer exit as a processing type. The variable is based on the InfoObject 0CALMONTH. Set the following attributes:
    Interval
    NOT ready for input!
    Mandatory variable entry
    Create two text variables. Both variables use the u201CReplacement Pathu201D as processing type. The first text variable is filled with the text from the u201Cfrom valueu201D. The second is filled with the text from the u201Cto valueu201D.
    Enter this code
    INCLUDE ZXRSRU01                                        *
    DATA: L_S_RANGE TYPE RSR_S_RAGESID.
    DATA: LOC_VAR_RANGE LIKE RRRANGEEXIT.
    case I_vnam.
    when u2018CUMMONTHu2019.
    if i_step = 2          u201C after pop-up
    LOOP AT I_T_VAR_RANGE INTO LOC_VAR_RANGE
              WHERE VNAM = u2018MONTHu2019.
         CLEAR L_S_RANGE.
    l_t_range-low = loc_var_range(4).  u201Cgetting current year
    l_t_range-low+4(2) = u201801u2019 u201Csetting 1st period in cur. year
    l_t_range-high = loc_var_range-low u201Chigh value=input value
    l_t_range-sign = 'I'.
    l_t_range-option = 'BT'.
    append l_s_range to e_t_range.
    exit.
    endloop.
    endif.
    endcase.
    Save and activate the code.
    Activate the project.
    Define a query containing all the variables.
    Regards
    CSM Reddy

  • Importing a path into photoshop

    I created a path in Photoshop CS6 and exported it as a "Paths to Illustrator" vector file to the desktop. Now I want to import the path into another PS file. How do I do this?
    I cannot copy and paste the path as I no longer have the original file that was used to create the path. This seems to be a simple task that I'm sure used to be easily done by importing the path in older versions of PS.
    Thx

    Photoshop Is not a file editor.   You can add path to a photoshop document several ways.  When you have the path in one open document you can Create a custom shape and then use the shape path in any document using the custom shape tool.  You can drag a path for one document's path palette and drop it onto an other open document.  You can insert the path into an action step and that step will inset the path into documents the action is used on.  You can save custom shapes and action with insert path steps a copy the saved file onto other machines and load them into Photoshop..  When you save Open documents that have path some file formats support paths and will save paths in the saved image file.  When those file are opened in Photoshop the path will be in the open documents paths palette.
    I have never used illustrator however if you have the AI file and illustrator there may be a way to open the .AI file in illustrator  export the path to Photoshop,  It may have an export path to Photoshop or perhaps you can drag and drop between applications.  However I don't know all I know is Photoshop has a menu  File>Export Path to Illustrator. However the is no menu File>Import Paths from illustrator.  When I use menu File>Export Path To Illustrator Photoshop saves a *.ai file.  If I drop the file on Photoshop Photoshop want to open it a s rasterized ESP document in CMYKt and there is no Path in the paths palette.

  • ForEach Loop - Parsing XML subgroup into Variables

    Hi all,I am designing a new ETL process using SSAS.
    We have a controller package which receives an XML string at run time into a variable called BatchRequest :-
    <Batch>
    <Request>
    <Name>Filemon</Name>
    <Params>
    <filepaths>
    <Sourcepath>d:\temp</Sourcepath>
    <Destpath>D:\temp2</Destpath>
    <Archivename>\Archive</Archivename>
    </filepaths>
    </Params>
    </Request>
    </Batch>
    The Batch can contain a number of Requests and a ForEach Loop is used to parse the text for the Name node and the text for the Params Node into variables RequestName and RequestParams respectively.
    however, what I want to be able to do is to take the text for <name> into Requestname but take the entire XML sub string for <Params> into RequestParams.
    At the moment I get the text only (e.g. d:\tempd:\temp2\Archive).
    The Requestname is used by an XML task within the ForEach loop to retrieve full package path details from an external config file, and hence it only needs to be a keyword.
    I played with the idea of including <Params> as a subnode for <Name>, only populating RequestName in the loop parser and then having an XML task which would parse the related parameter string, but i don't know how to tell the XML task that I
    want the parameter string where the <Name> is Filemon (in this example).
    Can anyone give me some suggestions or pointers?
    Thanks
    Iain
    Iain

    Hi idcowden,
    Glad to hear that you have resolved the issue on your own. Thank you for sharing the solution.
    Regards,
    Mike Yin
    TechNet Community Support

  • Error Message:PRVF-3929 - PATH environment variable.

    Hello,
    I am trying to install Oracle on my laptop and getting the following error message resulting into hault of installation.
    INFO: *********************************************
    INFO: Environment variable: "PATH": This test checks whether the length of the environment variable "PATH" does not exceed the recommended length.
    INFO: Severity:CRITICAL
    INFO: OverallStatus:VERIFICATION_FAILED
    INFO: -----------------------------------------------
    INFO: Verification Result for Node:Indrajit-PC
    INFO: Expected Value:1023
    INFO: Actual Value:1159
    INFO: Error Message:PRVF-3929 : Adding the Oracle binary location to the PATH environment variable will exceed the OS length limit of [ "1023" ] for the variable on the node "Indrajit-PC"
    INFO: Cause: The installer needs to update the PATH environment variable to include the value "%ORACLE_HOME%/bin;".
    However, doing so will cause PATH to exceed the maximum allowable length that this operating system allows.
    INFO: Action: Ensure that the sum of the lengths of your current PATH environment variable and that of
    "%ORACLE_HOME%/bin;" does not exceed the operating system limit.
    Restart the installer after correcting the setting for environment variable.
    Oracle Database Trying ton install - win64_11gR2
    MY PC CONFIGURATION:
    - Windows 7
    - 64 bit
    Can you please help me getting this solved please.

    C:\>Set
    ALLUSERSPROFILE=C:\ProgramData
    APPDATA=C:\Users\Indrajit\AppData\Roaming
    asl.log=Destination=file
    CLASSPATH=.;C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip
    CommonProgramFiles=C:\Program Files\Common Files
    CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
    CommonProgramW6432=C:\Program Files\Common Files
    COMPUTERNAME=INDRAJIT-PC
    ComSpec=C:\Windows\system32\cmd.exe
    COPLIB=C:\Program Files (x86)\Teradata\Client\13.0\CLIv2\
    DataConnectorLibPath=C:\Program Files (x86)\Teradata\Client\13.0\bin
    FP_NO_HOST_CHECK=NO
    HOMEDRIVE=C:
    HOMEPATH=\Users\Indrajit
    JAVA_HOME=C:\Program Files\Java\jdk1.7.0
    LOCALAPPDATA=C:\Users\Indrajit\AppData\Local
    localtd=1
    LOGONSERVER=\\INDRAJIT-PC
    NUMBER_OF_PROCESSORS=4
    OS=Windows_NT
    Path=C:\Program Files (x86)\AXSMOD;C:\Program Files (x86)\Teradata\Client\13.0\A
    XSMOD\;C:\Program Files (x86)\Teradata\Client\13.0\bin;C:\Program Files (x86)\Te
    radata\Client\13.0\bin;C:\Program Files (x86)\Teradata\Client\13.0\CLIv2\;C:\Pro
    gram Files (x86)\Teradata\Client\13.0\ODBC Driver for Teradata\Lib;C:\Program Fi
    les\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Fil
    es\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\Syste
    m32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files (x86)\ATI
    Technologies\ATI.ACE\Core-Static;c:\Program Files\WIDCOMM\Bluetooth Software\;c:
    \Program Files\WIDCOMM\Bluetooth Software\syswow64;;C:\Program Files\Dell\DW WLA
    N Card\Driver;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\
    QuickTime\QTSystem\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;
    C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft
    SQL Server\100\DTS\Binn\;C:\Program Files\Java\jdk1.7.0\bin;C:\Program Files (x
    86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Teradata\Client\
    13.0\Shared ICU Libraries for Teradata\lib\;C:\Program Files (x86)\AXSMOD;
    PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    PROCESSOR_ARCHITECTURE=AMD64
    PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 37 Stepping 5, GenuineIntel
    PROCESSOR_LEVEL=6
    PROCESSOR_REVISION=2505
    ProgramData=C:\ProgramData
    ProgramFiles=C:\Program Files
    ProgramFiles(x86)=C:\Program Files (x86)
    ProgramW6432=C:\Program Files
    PROMPT=$P$G
    PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
    PUBLIC=C:\Users\Public
    QTJAVA=C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip
    SESSIONNAME=Console
    SystemDrive=C:
    SystemRoot=C:\Windows
    TEMP=C:\Users\Indrajit\AppData\Local\Temp
    TMP=C:\Users\Indrajit\AppData\Local\Temp
    USERDOMAIN=Indrajit-PC
    USERNAME=Indrajit
    USERPROFILE=C:\Users\Indrajit
    windir=C:\Windows

  • System PATH environment variable issue when user log off and log in or switch from admin to non-admin account

    Hi,
    Problem Description:
    After installing my new product version, when user does log-off and log in again into admin account
    or switch from admin account to non-admin account, PATH environment variable shows incorrect path of my product (previous product version’s path) using command prompt.
    It seems windows refresh issue during session changes (log off and log in / switch from Admin to
    Non-admin account).
    Why PATH environment variable is not refresh immediately after log off and log in again or Switch
    from admin to non-admin mode?. 
    Please see my thread for more details http://social.msdn.microsoft.com/Forums/vstudio/en-US/445ab42c-bdff-405a-8d53-558e1b6c7d34/path-environment-variable-issue-when-user-logoff-and-login-or-switch-from-admin-to-nonadmin?forum=windowsgeneraldevelopmentissues
    Also submitted bug for this in connect.microsoft.com portal.In that it has lots of information
    like problem statement, Reproduction steps and Expected Results.
    Bug ID: 871782
    Could you please any body help me for this?. your support will be appreciated.
    Thanks,
    Marichamy

    Why PATH environment variable is not refresh immediately after log off and log in again or Switch
    from admin to non-admin mode?. 
    I wouldn't have any expectation of what you are doing to work the way you expect.  E.g. why is the %ABC% being replaced at all?  There is some help about this ambiguous scenario in the cmd help...
    /V:ON Enable delayed environment variable expansion using ! as the
    delimiter. For example, /V:ON would allow !var! to expand the
    variable var at execution time. The var syntax expands variables
    at input time, which is quite a different thing when inside of a FOR
    loop.
    /V:OFF Disable delayed environment expansion.
    So, what's the setting for the /V:  switch that your users would be using?  Perhaps you should be using the ! instead of the % for your ABC variable?
    Oh.  There's more below where I found that...
    Delayed environment variable expansion is NOT enabled by default. You
    can enable or disable delayed environment variable expansion for a
    particular invocation of CMD.EXE with the /V:ON or /V:OFF switch. You
    can enable or disable delayed expansion for all invocations of CMD.EXE on a
    machine and/or user logon session by setting either or both of the
    following REG_DWORD values in the registry using REGEDIT.EXE:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion
    and/or
    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion
    to either 0x1 or 0x0. The user specific setting takes precedence over
    the machine setting. The command line switches take precedence over the
    registry settings.
    In a batch file the SETLOCAL ENABLEDELAYEDEXPANSION or DISABLEDELAYEDEXPANSION
    arguments takes precedence over the /V:ON or /V:OFF switch. See SETLOCAL /?
    for details.
    If delayed environment variable expansion is enabled, then the exclamation
    character can be used to substitute the value of an environment variable
    at execution time.
     So, I guess the essence of your "bug" will boil down to whether you
    need the feature to get the result you want and the
    truth of that first sentence but it certainly looks like a "can of worms" to me.   ; )
    HTH
    Robert Aldwinckle

  • HT3842 Does iTunes store the original music file and copy it into a separate folder? If i delete the original file from finder will it remove it from my iTunes library?

    Hi, on my last PC when transferring music to my new MacBook Pro i noticed i had about 6 duplicated of each song in every album i took hours in removing them.
    I Just wondered Does iTunes store the original music file and then copy it into a separate folder?
    If i delete the original file from finder will it remove it from my iTunes library or vice versa. I didnt want to lose any music like i have some how managed to on my old computer.
    Or should i keep both files of it in the Music folder and also iTunes library folder?
    Which is best ?

    DrewPowell wrote:
    I Just wondered Does iTunes store the original music file and then copy it into a separate folder?
    It does both at the same time.
    When you add files to iTunes, it copies them into /Music/iTunes/iTunes media/ folder. The original file remains where it was.
    You can drag a file to /Music/iTunes/iTunes media/Automatically add to iTunes/ folder.
    This will add to iTunes and move it to /Music/iTunes/iTunes media/.
    I keep a shortcut of this folder on my desktop then simply drag files to the shortcut to add to iTunes.
    Then there are no "extra" files around.

  • After downloading music and dragging into iTunes I end up with multiple copies of the album on my hard drive. I do have the "copy files into iTunes library" checked. When I try to erase one of the copies I end up with red ! in iTunes library.

    Please Help!  After downloading an album and dragging it into itunes I end up having multiple copies of the album on my hard drive.  I do have (under Itunes preferences, advanced) copy songs into itunes library "checked".  I'm sure this is the reason for the multiple copies.  When I try to delete one of the copies of the album and go back to itunes and try playing a song, I get a red exclamtion point next to the song with an error message saying itunes cannot locate file. My questions are, Does Itunes literally make a copy of the song? If so , How do you know which file to delete?

    Sony's own entertainment software on the Vaio plays merry **** with iTunes, worse there's no telling when it will kick in.
    First head over to the Sony Vaio site and get the update for the software, that will stop it from messing with the iTunes database/library files when you connect your iPod.
    http://support.apple.com/kb/TS2715
    http://esupport.sony.com/US/perl/swu-download.pl?mdl=VGNP588EQ&updid=4526&osid=28
    With that stopped you can add the music back without fear of this happening again.

  • Need some clarification on Replacement Path with Variable

    Hello Experts,
    Need some clarification on Replacement Path with Variable.
    We have 2 options with replacement path for characteristic variables i.e.
    1) Replace with query
    2) Replace with variable.
    Now, when we use  "Replace with variable" we give the variable name. Then we get a list for "Replace with" as follows:
    1) Key
    2) External Characteristic Value Key
    3)Label
    4)Attribute value.
    I need detailed explanation for the above mentioned 4 options with scenarios.
    Thanks in advance.
    Regards
    Lavanya

    Hi Lavanya,
    Please go through the below link.
    http://help.sap.com/saphelp_nw70/helpdata/EN/a4/1be541f321c717e10000000a155106/frameset.htm
    Hope this gives you complete and detailed explaination.
    Regards,
    Reddy

  • I deleted all my playlists provided. However, they are still on my Ipod Touch. Now, when I sync my Ipod with Itunes then the lists are copied back into Itunes?

    I deleted all my playlists provided. However, they are still on my Ipod Touch. Now, when I sync my Ipod with Itunes then the lists are copied back into Itunes?

    A playlist takes up almost no room. A few kB at most.
    It is simply a list of songs in the library
    Do you want the playlists or not?
    Now, when I sync my Ipod with Itunes then the lists are copied backinto iTunes?
    Do you want them copied back into iTunes?

  • Copy & Paste into Google Maps no longer works after 4.2 update

    Anyone else seem to be getting this problem? Copy and paste into Google maps was extremely useful. Now this doesn't seem to work for me after updating to 4.2.

    1. Copy something into the clipboard (doesn't matter what it is)
    2. Open Google maps
    3. Try to paste into the search bar. You don't get the paste option.
    4. Try to type something into the search bar then attempt to copy what you just typed. No options appear to copy what was just typed in.
    This used to work prior to the 4.2 update. Very useful when receiving incomplete addresses via text message or from a web page.

Maybe you are looking for