Category Archives: PHP

Phil 8.6.15

8:00 – 4:00 SR

  • Still no admin
  • Check out Debra Fisher on LinkedIn
  • Finish rewriting login
  • Start on DataProvider – nope, spent the day on getting login to work right. Sheesh. At least I added Load/Save SearchNet buttons under the ‘history’ panel.

Phil 8.5.15

8:00 – 4:00 SR

  • Still no admin.
  • Need to add checks for http(s):// in the freeform text. If it’s there, open the url, if it’s not then send to GoogleNews
  • I think the best way to get the results from the network queries is to take the raw rows from the server and parse them into graphical network data. I will need to add variables for id_index and type (table at least, maybe more)
  • Query for all items on a network with labels synthesized from id_index and type name:
    -- get all the items in a network
    select ti.id_index, ti.guid, ti.item_type, ty.name as type_name, CONCAT(ty.name, '_', ti.id_index) as label, ti.text, ti.float_val, ti.link, ti.image
    from tn_network_data dat 
    inner join tn_associations a on dat.assoc_id = a.id_index
    inner join tn_items ti on a.target_id = ti.id_index
    inner join tn_types ty on ty.id_index = ti.item_type
    where dat.network_id = 1
    union
    select si.id_index, si.guid, si.item_type, ty.name as type_name, CONCAT(ty.name, '_', si.id_index) as label, si.text, si.float_val, si.link, si.image
    from tn_network_data dat 
    inner join tn_associations a on dat.assoc_id = a.id_index
    inner join tn_items si on a.source_id = si.id_index
    inner join tn_types ty on ty.id_index = si.item_type
    where dat.network_id = 1;
  • Query for all associations on the same network
    -- get all the associations in a network
    select a.id_index, u.login, a.user_id, si.guid as source_guid, a.source_id, ti.guid as target_guid, a.target_id, at.name as assoc_name, a.assoc_type, a.created_on
    from tn_network_data dat 
    inner join tn_associations a on dat.assoc_id = a.id_index
    inner join tn_types at on a.assoc_type = at.id_index
    inner join tn_items si on a.source_id = si.id_index
    inner join tn_items ti on a.target_id = ti.id_index
    inner join tn_users u on a.user_id=u.id_index
    where dat.network_id = 1;
  • Ok, let’s see if we can pull this down and parse it!
  • Got into some kind of issue trying to use my old (pre ATSBase) login directives. Rebuilding.

Phil 8.4.15

8:00 – 4:30 SR

  • Still can’t get on the server.
  • Steve’s found a potential SW engineer. I’ve asked for her resume.
  • Cleaning up the networkDbIo.php code. I’ve also realized that ratings can have ratings. Changed tn_ratings to have a rating_type and a target_type.
  • Finished with addAssociation. It’s like item in that if one exists already we don’t want to create an exact copy with a new date.
  • Building the dataprovider object which requires a list of unique items, pulled from associations. So how do you get distinct items from two columns in mySql? StackOverflow has the answer. In my case, it’s:
    select ti.id_index, ti.guid, ti.item_type, ti.text, ti.float_val, ti.link, ti.image
    from tn_network_data dat 
    inner join tn_associations a on dat.assoc_id = a.id_index
    inner join tn_items ti on a.target_id = ti.id_index
    where dat.network_id = 1
    union
    select si.id_index, si.guid, si.item_type, si.text, si.float_val, si.link, si.image
    from tn_network_data dat 
    inner join tn_associations a on dat.assoc_id = a.id_index
    inner join tn_items si on a.source_id = si.id_index
    where dat.network_id = 1;
  • Ok, that part worked. Now working on building the rest of the data provider. Below is the current structure. Not quite sure how to convert the rows from the database pull to the data3D. This might be multiple queries. The edges, on the other hand are more straightforward. Might need a (unique within the type?) label for the tn_items though.
    this.dataProvider = {
       type:'XYZ',
       bounds:{xmin: -5, xmax: 5, ymin: 0, ymax: 5, zmin: -5, zmax: 5},
       data3D:{
          Speakers:{
             story_0:{xpos:5, ypos:5, zpos: 0, mass:0.9811469360199058, imageLoc: "./assets/checkerboard.jpg", notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."},
             story_1:{mass:1.1514476240300544, notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."},
             story_2:{mass:0.7468225934308907, notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."},
             story_3:{mass:1.2358769332362016, notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."},
             story_4:{mass:1.1071240443456865,  notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."}
          },
          Subjects:{
             story_0:{xpos:-5, ypos:5, zpos: 0, mass:1.2374208338984265,  imageLoc: "./assets/checkerboard.jpg", notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."},
             story_1:{mass:0.4781579303734177,   notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."},
             story_2:{mass:0.32479382813444624, notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."},
             story_3:{mass:0.9931577182910525,  notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."},
             story_4:{mass:1.1995832704567262,  notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."}
          },
          Platforms:{
             story_0:{xpos:5, ypos:-5, zpos: 0, mass:0.2805132286382044, notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."},
             story_1:{mass:0.9416553793139485, notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."},
             story_2:{mass:1.10169089403032,  notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."},
             story_3:{mass:0.3067471426015206,  notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."},
             story_4:{mass:0.6582850955300814,  notes:"Ut erat ante, varius ac elementum eget, cursus pulvinar purus. Nulla venenatis nec odio ut scelerisque. Donec hendrerit porta mauris."}
          }},
       network: {
          edges:[{source:"Speakers.story_1", target:"Speakers.story_2", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Speakers.story_2", target:"Platforms.story_0", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Speakers.story_3", target:"Subjects.story_2", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Speakers.story_3", target:"Speakers.story_1", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Speakers.story_4", target:"Subjects.story_1", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Speakers.story_4", target:"Speakers.story_3", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Speakers.story_4", target:"Speakers.story_3", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Speakers.story_4", target:"Speakers.story_2", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Subjects.story_0", target:"Subjects.story_3", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Subjects.story_2", target:"Subjects.story_0", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Subjects.story_2", target:"Subjects.story_3", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Subjects.story_3", target:"Speakers.story_4", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Platforms.story_0", target:"Platforms.story_4", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Platforms.story_2", target:"Platforms.story_0", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Platforms.story_2", target:"Speakers.story_0", val:1, type:Wgl3dCharts.DEFAULT},
             //{source:"Platforms.story_3", target:"Speakers.story_1", val:1, type:Wgl3dCharts.DEFAULT},
             //{source:"Platforms.story_4", target:"Speakers.story_1", val:1, type:Wgl3dCharts.DEFAULT},
             //{source:"Platforms.story_4", target:"Speakers.story_4", val:1, type:Wgl3dCharts.DEFAULT},
             //{source:"Platforms.story_4", target:"Subjects.story_2", val:1, type:Wgl3dCharts.DEFAULT},
             {source:"Platforms.story_4", target:"Platforms.story_1", val:1, type:Wgl3dCharts.DEFAULT}
          ]
       }
    };

Phil 7.31.15

7:30 – 2:30 SR

  • AC service today, so I’m working from home.
  • Got server code running at home, now testing on production server.
  • Had to play around with config files, but everything is working now.
  • Working out a way to identify an item for easy searching when there is no (Google) guid. Trying an sha1 hash of the elements used to make the item.
  • Finished addItem()
  • Finished getItem()
  • Finished addItemRating()
  • Finished getItemRatings()